[submodule "js/flotr2"] | |
path = js/flotr2 | |
url = https://github.com/HumbleSoftware/Flotr2.git | |
[submodule "js/FlashCanvas"] | |
path = js/FlashCanvas | |
url = https://github.com/timcameronryan/FlashCanvas | |
[submodule "lib/amon-php"] | |
path = lib/amon-php | |
url = https://github.com/martinrusev/amon-php.git | |
[submodule "js/tesseract"] | |
path = js/tesseract | |
url = https://github.com/square/tesseract.git | |
[submodule "js/d3"] | |
path = js/d3 | |
url = https://github.com/mbostock/d3.git | |
<?php | <?php |
/* | /* |
* Copyright 2010,2011 Alexander Sadleir | * Copyright 2010,2011 Alexander Sadleir |
Licensed under the Apache License, Version 2.0 (the "License"); | Licensed under the Apache License, Version 2.0 (the "License"); |
you may not use this file except in compliance with the License. | you may not use this file except in compliance with the License. |
You may obtain a copy of the License at | You may obtain a copy of the License at |
http://www.apache.org/licenses/LICENSE-2.0 | http://www.apache.org/licenses/LICENSE-2.0 |
Unless required by applicable law or agreed to in writing, software | Unless required by applicable law or agreed to in writing, software |
distributed under the License is distributed on an "AS IS" BASIS, | distributed under the License is distributed on an "AS IS" BASIS, |
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
See the License for the specific language governing permissions and | See the License for the specific language governing permissions and |
limitations under the License. | limitations under the License. |
*/ | */ |
include ('include/common.inc.php'); | include ('include/common.inc.php'); |
include_header("About", "about") | include_header("About", "about") |
?> | ?> |
<p> | <p> |
Busness Time - An ACT bus timetable webapp<br /> | Busness Time - An ACT bus timetable webapp<br /> |
Based on the maxious-canberra-transit-feed (<a | Based on the maxious-canberra-transit-feed (<a |
href="http://s3-ap-southeast-1.amazonaws.com/busresources/cbrfeed.zip">download</a>, | href="http://busresources.lambdacomplex.org/cbrfeed.zip">download</a>, |
last updated <?php echo date("F d Y.", @filemtime('cbrfeed.zip')); ?>)<br /> | last updated <?php echo date("F d Y.", @filemtime('../busresources/cbrfeed.zip')); ?>)<br /> |
Source code for the <a | Source code for the <a |
href="https://github.com/maxious/ACTBus-data">transit | href="https://github.com/maxious/ACTBus-data">transit |
feed</a> and <a href="https://github.com/maxious/ACTBus-ui">this | feed</a> and <a href="https://github.com/maxious/ACTBus-ui">this |
site</a> available from github.<br /> | site</a> available from github.<br /> |
Uses jQuery Mobile, PHP, PostgreSQL, OpenTripPlanner, OpenLayers, OpenStreetMap, Cloudmade Geocoder and Tile Service<br /> | Uses jQuery Mobile, PHP, PostgreSQL, OpenTripPlanner, OpenLayers, OpenStreetMap, Cloudmade Geocoder and Tile Service<br /> |
Suburb Geocoding Based on <A href="http://www.abs.gov.au/AUSSTATS/abs@.nsf/Lookup/1270.0.55.003Main+Features1July%202011?OpenDocument">Australian Bureau of Statistics data.</a><br /> | Suburb geocoding based on <A href="http://www.abs.gov.au/AUSSTATS/abs@.nsf/Lookup/1270.0.55.003Main+Features1July%202011?OpenDocument">Australian Bureau of Statistics data.</a><br /> |
Street geocoding based on work by OpenStreetMap contributors<br> | Street geocoding based on work by OpenStreetMap contributors<br> |
<br /> | <br /> |
Feedback encouraged; contact maxious@lambdacomplex.org<br /> | Feedback encouraged; contact maxious@lambdacomplex.org<br /> |
<br /> | <br /> |
Some icons by Joseph Wain / glyphish.com<br /> | Some icons by Joseph Wain / glyphish.com<br /> |
Native clients also available for iPhone(<a href="http://itunes.apple.com/au/app/cbrtimetable/id444287349?mt=8">cbrTimetable by Sandor Kolotenko</a> | Native clients also available for iPhone (<a href="http://itunes.apple.com/au/app/cbrtimetable/id444287349?mt=8">cbrTimetable by Sandor Kolotenko</a> |
, <a href="http://itunes.apple.com/au/app/act-buses/id376634797?mt=8">ACT Buses by David Sullivan</a>, <a href="http://itunes.apple.com/app/bus-trips-act/id489146525?mt=8">Bus Trips ACT by Molson Chengalath</a>) | , <a href="http://itunes.apple.com/au/app/act-buses/id376634797?mt=8">ACT Buses by David Sullivan</a>, <a href="http://itunes.apple.com/app/bus-trips-act/id489146525?mt=8">Bus Trips ACT by Molson Chengalath</a>) |
, Android (<a href="https://market.android.com/details?id=com.action">MyBus 2.0 by Imagine Team</a>, <A href="https://market.android.com/details?id=GetMe2CanberraFree.source">GetMe2 Canberra by | , Android (<a href="https://market.android.com/details?id=com.action">MyBus 2.0 by Imagine Team</a>, <A href="https://market.android.com/details?id=GetMe2CanberraFree.source">GetMe2 Canberra by |
Colin Thompson </a>) | Colin Thompson </a>, <a href="https://market.android.com/details?id=au.com.transittimes.android">TransitTimes+ by Zervaas Enterprises</a>) |
and Windows Phone 7 (<a href="http://www.windowsphone.com/en-AU/apps/d840375e-429c-4aa4-a358-80eec6ea9e66">TransHub Canberra by Soul Solutions</a>) Other web clients include <a href="http://canberra.itranzit.com/option.html">iTranzit</a>. | and Windows Phone 7 (<a href="http://www.windowsphone.com/en-AU/apps/d840375e-429c-4aa4-a358-80eec6ea9e66">TransHub Canberra by Soul Solutions</a>). |
<br /> | <br /> |
GTFS-realtime API: | <!--GTFS-realtime API:<br /> |
Alerts and Trip Updates (but only Cancelled or Stop Skipped) | Alerts and Trip Updates (but only Cancelled or Stop Skipped)<br /> |
Default format binary Protocol Buffer but can get JSON by adding ?ascii=yes | Default format binary Protocol Buffer but can get JSON by adding ?ascii=yes<br />--> |
<br /> | <br /> |
<br /> | <br /> |
<small>Disclaimer: The content of this website is of a general and informative nature. Please check with printed timetables or those available on http://action.act.gov.au before your trip. | <small>Disclaimer: The content of this website is of a general and informative nature. Please check with printed timetables or those available on http://www.action.act.gov.au before your trip. |
Whilst every effort has been made to ensure the high quality and accuracy of the Site, the Author makes no warranty, | Whilst every effort has been made to ensure the high quality and accuracy of the Site, the Author makes no warranty, |
express or implied concerning the topicality, correctness, completeness or quality of the information, which is provided | express or implied concerning the topicality, correctness, completeness or quality of the information, which is provided |
"as is". The Author expressly disclaims all warranties, including but not limited to warranties of fitness for a particular purpose and warranties of merchantability. | "as is". The Author expressly disclaims all warranties, including but not limited to warranties of fitness for a particular purpose and warranties of merchantability. |
All offers are not binding and without obligation. The Author expressly reserves the right, in his discretion, to suspend, | All offers are not binding and without obligation. The Author expressly reserves the right, in his discretion, to suspend, |
change, modify, add or remove portions of the Site and to restrict or terminate the use and accessibility of the Site | change, modify, add or remove portions of the Site and to restrict or terminate the use and accessibility of the Site |
without prior notice. </small> | without prior notice. </small> |
<?php | <?php |
include_footer(); | include_footer(); |
?> | ?> |
#!/bin/bash | |
#this script should be run from a fresh git checkout from github | |
#ami base must have yum install lighttpd-fastcgi, git, tomcat6 | |
#php-cli php-gd tomcat6-webapps tomcat6-admin-webapps svn maven2 | |
#postgres postgres-server php-pg | |
#http://www.how2forge.org/installing-lighttpd-with-php5-and-mysql-support-on-fedora-12 | |
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\ | |
#,servicealerts_alerts,servicealerts_informed 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;" | |
## INSERT INTO geometry_columns(f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, "type") | |
##SELECT '', 'public', 'shapes', 'shape_pt', ST_CoordDim(shape_pt), ST_SRID(shape_pt), GeometryType(shape_pt) | |
##FROM shapes LIMIT 1; | |
php /var/www/updatedb.php | |
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 | |
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 | |
cp /root/aws.php /tmp/ | |
chmod 777 /var/cache/lighttpd/compress/ | |
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/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 | |
####################################################################### | |
## | |
## Output Compression | |
## -------------------- | |
## | |
## see http://www.lighttpd.net/documentation/compress.html | |
## | |
server.modules += ( "mod_compress" ) | |
## | |
## where should the compressed files be cached? | |
## see the base config for the declaration of the variable. | |
## | |
## This directory should be changed per vhost otherwise you can | |
## run into trouble with overlapping filenames | |
## | |
compress.cache-dir = cache_dir + "/compress" | |
## | |
## FileTypes to compress. | |
## | |
#compress.filetype = ("text/plain", "text/html") | |
compress.filetype = ("text/plain", "text/html", "text/javascript", "text/css", "text/xml") | |
## | |
## Maximum filesize that will be compressed. | |
## Default is 0, which means unlimited file size. | |
## | |
#compress.max-filesize = 0 | |
## | |
####################################################################### | |
<?xml version="1.0" encoding="UTF-8"?> | |
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> | |
<!-- Single graph --> | |
<import resource="classpath:org/opentripplanner/api/application-context.xml" /> | |
<bean id="graphBundle" class="org.opentripplanner.model.GraphBundle"> | |
<property name="path" value="/tmp/" /> | |
</bean> | |
</beans> | |
####################################################################### | |
## | |
## Expire Module | |
## --------------- | |
## | |
## See http://www.lighttpd.net/documentation/expire.html | |
## | |
server.modules += ( "mod_expire" ) | |
## | |
## assignes a expiration to all files below the specified path. The | |
## specification of the time is made up of: | |
## | |
## <access|modification> <number> <years|months|days|hours|minutes|seconds> | |
## | |
#expire.url = ( | |
# "/buggy/" => "access 2 hours", | |
# "/images/" => "access plus 1 seconds 2 minutes" | |
#) | |
etag.use-mtime = "enable" | |
etag.use-inode = "disable" | |
static-file.etags = "enable" | |
$HTTP["url"] =~ "\.(css|js|png|jpg|ico|gif)$" { | |
expire.url = ( "" => "access 7 days" ) | |
} | |
## | |
####################################################################### | |
####################################################################### | |
## | |
## FastCGI Module | |
## --------------- | |
## | |
## http://www.lighttpd.net/documentation/fastcgi.html | |
## | |
server.modules += ( "mod_fastcgi" ) | |
fastcgi.server = ( ".php" => | |
( "localhost" => | |
( | |
"socket" => | |
"/var/run/lighttpd/php-fastcgi.socket", | |
"bin-path" => "/usr/bin/php-cgi" | |
) | |
) | |
) | |
## | |
## PHP Example | |
## For PHP don't forget to set cgi.fix_pathinfo = 1 in the php.ini. | |
## | |
## The number of php processes you will get can be easily calculated: | |
## | |
## num-procs = max-procs * ( 1 + PHP_FCGI_CHILDREN ) | |
## | |
## for the php-num-procs example it means you will get 17*5 = 85 php | |
## processes. you always should need this high number for your very | |
## busy sites. And if you have a lot of RAM. :) | |
## | |
#fastcgi.server = ( ".php" => | |
# ( "php-local" => | |
# ( | |
# "socket" => socket_dir + "/php-fastcgi-1.socket", | |
# "bin-path" => server_root + "/php-cgi", | |
# "max-procs" => 1, | |
# "broken-scriptfilename" => "enable", | |
# ) | |
# ), | |
# ( "php-tcp" => | |
# ( | |
# "host" => "127.0.0.1", | |
# "port" => 9999, | |
# "check-local" => "disable", | |
# "broken-scriptfilename" => "enable", | |
# ) | |
# ), | |
# | |
# ( "php-num-procs" => | |
# ( | |
# "socket" => socket_dir + "/php-fastcgi-2.socket", | |
# "bin-path" => server_root + "/php-cgi", | |
# "bin-environment" => ( | |
# "PHP_FCGI_CHILDREN" => "16", | |
# "PHP_FCGI_MAX_REQUESTS" => "10000", | |
# ), | |
# "max-procs" => 5, | |
# "broken-scriptfilename" => "enable", | |
# ) | |
# ), | |
# ) | |
## | |
## Ruby on Rails Example | |
## | |
## Normally you only run one Rails application on one vhost. | |
## | |
#$HTTP["host"] == "rails1.example.com" { | |
# server.document-root = server_root + "/rails/someapp/public" | |
# server.error-handler-404 = "/dispatch.fcgi" | |
# fastcgi.server = ( ".fcgi" => | |
# ("someapp" => | |
# ( "socket" => socket_dir + "/someapp-fcgi.socket", | |
# "bin-path" => server_root + "/rails/someapp/public/dispatch.fcgi", | |
# "bin-environment" => ( | |
# "RAILS_ENV" => "production", | |
# "TMP" => home_dir + "/rails/someapp", | |
# ), | |
# ) | |
# ) | |
# ) | |
#} | |
## | |
## Another example with multiple rails applications on one vhost. | |
## | |
## http://blog.lighttpd.net/articles/2005/11/23/lighttpd-1-4-8-and-multiple-rails-apps | |
## | |
#$HTTP["host"] == "rails2.example.com" { | |
# $HTTP["url"] =~ "^/someapp1" { | |
# server.document-root = server_root + "/rails/someapp1/public" | |
# server.error-handler-404 = "/dispatch.fcgi" | |
# fastcgi.server = ( ".fcgi" => | |
# ("someapp1" => | |
# ( "socket" => socket_dir + "/someapp1-fcgi.socket", | |
# "bin-path" => server_root + "/rails/someapp1/public/dispatch.fcgi", | |
# "bin-environment" => ( | |
# "RAILS_ENV" => "production", | |
# "TMP" => home_dir + "/rails/someapp1", | |
# ), | |
# "strip-request-uri" => "/someapp1/" | |
# ) | |
# ) | |
# ) | |
# } | |
# | |
# $HTTP["url"] =~ "^/someapp2" { | |
# server.document-root = server_root + "/rails/someapp2/public" | |
# server.error-handler-404 = "/dispatch.fcgi" | |
# fastcgi.server = ( ".fcgi" => | |
# ("someapp2" => | |
# ( "socket" => socket_dir + "/someapp2-fcgi.socket", | |
# "bin-path" => server_root + "/rails/someapp2/public/dispatch.fcgi", | |
# "bin-environment" => ( | |
# "RAILS_ENV" => "production", | |
# "TMP" => home_dir + "/rails/someapp2", | |
# ), | |
# "strip-request-uri" => "/someapp2/" | |
# ) | |
# ) | |
# ) | |
# } | |
#} | |
## chrooted webserver + external PHP | |
## | |
## $ spawn-fcgi -f /usr/bin/php-cgi -p 2000 -a 127.0.0.1 -C 8 | |
## | |
## webserver chrooted to /srv/www/ | |
## php running outside the chroot | |
# | |
#fastcgi.server = ( | |
# ".php" => (( | |
# "host" => "127.0.0.1", | |
# "port" => "2000", | |
# "docroot" => "/srv/www/servers/www.example.org/htdocs/" | |
# ))) | |
# | |
#server.chroot = "/srv/www" | |
#server.document-root = "/servers/wwww.example.org/htdocs/" | |
# | |
## | |
####################################################################### | |
####################################################################### | |
## | |
## Modules to load | |
## ----------------- | |
## | |
## at least mod_access and mod_accesslog should be loaded | |
## all other module should only be loaded if really neccesary | |
## | |
## - saves some time | |
## - saves memory | |
## | |
## the default module set contains: | |
## | |
## "mod_indexfile", "mod_dirlisting", "mod_staticfile" | |
## | |
## you dont have to include those modules in your list | |
## | |
## Modules, which are pulled in via conf.d/*.conf | |
## | |
## NOTE: the order of modules is important. | |
## | |
## - mod_accesslog -> conf.d/access_log.conf | |
## - mod_compress -> conf.d/compress.conf | |
## - mod_status -> conf.d/status.conf | |
## - mod_webdav -> conf.d/webdav.conf | |
## - mod_cml -> conf.d/cml.conf | |
## - mod_evhost -> conf.d/evhost.conf | |
## - mod_simple_vhost -> conf.d/simple_vhost.conf | |
## - mod_mysql_vhost -> conf.d/mysql_vhost.conf | |
## - mod_trigger_b4_dl -> conf.d/trigger_b4_dl.conf | |
## - mod_userdir -> conf.d/userdir.conf | |
## - mod_rrdtool -> conf.d/rrdtool.conf | |
## - mod_ssi -> conf.d/ssi.conf | |
## - mod_cgi -> conf.d/cgi.conf | |
## - mod_scgi -> conf.d/scgi.conf | |
## - mod_fastcgi -> conf.d/fastcgi.conf | |
## - mod_proxy -> conf.d/proxy.conf | |
## - mod_secdownload -> conf.d/secdownload.conf | |
## - mod_expire -> conf.d/expire.conf | |
## | |
server.modules = ( | |
"mod_access", | |
# "mod_alias", | |
# "mod_auth", | |
# "mod_evasive", | |
# "mod_redirect", | |
# "mod_rewrite", | |
# "mod_setenv", | |
# "mod_usertrack", | |
) | |
## | |
####################################################################### | |
####################################################################### | |
## | |
## Config for various Modules | |
## | |
## | |
## mod_ssi | |
## | |
#include "conf.d/ssi.conf" | |
## | |
## mod_status | |
## | |
#include "conf.d/status.conf" | |
## | |
## mod_webdav | |
## | |
#include "conf.d/webdav.conf" | |
## | |
## mod_compress | |
## | |
include "conf.d/compress.conf" | |
## | |
## mod_userdir | |
## | |
#include "conf.d/userdir.conf" | |
## | |
## mod_magnet | |
## | |
#include "conf.d/magnet.conf" | |
## | |
## mod_cml | |
## | |
#include "conf.d/cml.conf" | |
## | |
## mod_rrdtool | |
## | |
#include "conf.d/rrdtool.conf" | |
## | |
## mod_proxy | |
## | |
#include "conf.d/proxy.conf" | |
## | |
## mod_expire | |
## | |
include "conf.d/expire.conf" | |
## | |
## mod_secdownload | |
## | |
#include "conf.d/secdownload.conf" | |
## | |
####################################################################### | |
####################################################################### | |
## | |
## CGI modules | |
## | |
## | |
## SCGI (mod_scgi) | |
## | |
#include "conf.d/scgi.conf" | |
## | |
## FastCGI (mod_fastcgi) | |
## | |
include "conf.d/fastcgi.conf" | |
## | |
## plain old CGI (mod_cgi) | |
## | |
#include "conf.d/cgi.conf" | |
## | |
####################################################################### | |
####################################################################### | |
## | |
## VHost Modules | |
## | |
## Only load ONE of them! | |
## ======================== | |
## | |
## | |
## You can use conditionals for vhosts aswell. | |
## | |
## see http://www.lighttpd.net/documentation/configuration.html | |
## | |
## | |
## mod_evhost | |
## | |
#include "conf.d/evhost.conf" | |
## | |
## mod_simple_vhost | |
## | |
#include "conf.d/simple_vhost.conf" | |
## | |
## mod_mysql_vhost | |
## | |
#include "conf.d/mysql_vhost.conf" | |
## | |
####################################################################### | |
# PostgreSQL Client Authentication Configuration File | |
# =================================================== | |
# | |
# Refer to the "Client Authentication" section in the | |
# PostgreSQL documentation for a complete description | |
# of this file. A short synopsis follows. | |
# | |
# This file controls: which hosts are allowed to connect, how clients | |
# are authenticated, which PostgreSQL user names they can use, which | |
# databases they can access. Records take one of these forms: | |
# | |
# local DATABASE USER METHOD [OPTIONS] | |
# host DATABASE USER CIDR-ADDRESS METHOD [OPTIONS] | |
# hostssl DATABASE USER CIDR-ADDRESS METHOD [OPTIONS] | |
# hostnossl DATABASE USER CIDR-ADDRESS METHOD [OPTIONS] | |
# | |
# (The uppercase items must be replaced by actual values.) | |
# | |
# The first field is the connection type: "local" is a Unix-domain socket, | |
# "host" is either a plain or SSL-encrypted TCP/IP socket, "hostssl" is an | |
# SSL-encrypted TCP/IP socket, and "hostnossl" is a plain TCP/IP socket. | |
# | |
# DATABASE can be "all", "sameuser", "samerole", a database name, or | |
# a comma-separated list thereof. | |
# | |
# USER can be "all", a user name, a group name prefixed with "+", or | |
# a comma-separated list thereof. In both the DATABASE and USER fields | |
# you can also write a file name prefixed with "@" to include names from | |
# a separate file. | |
# | |
# CIDR-ADDRESS specifies the set of hosts the record matches. | |
# It is made up of an IP address and a CIDR mask that is an integer | |
# (between 0 and 32 (IPv4) or 128 (IPv6) inclusive) that specifies | |
# the number of significant bits in the mask. Alternatively, you can write | |
# an IP address and netmask in separate columns to specify the set of hosts. | |
# | |
# METHOD can be "trust", "reject", "md5", "password", "gss", "sspi", "krb5", | |
# "ident", "pam", "ldap" or "cert". Note that "password" sends passwords | |
# in clear text; "md5" is preferred since it sends encrypted passwords. | |
# | |
# OPTIONS are a set of options for the authentication in the format | |
# NAME=VALUE. The available options depend on the different authentication | |
# methods - refer to the "Client Authentication" section in the documentation | |
# for a list of which options are available for which authentication methods. | |
# | |
# Database and user names containing spaces, commas, quotes and other special | |
# characters must be quoted. Quoting one of the keywords "all", "sameuser" or | |
# "samerole" makes the name lose its special character, and just match a | |
# database or username with that name. | |
# | |
# This file is read on server startup and when the postmaster receives | |
# a SIGHUP signal. If you edit the file on a running system, you have | |
# to SIGHUP the postmaster for the changes to take effect. You can use | |
# "pg_ctl reload" to do that. | |
# Put your actual configuration here | |
# ---------------------------------- | |
# | |
# If you want to allow non-local connections, you need to add more | |
# "host" records. In that case you will also need to make PostgreSQL listen | |
# on a non-local interface via the listen_addresses configuration parameter, | |
# or via the -i or -h command line switches. | |
# | |
# TYPE DATABASE USER CIDR-ADDRESS METHOD | |
# "local" is for Unix domain socket connections only | |
local all all trust | |
# IPv4 local connections: | |
host all all 127.0.0.1/32 trust | |
# IPv6 local connections: | |
host all all ::1/128 trust | |
#Allow any IP to connect, with a password: | |
host all all 0.0.0.0 0.0.0.0 md5 | |
[PHP] | |
date.timezone = "Australia/Sydney" | |
;;;;;;;;;;;;;;;;;;; | |
; About php.ini ; | |
;;;;;;;;;;;;;;;;;;; | |
; PHP's initialization file, generally called php.ini, is responsible for | |
; configuring many of the aspects of PHP's behavior. | |
; PHP attempts to find and load this configuration from a number of locations. | |
; The following is a summary of its search order: | |
; 1. SAPI module specific location. | |
; 2. The PHPRC environment variable. (As of PHP 5.2.0) | |
; 3. A number of predefined registry keys on Windows (As of PHP 5.2.0) | |
; 4. Current working directory (except CLI) | |
; 5. The web server's directory (for SAPI modules), or directory of PHP | |
; (otherwise in Windows) | |
; 6. The directory from the --with-config-file-path compile time option, or the | |
; Windows directory (C:\windows or C:\winnt) | |
; See the PHP docs for more specific information. | |
; http://www.php.net/manual/en/configuration.file.php | |
; The syntax of the file is extremely simple. Whitespace and Lines | |
; beginning with a semicolon are silently ignored (as you probably guessed). | |
; Section headers (e.g. [Foo]) are also silently ignored, even though | |
; they might mean something in the future. | |
; Directives following the section heading [PATH=/www/mysite] only | |
; apply to PHP files in the /www/mysite directory. Directives | |
; following the section heading [HOST=www.example.com] only apply to | |
; PHP files served from www.example.com. Directives set in these | |
; special sections cannot be overridden by user-defined INI files or | |
; at runtime. Currently, [PATH=] and [HOST=] sections only work under | |
; CGI/FastCGI. | |
; http://www.php.net/manual/en/ini.sections.php | |
; Directives are specified using the following syntax: | |
; directive = value | |
; Directive names are *case sensitive* - foo=bar is different from FOO=bar. | |
; Directives are variables used to configure PHP or PHP extensions. | |
; There is no name validation. If PHP can't find an expected | |
; directive because it is not set or is mistyped, a default value will be used. | |
; The value can be a string, a number, a PHP constant (e.g. E_ALL or M_PI), one | |
; of the INI constants (On, Off, True, False, Yes, No and None) or an expression | |
; (e.g. E_ALL & ~E_NOTICE), a quoted string ("bar"), or a reference to a | |
; previously set variable or directive (e.g. ${foo}) | |
; Expressions in the INI file are limited to bitwise operators and parentheses: | |
; | bitwise OR | |
; ^ bitwise XOR | |
; & bitwise AND | |
; ~ bitwise NOT | |
; ! boolean NOT | |
; Boolean flags can be turned on using the values 1, On, True or Yes. | |
; They can be turned off using the values 0, Off, False or No. | |
; An empty string can be denoted by simply not writing anything after the equal | |
; sign, or by using the None keyword: | |
; foo = ; sets foo to an empty string | |
; foo = None ; sets foo to an empty string | |
; foo = "None" ; sets foo to the string 'None' | |
; If you use constants in your value, and these constants belong to a | |
; dynamically loaded extension (either a PHP extension or a Zend extension), | |
; you may only use these constants *after* the line that loads the extension. | |
;;;;;;;;;;;;;;;;;;; | |
; About this file ; | |
;;;;;;;;;;;;;;;;;;; | |
; PHP comes packaged with two INI files. One that is recommended to be used | |
; in production environments and one that is recommended to be used in | |
; development environments. | |
; php.ini-production contains settings which hold security, performance and | |
; best practices at its core. But please be aware, these settings may break | |
; compatibility with older or less security conscience applications. We | |
; recommending using the production ini in production and testing environments. | |
; php.ini-development is very similar to its production variant, except it's | |
; much more verbose when it comes to errors. We recommending using the | |
; development version only in development environments as errors shown to | |
; application users can inadvertently leak otherwise secure information. | |
; This 2 files are provided, by RPM, in /usr/share/doc/php-common-*/ | |
; File used by RPM (the /etc/php.ini) is mainly the php.ini-production | |
;;;;;;;;;;;;;;;;;;; | |
; Quick Reference ; | |
;;;;;;;;;;;;;;;;;;; | |
; The following are all the settings which are different in either the production | |
; or development versions of the INIs with respect to PHP's default behavior. | |
; Please see the actual settings later in the document for more details as to why | |
; we recommend these changes in PHP's behavior. | |
; allow_call_time_pass_reference | |
; Default Value: On | |
; Development Value: Off | |
; Production Value: Off | |
; display_errors | |
; Default Value: On | |
; Development Value: On | |
; Production Value: Off | |
; display_startup_errors | |
; Default Value: Off | |
; Development Value: On | |
; Production Value: Off | |
; error_reporting | |
; Default Value: E_ALL & ~E_NOTICE | |
; Development Value: E_ALL | E_STRICT | |
; Production Value: E_ALL & ~E_DEPRECATED | |
; html_errors | |
; Default Value: On | |
; Development Value: On | |
; Production value: Off | |
; log_errors | |
; Default Value: Off | |
; Development Value: On | |
; Production Value: On | |
; magic_quotes_gpc | |
; Default Value: On | |
; Development Value: Off | |
; Production Value: Off | |
; max_input_time | |
; Default Value: -1 (Unlimited) | |
; Development Value: 60 (60 seconds) | |
; Production Value: 60 (60 seconds) | |
; output_buffering | |
; Default Value: Off | |
; Development Value: 4096 | |
; Production Value: 4096 | |
; register_argc_argv | |
; Default Value: On | |
; Development Value: Off | |
; Production Value: Off | |
; register_long_arrays | |
; Default Value: On | |
; Development Value: Off | |
; Production Value: Off | |
; request_order | |
; Default Value: None | |
; Development Value: "GP" | |
; Production Value: "GP" | |
; session.bug_compat_42 | |
; Default Value: On | |
; Development Value: On | |
; Production Value: Off | |
; session.bug_compat_warn | |
; Default Value: On | |
; Development Value: On | |
; Production Value: Off | |
; session.gc_divisor | |
; Default Value: 100 | |
; Development Value: 1000 | |
; Production Value: 1000 | |
; session.hash_bits_per_character | |
; Default Value: 4 | |
; Development Value: 5 | |
; Production Value: 5 | |
; short_open_tag | |
; Default Value: On | |
; Development Value: Off | |
; Production Value: Off | |
; track_errors | |
; Default Value: Off | |
; Development Value: On | |
; Production Value: Off | |
; url_rewriter.tags | |
; Default Value: "a=href,area=href,frame=src,form=,fieldset=" | |
; Development Value: "a=href,area=href,frame=src,input=src,form=fakeentry" | |
; Production Value: "a=href,area=href,frame=src,input=src,form=fakeentry" | |
; variables_order | |
; Default Value: "EGPCS" | |
; Development Value: "GPCS" | |
; Production Value: "GPCS" | |
;;;;;;;;;;;;;;;;;;;; | |
; php.ini Options ; | |
;;;;;;;;;;;;;;;;;;;; | |
; Name for user-defined php.ini (.htaccess) files. Default is ".user.ini" | |
;user_ini.filename = ".user.ini" | |
; To disable this feature set this option to empty value | |
;user_ini.filename = | |
; TTL for user-defined php.ini files (time-to-live) in seconds. Default is 300 seconds (5 minutes) | |
;user_ini.cache_ttl = 300 | |
;;;;;;;;;;;;;;;;;;;; | |
; Language Options ; | |
;;;;;;;;;;;;;;;;;;;; | |
; Enable the PHP scripting language engine under Apache. | |
; http://www.php.net/manual/en/apache.configuration.php#ini.engine | |
engine = On | |
; This directive determines whether or not PHP will recognize code between | |
; <? and ?> tags as PHP source which should be processed as such. It's been | |
; recommended for several years that you not use the short tag "short cut" and | |
; instead to use the full <?php and ?> tag combination. With the wide spread use | |
; of XML and use of these tags by other languages, the server can become easily | |
; confused and end up parsing the wrong code in the wrong context. But because | |
; this short cut has been a feature for such a long time, it's currently still | |
; supported for backwards compatibility, but we recommend you don't use them. | |
; Default Value: On | |
; Development Value: Off | |
; Production Value: Off | |
; http://www.php.net/manual/en/ini.core.php#ini.short-open-tag | |
short_open_tag = Off | |
; Allow ASP-style <% %> tags. | |
; http://www.php.net/manual/en/ini.core.php#ini.asp-tags | |
asp_tags = Off | |
; The number of significant digits displayed in floating point numbers. | |
; http://www.php.net/manual/en/ini.core.php#ini.precision | |
precision = 14 | |
; Enforce year 2000 compliance (will cause problems with non-compliant browsers) | |
; http://www.php.net/manual/en/ini.core.php#ini.y2k-compliance | |
y2k_compliance = On | |
; Output buffering is a mechanism for controlling how much output data | |
; (excluding headers and cookies) PHP should keep internally before pushing that | |
; data to the client. If your application's output exceeds this setting, PHP | |
; will send that data in chunks of roughly the size you specify. | |
; Turning on this setting and managing its maximum buffer size can yield some | |
; interesting side-effects depending on your application and web server. | |
; You may be able to send headers and cookies after you've already sent output | |
; through print or echo. You also may see performance benefits if your server is | |
; emitting less packets due to buffered output versus PHP streaming the output | |
; as it gets it. On production servers, 4096 bytes is a good setting for performance | |
; reasons. | |
; Note: Output buffering can also be controlled via Output Buffering Control | |
; functions. | |
; Possible Values: | |
; On = Enabled and buffer is unlimited. (Use with caution) | |
; Off = Disabled | |
; Integer = Enables the buffer and sets its maximum size in bytes. | |
; Default Value: Off | |
; Development Value: 4096 | |
; Production Value: 4096 | |
; http://www.php.net/manual/en/outcontrol.configuration.php#ini.output-buffering | |
output_buffering = 4096 | |
; You can redirect all of the output of your scripts to a function. For | |
; example, if you set output_handler to "mb_output_handler", character | |
; encoding will be transparently converted to the specified encoding. | |
; Setting any output handler automatically turns on output buffering. | |
; Note: People who wrote portable scripts should not depend on this ini | |
; directive. Instead, explicitly set the output handler using ob_start(). | |
; Using this ini directive may cause problems unless you know what script | |
; is doing. | |
; Note: You cannot use both "mb_output_handler" with "ob_iconv_handler" | |
; and you cannot use both "ob_gzhandler" and "zlib.output_compression". | |
; Note: output_handler must be empty if this is set 'On' !!!! | |
; Instead you must use zlib.output_handler. | |
; http://www.php.net/manual/en/outcontrol.configuration.php#ini.output-handler | |
;output_handler = | |
; Transparent output compression using the zlib library | |
; Valid values for this option are 'off', 'on', or a specific buffer size | |
; to be used for compression (default is 4KB) | |
; Note: Resulting chunk size may vary due to nature of compression. PHP | |
; outputs chunks that are few hundreds bytes each as a result of | |
; compression. If you prefer a larger chunk size for better | |
; performance, enable output_buffering in addition. | |
; Note: You need to use zlib.output_handler instead of the standard | |
; output_handler, or otherwise the output will be corrupted. | |
; http://www.php.net/manual/en/zlib.configuration.php#ini.zlib.output-compression | |
zlib.output_compression = on | |
; http://www.php.net/manual/en/zlib.configuration.php#ini.zlib.output-compression-level | |
;zlib.output_compression_level = -1 | |
; You cannot specify additional output handlers if zlib.output_compression | |
; is activated here. This setting does the same as output_handler but in | |
; a different order. | |
; http://www.php.net/manual/en/zlib.configuration.php#ini.zlib.output-handler | |
;zlib.output_handler = | |
; Implicit flush tells PHP to tell the output layer to flush itself | |
; automatically after every output block. This is equivalent to calling the | |
; PHP function flush() after each and every call to print() or echo() and each | |
; and every HTML block. Turning this option on has serious performance | |
; implications and is generally recommended for debugging purposes only. | |
; http://www.php.net/manual/en/outcontrol.configuration.php#ini.implicit-flush | |
implicit_flush = Off | |
; The unserialize callback function will be called (with the undefined class' | |
; name as parameter), if the unserializer finds an undefined class | |
; which should be instantiated. A warning appears if the specified function is | |
; not defined, or if the function doesn't include/implement the missing class. | |
; So only set this entry, if you really want to implement such a | |
; callback-function. | |
unserialize_callback_func = | |
; When floats & doubles are serialized store serialize_precision significant | |
; digits after the floating point. The default value ensures that when floats | |
; are decoded with unserialize, the data will remain the same. | |
serialize_precision = 100 | |
; This directive allows you to enable and disable warnings which PHP will issue | |
; if you pass a value by reference at function call time. Passing values by | |
; reference at function call time is a deprecated feature which will be removed | |
; from PHP at some point in the near future. The acceptable method for passing a | |
; value by reference to a function is by declaring the reference in the functions | |
; definition, not at call time. This directive does not disable this feature, it | |
; only determines whether PHP will warn you about it or not. These warnings | |
; should enabled in development environments only. | |
; Default Value: On (Suppress warnings) | |
; Development Value: Off (Issue warnings) | |
; Production Value: Off (Issue warnings) | |
; http://www.php.net/manual/en/ini.core.php#ini.allow-call-time-pass-reference | |
allow_call_time_pass_reference = Off | |
; Safe Mode | |
; http://www.php.net/manual/en/ini.sect.safe-mode.php#ini.safe-mode | |
safe_mode = Off | |
; By default, Safe Mode does a UID compare check when | |
; opening files. If you want to relax this to a GID compare, | |
; then turn on safe_mode_gid. | |
; http://www.php.net/manual/en/ini.sect.safe-mode.php#ini.safe-mode-gid | |
safe_mode_gid = Off | |
; When safe_mode is on, UID/GID checks are bypassed when | |
; including files from this directory and its subdirectories. | |
; (directory must also be in include_path or full path must | |
; be used when including) | |
; http://www.php.net/manual/en/ini.sect.safe-mode.php#ini.safe-mode-include-dir | |
safe_mode_include_dir = | |
; When safe_mode is on, only executables located in the safe_mode_exec_dir | |
; will be allowed to be executed via the exec family of functions. | |
; http://www.php.net/manual/en/ini.sect.safe-mode.php#ini.safe-mode-exec-dir | |
safe_mode_exec_dir = | |
; Setting certain environment variables may be a potential security breach. | |
; This directive contains a comma-delimited list of prefixes. In Safe Mode, | |
; the user may only alter environment variables whose names begin with the | |
; prefixes supplied here. By default, users will only be able to set | |
; environment variables that begin with PHP_ (e.g. PHP_FOO=BAR). | |
; Note: If this directive is empty, PHP will let the user modify ANY | |
; environment variable! | |
; http://www.php.net/manual/en/ini.sect.safe-mode.php#ini.safe-mode-allowed-env-vars | |
safe_mode_allowed_env_vars = PHP_ | |
; This directive contains a comma-delimited list of environment variables that | |
; the end user won't be able to change using putenv(). These variables will be | |
; protected even if safe_mode_allowed_env_vars is set to allow to change them. | |
; http://www.php.net/manual/en/ini.sect.safe-mode.php#ini.safe-mode-protected-env-vars | |
safe_mode_protected_env_vars = LD_LIBRARY_PATH | |
; open_basedir, if set, limits all file operations to the defined directory | |
; and below. This directive makes most sense if used in a per-directory | |
; or per-virtualhost web server configuration file. This directive is | |
; *NOT* affected by whether Safe Mode is turned On or Off. | |
; http://www.php.net/manual/en/ini.sect.safe-mode.php#ini.open-basedir | |
;open_basedir = | |
; This directive allows you to disable certain functions for security reasons. | |
; It receives a comma-delimited list of function names. This directive is | |
; *NOT* affected by whether Safe Mode is turned On or Off. | |
; http://www.php.net/manual/en/ini.sect.safe-mode.php#ini.disable-functions | |
disable_functions = | |
; This directive allows you to disable certain classes for security reasons. | |
; It receives a comma-delimited list of class names. This directive is | |
; *NOT* affected by whether Safe Mode is turned On or Off. | |
; http://www.php.net/manual/en/ini.sect.safe-mode.php#ini.disable-classes | |
disable_classes = | |
; Colors for Syntax Highlighting mode. Anything that's acceptable in | |
; <span style="color: ???????"> would work. | |
; http://www.php.net/manual/en/misc.configuration.php#ini.syntax-highlighting | |
;highlight.string = #DD0000 | |
;highlight.comment = #FF9900 | |
;highlight.keyword = #007700 | |
;highlight.bg = #FFFFFF | |
;highlight.default = #0000BB | |
;highlight.html = #000000 | |
; If enabled, the request will be allowed to complete even if the user aborts | |
; the request. Consider enabling it if executing long requests, which may end up | |
; being interrupted by the user or a browser timing out. PHP's default behavior | |
; is to disable this feature. | |
; http://www.php.net/manual/en/misc.configuration.php#ini.ignore-user-abort | |
;ignore_user_abort = On | |
; Determines the size of the realpath cache to be used by PHP. This value should | |
; be increased on systems where PHP opens many files to reflect the quantity of | |
; the file operations performed. | |
; http://www.php.net/manual/en/ini.core.php#ini.realpath-cache-size | |
;realpath_cache_size = 16k | |
; Duration of time, in seconds for which to cache realpath information for a given | |
; file or directory. For systems with rarely changing files, consider increasing this | |
; value. | |
; http://www.php.net/manual/en/ini.core.php#ini.realpath-cache-ttl | |
;realpath_cache_ttl = 120 | |
;;;;;;;;;;;;;;;;; | |
; Miscellaneous ; | |
;;;;;;;;;;;;;;;;; | |
; Decides whether PHP may expose the fact that it is installed on the server | |
; (e.g. by adding its signature to the Web server header). It is no security | |
; threat in any way, but it makes it possible to determine whether you use PHP | |
; on your server or not. | |
; http://www.php.net/manual/en/ini.core.php#ini.expose-php | |
expose_php = On | |
;;;;;;;;;;;;;;;;;;; | |
; Resource Limits ; | |
;;;;;;;;;;;;;;;;;;; | |
; Maximum execution time of each script, in seconds | |
; http://www.php.net/manual/en/info.configuration.php#ini.max-execution-time | |
max_execution_time = 30 | |
; Maximum amount of time each script may spend parsing request data. It's a good | |
; idea to limit this time on productions servers in order to eliminate unexpectedly | |
; long running scripts. | |
; Default Value: -1 (Unlimited) | |
; Development Value: 60 (60 seconds) | |
; Production Value: 60 (60 seconds) | |
; http://www.php.net/manual/en/info.configuration.php#ini.max-input-time | |
max_input_time = 60 | |
; Maximum input variable nesting level | |
; http://www.php.net/manual/en/info.configuration.php#ini.max-input-nesting-level | |
;max_input_nesting_level = 64 | |
; Maximum amount of memory a script may consume (128MB) | |
; http://www.php.net/manual/en/ini.core.php#ini.memory-limit | |
memory_limit = 128M | |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
; Error handling and logging ; | |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
; This directive informs PHP of which errors, warnings and notices you would like | |
; it to take action for. The recommended way of setting values for this | |
; directive is through the use of the error level constants and bitwise | |
; operators. The error level constants are below here for convenience as well as | |
; some common settings and their meanings. | |
; By default, PHP is set to take action on all errors, notices and warnings EXCEPT | |
; those related to E_NOTICE and E_STRICT, which together cover best practices and | |
; recommended coding standards in PHP. For performance reasons, this is the | |
; recommend error reporting setting. Your production server shouldn't be wasting | |
; resources complaining about best practices and coding standards. That's what | |
; development servers and development settings are for. | |
; Note: The php.ini-development file has this setting as E_ALL | E_STRICT. This | |
; means it pretty much reports everything which is exactly what you want during | |
; development and early testing. | |
; | |
; Error Level Constants: | |
; E_ALL - All errors and warnings (includes E_STRICT as of PHP 6.0.0) | |
; E_ERROR - fatal run-time errors | |
; E_RECOVERABLE_ERROR - almost fatal run-time errors | |
; E_WARNING - run-time warnings (non-fatal errors) | |
; E_PARSE - compile-time parse errors | |
; E_NOTICE - run-time notices (these are warnings which often result | |
; from a bug in your code, but it's possible that it was | |
; intentional (e.g., using an uninitialized variable and | |
; relying on the fact it's automatically initialized to an | |
; empty string) | |
; E_STRICT - run-time notices, enable to have PHP suggest changes | |
; to your code which will ensure the best interoperability | |
; and forward compatibility of your code | |
; E_CORE_ERROR - fatal errors that occur during PHP's initial startup | |
; E_CORE_WARNING - warnings (non-fatal errors) that occur during PHP's | |
; initial startup | |
; E_COMPILE_ERROR - fatal compile-time errors | |
; E_COMPILE_WARNING - compile-time warnings (non-fatal errors) | |
; E_USER_ERROR - user-generated error message | |
; E_USER_WARNING - user-generated warning message | |
; E_USER_NOTICE - user-generated notice message | |
; E_DEPRECATED - warn about code that will not work in future versions | |
; of PHP | |
; E_USER_DEPRECATED - user-generated deprecation warnings | |
; | |
; Common Values: | |
; E_ALL & ~E_NOTICE (Show all errors, except for notices and coding standards warnings.) | |
; E_ALL & ~E_NOTICE | E_STRICT (Show all errors, except for notices) | |
; E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR (Show only errors) | |
; E_ALL | E_STRICT (Show all errors, warnings and notices including coding standards.) | |
; Default Value: E_ALL & ~E_NOTICE | |
; Development Value: E_ALL | E_STRICT | |
; Production Value: E_ALL & ~E_DEPRECATED | |
; http://www.php.net/manual/en/errorfunc.configuration.php#ini.error-reporting | |
error_reporting = E_ALL & ~E_DEPRECATED | |
; This directive controls whether or not and where PHP will output errors, | |
; notices and warnings too. Error output is very useful during development, but | |
; it could be very dangerous in production environments. Depending on the code | |
; which is triggering the error, sensitive information could potentially leak | |
; out of your application such as database usernames and passwords or worse. | |
; It's recommended that errors be logged on production servers rather than | |
; having the errors sent to STDOUT. | |
; Possible Values: | |
; Off = Do not display any errors | |
; stderr = Display errors to STDERR (affects only CGI/CLI binaries!) | |
; On or stdout = Display errors to STDOUT | |
; Default Value: On | |
; Development Value: On | |
; Production Value: Off | |
; http://www.php.net/manual/en/errorfunc.configuration.php#ini.display-errors | |
display_errors = Off | |
; The display of errors which occur during PHP's startup sequence are handled | |
; separately from display_errors. PHP's default behavior is to suppress those | |
; errors from clients. Turning the display of startup errors on can be useful in | |
; debugging configuration problems. But, it's strongly recommended that you | |
; leave this setting off on production servers. | |
; Default Value: Off | |
; Development Value: On | |
; Production Value: Off | |
; http://www.php.net/manual/en/errorfunc.configuration.php#ini.display-startup-errors | |
display_startup_errors = Off | |
; Besides displaying errors, PHP can also log errors to locations such as a | |
; server-specific log, STDERR, or a location specified by the error_log | |
; directive found below. While errors should not be displayed on productions | |
; servers they should still be monitored and logging is a great way to do that. | |
; Default Value: Off | |
; Development Value: On | |
; Production Value: On | |
; http://www.php.net/manual/en/errorfunc.configuration.php#ini.log-errors | |
log_errors = On | |
; Set maximum length of log_errors. In error_log information about the source is | |
; added. The default is 1024 and 0 allows to not apply any maximum length at all. | |
; http://www.php.net/manual/en/errorfunc.configuration.php#ini.log-errors-max-len | |
log_errors_max_len = 1024 | |
; Do not log repeated messages. Repeated errors must occur in same file on same | |
; line unless ignore_repeated_source is set true. | |
; http://www.php.net/manual/en/errorfunc.configuration.php#ini.ignore-repeated-errors | |
ignore_repeated_errors = Off | |
; Ignore source of message when ignoring repeated messages. When this setting | |
; is On you will not log errors with repeated messages from different files or | |
; source lines. | |
; http://www.php.net/manual/en/errorfunc.configuration.php#ini.ignore-repeated-source | |
ignore_repeated_source = Off | |
; If this parameter is set to Off, then memory leaks will not be shown (on | |
; stdout or in the log). This has only effect in a debug compile, and if | |
; error reporting includes E_WARNING in the allowed list | |
; http://www.php.net/manual/en/errorfunc.configuration.php#ini.report-memleaks | |
report_memleaks = On | |
; This setting is on by default. | |
;report_zend_debug = 0 | |
; Store the last error/warning message in $php_errormsg (boolean). Setting this value | |
; to On can assist in debugging and is appropriate for development servers. It should | |
; however be disabled on production servers. | |
; Default Value: Off | |
; Development Value: On | |
; Production Value: Off | |
; http://www.php.net/manual/en/errorfunc.configuration.php#ini.track-errors | |
track_errors = Off | |
; Turn off normal error reporting and emit XML-RPC error XML | |
; http://www.php.net/manual/en/errorfunc.configuration.php#ini.xmlrpc-errors | |
;xmlrpc_errors = 0 | |
; An XML-RPC faultCode | |
;xmlrpc_error_number = 0 | |
; When PHP displays or logs an error, it has the capability of inserting html | |
; links to documentation related to that error. This directive controls whether | |
; those HTML links appear in error messages or not. For performance and security | |
; reasons, it's recommended you disable this on production servers. | |
; Default Value: On | |
; Development Value: On | |
; Production value: Off | |
; http://www.php.net/manual/en/errorfunc.configuration.php#ini.html-errors | |
html_errors = Off | |
; If html_errors is set On PHP produces clickable error messages that direct | |
; to a page describing the error or function causing the error in detail. | |
; You can download a copy of the PHP manual from http://www.php.net/docs.php | |
; and change docref_root to the base URL of your local copy including the | |
; leading '/'. You must also specify the file extension being used including | |
; the dot. PHP's default behavior is to leave these settings empty. | |
; Note: Never use this feature for production boxes. | |
; http://www.php.net/manual/en/errorfunc.configuration.php#ini.docref-root | |
; Examples | |
;docref_root = "/phpmanual/" | |
; http://www.php.net/manual/en/errorfunc.configuration.php#ini.docref-ext | |
;docref_ext = .html | |
; String to output before an error message. PHP's default behavior is to leave | |
; this setting blank. | |
; http://www.php.net/manual/en/errorfunc.configuration.php#ini.error-prepend-string | |
; Example: | |
;error_prepend_string = "<font color=#ff0000>" | |
; String to output after an error message. PHP's default behavior is to leave | |
; this setting blank. | |
; http://www.php.net/manual/en/errorfunc.configuration.php#ini.error-append-string | |
; Example: | |
;error_append_string = "</font>" | |
; Log errors to specified file. PHP's default behavior is to leave this value | |
; empty. | |
; http://www.php.net/manual/en/errorfunc.configuration.php#ini.error-log | |
; Example: | |
;error_log = php_errors.log | |
; Log errors to syslog (Event Log on NT, not valid in Windows 95). | |
;error_log = syslog | |
;;;;;;;;;;;;;;;;; | |
; Data Handling ; | |
;;;;;;;;;;;;;;;;; | |
; Note - track_vars is ALWAYS enabled as of PHP 4.0.3 | |
; The separator used in PHP generated URLs to separate arguments. | |
; PHP's default setting is "&". | |
; http://www.php.net/manual/en/ini.core.php#ini.arg-separator.output | |
; Example: | |
;arg_separator.output = "&" | |
; List of separator(s) used by PHP to parse input URLs into variables. | |
; PHP's default setting is "&". | |
; NOTE: Every character in this directive is considered as separator! | |
; http://www.php.net/manual/en/ini.core.php#ini.arg-separator.input | |
; Example: | |
;arg_separator.input = ";&" | |
; This directive determines which super global arrays are registered when PHP | |
; starts up. If the register_globals directive is enabled, it also determines | |
; what order variables are populated into the global space. G,P,C,E & S are | |
; abbreviations for the following respective super globals: GET, POST, COOKIE, | |
; ENV and SERVER. There is a performance penalty paid for the registration of | |
; these arrays and because ENV is not as commonly used as the others, ENV is | |
; is not recommended on productions servers. You can still get access to | |
; the environment variables through getenv() should you need to. | |
; Default Value: "EGPCS" | |
; Development Value: "GPCS" | |
; Production Value: "GPCS"; | |
; http://www.php.net/manual/en/ini.core.php#ini.variables-order | |
variables_order = "GPCS" | |
; This directive determines which super global data (G,P,C,E & S) should | |
; be registered into the super global array REQUEST. If so, it also determines | |
; the order in which that data is registered. The values for this directive are | |
; specified in the same manner as the variables_order directive, EXCEPT one. | |
; Leaving this value empty will cause PHP to use the value set in the | |
; variables_order directive. It does not mean it will leave the super globals | |
; array REQUEST empty. | |
; Default Value: None | |
; Development Value: "GP" | |
; Production Value: "GP" | |
; http://www.php.net/manual/en/ini.core.php#ini.request-order | |
request_order = "GP" | |
; Whether or not to register the EGPCS variables as global variables. You may | |
; want to turn this off if you don't want to clutter your scripts' global scope | |
; with user data. This makes most sense when coupled with track_vars - in which | |
; case you can access all of the GPC variables through the $HTTP_*_VARS[], | |
; variables. | |
; You should do your best to write your scripts so that they do not require | |
; register_globals to be on; Using form variables as globals can easily lead | |
; to possible security problems, if the code is not very well thought of. | |
; http://www.php.net/manual/en/ini.core.php#ini.register-globals | |
register_globals = Off | |
; Determines whether the deprecated long $HTTP_*_VARS type predefined variables | |
; are registered by PHP or not. As they are deprecated, we obviously don't | |
; recommend you use them. They are on by default for compatibility reasons but | |
; they are not recommended on production servers. | |
; Default Value: On | |
; Development Value: Off | |
; Production Value: Off | |
; http://www.php.net/manual/en/ini.core.php#ini.register-long-arrays | |
register_long_arrays = Off | |
; This directive determines whether PHP registers $argv & $argc each time it | |
; runs. $argv contains an array of all the arguments passed to PHP when a script | |
; is invoked. $argc contains an integer representing the number of arguments | |
; that were passed when the script was invoked. These arrays are extremely | |
; useful when running scripts from the command line. When this directive is | |
; enabled, registering these variables consumes CPU cycles and memory each time | |
; a script is executed. For performance reasons, this feature should be disabled | |
; on production servers. | |
; Default Value: On | |
; Development Value: Off | |
; Production Value: Off | |
; http://www.php.net/manual/en/ini.core.php#ini.register-argc-argv | |
register_argc_argv = Off | |
; When enabled, the SERVER and ENV variables are created when they're first | |
; used (Just In Time) instead of when the script starts. If these variables | |
; are not used within a script, having this directive on will result in a | |
; performance gain. The PHP directives register_globals, register_long_arrays, | |
; and register_argc_argv must be disabled for this directive to have any affect. | |
; http://www.php.net/manual/en/ini.core.php#ini.auto-globals-jit | |
auto_globals_jit = On | |
; Maximum size of POST data that PHP will accept. | |
; http://www.php.net/manual/en/ini.core.php#ini.post-max-size | |
post_max_size = 8M | |
; Magic quotes are a preprocessing feature of PHP where PHP will attempt to | |
; escape any character sequences in GET, POST, COOKIE and ENV data which might | |
; otherwise corrupt data being placed in resources such as databases before | |
; making that data available to you. Because of character encoding issues and | |
; non-standard SQL implementations across many databases, it's not currently | |
; possible for this feature to be 100% accurate. PHP's default behavior is to | |
; enable the feature. We strongly recommend you use the escaping mechanisms | |
; designed specifically for the database your using instead of relying on this | |
; feature. Also note, this feature has been deprecated as of PHP 5.3.0 and is | |
; scheduled for removal in PHP 6. | |
; Default Value: On | |
; Development Value: Off | |
; Production Value: Off | |
; http://www.php.net/manual/en/info.configuration.php#ini.magic-quotes-gpc | |
magic_quotes_gpc = Off | |
; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc. | |
; http://www.php.net/manual/en/info.configuration.php#ini.magic-quotes-runtime | |
magic_quotes_runtime = Off | |
; Use Sybase-style magic quotes (escape ' with '' instead of \'). | |
; http://www.php.net/manual/en/sybase.configuration.php#ini.magic-quotes-sybase | |
magic_quotes_sybase = Off | |
; Automatically add files before PHP document. | |
; http://www.php.net/manual/en/ini.core.php#ini.auto-prepend-file | |
auto_prepend_file = | |
; Automatically add files after PHP document. | |
; http://www.php.net/manual/en/ini.core.php#ini.auto-append-file | |
auto_append_file = | |
; As of 4.0b4, PHP always outputs a character encoding by default in | |
; the Content-type: header. To disable sending of the charset, simply | |
; set it to be empty. | |
; | |
; PHP's built-in default is text/html | |
; http://www.php.net/manual/en/ini.core.php#ini.default-mimetype | |
default_mimetype = "text/html" | |
; PHP's default character set is set to empty. | |
; http://www.php.net/manual/en/ini.core.php#ini.default-charset | |
;default_charset = "iso-8859-1" | |
; Always populate the $HTTP_RAW_POST_DATA variable. PHP's default behavior is | |
; to disable this feature. | |
; http://www.php.net/manual/en/ini.core.php#ini.always-populate-raw-post-data | |
;always_populate_raw_post_data = On | |
;;;;;;;;;;;;;;;;;;;;;;;;; | |
; Paths and Directories ; | |
;;;;;;;;;;;;;;;;;;;;;;;;; | |
; UNIX: "/path1:/path2" | |
;include_path = ".:/php/includes" | |
; | |
; Windows: "\path1;\path2" | |
;include_path = ".;c:\php\includes" | |
; | |
; PHP's default setting for include_path is ".;/path/to/php/pear" | |
; http://www.php.net/manual/en/ini.core.php#ini.include-path | |
; The root of the PHP pages, used only if nonempty. | |
; if PHP was not compiled with FORCE_REDIRECT, you SHOULD set doc_root | |
; if you are running php as a CGI under any web server (other than IIS) | |
; see documentation for security issues. The alternate is to use the | |
; cgi.force_redirect configuration below | |
; http://www.php.net/manual/en/ini.core.php#ini.doc-root | |
doc_root = | |
; The directory under which PHP opens the script using /~username used only | |
; if nonempty. | |
; http://www.php.net/manual/en/ini.core.php#ini.user-dir | |
user_dir = | |
; Directory in which the loadable extensions (modules) reside. | |
; http://www.php.net/manual/en/ini.core.php#ini.extension-dir | |
; extension_dir = "./" | |
; Whether or not to enable the dl() function. The dl() function does NOT work | |
; properly in multithreaded servers, such as IIS or Zeus, and is automatically | |
; disabled on them. | |
; http://www.php.net/manual/en/info.configuration.php#ini.enable-dl | |
enable_dl = Off | |
; cgi.force_redirect is necessary to provide security running PHP as a CGI under | |
; most web servers. Left undefined, PHP turns this on by default. You can | |
; turn it off here AT YOUR OWN RISK | |
; **You CAN safely turn this off for IIS, in fact, you MUST.** | |
; http://www.php.net/manual/en/ini.core.php#ini.cgi.force-redirect | |
;cgi.force_redirect = 1 | |
; if cgi.nph is enabled it will force cgi to always sent Status: 200 with | |
; every request. PHP's default behavior is to disable this feature. | |
;cgi.nph = 1 | |
; if cgi.force_redirect is turned on, and you are not running under Apache or Netscape | |
; (iPlanet) web servers, you MAY need to set an environment variable name that PHP | |
; will look for to know it is OK to continue execution. Setting this variable MAY | |
; cause security issues, KNOW WHAT YOU ARE DOING FIRST. | |
; http://www.php.net/manual/en/ini.core.php#ini.cgi.redirect-status-env | |
;cgi.redirect_status_env = ; | |
; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP's | |
; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok | |
; what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting | |
; this to 1 will cause PHP CGI to fix its paths to conform to the spec. A setting | |
; of zero causes PHP to behave as before. Default is 1. You should fix your scripts | |
; to use SCRIPT_FILENAME rather than PATH_TRANSLATED. | |
; http://www.php.net/manual/en/ini.core.php#ini.cgi.fix-pathinfo | |
cgi.fix_pathinfo=1 | |
; FastCGI under IIS (on WINNT based OS) supports the ability to impersonate | |
; security tokens of the calling client. This allows IIS to define the | |
; security context that the request runs under. mod_fastcgi under Apache | |
; does not currently support this feature (03/17/2002) | |
; Set to 1 if running under IIS. Default is zero. | |
; http://www.php.net/manual/en/ini.core.php#ini.fastcgi.impersonate | |
;fastcgi.impersonate = 1; | |
; Disable logging through FastCGI connection. PHP's default behavior is to enable | |
; this feature. | |
;fastcgi.logging = 0 | |
; cgi.rfc2616_headers configuration option tells PHP what type of headers to | |
; use when sending HTTP response code. If it's set 0 PHP sends Status: header that | |
; is supported by Apache. When this option is set to 1 PHP will send | |
; RFC2616 compliant header. | |
; Default is zero. | |
; http://www.php.net/manual/en/ini.core.php#ini.cgi.rfc2616-headers | |
;cgi.rfc2616_headers = 0 | |
;;;;;;;;;;;;;;;; | |
; File Uploads ; | |
;;;;;;;;;;;;;;;; | |
; Whether to allow HTTP file uploads. | |
; http://www.php.net/manual/en/ini.core.php#ini.file-uploads | |
file_uploads = On | |
; Temporary directory for HTTP uploaded files (will use system default if not | |
; specified). | |
; http://www.php.net/manual/en/ini.core.php#ini.upload-tmp-dir | |
;upload_tmp_dir = | |
; Maximum allowed size for uploaded files. | |
; http://www.php.net/manual/en/ini.core.php#ini.upload-max-filesize | |
upload_max_filesize = 2M | |
;;;;;;;;;;;;;;;;;; | |
; Fopen wrappers ; | |
;;;;;;;;;;;;;;;;;; | |
; Whether to allow the treatment of URLs (like http:// or ftp://) as files. | |
; http://www.php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen | |
allow_url_fopen = On | |
; Whether to allow include/require to open URLs (like http:// or ftp://) as files. | |
; http://www.php.net/manual/en/filesystem.configuration.php#ini.allow-url-include | |
allow_url_include = Off | |
; Define the anonymous ftp password (your email address). PHP's default setting | |
; for this is empty. | |
; http://www.php.net/manual/en/filesystem.configuration.php#ini.from | |
;from="john@doe.com" | |
; Define the User-Agent string. PHP's default setting for this is empty. | |
; http://www.php.net/manual/en/filesystem.configuration.php#ini.user-agent | |
;user_agent="PHP" | |
; Default timeout for socket based streams (seconds) | |
; http://www.php.net/manual/en/filesystem.configuration.php#ini.default-socket-timeout | |
default_socket_timeout = 60 | |
; If your scripts have to deal with files from Macintosh systems, | |
; or you are running on a Mac and need to deal with files from | |
; unix or win32 systems, setting this flag will cause PHP to | |
; automatically detect the EOL character in those files so that | |
; fgets() and file() will work regardless of the source of the file. | |
; http://www.php.net/manual/en/filesystem.configuration.php#ini.auto-detect-line-endings | |
;auto_detect_line_endings = Off | |
;;;;;;;;;;;;;;;;;;;;;; | |
; Dynamic Extensions ; | |
;;;;;;;;;;;;;;;;;;;;;; | |
; If you wish to have an extension loaded automatically, use the following | |
; syntax: | |
; | |
; extension=modulename.extension | |
; | |
; For example | |
; | |
; extension=msql.so | |
; | |
; ... or with a path: | |
; | |
; extension=/path/to/extension/msql.so | |
; | |
; If you only provide the name of the extension, PHP will look for it in its | |
; default extension directory. | |
;;;; | |
; Note: packaged extension modules are now loaded via the .ini files | |
; found in the directory /etc/php.d; these are loaded by default. | |
;;;; | |
;;;;;;;;;;;;;;;;;;; | |
; Module Settings ; | |
;;;;;;;;;;;;;;;;;;; | |
[Date] | |
; Defines the default timezone used by the date functions | |
; http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone | |
;date.timezone = | |
; http://www.php.net/manual/en/datetime.configuration.php#ini.date.default-latitude | |
;date.default_latitude = 31.7667 | |
; http://www.php.net/manual/en/datetime.configuration.php#ini.date.default-longitude | |
;date.default_longitude = 35.2333 | |
; http://www.php.net/manual/en/datetime.configuration.php#ini.date.sunrise-zenith | |
;date.sunrise_zenith = 90.583333 | |
; http://www.php.net/manual/en/datetime.configuration.php#ini.date.sunset-zenith | |
;date.sunset_zenith = 90.583333 | |
[filter] | |
; http://www.php.net/manual/en/filter.configuration.php#ini.filter.default | |
;filter.default = unsafe_raw | |
; http://www.php.net/manual/en/filter.configuration.php#ini.filter.default-flags | |
;filter.default_flags = | |
[iconv] | |
;iconv.input_encoding = ISO-8859-1 | |
;iconv.internal_encoding = ISO-8859-1 | |
;iconv.output_encoding = ISO-8859-1 | |
[intl] | |
;intl.default_locale = | |
[sqlite] | |
; http://www.php.net/manual/en/sqlite.configuration.php#ini.sqlite.assoc-case | |
;sqlite.assoc_case = 0 | |
[sqlite3] | |
;sqlite3.extension_dir = | |
[Pcre] | |
;PCRE library backtracking limit. | |
; http://www.php.net/manual/en/pcre.configuration.php#ini.pcre.backtrack-limit | |
;pcre.backtrack_limit=100000 | |
;PCRE library recursion limit. | |
;Please note that if you set this value to a high number you may consume all | |
;the available process stack and eventually crash PHP (due to reaching the | |
;stack size limit imposed by the Operating System). | |
; http://www.php.net/manual/en/pcre.configuration.php#ini.pcre.recursion-limit | |
;pcre.recursion_limit=100000 | |
[Pdo] | |
; Whether to pool ODBC connections. Can be one of "strict", "relaxed" or "off" | |
; http://www.php.net/manual/en/ref.pdo-odbc.php#ini.pdo-odbc.connection-pooling | |
;pdo_odbc.connection_pooling=strict | |
[Phar] | |
; http://www.php.net/manual/en/phar.configuration.php#ini.phar.readonly | |
;phar.readonly = On | |
; http://www.php.net/manual/en/phar.configuration.php#ini.phar.require-hash | |
;phar.require_hash = On | |
;phar.cache_list = | |
[Syslog] | |
; Whether or not to define the various syslog variables (e.g. $LOG_PID, | |
; $LOG_CRON, etc.). Turning it off is a good idea performance-wise. In | |
; runtime, you can define these variables by calling define_syslog_variables(). | |
; http://www.php.net/manual/en/network.configuration.php#ini.define-syslog-variables | |
define_syslog_variables = Off | |
[mail function] | |
; For Win32 only. | |
; http://www.php.net/manual/en/mail.configuration.php#ini.smtp | |
SMTP = localhost | |
; http://www.php.net/manual/en/mail.configuration.php#ini.smtp-port | |
smtp_port = 25 | |
; For Win32 only. | |
; http://www.php.net/manual/en/mail.configuration.php#ini.sendmail-from | |
;sendmail_from = me@example.com | |
; For Unix only. You may supply arguments as well (default: "sendmail -t -i"). | |
; http://www.php.net/manual/en/mail.configuration.php#ini.sendmail-path | |
sendmail_path = /usr/sbin/sendmail -t -i | |
; Force the addition of the specified parameters to be passed as extra parameters | |
; to the sendmail binary. These parameters will always replace the value of | |
; the 5th parameter to mail(), even in safe mode. | |
;mail.force_extra_parameters = | |
; Add X-PHP-Originaiting-Script: that will include uid of the script followed by the filename | |
mail.add_x_header = On | |
; Log all mail() calls including the full path of the script, line #, to address and headers | |
;mail.log = | |
[SQL] | |
; http://www.php.net/manual/en/ini.core.php#ini.sql.safe-mode | |
sql.safe_mode = Off | |
[ODBC] | |
; http://www.php.net/manual/en/odbc.configuration.php#ini.uodbc.default-db | |
;odbc.default_db = Not yet implemented | |
; http://www.php.net/manual/en/odbc.configuration.php#ini.uodbc.default-user | |
;odbc.default_user = Not yet implemented | |
; http://www.php.net/manual/en/odbc.configuration.php#ini.uodbc.default-pw | |
;odbc.default_pw = Not yet implemented | |
; Allow or prevent persistent links. | |
; http://www.php.net/manual/en/odbc.configuration.php#ini.uodbc.allow-persistent | |
odbc.allow_persistent = On | |
; Check that a connection is still valid before reuse. | |
; http://www.php.net/manual/en/odbc.configuration.php#ini.uodbc.check-persistent | |
odbc.check_persistent = On | |
; Maximum number of persistent links. -1 means no limit. | |
; http://www.php.net/manual/en/odbc.configuration.php#ini.uodbc.max-persistent | |
odbc.max_persistent = -1 | |
; Maximum number of links (persistent + non-persistent). -1 means no limit. | |
; http://www.php.net/manual/en/odbc.configuration.php#ini.uodbc.max-links | |
odbc.max_links = -1 | |
; Handling of LONG fields. Returns number of bytes to variables. 0 means | |
; passthru. | |
; http://www.php.net/manual/en/odbc.configuration.php#ini.uodbc.defaultlrl | |
odbc.defaultlrl = 4096 | |
; Handling of binary data. 0 means passthru, 1 return as is, 2 convert to char. | |
; See the documentation on odbc_binmode and odbc_longreadlen for an explanation | |
; of uodbc.defaultlrl and uodbc.defaultbinmode | |
; http://www.php.net/manual/en/odbc.configuration.php#ini.uodbc.defaultbinmode | |
odbc.defaultbinmode = 1 | |
;birdstep.max_links = -1 | |
[MySQL] | |
; Allow or prevent persistent links. | |
; http://www.php.net/manual/en/mysql.configuration.php#ini.mysql.allow-persistent | |
mysql.allow_persistent = On | |
; Maximum number of persistent links. -1 means no limit. | |
; http://www.php.net/manual/en/mysql.configuration.php#ini.mysql.max-persistent | |
mysql.max_persistent = -1 | |
; Maximum number of links (persistent + non-persistent). -1 means no limit. | |
; http://www.php.net/manual/en/mysql.configuration.php#ini.mysql.max-links | |
mysql.max_links = -1 | |
; Default port number for mysql_connect(). If unset, mysql_connect() will use | |
; the $MYSQL_TCP_PORT or the mysql-tcp entry in /etc/services or the | |
; compile-time value defined MYSQL_PORT (in that order). Win32 will only look | |
; at MYSQL_PORT. | |
; http://www.php.net/manual/en/mysql.configuration.php#ini.mysql.default-port | |
mysql.default_port = | |
; Default socket name for local MySQL connects. If empty, uses the built-in | |
; MySQL defaults. | |
; http://www.php.net/manual/en/mysql.configuration.php#ini.mysql.default-socket | |
mysql.default_socket = | |
; Default host for mysql_connect() (doesn't apply in safe mode). | |
; http://www.php.net/manual/en/mysql.configuration.php#ini.mysql.default-host | |
mysql.default_host = | |
; Default user for mysql_connect() (doesn't apply in safe mode). | |
; http://www.php.net/manual/en/mysql.configuration.php#ini.mysql.default-user | |
mysql.default_user = | |
; Default password for mysql_connect() (doesn't apply in safe mode). | |
; Note that this is generally a *bad* idea to store passwords in this file. | |
; *Any* user with PHP access can run 'echo get_cfg_var("mysql.default_password") | |
; and reveal this password! And of course, any users with read access to this | |
; file will be able to reveal the password as well. | |
; http://www.php.net/manual/en/mysql.configuration.php#ini.mysql.default-password | |
mysql.default_password = | |
; Maximum time (in seconds) for connect timeout. -1 means no limit | |
; http://www.php.net/manual/en/mysql.configuration.php#ini.mysql.connect-timeout | |
mysql.connect_timeout = 60 | |
; Trace mode. When trace_mode is active (=On), warnings for table/index scans and | |
; SQL-Errors will be displayed. | |
; http://www.php.net/manual/en/mysql.configuration.php#ini.mysql.trace-mode | |
mysql.trace_mode = Off | |
[MySQLi] | |
; Maximum number of links. -1 means no limit. | |
; http://www.php.net/manual/en/mysqli.configuration.php#ini.mysqli.max-links | |
mysqli.max_links = -1 | |
; Default port number for mysqli_connect(). If unset, mysqli_connect() will use | |
; the $MYSQL_TCP_PORT or the mysql-tcp entry in /etc/services or the | |
; compile-time value defined MYSQL_PORT (in that order). Win32 will only look | |
; at MYSQL_PORT. | |
; http://www.php.net/manual/en/mysqli.configuration.php#ini.mysqli.default-port | |
mysqli.default_port = 3306 | |
; Default socket name for local MySQL connects. If empty, uses the built-in | |
; MySQL defaults. | |
; http://www.php.net/manual/en/mysqli.configuration.php#ini.mysqli.default-socket | |
mysqli.default_socket = | |
; Default host for mysql_connect() (doesn't apply in safe mode). | |
; http://www.php.net/manual/en/mysqli.configuration.php#ini.mysqli.default-host | |
mysqli.default_host = | |
; Default user for mysql_connect() (doesn't apply in safe mode). | |
; http://www.php.net/manual/en/mysqli.configuration.php#ini.mysqli.default-user | |
mysqli.default_user = | |
; Default password for mysqli_connect() (doesn't apply in safe mode). | |
; Note that this is generally a *bad* idea to store passwords in this file. | |
; *Any* user with PHP access can run 'echo get_cfg_var("mysqli.default_pw") | |
; and reveal this password! And of course, any users with read access to this | |
; file will be able to reveal the password as well. | |
; http://www.php.net/manual/en/mysqli.configuration.php#ini.mysqli.default-pw | |
mysqli.default_pw = | |
; Allow or prevent reconnect | |
mysqli.reconnect = Off | |
[PostgresSQL] | |
; Allow or prevent persistent links. | |
; http://www.php.net/manual/en/pgsql.configuration.php#ini.pgsql.allow-persistent | |
pgsql.allow_persistent = On | |
; Detect broken persistent links always with pg_pconnect(). | |
; Auto reset feature requires a little overheads. | |
; http://www.php.net/manual/en/pgsql.configuration.php#ini.pgsql.auto-reset-persistent | |
pgsql.auto_reset_persistent = Off | |
; Maximum number of persistent links. -1 means no limit. | |
; http://www.php.net/manual/en/pgsql.configuration.php#ini.pgsql.max-persistent | |
pgsql.max_persistent = -1 | |
; Maximum number of links (persistent+non persistent). -1 means no limit. | |
; http://www.php.net/manual/en/pgsql.configuration.php#ini.pgsql.max-links | |
pgsql.max_links = -1 | |
; Ignore PostgreSQL backends Notice message or not. | |
; Notice message logging require a little overheads. | |
; http://www.php.net/manual/en/pgsql.configuration.php#ini.pgsql.ignore-notice | |
pgsql.ignore_notice = 0 | |
; Log PostgreSQL backends Noitce message or not. | |
; Unless pgsql.ignore_notice=0, module cannot log notice message. | |
; http://www.php.net/manual/en/pgsql.configuration.php#ini.pgsql.log-notice | |
pgsql.log_notice = 0 | |
[Sybase-CT] | |
; Allow or prevent persistent links. | |
; http://www.php.net/manual/en/sybase.configuration.php#ini.sybct.allow-persistent | |
sybct.allow_persistent = On | |
; Maximum number of persistent links. -1 means no limit. | |
; http://www.php.net/manual/en/sybase.configuration.php#ini.sybct.max-persistent | |
sybct.max_persistent = -1 | |
; Maximum number of links (persistent + non-persistent). -1 means no limit. | |
; http://www.php.net/manual/en/sybase.configuration.php#ini.sybct.max-links | |
sybct.max_links = -1 | |
; Minimum server message severity to display. | |
; http://www.php.net/manual/en/sybase.configuration.php#ini.sybct.min-server-severity | |
sybct.min_server_severity = 10 | |
; Minimum client message severity to display. | |
; http://www.php.net/manual/en/sybase.configuration.php#ini.sybct.min-client-severity | |
sybct.min_client_severity = 10 | |
; Set per-context timeout | |
; http://www.php.net/manual/en/sybase.configuration.php#ini.sybct.timeout | |
;sybct.timeout= | |
;sybct.packet_size | |
[bcmath] | |
; Number of decimal digits for all bcmath functions. | |
; http://www.php.net/manual/en/bc.configuration.php#ini.bcmath.scale | |
bcmath.scale = 0 | |
[browscap] | |
; http://www.php.net/manual/en/misc.configuration.php#ini.browscap | |
;browscap = extra/browscap.ini | |
[Session] | |
; Handler used to store/retrieve data. | |
; http://www.php.net/manual/en/session.configuration.php#ini.session.save-handler | |
session.save_handler = files | |
; Argument passed to save_handler. In the case of files, this is the path | |
; where data files are stored. Note: Windows users have to change this | |
; variable in order to use PHP's session functions. | |
; | |
; As of PHP 4.0.1, you can define the path as: | |
; | |
; session.save_path = "N;/path" | |
; | |
; where N is an integer. Instead of storing all the session files in | |
; /path, what this will do is use subdirectories N-levels deep, and | |
; store the session data in those directories. This is useful if you | |
; or your OS have problems with lots of files in one directory, and is | |
; a more efficient layout for servers that handle lots of sessions. | |
; | |
; NOTE 1: PHP will not create this directory structure automatically. | |
; You can use the script in the ext/session dir for that purpose. | |
; NOTE 2: See the section on garbage collection below if you choose to | |
; use subdirectories for session storage | |
; | |
; The file storage module creates files using mode 600 by default. | |
; You can change that by using | |
; | |
; session.save_path = "N;MODE;/path" | |
; | |
; where MODE is the octal representation of the mode. Note that this | |
; does not overwrite the process's umask. | |
; http://www.php.net/manual/en/session.configuration.php#ini.session.save-path | |
session.save_path = "/tmp" | |
; Whether to use cookies. | |
; http://www.php.net/manual/en/session.configuration.php#ini.session.use-cookies | |
session.use_cookies = 1 | |
; http://www.php.net/manual/en/session.configuration.php#ini.session.cookie-secure | |
;session.cookie_secure = | |
; This option forces PHP to fetch and use a cookie for storing and maintaining | |
; the session id. We encourage this operation as it's very helpful in combatting | |
; session hijacking when not specifying and managing your own session id. It is | |
; not the end all be all of session hijacking defense, but it's a good start. | |
; http://www.php.net/manual/en/session.configuration.php#ini.session.use-only-cookies | |
session.use_only_cookies = 1 | |
; Name of the session (used as cookie name). | |
; http://www.php.net/manual/en/session.configuration.php#ini.session.name | |
session.name = PHPSESSID | |
; Initialize session on request startup. | |
; http://www.php.net/manual/en/session.configuration.php#ini.session.auto-start | |
session.auto_start = 0 | |
; Lifetime in seconds of cookie or, if 0, until browser is restarted. | |
; http://www.php.net/manual/en/session.configuration.php#ini.session.cookie-lifetime | |
session.cookie_lifetime = 0 | |
; The path for which the cookie is valid. | |
; http://www.php.net/manual/en/session.configuration.php#ini.session.cookie-path | |
session.cookie_path = / | |
; The domain for which the cookie is valid. | |
; http://www.php.net/manual/en/session.configuration.php#ini.session.cookie-domain | |
session.cookie_domain = | |
; Whether or not to add the httpOnly flag to the cookie, which makes it inaccessible to browser scripting languages such as JavaScript. | |
; http://www.php.net/manual/en/session.configuration.php#ini.session.cookie-httponly | |
session.cookie_httponly = | |
; Handler used to serialize data. php is the standard serializer of PHP. | |
; http://www.php.net/manual/en/session.configuration.php#ini.session.serialize-handler | |
session.serialize_handler = php | |
; Defines the probability that the 'garbage collection' process is started | |
; on every session initialization. The probability is calculated by using | |
; gc_probability/gc_divisor. Where session.gc_probability is the numerator | |
; and gc_divisor is the denominator in the equation. Setting this value to 1 | |
; when the session.gc_divisor value is 100 will give you approximately a 1% chance | |
; the gc will run on any give request. | |
; Default Value: 1 | |
; Development Value: 1 | |
; Production Value: 1 | |
; http://www.php.net/manual/en/session.configuration.php#ini.session.gc-probability | |
session.gc_probability = 1 | |
; Defines the probability that the 'garbage collection' process is started on every | |
; session initialization. The probability is calculated by using the following equation: | |
; gc_probability/gc_divisor. Where session.gc_probability is the numerator and | |
; session.gc_divisor is the denominator in the equation. Setting this value to 1 | |
; when the session.gc_divisor value is 100 will give you approximately a 1% chance | |
; the gc will run on any give request. Increasing this value to 1000 will give you | |
; a 0.1% chance the gc will run on any give request. For high volume production servers, | |
; this is a more efficient approach. | |
; Default Value: 100 | |
; Development Value: 1000 | |
; Production Value: 1000 | |
; http://www.php.net/manual/en/session.configuration.php#ini.session.gc-divisor | |
session.gc_divisor = 1000 | |
; After this number of seconds, stored data will be seen as 'garbage' and | |
; cleaned up by the garbage collection process. | |
; http://www.php.net/manual/en/session.configuration.php#ini.session.gc-maxlifetime | |
session.gc_maxlifetime = 1440 | |
; NOTE: If you are using the subdirectory option for storing session files | |
; (see session.save_path above), then garbage collection does *not* | |
; happen automatically. You will need to do your own garbage | |
; collection through a shell script, cron entry, or some other method. | |
; For example, the following script would is the equivalent of | |
; setting session.gc_maxlifetime to 1440 (1440 seconds = 24 minutes): | |
; cd /path/to/sessions; find -cmin +24 | xargs rm | |
; PHP 4.2 and less have an undocumented feature/bug that allows you to | |
; to initialize a session variable in the global scope, even when register_globals | |
; is disabled. PHP 4.3 and later will warn you, if this feature is used. | |
; You can disable the feature and the warning separately. At this time, | |
; the warning is only displayed, if bug_compat_42 is enabled. This feature | |
; introduces some serious security problems if not handled correctly. It's | |
; recommended that you do not use this feature on production servers. But you | |
; should enable this on development servers and enable the warning as well. If you | |
; do not enable the feature on development servers, you won't be warned when it's | |
; used and debugging errors caused by this can be difficult to track down. | |
; Default Value: On | |
; Development Value: On | |
; Production Value: Off | |
; http://www.php.net/manual/en/session.configuration.php#ini.session.bug-compat-42 | |
session.bug_compat_42 = Off | |
; This setting controls whether or not you are warned by PHP when initializing a | |
; session value into the global space. session.bug_compat_42 must be enabled before | |
; these warnings can be issued by PHP. See the directive above for more information. | |
; Default Value: On | |
; Development Value: On | |
; Production Value: Off | |
; http://www.php.net/manual/en/session.configuration.php#ini.session.bug-compat-warn | |
session.bug_compat_warn = Off | |
; Check HTTP Referer to invalidate externally stored URLs containing ids. | |
; HTTP_REFERER has to contain this substring for the session to be | |
; considered as valid. | |
; http://www.php.net/manual/en/session.configuration.php#ini.session.referer-check | |
session.referer_check = | |
; How many bytes to read from the file. | |
; http://www.php.net/manual/en/session.configuration.php#ini.session.entropy-length | |
session.entropy_length = 0 | |
; Specified here to create the session id. | |
; http://www.php.net/manual/en/session.configuration.php#ini.session.entropy-file | |
;session.entropy_file = /dev/urandom | |
session.entropy_file = | |
; http://www.php.net/manual/en/session.configuration.php#ini.session.entropy-length | |
;session.entropy_length = 16 | |
; Set to {nocache,private,public,} to determine HTTP caching aspects | |
; or leave this empty to avoid sending anti-caching headers. | |
; http://www.php.net/manual/en/session.configuration.php#ini.session.cache-limiter | |
session.cache_limiter = nocache | |
; Document expires after n minutes. | |
; http://www.php.net/manual/en/session.configuration.php#ini.session.cache-expire | |
session.cache_expire = 180 | |
; trans sid support is disabled by default. | |
; Use of trans sid may risk your users security. | |
; Use this option with caution. | |
; - User may send URL contains active session ID | |
; to other person via. email/irc/etc. | |
; - URL that contains active session ID may be stored | |
; in publically accessible computer. | |
; - User may access your site with the same session ID | |
; always using URL stored in browser's history or bookmarks. | |
; http://www.php.net/manual/en/session.configuration.php#ini.session.use-trans-sid | |
session.use_trans_sid = 0 | |
; Select a hash function for use in generating session ids. | |
; Possible Values | |
; 0 (MD5 128 bits) | |
; 1 (SHA-1 160 bits) | |
; http://www.php.net/manual/en/session.configuration.php#ini.session.hash-function | |
session.hash_function = 0 | |
; Define how many bits are stored in each character when converting | |
; the binary hash data to something readable. | |
; Possible values: | |
; 4 (4 bits: 0-9, a-f) | |
; 5 (5 bits: 0-9, a-v) | |
; 6 (6 bits: 0-9, a-z, A-Z, "-", ",") | |
; Default Value: 4 | |
; Development Value: 5 | |
; Production Value: 5 | |
; http://www.php.net/manual/en/session.configuration.php#ini.session.hash-bits-per-character | |
session.hash_bits_per_character = 5 | |
; The URL rewriter will look for URLs in a defined set of HTML tags. | |
; form/fieldset are special; if you include them here, the rewriter will | |
; add a hidden <input> field with the info which is otherwise appended | |
; to URLs. If you want XHTML conformity, remove the form entry. | |
; Note that all valid entries require a "=", even if no value follows. | |
; Default Value: "a=href,area=href,frame=src,form=,fieldset=" | |
; Development Value: "a=href,area=href,frame=src,input=src,form=fakeentry" | |
; Production Value: "a=href,area=href,frame=src,input=src,form=fakeentry" | |
; http://www.php.net/manual/en/session.configuration.php#ini.url-rewriter.tags | |
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry" | |
[MSSQL] | |
; Allow or prevent persistent links. | |
mssql.allow_persistent = On | |
; Maximum number of persistent links. -1 means no limit. | |
mssql.max_persistent = -1 | |
; Maximum number of links (persistent+non persistent). -1 means no limit. | |
mssql.max_links = -1 | |
; Minimum error severity to display. | |
mssql.min_error_severity = 10 | |
; Minimum message severity to display. | |
mssql.min_message_severity = 10 | |
; Compatibility mode with old versions of PHP 3.0. | |
mssql.compatability_mode = Off | |
; Connect timeout | |
;mssql.connect_timeout = 5 | |
; Query timeout | |
;mssql.timeout = 60 | |
; Valid range 0 - 2147483647. Default = 4096. | |
;mssql.textlimit = 4096 | |
; Valid range 0 - 2147483647. Default = 4096. | |
;mssql.textsize = 4096 | |
; Limits the number of records in each batch. 0 = all records in one batch. | |
;mssql.batchsize = 0 | |
; Specify how datetime and datetim4 columns are returned | |
; On => Returns data converted to SQL server settings | |
; Off => Returns values as YYYY-MM-DD hh:mm:ss | |
;mssql.datetimeconvert = On | |
; Use NT authentication when connecting to the server | |
mssql.secure_connection = Off | |
; Specify max number of processes. -1 = library default | |
; msdlib defaults to 25 | |
; FreeTDS defaults to 4096 | |
;mssql.max_procs = -1 | |
; Specify client character set. | |
; If empty or not set the client charset from freetds.comf is used | |
; This is only used when compiled with FreeTDS | |
;mssql.charset = "ISO-8859-1" | |
[Assertion] | |
; Assert(expr); active by default. | |
; http://www.php.net/manual/en/info.configuration.php#ini.assert.active | |
;assert.active = On | |
; Issue a PHP warning for each failed assertion. | |
; http://www.php.net/manual/en/info.configuration.php#ini.assert.warning | |
;assert.warning = On | |
; Don't bail out by default. | |
; http://www.php.net/manual/en/info.configuration.php#ini.assert.bail | |
;assert.bail = Off | |
; User-function to be called if an assertion fails. | |
; http://www.php.net/manual/en/info.configuration.php#ini.assert.callback | |
;assert.callback = 0 | |
; Eval the expression with current error_reporting(). Set to true if you want | |
; error_reporting(0) around the eval(). | |
; http://www.php.net/manual/en/info.configuration.php#ini.assert.quiet-eval | |
;assert.quiet_eval = 0 | |
[COM] | |
; path to a file containing GUIDs, IIDs or filenames of files with TypeLibs | |
; http://www.php.net/manual/en/com.configuration.php#ini.com.typelib-file | |
;com.typelib_file = | |
; allow Distributed-COM calls | |
; http://www.php.net/manual/en/com.configuration.php#ini.com.allow-dcom | |
;com.allow_dcom = true | |
; autoregister constants of a components typlib on com_load() | |
; http://www.php.net/manual/en/com.configuration.php#ini.com.autoregister-typelib | |
;com.autoregister_typelib = true | |
; register constants casesensitive | |
; http://www.php.net/manual/en/com.configuration.php#ini.com.autoregister-casesensitive | |
;com.autoregister_casesensitive = false | |
; show warnings on duplicate constant registrations | |
; http://www.php.net/manual/en/com.configuration.php#ini.com.autoregister-verbose | |
;com.autoregister_verbose = true | |
[mbstring] | |
; language for internal character representation. | |
; http://www.php.net/manual/en/mbstring.configuration.php#ini.mbstring.language | |
;mbstring.language = Japanese | |
; internal/script encoding. | |
; Some encoding cannot work as internal encoding. | |
; (e.g. SJIS, BIG5, ISO-2022-*) | |
; http://www.php.net/manual/en/mbstring.configuration.php#ini.mbstring.internal-encoding | |
;mbstring.internal_encoding = EUC-JP | |
; http input encoding. | |
; http://www.php.net/manual/en/mbstring.configuration.php#ini.mbstring.http-input | |
;mbstring.http_input = auto | |
; http output encoding. mb_output_handler must be | |
; registered as output buffer to function | |
; http://www.php.net/manual/en/mbstring.configuration.php#ini.mbstring.http-output | |
;mbstring.http_output = SJIS | |
; enable automatic encoding translation according to | |
; mbstring.internal_encoding setting. Input chars are | |
; converted to internal encoding by setting this to On. | |
; Note: Do _not_ use automatic encoding translation for | |
; portable libs/applications. | |
; http://www.php.net/manual/en/mbstring.configuration.php#ini.mbstring.encoding-translation | |
;mbstring.encoding_translation = Off | |
; automatic encoding detection order. | |
; auto means | |
; http://www.php.net/manual/en/mbstring.configuration.php#ini.mbstring.detect-order | |
;mbstring.detect_order = auto | |
; substitute_character used when character cannot be converted | |
; one from another | |
; http://www.php.net/manual/en/mbstring.configuration.php#ini.mbstring.substitute-character | |
;mbstring.substitute_character = none; | |
; overload(replace) single byte functions by mbstring functions. | |
; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(), | |
; etc. Possible values are 0,1,2,4 or combination of them. | |
; For example, 7 for overload everything. | |
; 0: No overload | |
; 1: Overload mail() function | |
; 2: Overload str*() functions | |
; 4: Overload ereg*() functions | |
; http://www.php.net/manual/en/mbstring.configuration.php#ini.mbstring.func-overload | |
;mbstring.func_overload = 0 | |
; enable strict encoding detection. | |
;mbstring.strict_detection = Off | |
; This directive specifies the regex pattern of content types for which mb_output_handler() | |
; is activated. | |
; Default: mbstring.http_output_conv_mimetype=^(text/|application/xhtml\+xml) | |
;mbstring.http_output_conv_mimetype= | |
[gd] | |
; Tell the jpeg decode to ignore warnings and try to create | |
; a gd image. The warning will then be displayed as notices | |
; disabled by default | |
; http://www.php.net/manual/en/image.configuration.php#ini.image.jpeg-ignore-warning | |
;gd.jpeg_ignore_warning = 0 | |
[exif] | |
; Exif UNICODE user comments are handled as UCS-2BE/UCS-2LE and JIS as JIS. | |
; With mbstring support this will automatically be converted into the encoding | |
; given by corresponding encode setting. When empty mbstring.internal_encoding | |
; is used. For the decode settings you can distinguish between motorola and | |
; intel byte order. A decode setting cannot be empty. | |
; http://www.php.net/manual/en/exif.configuration.php#ini.exif.encode-unicode | |
;exif.encode_unicode = ISO-8859-15 | |
; http://www.php.net/manual/en/exif.configuration.php#ini.exif.decode-unicode-motorola | |
;exif.decode_unicode_motorola = UCS-2BE | |
; http://www.php.net/manual/en/exif.configuration.php#ini.exif.decode-unicode-intel | |
;exif.decode_unicode_intel = UCS-2LE | |
; http://www.php.net/manual/en/exif.configuration.php#ini.exif.encode-jis | |
;exif.encode_jis = | |
; http://www.php.net/manual/en/exif.configuration.php#ini.exif.decode-jis-motorola | |
;exif.decode_jis_motorola = JIS | |
; http://www.php.net/manual/en/exif.configuration.php#ini.exif.decode-jis-intel | |
;exif.decode_jis_intel = JIS | |
[Tidy] | |
; The path to a default tidy configuration file to use when using tidy | |
; http://www.php.net/manual/en/tidy.configuration.php#ini.tidy.default-config | |
;tidy.default_config = /usr/local/lib/php/default.tcfg | |
; Should tidy clean and repair output automatically? | |
; WARNING: Do not use this option if you are generating non-html content | |
; such as dynamic images | |
; http://www.php.net/manual/en/tidy.configuration.php#ini.tidy.clean-output | |
tidy.clean_output = Off | |
[soap] | |
; Enables or disables WSDL caching feature. | |
; http://www.php.net/manual/en/soap.configuration.php#ini.soap.wsdl-cache-enabled | |
soap.wsdl_cache_enabled=1 | |
; Sets the directory name where SOAP extension will put cache files. | |
; http://www.php.net/manual/en/soap.configuration.php#ini.soap.wsdl-cache-dir | |
soap.wsdl_cache_dir="/tmp" | |
; (time to live) Sets the number of second while cached file will be used | |
; instead of original one. | |
; http://www.php.net/manual/en/soap.configuration.php#ini.soap.wsdl-cache-ttl | |
soap.wsdl_cache_ttl=86400 | |
[sysvshm] | |
; A default size of the shared memory segment | |
;sysvshm.init_mem = 10000 | |
; Local Variables: | |
; tab-width: 4 | |
; End: | |
# ----------------------------- | |
# PostgreSQL configuration file | |
# ----------------------------- | |
# | |
# This file consists of lines of the form: | |
# | |
# name = value | |
# | |
# (The "=" is optional.) Whitespace may be used. Comments are introduced with | |
# "#" anywhere on a line. The complete list of parameter names and allowed | |
# values can be found in the PostgreSQL documentation. | |
# | |
# The commented-out settings shown in this file represent the default values. | |
# Re-commenting a setting is NOT sufficient to revert it to the default value; | |
# you need to reload the server. | |
# | |
# This file is read on server startup and when the server receives a SIGHUP | |
# signal. If you edit the file on a running system, you have to SIGHUP the | |
# server for the changes to take effect, or use "pg_ctl reload". Some | |
# parameters, which are marked below, require a server shutdown and restart to | |
# take effect. | |
# | |
# Any parameter can also be given as a command-line option to the server, e.g., | |
# "postgres -c log_connections=on". Some parameters can be changed at run time | |
# with the "SET" SQL command. | |
# | |
# Memory units: kB = kilobytes Time units: ms = milliseconds | |
# MB = megabytes s = seconds | |
# GB = gigabytes min = minutes | |
# h = hours | |
# d = days | |
#------------------------------------------------------------------------------ | |
# FILE LOCATIONS | |
#------------------------------------------------------------------------------ | |
# The default values of these variables are driven from the -D command-line | |
# option or PGDATA environment variable, represented here as ConfigDir. | |
#data_directory = 'ConfigDir' # use data in another directory | |
# (change requires restart) | |
#hba_file = 'ConfigDir/pg_hba.conf' # host-based authentication file | |
# (change requires restart) | |
#ident_file = 'ConfigDir/pg_ident.conf' # ident configuration file | |
# (change requires restart) | |
# If external_pid_file is not explicitly set, no extra PID file is written. | |
#external_pid_file = '(none)' # write an extra PID file | |
# (change requires restart) | |
#------------------------------------------------------------------------------ | |
# CONNECTIONS AND AUTHENTICATION | |
#------------------------------------------------------------------------------ | |
# - Connection Settings - | |
listen_addresses = '*' # what IP address(es) to listen on; | |
# comma-separated list of addresses; | |
# defaults to 'localhost', '*' = all | |
# (change requires restart) | |
#port = 5432 # (change requires restart) | |
max_connections = 100 # (change requires restart) | |
# Note: Increasing max_connections costs ~400 bytes of shared memory per | |
# connection slot, plus lock space (see max_locks_per_transaction). | |
#superuser_reserved_connections = 3 # (change requires restart) | |
#unix_socket_directory = '' # (change requires restart) | |
#unix_socket_group = '' # (change requires restart) | |
#unix_socket_permissions = 0777 # begin with 0 to use octal notation | |
# (change requires restart) | |
#bonjour_name = '' # defaults to the computer name | |
# (change requires restart) | |
# - Security and Authentication - | |
#authentication_timeout = 1min # 1s-600s | |
#ssl = off # (change requires restart) | |
#ssl_ciphers = 'ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH' # allowed SSL ciphers | |
# (change requires restart) | |
#ssl_renegotiation_limit = 512MB # amount of data between renegotiations | |
#password_encryption = on | |
#db_user_namespace = off | |
# Kerberos and GSSAPI | |
#krb_server_keyfile = '' | |
#krb_srvname = 'postgres' # (Kerberos only) | |
#krb_caseins_users = off | |
# - TCP Keepalives - | |
# see "man 7 tcp" for details | |
#tcp_keepalives_idle = 0 # TCP_KEEPIDLE, in seconds; | |
# 0 selects the system default | |
#tcp_keepalives_interval = 0 # TCP_KEEPINTVL, in seconds; | |
# 0 selects the system default | |
#tcp_keepalives_count = 0 # TCP_KEEPCNT; | |
# 0 selects the system default | |
#------------------------------------------------------------------------------ | |
# RESOURCE USAGE (except WAL) | |
#------------------------------------------------------------------------------ | |
# - Memory - | |
shared_buffers = 32MB # min 128kB | |
# (change requires restart) | |
#temp_buffers = 8MB # min 800kB | |
#max_prepared_transactions = 0 # zero disables the feature | |
# (change requires restart) | |
# Note: Increasing max_prepared_transactions costs ~600 bytes of shared memory | |
# per transaction slot, plus lock space (see max_locks_per_transaction). | |
# It is not advisable to set max_prepared_transactions nonzero unless you | |
# actively intend to use prepared transactions. | |
#work_mem = 1MB # min 64kB | |
#maintenance_work_mem = 16MB # min 1MB | |
#max_stack_depth = 2MB # min 100kB | |
# - Kernel Resource Usage - | |
#max_files_per_process = 1000 # min 25 | |
# (change requires restart) | |
#shared_preload_libraries = '' # (change requires restart) | |
# - Cost-Based Vacuum Delay - | |
#vacuum_cost_delay = 0ms # 0-100 milliseconds | |
#vacuum_cost_page_hit = 1 # 0-10000 credits | |
#vacuum_cost_page_miss = 10 # 0-10000 credits | |
#vacuum_cost_page_dirty = 20 # 0-10000 credits | |
#vacuum_cost_limit = 200 # 1-10000 credits | |
# - Background Writer - | |
#bgwriter_delay = 200ms # 10-10000ms between rounds | |
#bgwriter_lru_maxpages = 100 # 0-1000 max buffers written/round | |
#bgwriter_lru_multiplier = 2.0 # 0-10.0 multipler on buffers scanned/round | |
# - Asynchronous Behavior - | |
#effective_io_concurrency = 1 # 1-1000. 0 disables prefetching | |
#------------------------------------------------------------------------------ | |
# WRITE AHEAD LOG | |
#------------------------------------------------------------------------------ | |
# - Settings - | |
#fsync = on # turns forced synchronization on or off | |
#synchronous_commit = on # immediate fsync at commit | |
#wal_sync_method = fsync # the default is the first option | |
# supported by the operating system: | |
# open_datasync | |
# fdatasync | |
# fsync | |
# fsync_writethrough | |
# open_sync | |
#full_page_writes = on # recover from partial page writes | |
#wal_buffers = 64kB # min 32kB | |
# (change requires restart) | |
#wal_writer_delay = 200ms # 1-10000 milliseconds | |
#commit_delay = 0 # range 0-100000, in microseconds | |
#commit_siblings = 5 # range 1-1000 | |
# - Checkpoints - | |
#checkpoint_segments = 3 # in logfile segments, min 1, 16MB each | |
#checkpoint_timeout = 5min # range 30s-1h | |
#checkpoint_completion_target = 0.5 # checkpoint target duration, 0.0 - 1.0 | |
#checkpoint_warning = 30s # 0 disables | |
# - Archiving - | |
#archive_mode = off # allows archiving to be done | |
# (change requires restart) | |
#archive_command = '' # command to use to archive a logfile segment | |
#archive_timeout = 0 # force a logfile segment switch after this | |
# number of seconds; 0 disables | |
#------------------------------------------------------------------------------ | |
# QUERY TUNING | |
#------------------------------------------------------------------------------ | |
# - Planner Method Configuration - | |
#enable_bitmapscan = on | |
#enable_hashagg = on | |
#enable_hashjoin = on | |
#enable_indexscan = on | |
#enable_mergejoin = on | |
#enable_nestloop = on | |
#enable_seqscan = on | |
#enable_sort = on | |
#enable_tidscan = on | |
# - Planner Cost Constants - | |
#seq_page_cost = 1.0 # measured on an arbitrary scale | |
#random_page_cost = 4.0 # same scale as above | |
#cpu_tuple_cost = 0.01 # same scale as above | |
#cpu_index_tuple_cost = 0.005 # same scale as above | |
#cpu_operator_cost = 0.0025 # same scale as above | |
#effective_cache_size = 128MB | |
# - Genetic Query Optimizer - | |
#geqo = on | |
#geqo_threshold = 12 | |
#geqo_effort = 5 # range 1-10 | |
#geqo_pool_size = 0 # selects default based on effort | |
#geqo_generations = 0 # selects default based on effort | |
#geqo_selection_bias = 2.0 # range 1.5-2.0 | |
# - Other Planner Options - | |
#default_statistics_target = 100 # range 1-10000 | |
#constraint_exclusion = partition # on, off, or partition | |
#cursor_tuple_fraction = 0.1 # range 0.0-1.0 | |
#from_collapse_limit = 8 | |
#join_collapse_limit = 8 # 1 disables collapsing of explicit | |
# JOIN clauses | |
#------------------------------------------------------------------------------ | |
# ERROR REPORTING AND LOGGING | |
#------------------------------------------------------------------------------ | |
# - Where to Log - | |
#log_destination = 'stderr' # Valid values are combinations of | |
# stderr, csvlog, syslog and eventlog, | |
# depending on platform. csvlog | |
# requires logging_collector to be on. | |
# This is used when logging to stderr: | |
logging_collector = on # Enable capturing of stderr and csvlog | |
# into log files. Required to be on for | |
# csvlogs. | |
# (change requires restart) | |
# These are only used if logging_collector is on: | |
log_directory = 'pg_log' # directory where log files are written, | |
# can be absolute or relative to PGDATA | |
log_filename = 'postgresql-%a.log' # log file name pattern, | |
# can include strftime() escapes | |
log_truncate_on_rotation = on # If on, an existing log file of the | |
# same name as the new log file will be | |
# truncated rather than appended to. | |
# But such truncation only occurs on | |
# time-driven rotation, not on restarts | |
# or size-driven rotation. Default is | |
# off, meaning append to existing files | |
# in all cases. | |
log_rotation_age = 1d # Automatic rotation of logfiles will | |
# happen after that time. 0 disables. | |
log_rotation_size = 0 # Automatic rotation of logfiles will | |
# happen after that much log output. | |
# 0 disables. | |
# These are relevant when logging to syslog: | |
#syslog_facility = 'LOCAL0' | |
#syslog_ident = 'postgres' | |
#silent_mode = off # Run server silently. | |
# DO NOT USE without syslog or | |
# logging_collector | |
# (change requires restart) | |
# - When to Log - | |
#client_min_messages = notice # values in order of decreasing detail: | |
# debug5 | |
# debug4 | |
# debug3 | |
# debug2 | |
# debug1 | |
# log | |
# notice | |
# warning | |
# error | |
#log_min_messages = warning # values in order of decreasing detail: | |
# debug5 | |
# debug4 | |
# debug3 | |
# debug2 | |
# debug1 | |
# info | |
# notice | |
# warning | |
# error | |
# log | |
# fatal | |
# panic | |
#log_error_verbosity = default # terse, default, or verbose messages | |
#log_min_error_statement = error # values in order of decreasing detail: | |
# debug5 | |
# debug4 | |
# debug3 | |
# debug2 | |
# debug1 | |
# info | |
# notice | |
# warning | |
# error | |
# log | |
# fatal | |
# panic (effectively off) | |
#log_min_duration_statement = -1 # -1 is disabled, 0 logs all statements | |
# and their durations, > 0 logs only | |
# statements running at least this number | |
# of milliseconds | |
# - What to Log - | |
#debug_print_parse = off | |
#debug_print_rewritten = off | |
#debug_print_plan = off | |
#debug_pretty_print = on | |
#log_checkpoints = off | |
#log_connections = off | |
#log_disconnections = off | |
#log_duration = off | |
#log_hostname = off | |
#log_line_prefix = '' # special values: | |
# %u = user name | |
# %d = database name | |
# %r = remote host and port | |
# %h = remote host | |
# %p = process ID | |
# %t = timestamp without milliseconds | |
# %m = timestamp with milliseconds | |
# %i = command tag | |
# %c = session ID | |
# %l = session line number | |
# %s = session start timestamp | |
# %v = virtual transaction ID | |
# %x = transaction ID (0 if none) | |
# %q = stop here in non-session | |
# processes | |
# %% = '%' | |
# e.g. '<%u%%%d> ' | |
#log_lock_waits = off # log lock waits >= deadlock_timeout | |
#log_statement = 'none' # none, ddl, mod, all | |
#log_temp_files = -1 # log temporary files equal or larger | |
# than the specified size in kilobytes; | |
# -1 disables, 0 logs all temp files | |
#log_timezone = unknown # actually, defaults to TZ environment | |
# setting | |
#------------------------------------------------------------------------------ | |
# RUNTIME STATISTICS | |
#------------------------------------------------------------------------------ | |
# - Query/Index Statistics Collector - | |
#track_activities = on | |
#track_counts = on | |
#track_functions = none # none, pl, all | |
#track_activity_query_size = 1024 | |
#update_process_title = on | |
#stats_temp_directory = 'pg_stat_tmp' | |
# - Statistics Monitoring - | |
#log_parser_stats = off | |
#log_planner_stats = off | |
#log_executor_stats = off | |
#log_statement_stats = off | |
#------------------------------------------------------------------------------ | |
# AUTOVACUUM PARAMETERS | |
#------------------------------------------------------------------------------ | |
#autovacuum = on # Enable autovacuum subprocess? 'on' | |
# requires track_counts to also be on. | |
#log_autovacuum_min_duration = -1 # -1 disables, 0 logs all actions and | |
# their durations, > 0 logs only | |
# actions running at least this number | |
# of milliseconds. | |
#autovacuum_max_workers = 3 # max number of autovacuum subprocesses | |
#autovacuum_naptime = 1min # time between autovacuum runs | |
#autovacuum_vacuum_threshold = 50 # min number of row updates before | |
# vacuum | |
#autovacuum_analyze_threshold = 50 # min number of row updates before | |
# analyze | |
#autovacuum_vacuum_scale_factor = 0.2 # fraction of table size before vacuum | |
#autovacuum_analyze_scale_factor = 0.1 # fraction of table size before analyze | |
#autovacuum_freeze_max_age = 200000000 # maximum XID age before forced vacuum | |
# (change requires restart) | |
#autovacuum_vacuum_cost_delay = 20ms # default vacuum cost delay for | |
# autovacuum, in milliseconds; | |
# -1 means use vacuum_cost_delay | |
#autovacuum_vacuum_cost_limit = -1 # default vacuum cost limit for | |
# autovacuum, -1 means use | |
# vacuum_cost_limit | |
#------------------------------------------------------------------------------ | |
# CLIENT CONNECTION DEFAULTS | |
#------------------------------------------------------------------------------ | |
# - Statement Behavior - | |
#search_path = '"$user",public' # schema names | |
#default_tablespace = '' # a tablespace name, '' uses the default | |
#temp_tablespaces = '' # a list of tablespace names, '' uses | |
# only default tablespace | |
#check_function_bodies = on | |
#default_transaction_isolation = 'read committed' | |
#default_transaction_read_only = off | |
#session_replication_role = 'origin' | |
#statement_timeout = 0 # in milliseconds, 0 is disabled | |
#vacuum_freeze_min_age = 50000000 | |
#vacuum_freeze_table_age = 150000000 | |
#xmlbinary = 'base64' | |
#xmloption = 'content' | |
# - Locale and Formatting - | |
datestyle = 'iso, mdy' | |
#intervalstyle = 'postgres' | |
#timezone = unknown # actually, defaults to TZ environment | |
# setting | |
#timezone_abbreviations = 'Default' # Select the set of available time zone | |
# abbreviations. Currently, there are | |
# Default | |
# Australia | |
# India | |
# You can create your own file in | |
# share/timezonesets/. | |
#extra_float_digits = 0 # min -15, max 2 | |
#client_encoding = sql_ascii # actually, defaults to database | |
# encoding | |
# These settings are initialized by initdb, but they can be changed. | |
lc_messages = 'en_US.UTF-8' # locale for system error message | |
# strings | |
lc_monetary = 'en_US.UTF-8' # locale for monetary formatting | |
lc_numeric = 'en_US.UTF-8' # locale for number formatting | |
lc_time = 'en_US.UTF-8' # locale for time formatting | |
# default configuration for text search | |
default_text_search_config = 'pg_catalog.english' | |
# - Other Defaults - | |
#dynamic_library_path = '$libdir' | |
#local_preload_libraries = '' | |
#------------------------------------------------------------------------------ | |
# LOCK MANAGEMENT | |
#------------------------------------------------------------------------------ | |
#deadlock_timeout = 1s | |
#max_locks_per_transaction = 64 # min 10 | |
# (change requires restart) | |
# Note: Each lock table slot uses ~270 bytes of shared memory, and there are | |
# max_locks_per_transaction * (max_connections + max_prepared_transactions) | |
# lock table slots. | |
#------------------------------------------------------------------------------ | |
# VERSION/PLATFORM COMPATIBILITY | |
#------------------------------------------------------------------------------ | |
# - Previous PostgreSQL Versions - | |
#add_missing_from = off | |
#array_nulls = on | |
#backslash_quote = safe_encoding # on, off, or safe_encoding | |
#default_with_oids = off | |
#escape_string_warning = on | |
#regex_flavor = advanced # advanced, extended, or basic | |
#sql_inheritance = on | |
#standard_conforming_strings = off | |
#synchronize_seqscans = on | |
# - Other Platforms and Clients - | |
#transform_null_equals = off | |
#------------------------------------------------------------------------------ | |
# CUSTOMIZED OPTIONS | |
#------------------------------------------------------------------------------ | |
#custom_variable_classes = '' # list of custom variable class names | |
#!/bin/sh | |
# | |
# This script will be executed *after* all the other init scripts. | |
# You can put your own initialization stuff in here if you don't | |
# want to do the full Sys V style init stuff. | |
touch /var/lock/subsys/local | |
cd /tmp | |
rm -rfv busui | |
git clone http://maxious.lambdacomplex.org/busui/git | |
sh busui/aws/awsStartup.sh | |
-- | |
-- PostgreSQL database dump | |
-- | |
-- Dumped from database version 9.0.4 | |
-- Dumped by pg_dump version 9.0.4 | |
-- Started on 2011-10-11 23:16:11 | |
SET statement_timeout = 0; | |
SET client_encoding = 'UTF8'; | |
SET standard_conforming_strings = off; | |
SET check_function_bodies = false; | |
SET client_min_messages = warning; | |
SET escape_string_warning = off; | |
-- | |
-- TOC entry 1168 (class 2612 OID 11574) | |
-- Name: plpgsql; Type: PROCEDURAL LANGUAGE; Schema: -; Owner: postgres | |
-- | |
CREATE OR REPLACE PROCEDURAL LANGUAGE plpgsql; | |
ALTER PROCEDURAL LANGUAGE plpgsql OWNER TO postgres; | |
SET search_path = public, pg_catalog; | |
-- | |
-- TOC entry 1088 (class 0 OID 0) | |
-- Name: box2d; Type: SHELL TYPE; Schema: public; Owner: postgres | |
-- | |
CREATE TYPE box2d; | |
-- | |
-- TOC entry 15 (class 1255 OID 18351) | |
-- Dependencies: 6 1088 | |
-- Name: box2d_in(cstring); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION box2d_in(cstring) RETURNS box2d | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'BOX2DFLOAT4_in'; | |
ALTER FUNCTION public.box2d_in(cstring) OWNER TO postgres; | |
-- | |
-- TOC entry 19 (class 1255 OID 18352) | |
-- Dependencies: 6 1088 | |
-- Name: box2d_out(box2d); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION box2d_out(box2d) RETURNS cstring | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'BOX2DFLOAT4_out'; | |
ALTER FUNCTION public.box2d_out(box2d) OWNER TO postgres; | |
-- | |
-- TOC entry 1087 (class 1247 OID 18350) | |
-- Dependencies: 6 15 19 | |
-- Name: box2d; Type: TYPE; Schema: public; Owner: postgres | |
-- | |
CREATE TYPE box2d ( | |
INTERNALLENGTH = 16, | |
INPUT = box2d_in, | |
OUTPUT = box2d_out, | |
ALIGNMENT = int4, | |
STORAGE = plain | |
); | |
ALTER TYPE public.box2d OWNER TO postgres; | |
-- | |
-- TOC entry 1091 (class 0 OID 0) | |
-- Name: box3d; Type: SHELL TYPE; Schema: public; Owner: postgres | |
-- | |
CREATE TYPE box3d; | |
-- | |
-- TOC entry 20 (class 1255 OID 18355) | |
-- Dependencies: 6 1091 | |
-- Name: box3d_in(cstring); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION box3d_in(cstring) RETURNS box3d | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'BOX3D_in'; | |
ALTER FUNCTION public.box3d_in(cstring) OWNER TO postgres; | |
-- | |
-- TOC entry 21 (class 1255 OID 18356) | |
-- Dependencies: 6 1091 | |
-- Name: box3d_out(box3d); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION box3d_out(box3d) RETURNS cstring | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'BOX3D_out'; | |
ALTER FUNCTION public.box3d_out(box3d) OWNER TO postgres; | |
-- | |
-- TOC entry 1090 (class 1247 OID 18354) | |
-- Dependencies: 6 21 20 | |
-- Name: box3d; Type: TYPE; Schema: public; Owner: postgres | |
-- | |
CREATE TYPE box3d ( | |
INTERNALLENGTH = 48, | |
INPUT = box3d_in, | |
OUTPUT = box3d_out, | |
ALIGNMENT = double, | |
STORAGE = plain | |
); | |
ALTER TYPE public.box3d OWNER TO postgres; | |
-- | |
-- TOC entry 1094 (class 0 OID 0) | |
-- Name: box3d_extent; Type: SHELL TYPE; Schema: public; Owner: postgres | |
-- | |
CREATE TYPE box3d_extent; | |
-- | |
-- TOC entry 22 (class 1255 OID 18359) | |
-- Dependencies: 6 1094 | |
-- Name: box3d_extent_in(cstring); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION box3d_extent_in(cstring) RETURNS box3d_extent | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'BOX3D_in'; | |
ALTER FUNCTION public.box3d_extent_in(cstring) OWNER TO postgres; | |
-- | |
-- TOC entry 23 (class 1255 OID 18360) | |
-- Dependencies: 6 1094 | |
-- Name: box3d_extent_out(box3d_extent); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION box3d_extent_out(box3d_extent) RETURNS cstring | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'BOX3D_extent_out'; | |
ALTER FUNCTION public.box3d_extent_out(box3d_extent) OWNER TO postgres; | |
-- | |
-- TOC entry 1093 (class 1247 OID 18358) | |
-- Dependencies: 6 23 22 | |
-- Name: box3d_extent; Type: TYPE; Schema: public; Owner: postgres | |
-- | |
CREATE TYPE box3d_extent ( | |
INTERNALLENGTH = 48, | |
INPUT = box3d_extent_in, | |
OUTPUT = box3d_extent_out, | |
ALIGNMENT = double, | |
STORAGE = plain | |
); | |
ALTER TYPE public.box3d_extent OWNER TO postgres; | |
-- | |
-- TOC entry 1097 (class 0 OID 0) | |
-- Name: chip; Type: SHELL TYPE; Schema: public; Owner: postgres | |
-- | |
CREATE TYPE chip; | |
-- | |
-- TOC entry 24 (class 1255 OID 18363) | |
-- Dependencies: 6 1097 | |
-- Name: chip_in(cstring); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION chip_in(cstring) RETURNS chip | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'CHIP_in'; | |
ALTER FUNCTION public.chip_in(cstring) OWNER TO postgres; | |
-- | |
-- TOC entry 25 (class 1255 OID 18364) | |
-- Dependencies: 6 1097 | |
-- Name: chip_out(chip); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION chip_out(chip) RETURNS cstring | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'CHIP_out'; | |
ALTER FUNCTION public.chip_out(chip) OWNER TO postgres; | |
-- | |
-- TOC entry 1096 (class 1247 OID 18362) | |
-- Dependencies: 6 25 24 | |
-- Name: chip; Type: TYPE; Schema: public; Owner: postgres | |
-- | |
CREATE TYPE chip ( | |
INTERNALLENGTH = variable, | |
INPUT = chip_in, | |
OUTPUT = chip_out, | |
ALIGNMENT = double, | |
STORAGE = extended | |
); | |
ALTER TYPE public.chip OWNER TO postgres; | |
-- | |
-- TOC entry 1100 (class 0 OID 0) | |
-- Name: geography; Type: SHELL TYPE; Schema: public; Owner: postgres | |
-- | |
CREATE TYPE geography; | |
-- | |
-- TOC entry 26 (class 1255 OID 18367) | |
-- Dependencies: 6 | |
-- Name: geography_analyze(internal); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geography_analyze(internal) RETURNS boolean | |
LANGUAGE c STRICT | |
AS '$libdir/postgis-1.5', 'geography_analyze'; | |
ALTER FUNCTION public.geography_analyze(internal) OWNER TO postgres; | |
-- | |
-- TOC entry 27 (class 1255 OID 18368) | |
-- Dependencies: 6 1100 | |
-- Name: geography_in(cstring, oid, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geography_in(cstring, oid, integer) RETURNS geography | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'geography_in'; | |
ALTER FUNCTION public.geography_in(cstring, oid, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 28 (class 1255 OID 18369) | |
-- Dependencies: 6 1100 | |
-- Name: geography_out(geography); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geography_out(geography) RETURNS cstring | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'geography_out'; | |
ALTER FUNCTION public.geography_out(geography) OWNER TO postgres; | |
-- | |
-- TOC entry 29 (class 1255 OID 18370) | |
-- Dependencies: 6 | |
-- Name: geography_typmod_in(cstring[]); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geography_typmod_in(cstring[]) RETURNS integer | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'geography_typmod_in'; | |
ALTER FUNCTION public.geography_typmod_in(cstring[]) OWNER TO postgres; | |
-- | |
-- TOC entry 30 (class 1255 OID 18371) | |
-- Dependencies: 6 | |
-- Name: geography_typmod_out(integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geography_typmod_out(integer) RETURNS cstring | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'geography_typmod_out'; | |
ALTER FUNCTION public.geography_typmod_out(integer) OWNER TO postgres; | |
-- | |
-- TOC entry 1099 (class 1247 OID 18366) | |
-- Dependencies: 26 6 27 28 29 30 | |
-- Name: geography; Type: TYPE; Schema: public; Owner: postgres | |
-- | |
CREATE TYPE geography ( | |
INTERNALLENGTH = variable, | |
INPUT = geography_in, | |
OUTPUT = geography_out, | |
TYPMOD_IN = geography_typmod_in, | |
TYPMOD_OUT = geography_typmod_out, | |
ANALYZE = geography_analyze, | |
ALIGNMENT = double, | |
STORAGE = main | |
); | |
ALTER TYPE public.geography OWNER TO postgres; | |
-- | |
-- TOC entry 1103 (class 0 OID 0) | |
-- Name: geometry; Type: SHELL TYPE; Schema: public; Owner: postgres | |
-- | |
CREATE TYPE geometry; | |
-- | |
-- TOC entry 31 (class 1255 OID 18374) | |
-- Dependencies: 6 | |
-- Name: geometry_analyze(internal); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geometry_analyze(internal) RETURNS boolean | |
LANGUAGE c STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_analyze'; | |
ALTER FUNCTION public.geometry_analyze(internal) OWNER TO postgres; | |
-- | |
-- TOC entry 32 (class 1255 OID 18375) | |
-- Dependencies: 6 1103 | |
-- Name: geometry_in(cstring); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geometry_in(cstring) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_in'; | |
ALTER FUNCTION public.geometry_in(cstring) OWNER TO postgres; | |
-- | |
-- TOC entry 33 (class 1255 OID 18376) | |
-- Dependencies: 6 1103 | |
-- Name: geometry_out(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geometry_out(geometry) RETURNS cstring | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_out'; | |
ALTER FUNCTION public.geometry_out(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 34 (class 1255 OID 18377) | |
-- Dependencies: 6 1103 | |
-- Name: geometry_recv(internal); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geometry_recv(internal) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_recv'; | |
ALTER FUNCTION public.geometry_recv(internal) OWNER TO postgres; | |
-- | |
-- TOC entry 35 (class 1255 OID 18378) | |
-- Dependencies: 6 1103 | |
-- Name: geometry_send(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geometry_send(geometry) RETURNS bytea | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_send'; | |
ALTER FUNCTION public.geometry_send(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 1102 (class 1247 OID 18373) | |
-- Dependencies: 33 34 35 31 6 32 | |
-- Name: geometry; Type: TYPE; Schema: public; Owner: postgres | |
-- | |
CREATE TYPE geometry ( | |
INTERNALLENGTH = variable, | |
INPUT = geometry_in, | |
OUTPUT = geometry_out, | |
RECEIVE = geometry_recv, | |
SEND = geometry_send, | |
ANALYZE = geometry_analyze, | |
DELIMITER = ':', | |
ALIGNMENT = int4, | |
STORAGE = main | |
); | |
ALTER TYPE public.geometry OWNER TO postgres; | |
-- | |
-- TOC entry 1105 (class 1247 OID 18382) | |
-- Dependencies: 6 2408 | |
-- Name: geometry_dump; Type: TYPE; Schema: public; Owner: postgres | |
-- | |
CREATE TYPE geometry_dump AS ( | |
path integer[], | |
geom geometry | |
); | |
ALTER TYPE public.geometry_dump OWNER TO postgres; | |
-- | |
-- TOC entry 1108 (class 0 OID 0) | |
-- Name: gidx; Type: SHELL TYPE; Schema: public; Owner: postgres | |
-- | |
CREATE TYPE gidx; | |
-- | |
-- TOC entry 36 (class 1255 OID 18384) | |
-- Dependencies: 6 1108 | |
-- Name: gidx_in(cstring); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION gidx_in(cstring) RETURNS gidx | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'gidx_in'; | |
ALTER FUNCTION public.gidx_in(cstring) OWNER TO postgres; | |
-- | |
-- TOC entry 37 (class 1255 OID 18385) | |
-- Dependencies: 6 1108 | |
-- Name: gidx_out(gidx); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION gidx_out(gidx) RETURNS cstring | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'gidx_out'; | |
ALTER FUNCTION public.gidx_out(gidx) OWNER TO postgres; | |
-- | |
-- TOC entry 1107 (class 1247 OID 18383) | |
-- Dependencies: 37 36 6 | |
-- Name: gidx; Type: TYPE; Schema: public; Owner: postgres | |
-- | |
CREATE TYPE gidx ( | |
INTERNALLENGTH = variable, | |
INPUT = gidx_in, | |
OUTPUT = gidx_out, | |
ALIGNMENT = double, | |
STORAGE = plain | |
); | |
ALTER TYPE public.gidx OWNER TO postgres; | |
-- | |
-- TOC entry 1111 (class 0 OID 0) | |
-- Name: pgis_abs; Type: SHELL TYPE; Schema: public; Owner: postgres | |
-- | |
CREATE TYPE pgis_abs; | |
-- | |
-- TOC entry 38 (class 1255 OID 18388) | |
-- Dependencies: 6 1111 | |
-- Name: pgis_abs_in(cstring); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION pgis_abs_in(cstring) RETURNS pgis_abs | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'pgis_abs_in'; | |
ALTER FUNCTION public.pgis_abs_in(cstring) OWNER TO postgres; | |
-- | |
-- TOC entry 39 (class 1255 OID 18389) | |
-- Dependencies: 6 1111 | |
-- Name: pgis_abs_out(pgis_abs); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION pgis_abs_out(pgis_abs) RETURNS cstring | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'pgis_abs_out'; | |
ALTER FUNCTION public.pgis_abs_out(pgis_abs) OWNER TO postgres; | |
-- | |
-- TOC entry 1110 (class 1247 OID 18387) | |
-- Dependencies: 38 6 39 | |
-- Name: pgis_abs; Type: TYPE; Schema: public; Owner: postgres | |
-- | |
CREATE TYPE pgis_abs ( | |
INTERNALLENGTH = 8, | |
INPUT = pgis_abs_in, | |
OUTPUT = pgis_abs_out, | |
ALIGNMENT = double, | |
STORAGE = plain | |
); | |
ALTER TYPE public.pgis_abs OWNER TO postgres; | |
-- | |
-- TOC entry 1114 (class 0 OID 0) | |
-- Name: spheroid; Type: SHELL TYPE; Schema: public; Owner: postgres | |
-- | |
CREATE TYPE spheroid; | |
-- | |
-- TOC entry 40 (class 1255 OID 18392) | |
-- Dependencies: 6 1114 | |
-- Name: spheroid_in(cstring); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION spheroid_in(cstring) RETURNS spheroid | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'ellipsoid_in'; | |
ALTER FUNCTION public.spheroid_in(cstring) OWNER TO postgres; | |
-- | |
-- TOC entry 41 (class 1255 OID 18393) | |
-- Dependencies: 6 1114 | |
-- Name: spheroid_out(spheroid); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION spheroid_out(spheroid) RETURNS cstring | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'ellipsoid_out'; | |
ALTER FUNCTION public.spheroid_out(spheroid) OWNER TO postgres; | |
-- | |
-- TOC entry 1113 (class 1247 OID 18391) | |
-- Dependencies: 41 6 40 | |
-- Name: spheroid; Type: TYPE; Schema: public; Owner: postgres | |
-- | |
CREATE TYPE spheroid ( | |
INTERNALLENGTH = 65, | |
INPUT = spheroid_in, | |
OUTPUT = spheroid_out, | |
ALIGNMENT = double, | |
STORAGE = plain | |
); | |
ALTER TYPE public.spheroid OWNER TO postgres; | |
-- | |
-- TOC entry 42 (class 1255 OID 18395) | |
-- Dependencies: 6 1102 | |
-- Name: _st_asgeojson(integer, geometry, integer, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION _st_asgeojson(integer, geometry, integer, integer) RETURNS text | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_asGeoJson'; | |
ALTER FUNCTION public._st_asgeojson(integer, geometry, integer, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 43 (class 1255 OID 18396) | |
-- Dependencies: 6 1099 | |
-- Name: _st_asgeojson(integer, geography, integer, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION _st_asgeojson(integer, geography, integer, integer) RETURNS text | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'geography_as_geojson'; | |
ALTER FUNCTION public._st_asgeojson(integer, geography, integer, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 44 (class 1255 OID 18397) | |
-- Dependencies: 6 1102 | |
-- Name: _st_asgml(integer, geometry, integer, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION _st_asgml(integer, geometry, integer, integer) RETURNS text | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_asGML'; | |
ALTER FUNCTION public._st_asgml(integer, geometry, integer, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 45 (class 1255 OID 18398) | |
-- Dependencies: 6 1099 | |
-- Name: _st_asgml(integer, geography, integer, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION _st_asgml(integer, geography, integer, integer) RETURNS text | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'geography_as_gml'; | |
ALTER FUNCTION public._st_asgml(integer, geography, integer, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 46 (class 1255 OID 18399) | |
-- Dependencies: 1102 6 | |
-- Name: _st_askml(integer, geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION _st_askml(integer, geometry, integer) RETURNS text | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_asKML'; | |
ALTER FUNCTION public._st_askml(integer, geometry, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 47 (class 1255 OID 18400) | |
-- Dependencies: 6 1099 | |
-- Name: _st_askml(integer, geography, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION _st_askml(integer, geography, integer) RETURNS text | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'geography_as_kml'; | |
ALTER FUNCTION public._st_askml(integer, geography, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 49 (class 1255 OID 18402) | |
-- Dependencies: 1099 6 | |
-- Name: _st_bestsrid(geography); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION _st_bestsrid(geography) RETURNS integer | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT _ST_BestSRID($1,$1)$_$; | |
ALTER FUNCTION public._st_bestsrid(geography) OWNER TO postgres; | |
-- | |
-- TOC entry 48 (class 1255 OID 18401) | |
-- Dependencies: 6 1099 1099 | |
-- Name: _st_bestsrid(geography, geography); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION _st_bestsrid(geography, geography) RETURNS integer | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'geography_bestsrid'; | |
ALTER FUNCTION public._st_bestsrid(geography, geography) OWNER TO postgres; | |
-- | |
-- TOC entry 50 (class 1255 OID 18403) | |
-- Dependencies: 1102 6 1102 | |
-- Name: _st_buffer(geometry, double precision, cstring); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION _st_buffer(geometry, double precision, cstring) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT COST 100 | |
AS '$libdir/postgis-1.5', 'buffer'; | |
ALTER FUNCTION public._st_buffer(geometry, double precision, cstring) OWNER TO postgres; | |
-- | |
-- TOC entry 51 (class 1255 OID 18404) | |
-- Dependencies: 6 1102 1102 | |
-- Name: _st_contains(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION _st_contains(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT COST 100 | |
AS '$libdir/postgis-1.5', 'contains'; | |
ALTER FUNCTION public._st_contains(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 52 (class 1255 OID 18405) | |
-- Dependencies: 6 1102 1102 | |
-- Name: _st_containsproperly(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION _st_containsproperly(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT COST 100 | |
AS '$libdir/postgis-1.5', 'containsproperly'; | |
ALTER FUNCTION public._st_containsproperly(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 53 (class 1255 OID 18406) | |
-- Dependencies: 6 1102 1102 | |
-- Name: _st_coveredby(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION _st_coveredby(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT COST 100 | |
AS '$libdir/postgis-1.5', 'coveredby'; | |
ALTER FUNCTION public._st_coveredby(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 54 (class 1255 OID 18407) | |
-- Dependencies: 1102 1102 6 | |
-- Name: _st_covers(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION _st_covers(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT COST 100 | |
AS '$libdir/postgis-1.5', 'covers'; | |
ALTER FUNCTION public._st_covers(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 55 (class 1255 OID 18408) | |
-- Dependencies: 1099 1099 6 | |
-- Name: _st_covers(geography, geography); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION _st_covers(geography, geography) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT COST 100 | |
AS '$libdir/postgis-1.5', 'geography_covers'; | |
ALTER FUNCTION public._st_covers(geography, geography) OWNER TO postgres; | |
-- | |
-- TOC entry 56 (class 1255 OID 18409) | |
-- Dependencies: 1102 1102 6 | |
-- Name: _st_crosses(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION _st_crosses(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT COST 100 | |
AS '$libdir/postgis-1.5', 'crosses'; | |
ALTER FUNCTION public._st_crosses(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 57 (class 1255 OID 18410) | |
-- Dependencies: 1102 6 1102 | |
-- Name: _st_dfullywithin(geometry, geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION _st_dfullywithin(geometry, geometry, double precision) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_dfullywithin'; | |
ALTER FUNCTION public._st_dfullywithin(geometry, geometry, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 58 (class 1255 OID 18411) | |
-- Dependencies: 1099 6 1099 | |
-- Name: _st_distance(geography, geography, double precision, boolean); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION _st_distance(geography, geography, double precision, boolean) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT COST 100 | |
AS '$libdir/postgis-1.5', 'geography_distance'; | |
ALTER FUNCTION public._st_distance(geography, geography, double precision, boolean) OWNER TO postgres; | |
-- | |
-- TOC entry 59 (class 1255 OID 18412) | |
-- Dependencies: 6 1168 1105 1102 | |
-- Name: _st_dumppoints(geometry, integer[]); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION _st_dumppoints(the_geom geometry, cur_path integer[]) RETURNS SETOF geometry_dump | |
LANGUAGE plpgsql | |
AS $$ | |
DECLARE | |
tmp geometry_dump; | |
tmp2 geometry_dump; | |
nb_points integer; | |
nb_geom integer; | |
i integer; | |
j integer; | |
g geometry; | |
BEGIN | |
RAISE DEBUG '%,%', cur_path, ST_GeometryType(the_geom); | |
-- Special case (MULTI* OR GEOMETRYCOLLECTION) : iterate and return the DumpPoints of the geometries | |
SELECT ST_NumGeometries(the_geom) INTO nb_geom; | |
IF (nb_geom IS NOT NULL) THEN | |
i = 1; | |
FOR tmp2 IN SELECT (ST_Dump(the_geom)).* LOOP | |
FOR tmp IN SELECT * FROM _ST_DumpPoints(tmp2.geom, cur_path || tmp2.path) LOOP | |
RETURN NEXT tmp; | |
END LOOP; | |
i = i + 1; | |
END LOOP; | |
RETURN; | |
END IF; | |
-- Special case (POLYGON) : return the points of the rings of a polygon | |
IF (ST_GeometryType(the_geom) = 'ST_Polygon') THEN | |
FOR tmp IN SELECT * FROM _ST_DumpPoints(ST_ExteriorRing(the_geom), cur_path || ARRAY[1]) LOOP | |
RETURN NEXT tmp; | |
END LOOP; | |
j := ST_NumInteriorRings(the_geom); | |
FOR i IN 1..j LOOP | |
FOR tmp IN SELECT * FROM _ST_DumpPoints(ST_InteriorRingN(the_geom, i), cur_path || ARRAY[i+1]) LOOP | |
RETURN NEXT tmp; | |
END LOOP; | |
END LOOP; | |
RETURN; | |
END IF; | |
-- Special case (POINT) : return the point | |
IF (ST_GeometryType(the_geom) = 'ST_Point') THEN | |
tmp.path = cur_path || ARRAY[1]; | |
tmp.geom = the_geom; | |
RETURN NEXT tmp; | |
RETURN; | |
END IF; | |
-- Use ST_NumPoints rather than ST_NPoints to have a NULL value if the_geom isn't | |
-- a LINESTRING or CIRCULARSTRING. | |
SELECT ST_NumPoints(the_geom) INTO nb_points; | |
-- This should never happen | |
IF (nb_points IS NULL) THEN | |
RAISE EXCEPTION 'Unexpected error while dumping geometry %', ST_AsText(the_geom); | |
END IF; | |
FOR i IN 1..nb_points LOOP | |
tmp.path = cur_path || ARRAY[i]; | |
tmp.geom := ST_PointN(the_geom, i); | |
RETURN NEXT tmp; | |
END LOOP; | |
END | |
$$; | |
ALTER FUNCTION public._st_dumppoints(the_geom geometry, cur_path integer[]) OWNER TO postgres; | |
-- | |
-- TOC entry 60 (class 1255 OID 18413) | |
-- Dependencies: 1102 6 1102 | |
-- Name: _st_dwithin(geometry, geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION _st_dwithin(geometry, geometry, double precision) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT COST 100 | |
AS '$libdir/postgis-1.5', 'LWGEOM_dwithin'; | |
ALTER FUNCTION public._st_dwithin(geometry, geometry, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 61 (class 1255 OID 18414) | |
-- Dependencies: 1099 6 1099 | |
-- Name: _st_dwithin(geography, geography, double precision, boolean); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION _st_dwithin(geography, geography, double precision, boolean) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT COST 100 | |
AS '$libdir/postgis-1.5', 'geography_dwithin'; | |
ALTER FUNCTION public._st_dwithin(geography, geography, double precision, boolean) OWNER TO postgres; | |
-- | |
-- TOC entry 62 (class 1255 OID 18415) | |
-- Dependencies: 1102 6 1102 | |
-- Name: _st_equals(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION _st_equals(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT COST 100 | |
AS '$libdir/postgis-1.5', 'geomequals'; | |
ALTER FUNCTION public._st_equals(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 63 (class 1255 OID 18416) | |
-- Dependencies: 1099 1099 6 | |
-- Name: _st_expand(geography, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION _st_expand(geography, double precision) RETURNS geography | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'geography_expand'; | |
ALTER FUNCTION public._st_expand(geography, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 64 (class 1255 OID 18417) | |
-- Dependencies: 6 1102 1102 | |
-- Name: _st_intersects(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION _st_intersects(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT COST 100 | |
AS '$libdir/postgis-1.5', 'intersects'; | |
ALTER FUNCTION public._st_intersects(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 65 (class 1255 OID 18418) | |
-- Dependencies: 6 1102 1102 | |
-- Name: _st_linecrossingdirection(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION _st_linecrossingdirection(geometry, geometry) RETURNS integer | |
LANGUAGE c IMMUTABLE STRICT COST 100 | |
AS '$libdir/postgis-1.5', 'ST_LineCrossingDirection'; | |
ALTER FUNCTION public._st_linecrossingdirection(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 66 (class 1255 OID 18419) | |
-- Dependencies: 1102 1102 1102 6 | |
-- Name: _st_longestline(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION _st_longestline(geometry, geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_longestline2d'; | |
ALTER FUNCTION public._st_longestline(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 67 (class 1255 OID 18420) | |
-- Dependencies: 6 1102 1102 | |
-- Name: _st_maxdistance(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION _st_maxdistance(geometry, geometry) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_maxdistance2d_linestring'; | |
ALTER FUNCTION public._st_maxdistance(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 68 (class 1255 OID 18421) | |
-- Dependencies: 6 1102 1102 | |
-- Name: _st_orderingequals(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION _st_orderingequals(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT COST 100 | |
AS '$libdir/postgis-1.5', 'LWGEOM_same'; | |
ALTER FUNCTION public._st_orderingequals(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 69 (class 1255 OID 18422) | |
-- Dependencies: 1102 1102 6 | |
-- Name: _st_overlaps(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION _st_overlaps(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT COST 100 | |
AS '$libdir/postgis-1.5', 'overlaps'; | |
ALTER FUNCTION public._st_overlaps(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 70 (class 1255 OID 18423) | |
-- Dependencies: 6 1099 1099 | |
-- Name: _st_pointoutside(geography); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION _st_pointoutside(geography) RETURNS geography | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'geography_point_outside'; | |
ALTER FUNCTION public._st_pointoutside(geography) OWNER TO postgres; | |
-- | |
-- TOC entry 71 (class 1255 OID 18424) | |
-- Dependencies: 6 1102 1102 | |
-- Name: _st_touches(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION _st_touches(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT COST 100 | |
AS '$libdir/postgis-1.5', 'touches'; | |
ALTER FUNCTION public._st_touches(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 72 (class 1255 OID 18425) | |
-- Dependencies: 6 1102 1102 | |
-- Name: _st_within(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION _st_within(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT COST 100 | |
AS '$libdir/postgis-1.5', 'within'; | |
ALTER FUNCTION public._st_within(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 73 (class 1255 OID 18426) | |
-- Dependencies: 6 1168 | |
-- Name: addauth(text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION addauth(text) RETURNS boolean | |
LANGUAGE plpgsql | |
AS $_$ | |
DECLARE | |
lockid alias for $1; | |
okay boolean; | |
myrec record; | |
BEGIN | |
-- check to see if table exists | |
-- if not, CREATE TEMP TABLE mylock (transid xid, lockcode text) | |
okay := 'f'; | |
FOR myrec IN SELECT * FROM pg_class WHERE relname = 'temp_lock_have_table' LOOP | |
okay := 't'; | |
END LOOP; | |
IF (okay <> 't') THEN | |
CREATE TEMP TABLE temp_lock_have_table (transid xid, lockcode text); | |
-- this will only work from pgsql7.4 up | |
-- ON COMMIT DELETE ROWS; | |
END IF; | |
-- INSERT INTO mylock VALUES ( $1) | |
-- EXECUTE 'INSERT INTO temp_lock_have_table VALUES ( '|| | |
-- quote_literal(getTransactionID()) || ',' || | |
-- quote_literal(lockid) ||')'; | |
INSERT INTO temp_lock_have_table VALUES (getTransactionID(), lockid); | |
RETURN true::boolean; | |
END; | |
$_$; | |
ALTER FUNCTION public.addauth(text) OWNER TO postgres; | |
-- | |
-- TOC entry 74 (class 1255 OID 18427) | |
-- Dependencies: 6 1102 1102 | |
-- Name: addbbox(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION addbbox(geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_addBBOX'; | |
ALTER FUNCTION public.addbbox(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 79 (class 1255 OID 18430) | |
-- Dependencies: 6 1168 | |
-- Name: addgeometrycolumn(character varying, character varying, integer, character varying, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION addgeometrycolumn(character varying, character varying, integer, character varying, integer) RETURNS text | |
LANGUAGE plpgsql STRICT | |
AS $_$ | |
DECLARE | |
ret text; | |
BEGIN | |
SELECT AddGeometryColumn('','',$1,$2,$3,$4,$5) into ret; | |
RETURN ret; | |
END; | |
$_$; | |
ALTER FUNCTION public.addgeometrycolumn(character varying, character varying, integer, character varying, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 78 (class 1255 OID 18429) | |
-- Dependencies: 6 1168 | |
-- Name: addgeometrycolumn(character varying, character varying, character varying, integer, character varying, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION addgeometrycolumn(character varying, character varying, character varying, integer, character varying, integer) RETURNS text | |
LANGUAGE plpgsql STABLE STRICT | |
AS $_$ | |
DECLARE | |
ret text; | |
BEGIN | |
SELECT AddGeometryColumn('',$1,$2,$3,$4,$5,$6) into ret; | |
RETURN ret; | |
END; | |
$_$; | |
ALTER FUNCTION public.addgeometrycolumn(character varying, character varying, character varying, integer, character varying, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 77 (class 1255 OID 18428) | |
-- Dependencies: 6 1168 | |
-- Name: addgeometrycolumn(character varying, character varying, character varying, character varying, integer, character varying, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION addgeometrycolumn(character varying, character varying, character varying, character varying, integer, character varying, integer) RETURNS text | |
LANGUAGE plpgsql STRICT | |
AS $_$ | |
DECLARE | |
catalog_name alias for $1; | |
schema_name alias for $2; | |
table_name alias for $3; | |
column_name alias for $4; | |
new_srid alias for $5; | |
new_type alias for $6; | |
new_dim alias for $7; | |
rec RECORD; | |
sr varchar; | |
real_schema name; | |
sql text; | |
BEGIN | |
-- Verify geometry type | |
IF ( NOT ( (new_type = 'GEOMETRY') OR | |
(new_type = 'GEOMETRYCOLLECTION') OR | |
(new_type = 'POINT') OR | |
(new_type = 'MULTIPOINT') OR | |
(new_type = 'POLYGON') OR | |
(new_type = 'MULTIPOLYGON') OR | |
(new_type = 'LINESTRING') OR | |
(new_type = 'MULTILINESTRING') OR | |
(new_type = 'GEOMETRYCOLLECTIONM') OR | |
(new_type = 'POINTM') OR | |
(new_type = 'MULTIPOINTM') OR | |
(new_type = 'POLYGONM') OR | |
(new_type = 'MULTIPOLYGONM') OR | |
(new_type = 'LINESTRINGM') OR | |
(new_type = 'MULTILINESTRINGM') OR | |
(new_type = 'CIRCULARSTRING') OR | |
(new_type = 'CIRCULARSTRINGM') OR | |
(new_type = 'COMPOUNDCURVE') OR | |
(new_type = 'COMPOUNDCURVEM') OR | |
(new_type = 'CURVEPOLYGON') OR | |
(new_type = 'CURVEPOLYGONM') OR | |
(new_type = 'MULTICURVE') OR | |
(new_type = 'MULTICURVEM') OR | |
(new_type = 'MULTISURFACE') OR | |
(new_type = 'MULTISURFACEM')) ) | |
THEN | |
RAISE EXCEPTION 'Invalid type name - valid ones are: | |
POINT, MULTIPOINT, | |
LINESTRING, MULTILINESTRING, | |
POLYGON, MULTIPOLYGON, | |
CIRCULARSTRING, COMPOUNDCURVE, MULTICURVE, | |
CURVEPOLYGON, MULTISURFACE, | |
GEOMETRY, GEOMETRYCOLLECTION, | |
POINTM, MULTIPOINTM, | |
LINESTRINGM, MULTILINESTRINGM, | |
POLYGONM, MULTIPOLYGONM, | |
CIRCULARSTRINGM, COMPOUNDCURVEM, MULTICURVEM | |
CURVEPOLYGONM, MULTISURFACEM, | |
or GEOMETRYCOLLECTIONM'; | |
RETURN 'fail'; | |
END IF; | |
-- Verify dimension | |
IF ( (new_dim >4) OR (new_dim <0) ) THEN | |
RAISE EXCEPTION 'invalid dimension'; | |
RETURN 'fail'; | |
END IF; | |
IF ( (new_type LIKE '%M') AND (new_dim!=3) ) THEN | |
RAISE EXCEPTION 'TypeM needs 3 dimensions'; | |
RETURN 'fail'; | |
END IF; | |
-- Verify SRID | |
IF ( new_srid != -1 ) THEN | |
SELECT SRID INTO sr FROM spatial_ref_sys WHERE SRID = new_srid; | |
IF NOT FOUND THEN | |
RAISE EXCEPTION 'AddGeometryColumns() - invalid SRID'; | |
RETURN 'fail'; | |
END IF; | |
END IF; | |
-- Verify schema | |
IF ( schema_name IS NOT NULL AND schema_name != '' ) THEN | |
sql := 'SELECT nspname FROM pg_namespace ' || | |
'WHERE text(nspname) = ' || quote_literal(schema_name) || | |
'LIMIT 1'; | |
RAISE DEBUG '%', sql; | |
EXECUTE sql INTO real_schema; | |
IF ( real_schema IS NULL ) THEN | |
RAISE EXCEPTION 'Schema % is not a valid schemaname', quote_literal(schema_name); | |
RETURN 'fail'; | |
END IF; | |
END IF; | |
IF ( real_schema IS NULL ) THEN | |
RAISE DEBUG 'Detecting schema'; | |
sql := 'SELECT n.nspname AS schemaname ' || | |
'FROM pg_catalog.pg_class c ' || | |
'JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace ' || | |
'WHERE c.relkind = ' || quote_literal('r') || | |
' AND n.nspname NOT IN (' || quote_literal('pg_catalog') || ', ' || quote_literal('pg_toast') || ')' || | |
' AND pg_catalog.pg_table_is_visible(c.oid)' || | |
' AND c.relname = ' || quote_literal(table_name); | |
RAISE DEBUG '%', sql; | |
EXECUTE sql INTO real_schema; | |
IF ( real_schema IS NULL ) THEN | |
RAISE EXCEPTION 'Table % does not occur in the search_path', quote_literal(table_name); | |
RETURN 'fail'; | |
END IF; | |
END IF; | |
-- Add geometry column to table | |
sql := 'ALTER TABLE ' || | |
quote_ident(real_schema) || '.' || quote_ident(table_name) | |
|| ' ADD COLUMN ' || quote_ident(column_name) || | |
' geometry '; | |
RAISE DEBUG '%', sql; | |
EXECUTE sql; | |
-- Delete stale record in geometry_columns (if any) | |
sql := 'DELETE FROM geometry_columns WHERE | |
f_table_catalog = ' || quote_literal('') || | |
' AND f_table_schema = ' || | |
quote_literal(real_schema) || | |
' AND f_table_name = ' || quote_literal(table_name) || | |
' AND f_geometry_column = ' || quote_literal(column_name); | |
RAISE DEBUG '%', sql; | |
EXECUTE sql; | |
-- Add record in geometry_columns | |
sql := 'INSERT INTO geometry_columns (f_table_catalog,f_table_schema,f_table_name,' || | |
'f_geometry_column,coord_dimension,srid,type)' || | |
' VALUES (' || | |
quote_literal('') || ',' || | |
quote_literal(real_schema) || ',' || | |
quote_literal(table_name) || ',' || | |
quote_literal(column_name) || ',' || | |
new_dim::text || ',' || | |
new_srid::text || ',' || | |
quote_literal(new_type) || ')'; | |
RAISE DEBUG '%', sql; | |
EXECUTE sql; | |
-- Add table CHECKs | |
sql := 'ALTER TABLE ' || | |
quote_ident(real_schema) || '.' || quote_ident(table_name) | |
|| ' ADD CONSTRAINT ' | |
|| quote_ident('enforce_srid_' || column_name) | |
|| ' CHECK (ST_SRID(' || quote_ident(column_name) || | |
') = ' || new_srid::text || ')' ; | |
RAISE DEBUG '%', sql; | |
EXECUTE sql; | |
sql := 'ALTER TABLE ' || | |
quote_ident(real_schema) || '.' || quote_ident(table_name) | |
|| ' ADD CONSTRAINT ' | |
|| quote_ident('enforce_dims_' || column_name) | |
|| ' CHECK (ST_NDims(' || quote_ident(column_name) || | |
') = ' || new_dim::text || ')' ; | |
RAISE DEBUG '%', sql; | |
EXECUTE sql; | |
IF ( NOT (new_type = 'GEOMETRY')) THEN | |
sql := 'ALTER TABLE ' || | |
quote_ident(real_schema) || '.' || quote_ident(table_name) || ' ADD CONSTRAINT ' || | |
quote_ident('enforce_geotype_' || column_name) || | |
' CHECK (GeometryType(' || | |
quote_ident(column_name) || ')=' || | |
quote_literal(new_type) || ' OR (' || | |
quote_ident(column_name) || ') is null)'; | |
RAISE DEBUG '%', sql; | |
EXECUTE sql; | |
END IF; | |
RETURN | |
real_schema || '.' || | |
table_name || '.' || column_name || | |
' SRID:' || new_srid::text || | |
' TYPE:' || new_type || | |
' DIMS:' || new_dim::text || ' '; | |
END; | |
$_$; | |
ALTER FUNCTION public.addgeometrycolumn(character varying, character varying, character varying, character varying, integer, character varying, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 80 (class 1255 OID 18431) | |
-- Dependencies: 6 1102 1102 1102 | |
-- Name: addpoint(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION addpoint(geometry, geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_addpoint'; | |
ALTER FUNCTION public.addpoint(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 81 (class 1255 OID 18432) | |
-- Dependencies: 6 1102 1102 1102 | |
-- Name: addpoint(geometry, geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION addpoint(geometry, geometry, integer) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_addpoint'; | |
ALTER FUNCTION public.addpoint(geometry, geometry, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 83 (class 1255 OID 18434) | |
-- Dependencies: 1102 6 1102 | |
-- Name: affine(geometry, double precision, double precision, double precision, double precision, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION affine(geometry, double precision, double precision, double precision, double precision, double precision, double precision) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT affine($1, $2, $3, 0, $4, $5, 0, 0, 0, 1, $6, $7, 0)$_$; | |
ALTER FUNCTION public.affine(geometry, double precision, double precision, double precision, double precision, double precision, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 82 (class 1255 OID 18433) | |
-- Dependencies: 1102 1102 6 | |
-- Name: affine(geometry, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION affine(geometry, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_affine'; | |
ALTER FUNCTION public.affine(geometry, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 84 (class 1255 OID 18435) | |
-- Dependencies: 1102 6 | |
-- Name: area(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION area(geometry) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_area_polygon'; | |
ALTER FUNCTION public.area(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 85 (class 1255 OID 18436) | |
-- Dependencies: 1102 6 | |
-- Name: area2d(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION area2d(geometry) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_area_polygon'; | |
ALTER FUNCTION public.area2d(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 86 (class 1255 OID 18437) | |
-- Dependencies: 1102 6 | |
-- Name: asbinary(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION asbinary(geometry) RETURNS bytea | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_asBinary'; | |
ALTER FUNCTION public.asbinary(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 87 (class 1255 OID 18438) | |
-- Dependencies: 1102 6 | |
-- Name: asbinary(geometry, text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION asbinary(geometry, text) RETURNS bytea | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_asBinary'; | |
ALTER FUNCTION public.asbinary(geometry, text) OWNER TO postgres; | |
-- | |
-- TOC entry 88 (class 1255 OID 18439) | |
-- Dependencies: 6 1102 | |
-- Name: asewkb(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION asewkb(geometry) RETURNS bytea | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'WKBFromLWGEOM'; | |
ALTER FUNCTION public.asewkb(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 89 (class 1255 OID 18440) | |
-- Dependencies: 1102 6 | |
-- Name: asewkb(geometry, text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION asewkb(geometry, text) RETURNS bytea | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'WKBFromLWGEOM'; | |
ALTER FUNCTION public.asewkb(geometry, text) OWNER TO postgres; | |
-- | |
-- TOC entry 90 (class 1255 OID 18441) | |
-- Dependencies: 1102 6 | |
-- Name: asewkt(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION asewkt(geometry) RETURNS text | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_asEWKT'; | |
ALTER FUNCTION public.asewkt(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 92 (class 1255 OID 18443) | |
-- Dependencies: 6 1102 | |
-- Name: asgml(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION asgml(geometry) RETURNS text | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT _ST_AsGML(2, $1, 15, 0)$_$; | |
ALTER FUNCTION public.asgml(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 91 (class 1255 OID 18442) | |
-- Dependencies: 1102 6 | |
-- Name: asgml(geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION asgml(geometry, integer) RETURNS text | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT _ST_AsGML(2, $1, $2, 0)$_$; | |
ALTER FUNCTION public.asgml(geometry, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 93 (class 1255 OID 18444) | |
-- Dependencies: 6 1102 | |
-- Name: ashexewkb(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION ashexewkb(geometry) RETURNS text | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_asHEXEWKB'; | |
ALTER FUNCTION public.ashexewkb(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 94 (class 1255 OID 18445) | |
-- Dependencies: 1102 6 | |
-- Name: ashexewkb(geometry, text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION ashexewkb(geometry, text) RETURNS text | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_asHEXEWKB'; | |
ALTER FUNCTION public.ashexewkb(geometry, text) OWNER TO postgres; | |
-- | |
-- TOC entry 96 (class 1255 OID 18447) | |
-- Dependencies: 1102 6 | |
-- Name: askml(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION askml(geometry) RETURNS text | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT _ST_AsKML(2, transform($1,4326), 15)$_$; | |
ALTER FUNCTION public.askml(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 95 (class 1255 OID 18446) | |
-- Dependencies: 1102 6 | |
-- Name: askml(geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION askml(geometry, integer) RETURNS text | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT _ST_AsKML(2, transform($1,4326), $2)$_$; | |
ALTER FUNCTION public.askml(geometry, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 97 (class 1255 OID 18448) | |
-- Dependencies: 6 1102 | |
-- Name: askml(integer, geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION askml(integer, geometry, integer) RETURNS text | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT _ST_AsKML($1, transform($2,4326), $3)$_$; | |
ALTER FUNCTION public.askml(integer, geometry, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 100 (class 1255 OID 18451) | |
-- Dependencies: 6 1102 | |
-- Name: assvg(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION assvg(geometry) RETURNS text | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'assvg_geometry'; | |
ALTER FUNCTION public.assvg(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 99 (class 1255 OID 18450) | |
-- Dependencies: 6 1102 | |
-- Name: assvg(geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION assvg(geometry, integer) RETURNS text | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'assvg_geometry'; | |
ALTER FUNCTION public.assvg(geometry, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 98 (class 1255 OID 18449) | |
-- Dependencies: 6 1102 | |
-- Name: assvg(geometry, integer, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION assvg(geometry, integer, integer) RETURNS text | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'assvg_geometry'; | |
ALTER FUNCTION public.assvg(geometry, integer, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 101 (class 1255 OID 18452) | |
-- Dependencies: 1102 6 | |
-- Name: astext(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION astext(geometry) RETURNS text | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_asText'; | |
ALTER FUNCTION public.astext(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 102 (class 1255 OID 18453) | |
-- Dependencies: 6 1102 1102 | |
-- Name: azimuth(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION azimuth(geometry, geometry) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_azimuth'; | |
ALTER FUNCTION public.azimuth(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 103 (class 1255 OID 18454) | |
-- Dependencies: 1102 1168 6 | |
-- Name: bdmpolyfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION bdmpolyfromtext(text, integer) RETURNS geometry | |
LANGUAGE plpgsql IMMUTABLE STRICT | |
AS $_$ | |
DECLARE | |
geomtext alias for $1; | |
srid alias for $2; | |
mline geometry; | |
geom geometry; | |
BEGIN | |
mline := MultiLineStringFromText(geomtext, srid); | |
IF mline IS NULL | |
THEN | |
RAISE EXCEPTION 'Input is not a MultiLinestring'; | |
END IF; | |
geom := multi(BuildArea(mline)); | |
RETURN geom; | |
END; | |
$_$; | |
ALTER FUNCTION public.bdmpolyfromtext(text, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 75 (class 1255 OID 18455) | |
-- Dependencies: 6 1168 1102 | |
-- Name: bdpolyfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION bdpolyfromtext(text, integer) RETURNS geometry | |
LANGUAGE plpgsql IMMUTABLE STRICT | |
AS $_$ | |
DECLARE | |
geomtext alias for $1; | |
srid alias for $2; | |
mline geometry; | |
geom geometry; | |
BEGIN | |
mline := MultiLineStringFromText(geomtext, srid); | |
IF mline IS NULL | |
THEN | |
RAISE EXCEPTION 'Input is not a MultiLinestring'; | |
END IF; | |
geom := BuildArea(mline); | |
IF GeometryType(geom) != 'POLYGON' | |
THEN | |
RAISE EXCEPTION 'Input returns more then a single polygon, try using BdMPolyFromText instead'; | |
END IF; | |
RETURN geom; | |
END; | |
$_$; | |
ALTER FUNCTION public.bdpolyfromtext(text, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 76 (class 1255 OID 18456) | |
-- Dependencies: 6 1102 1102 | |
-- Name: boundary(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION boundary(geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'boundary'; | |
ALTER FUNCTION public.boundary(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 104 (class 1255 OID 18457) | |
-- Dependencies: 6 1102 | |
-- Name: box(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION box(geometry) RETURNS box | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_to_BOX'; | |
ALTER FUNCTION public.box(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 105 (class 1255 OID 18458) | |
-- Dependencies: 6 1090 | |
-- Name: box(box3d); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION box(box3d) RETURNS box | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'BOX3D_to_BOX'; | |
ALTER FUNCTION public.box(box3d) OWNER TO postgres; | |
-- | |
-- TOC entry 106 (class 1255 OID 18459) | |
-- Dependencies: 6 1087 1093 | |
-- Name: box2d(box3d_extent); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION box2d(box3d_extent) RETURNS box2d | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'BOX3D_to_BOX2DFLOAT4'; | |
ALTER FUNCTION public.box2d(box3d_extent) OWNER TO postgres; | |
-- | |
-- TOC entry 107 (class 1255 OID 18460) | |
-- Dependencies: 6 1087 1102 | |
-- Name: box2d(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION box2d(geometry) RETURNS box2d | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_to_BOX2DFLOAT4'; | |
ALTER FUNCTION public.box2d(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 108 (class 1255 OID 18461) | |
-- Dependencies: 1087 1090 6 | |
-- Name: box2d(box3d); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION box2d(box3d) RETURNS box2d | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'BOX3D_to_BOX2DFLOAT4'; | |
ALTER FUNCTION public.box2d(box3d) OWNER TO postgres; | |
-- | |
-- TOC entry 109 (class 1255 OID 18462) | |
-- Dependencies: 6 1090 1102 | |
-- Name: box3d(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION box3d(geometry) RETURNS box3d | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_to_BOX3D'; | |
ALTER FUNCTION public.box3d(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 110 (class 1255 OID 18463) | |
-- Dependencies: 6 1090 1087 | |
-- Name: box3d(box2d); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION box3d(box2d) RETURNS box3d | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'BOX2DFLOAT4_to_BOX3D'; | |
ALTER FUNCTION public.box3d(box2d) OWNER TO postgres; | |
-- | |
-- TOC entry 111 (class 1255 OID 18464) | |
-- Dependencies: 6 1090 1093 | |
-- Name: box3d_extent(box3d_extent); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION box3d_extent(box3d_extent) RETURNS box3d | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'BOX3D_extent_to_BOX3D'; | |
ALTER FUNCTION public.box3d_extent(box3d_extent) OWNER TO postgres; | |
-- | |
-- TOC entry 112 (class 1255 OID 18465) | |
-- Dependencies: 6 1090 | |
-- Name: box3dtobox(box3d); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION box3dtobox(box3d) RETURNS box | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT box($1)$_$; | |
ALTER FUNCTION public.box3dtobox(box3d) OWNER TO postgres; | |
-- | |
-- TOC entry 113 (class 1255 OID 18466) | |
-- Dependencies: 6 1102 1102 | |
-- Name: buffer(geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION buffer(geometry, double precision) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT COST 100 | |
AS '$libdir/postgis-1.5', 'buffer'; | |
ALTER FUNCTION public.buffer(geometry, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 114 (class 1255 OID 18467) | |
-- Dependencies: 6 1102 1102 | |
-- Name: buffer(geometry, double precision, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION buffer(geometry, double precision, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT ST_Buffer($1, $2, $3)$_$; | |
ALTER FUNCTION public.buffer(geometry, double precision, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 115 (class 1255 OID 18468) | |
-- Dependencies: 6 1102 1102 | |
-- Name: buildarea(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION buildarea(geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT COST 100 | |
AS '$libdir/postgis-1.5', 'LWGEOM_buildarea'; | |
ALTER FUNCTION public.buildarea(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 116 (class 1255 OID 18469) | |
-- Dependencies: 6 1102 | |
-- Name: bytea(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION bytea(geometry) RETURNS bytea | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_to_bytea'; | |
ALTER FUNCTION public.bytea(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 117 (class 1255 OID 18470) | |
-- Dependencies: 6 1102 1102 | |
-- Name: centroid(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION centroid(geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'centroid'; | |
ALTER FUNCTION public.centroid(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 119 (class 1255 OID 18472) | |
-- Dependencies: 6 | |
-- Name: checkauth(text, text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION checkauth(text, text) RETURNS integer | |
LANGUAGE sql | |
AS $_$ SELECT CheckAuth('', $1, $2) $_$; | |
ALTER FUNCTION public.checkauth(text, text) OWNER TO postgres; | |
-- | |
-- TOC entry 118 (class 1255 OID 18471) | |
-- Dependencies: 6 1168 | |
-- Name: checkauth(text, text, text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION checkauth(text, text, text) RETURNS integer | |
LANGUAGE plpgsql | |
AS $_$ | |
DECLARE | |
schema text; | |
BEGIN | |
IF NOT LongTransactionsEnabled() THEN | |
RAISE EXCEPTION 'Long transaction support disabled, use EnableLongTransaction() to enable.'; | |
END IF; | |
if ( $1 != '' ) THEN | |
schema = $1; | |
ELSE | |
SELECT current_schema() into schema; | |
END IF; | |
-- TODO: check for an already existing trigger ? | |
EXECUTE 'CREATE TRIGGER check_auth BEFORE UPDATE OR DELETE ON ' | |
|| quote_ident(schema) || '.' || quote_ident($2) | |
||' FOR EACH ROW EXECUTE PROCEDURE CheckAuthTrigger(' | |
|| quote_literal($3) || ')'; | |
RETURN 0; | |
END; | |
$_$; | |
ALTER FUNCTION public.checkauth(text, text, text) OWNER TO postgres; | |
-- | |
-- TOC entry 120 (class 1255 OID 18473) | |
-- Dependencies: 6 | |
-- Name: checkauthtrigger(); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION checkauthtrigger() RETURNS trigger | |
LANGUAGE c | |
AS '$libdir/postgis-1.5', 'check_authorization'; | |
ALTER FUNCTION public.checkauthtrigger() OWNER TO postgres; | |
-- | |
-- TOC entry 121 (class 1255 OID 18474) | |
-- Dependencies: 6 1102 1102 1102 | |
-- Name: collect(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION collect(geometry, geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE | |
AS '$libdir/postgis-1.5', 'LWGEOM_collect'; | |
ALTER FUNCTION public.collect(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 122 (class 1255 OID 18475) | |
-- Dependencies: 6 1087 1087 1102 | |
-- Name: combine_bbox(box2d, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION combine_bbox(box2d, geometry) RETURNS box2d | |
LANGUAGE c IMMUTABLE | |
AS '$libdir/postgis-1.5', 'BOX2DFLOAT4_combine'; | |
ALTER FUNCTION public.combine_bbox(box2d, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 123 (class 1255 OID 18476) | |
-- Dependencies: 6 1093 1093 1102 | |
-- Name: combine_bbox(box3d_extent, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION combine_bbox(box3d_extent, geometry) RETURNS box3d_extent | |
LANGUAGE c IMMUTABLE | |
AS '$libdir/postgis-1.5', 'BOX3D_combine'; | |
ALTER FUNCTION public.combine_bbox(box3d_extent, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 124 (class 1255 OID 18477) | |
-- Dependencies: 6 1090 1090 1102 | |
-- Name: combine_bbox(box3d, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION combine_bbox(box3d, geometry) RETURNS box3d | |
LANGUAGE c IMMUTABLE | |
AS '$libdir/postgis-1.5', 'BOX3D_combine'; | |
ALTER FUNCTION public.combine_bbox(box3d, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 125 (class 1255 OID 18478) | |
-- Dependencies: 6 1096 | |
-- Name: compression(chip); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION compression(chip) RETURNS integer | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'CHIP_getCompression'; | |
ALTER FUNCTION public.compression(chip) OWNER TO postgres; | |
-- | |
-- TOC entry 126 (class 1255 OID 18479) | |
-- Dependencies: 6 1102 1102 | |
-- Name: contains(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION contains(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'contains'; | |
ALTER FUNCTION public.contains(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 127 (class 1255 OID 18480) | |
-- Dependencies: 6 1102 1102 | |
-- Name: convexhull(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION convexhull(geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT COST 100 | |
AS '$libdir/postgis-1.5', 'convexhull'; | |
ALTER FUNCTION public.convexhull(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 128 (class 1255 OID 18481) | |
-- Dependencies: 6 1102 1102 | |
-- Name: crosses(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION crosses(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'crosses'; | |
ALTER FUNCTION public.crosses(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 129 (class 1255 OID 18482) | |
-- Dependencies: 6 1096 | |
-- Name: datatype(chip); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION datatype(chip) RETURNS integer | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'CHIP_getDatatype'; | |
ALTER FUNCTION public.datatype(chip) OWNER TO postgres; | |
-- | |
-- TOC entry 130 (class 1255 OID 18483) | |
-- Dependencies: 6 1102 1102 1102 | |
-- Name: difference(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION difference(geometry, geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'difference'; | |
ALTER FUNCTION public.difference(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 131 (class 1255 OID 18484) | |
-- Dependencies: 6 1102 | |
-- Name: dimension(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION dimension(geometry) RETURNS integer | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_dimension'; | |
ALTER FUNCTION public.dimension(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 132 (class 1255 OID 18485) | |
-- Dependencies: 6 1168 | |
-- Name: disablelongtransactions(); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION disablelongtransactions() RETURNS text | |
LANGUAGE plpgsql | |
AS $$ | |
DECLARE | |
rec RECORD; | |
BEGIN | |
-- | |
-- Drop all triggers applied by CheckAuth() | |
-- | |
FOR rec IN | |
SELECT c.relname, t.tgname, t.tgargs FROM pg_trigger t, pg_class c, pg_proc p | |
WHERE p.proname = 'checkauthtrigger' and t.tgfoid = p.oid and t.tgrelid = c.oid | |
LOOP | |
EXECUTE 'DROP TRIGGER ' || quote_ident(rec.tgname) || | |
' ON ' || quote_ident(rec.relname); | |
END LOOP; | |
-- | |
-- Drop the authorization_table table | |
-- | |
FOR rec IN SELECT * FROM pg_class WHERE relname = 'authorization_table' LOOP | |
DROP TABLE authorization_table; | |
END LOOP; | |
-- | |
-- Drop the authorized_tables view | |
-- | |
FOR rec IN SELECT * FROM pg_class WHERE relname = 'authorized_tables' LOOP | |
DROP VIEW authorized_tables; | |
END LOOP; | |
RETURN 'Long transactions support disabled'; | |
END; | |
$$; | |
ALTER FUNCTION public.disablelongtransactions() OWNER TO postgres; | |
-- | |
-- TOC entry 133 (class 1255 OID 18486) | |
-- Dependencies: 6 1102 1102 | |
-- Name: disjoint(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION disjoint(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'disjoint'; | |
ALTER FUNCTION public.disjoint(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 134 (class 1255 OID 18487) | |
-- Dependencies: 6 1102 1102 | |
-- Name: distance(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION distance(geometry, geometry) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT COST 100 | |
AS '$libdir/postgis-1.5', 'LWGEOM_mindistance2d'; | |
ALTER FUNCTION public.distance(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 135 (class 1255 OID 18488) | |
-- Dependencies: 6 1102 1102 | |
-- Name: distance_sphere(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION distance_sphere(geometry, geometry) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT COST 100 | |
AS '$libdir/postgis-1.5', 'LWGEOM_distance_sphere'; | |
ALTER FUNCTION public.distance_sphere(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 136 (class 1255 OID 18489) | |
-- Dependencies: 6 1102 1102 1113 | |
-- Name: distance_spheroid(geometry, geometry, spheroid); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION distance_spheroid(geometry, geometry, spheroid) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT COST 100 | |
AS '$libdir/postgis-1.5', 'LWGEOM_distance_ellipsoid'; | |
ALTER FUNCTION public.distance_spheroid(geometry, geometry, spheroid) OWNER TO postgres; | |
-- | |
-- TOC entry 137 (class 1255 OID 18490) | |
-- Dependencies: 6 1102 1102 | |
-- Name: dropbbox(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION dropbbox(geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_dropBBOX'; | |
ALTER FUNCTION public.dropbbox(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 140 (class 1255 OID 18493) | |
-- Dependencies: 6 1168 | |
-- Name: dropgeometrycolumn(character varying, character varying); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION dropgeometrycolumn(character varying, character varying) RETURNS text | |
LANGUAGE plpgsql STRICT | |
AS $_$ | |
DECLARE | |
ret text; | |
BEGIN | |
SELECT DropGeometryColumn('','',$1,$2) into ret; | |
RETURN ret; | |
END; | |
$_$; | |
ALTER FUNCTION public.dropgeometrycolumn(character varying, character varying) OWNER TO postgres; | |
-- | |
-- TOC entry 139 (class 1255 OID 18492) | |
-- Dependencies: 6 1168 | |
-- Name: dropgeometrycolumn(character varying, character varying, character varying); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION dropgeometrycolumn(character varying, character varying, character varying) RETURNS text | |
LANGUAGE plpgsql STRICT | |
AS $_$ | |
DECLARE | |
ret text; | |
BEGIN | |
SELECT DropGeometryColumn('',$1,$2,$3) into ret; | |
RETURN ret; | |
END; | |
$_$; | |
ALTER FUNCTION public.dropgeometrycolumn(character varying, character varying, character varying) OWNER TO postgres; | |
-- | |
-- TOC entry 138 (class 1255 OID 18491) | |
-- Dependencies: 6 1168 | |
-- Name: dropgeometrycolumn(character varying, character varying, character varying, character varying); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION dropgeometrycolumn(character varying, character varying, character varying, character varying) RETURNS text | |
LANGUAGE plpgsql STRICT | |
AS $_$ | |
DECLARE | |
catalog_name alias for $1; | |
schema_name alias for $2; | |
table_name alias for $3; | |
column_name alias for $4; | |
myrec RECORD; | |
okay boolean; | |
real_schema name; | |
BEGIN | |
-- Find, check or fix schema_name | |
IF ( schema_name != '' ) THEN | |
okay = 'f'; | |
FOR myrec IN SELECT nspname FROM pg_namespace WHERE text(nspname) = schema_name LOOP | |
okay := 't'; | |
END LOOP; | |
IF ( okay <> 't' ) THEN | |
RAISE NOTICE 'Invalid schema name - using current_schema()'; | |
SELECT current_schema() into real_schema; | |
ELSE | |
real_schema = schema_name; | |
END IF; | |
ELSE | |
SELECT current_schema() into real_schema; | |
END IF; | |
-- Find out if the column is in the geometry_columns table | |
okay = 'f'; | |
FOR myrec IN SELECT * from geometry_columns where f_table_schema = text(real_schema) and f_table_name = table_name and f_geometry_column = column_name LOOP | |
okay := 't'; | |
END LOOP; | |
IF (okay <> 't') THEN | |
RAISE EXCEPTION 'column not found in geometry_columns table'; | |
RETURN 'f'; | |
END IF; | |
-- Remove ref from geometry_columns table | |
EXECUTE 'delete from geometry_columns where f_table_schema = ' || | |
quote_literal(real_schema) || ' and f_table_name = ' || | |
quote_literal(table_name) || ' and f_geometry_column = ' || | |
quote_literal(column_name); | |
-- Remove table column | |
EXECUTE 'ALTER TABLE ' || quote_ident(real_schema) || '.' || | |
quote_ident(table_name) || ' DROP COLUMN ' || | |
quote_ident(column_name); | |
RETURN real_schema || '.' || table_name || '.' || column_name ||' effectively removed.'; | |
END; | |
$_$; | |
ALTER FUNCTION public.dropgeometrycolumn(character varying, character varying, character varying, character varying) OWNER TO postgres; | |
-- | |
-- TOC entry 143 (class 1255 OID 18496) | |
-- Dependencies: 6 | |
-- Name: dropgeometrytable(character varying); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION dropgeometrytable(character varying) RETURNS text | |
LANGUAGE sql STRICT | |
AS $_$ SELECT DropGeometryTable('','',$1) $_$; | |
ALTER FUNCTION public.dropgeometrytable(character varying) OWNER TO postgres; | |
-- | |
-- TOC entry 142 (class 1255 OID 18495) | |
-- Dependencies: 6 | |
-- Name: dropgeometrytable(character varying, character varying); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION dropgeometrytable(character varying, character varying) RETURNS text | |
LANGUAGE sql STRICT | |
AS $_$ SELECT DropGeometryTable('',$1,$2) $_$; | |
ALTER FUNCTION public.dropgeometrytable(character varying, character varying) OWNER TO postgres; | |
-- | |
-- TOC entry 141 (class 1255 OID 18494) | |
-- Dependencies: 6 1168 | |
-- Name: dropgeometrytable(character varying, character varying, character varying); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION dropgeometrytable(character varying, character varying, character varying) RETURNS text | |
LANGUAGE plpgsql STRICT | |
AS $_$ | |
DECLARE | |
catalog_name alias for $1; | |
schema_name alias for $2; | |
table_name alias for $3; | |
real_schema name; | |
BEGIN | |
IF ( schema_name = '' ) THEN | |
SELECT current_schema() into real_schema; | |
ELSE | |
real_schema = schema_name; | |
END IF; | |
-- Remove refs from geometry_columns table | |
EXECUTE 'DELETE FROM geometry_columns WHERE ' || | |
'f_table_schema = ' || quote_literal(real_schema) || | |
' AND ' || | |
' f_table_name = ' || quote_literal(table_name); | |
-- Remove table | |
EXECUTE 'DROP TABLE ' | |
|| quote_ident(real_schema) || '.' || | |
quote_ident(table_name); | |
RETURN | |
real_schema || '.' || | |
table_name ||' dropped.'; | |
END; | |
$_$; | |
ALTER FUNCTION public.dropgeometrytable(character varying, character varying, character varying) OWNER TO postgres; | |
-- | |
-- TOC entry 144 (class 1255 OID 18497) | |
-- Dependencies: 6 1105 1102 | |
-- Name: dump(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION dump(geometry) RETURNS SETOF geometry_dump | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_dump'; | |
ALTER FUNCTION public.dump(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 145 (class 1255 OID 18498) | |
-- Dependencies: 6 1105 1102 | |
-- Name: dumprings(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION dumprings(geometry) RETURNS SETOF geometry_dump | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_dump_rings'; | |
ALTER FUNCTION public.dumprings(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 146 (class 1255 OID 18499) | |
-- Dependencies: 6 1168 | |
-- Name: enablelongtransactions(); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION enablelongtransactions() RETURNS text | |
LANGUAGE plpgsql | |
AS $$ | |
DECLARE | |
"query" text; | |
exists bool; | |
rec RECORD; | |
BEGIN | |
exists = 'f'; | |
FOR rec IN SELECT * FROM pg_class WHERE relname = 'authorization_table' | |
LOOP | |
exists = 't'; | |
END LOOP; | |
IF NOT exists | |
THEN | |
"query" = 'CREATE TABLE authorization_table ( | |
toid oid, -- table oid | |
rid text, -- row id | |
expires timestamp, | |
authid text | |
)'; | |
EXECUTE "query"; | |
END IF; | |
exists = 'f'; | |
FOR rec IN SELECT * FROM pg_class WHERE relname = 'authorized_tables' | |
LOOP | |
exists = 't'; | |
END LOOP; | |
IF NOT exists THEN | |
"query" = 'CREATE VIEW authorized_tables AS ' || | |
'SELECT ' || | |
'n.nspname as schema, ' || | |
'c.relname as table, trim(' || | |
quote_literal(chr(92) || '000') || | |
' from t.tgargs) as id_column ' || | |
'FROM pg_trigger t, pg_class c, pg_proc p ' || | |
', pg_namespace n ' || | |
'WHERE p.proname = ' || quote_literal('checkauthtrigger') || | |
' AND c.relnamespace = n.oid' || | |
' AND t.tgfoid = p.oid and t.tgrelid = c.oid'; | |
EXECUTE "query"; | |
END IF; | |
RETURN 'Long transactions support enabled'; | |
END; | |
$$; | |
ALTER FUNCTION public.enablelongtransactions() OWNER TO postgres; | |
-- | |
-- TOC entry 147 (class 1255 OID 18500) | |
-- Dependencies: 6 1102 1102 | |
-- Name: endpoint(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION endpoint(geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_endpoint_linestring'; | |
ALTER FUNCTION public.endpoint(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 148 (class 1255 OID 18501) | |
-- Dependencies: 6 1102 1102 | |
-- Name: envelope(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION envelope(geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_envelope'; | |
ALTER FUNCTION public.envelope(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 149 (class 1255 OID 18502) | |
-- Dependencies: 6 1102 1102 | |
-- Name: equals(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION equals(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'geomequals'; | |
ALTER FUNCTION public.equals(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 151 (class 1255 OID 18504) | |
-- Dependencies: 6 1087 | |
-- Name: estimated_extent(text, text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION estimated_extent(text, text) RETURNS box2d | |
LANGUAGE c IMMUTABLE STRICT SECURITY DEFINER | |
AS '$libdir/postgis-1.5', 'LWGEOM_estimated_extent'; | |
ALTER FUNCTION public.estimated_extent(text, text) OWNER TO postgres; | |
-- | |
-- TOC entry 150 (class 1255 OID 18503) | |
-- Dependencies: 6 1087 | |
-- Name: estimated_extent(text, text, text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION estimated_extent(text, text, text) RETURNS box2d | |
LANGUAGE c IMMUTABLE STRICT SECURITY DEFINER | |
AS '$libdir/postgis-1.5', 'LWGEOM_estimated_extent'; | |
ALTER FUNCTION public.estimated_extent(text, text, text) OWNER TO postgres; | |
-- | |
-- TOC entry 152 (class 1255 OID 18505) | |
-- Dependencies: 6 1090 1090 | |
-- Name: expand(box3d, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION expand(box3d, double precision) RETURNS box3d | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'BOX3D_expand'; | |
ALTER FUNCTION public.expand(box3d, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 153 (class 1255 OID 18506) | |
-- Dependencies: 6 1087 1087 | |
-- Name: expand(box2d, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION expand(box2d, double precision) RETURNS box2d | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'BOX2DFLOAT4_expand'; | |
ALTER FUNCTION public.expand(box2d, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 154 (class 1255 OID 18507) | |
-- Dependencies: 6 1102 1102 | |
-- Name: expand(geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION expand(geometry, double precision) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_expand'; | |
ALTER FUNCTION public.expand(geometry, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 155 (class 1255 OID 18508) | |
-- Dependencies: 6 1102 1102 | |
-- Name: exteriorring(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION exteriorring(geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_exteriorring_polygon'; | |
ALTER FUNCTION public.exteriorring(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 156 (class 1255 OID 18509) | |
-- Dependencies: 6 1096 | |
-- Name: factor(chip); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION factor(chip) RETURNS real | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'CHIP_getFactor'; | |
ALTER FUNCTION public.factor(chip) OWNER TO postgres; | |
-- | |
-- TOC entry 158 (class 1255 OID 18511) | |
-- Dependencies: 6 1168 1087 | |
-- Name: find_extent(text, text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION find_extent(text, text) RETURNS box2d | |
LANGUAGE plpgsql IMMUTABLE STRICT | |
AS $_$ | |
DECLARE | |
tablename alias for $1; | |
columnname alias for $2; | |
myrec RECORD; | |
BEGIN | |
FOR myrec IN EXECUTE 'SELECT extent("' || columnname || '") FROM "' || tablename || '"' LOOP | |
return myrec.extent; | |
END LOOP; | |
END; | |
$_$; | |
ALTER FUNCTION public.find_extent(text, text) OWNER TO postgres; | |
-- | |
-- TOC entry 157 (class 1255 OID 18510) | |
-- Dependencies: 6 1168 1087 | |
-- Name: find_extent(text, text, text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION find_extent(text, text, text) RETURNS box2d | |
LANGUAGE plpgsql IMMUTABLE STRICT | |
AS $_$ | |
DECLARE | |
schemaname alias for $1; | |
tablename alias for $2; | |
columnname alias for $3; | |
myrec RECORD; | |
BEGIN | |
FOR myrec IN EXECUTE 'SELECT extent("' || columnname || '") FROM "' || schemaname || '"."' || tablename || '"' LOOP | |
return myrec.extent; | |
END LOOP; | |
END; | |
$_$; | |
ALTER FUNCTION public.find_extent(text, text, text) OWNER TO postgres; | |
-- | |
-- TOC entry 159 (class 1255 OID 18512) | |
-- Dependencies: 6 1168 | |
-- Name: find_srid(character varying, character varying, character varying); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION find_srid(character varying, character varying, character varying) RETURNS integer | |
LANGUAGE plpgsql IMMUTABLE STRICT | |
AS $_$ | |
DECLARE | |
schem text; | |
tabl text; | |
sr int4; | |
BEGIN | |
IF $1 IS NULL THEN | |
RAISE EXCEPTION 'find_srid() - schema is NULL!'; | |
END IF; | |
IF $2 IS NULL THEN | |
RAISE EXCEPTION 'find_srid() - table name is NULL!'; | |
END IF; | |
IF $3 IS NULL THEN | |
RAISE EXCEPTION 'find_srid() - column name is NULL!'; | |
END IF; | |
schem = $1; | |
tabl = $2; | |
-- if the table contains a . and the schema is empty | |
-- split the table into a schema and a table | |
-- otherwise drop through to default behavior | |
IF ( schem = '' and tabl LIKE '%.%' ) THEN | |
schem = substr(tabl,1,strpos(tabl,'.')-1); | |
tabl = substr(tabl,length(schem)+2); | |
ELSE | |
schem = schem || '%'; | |
END IF; | |
select SRID into sr from geometry_columns where f_table_schema like schem and f_table_name = tabl and f_geometry_column = $3; | |
IF NOT FOUND THEN | |
RAISE EXCEPTION 'find_srid() - couldnt find the corresponding SRID - is the geometry registered in the GEOMETRY_COLUMNS table? Is there an uppercase/lowercase missmatch?'; | |
END IF; | |
return sr; | |
END; | |
$_$; | |
ALTER FUNCTION public.find_srid(character varying, character varying, character varying) OWNER TO postgres; | |
-- | |
-- TOC entry 160 (class 1255 OID 18513) | |
-- Dependencies: 6 1168 | |
-- Name: fix_geometry_columns(); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION fix_geometry_columns() RETURNS text | |
LANGUAGE plpgsql | |
AS $$ | |
DECLARE | |
mislinked record; | |
result text; | |
linked integer; | |
deleted integer; | |
foundschema integer; | |
BEGIN | |
-- Since 7.3 schema support has been added. | |
-- Previous postgis versions used to put the database name in | |
-- the schema column. This needs to be fixed, so we try to | |
-- set the correct schema for each geometry_colums record | |
-- looking at table, column, type and srid. | |
UPDATE geometry_columns SET f_table_schema = n.nspname | |
FROM pg_namespace n, pg_class c, pg_attribute a, | |
pg_constraint sridcheck, pg_constraint typecheck | |
WHERE ( f_table_schema is NULL | |
OR f_table_schema = '' | |
OR f_table_schema NOT IN ( | |
SELECT nspname::varchar | |
FROM pg_namespace nn, pg_class cc, pg_attribute aa | |
WHERE cc.relnamespace = nn.oid | |
AND cc.relname = f_table_name::name | |
AND aa.attrelid = cc.oid | |
AND aa.attname = f_geometry_column::name)) | |
AND f_table_name::name = c.relname | |
AND c.oid = a.attrelid | |
AND c.relnamespace = n.oid | |
AND f_geometry_column::name = a.attname | |
AND sridcheck.conrelid = c.oid | |
AND sridcheck.consrc LIKE '(srid(% = %)' | |
AND sridcheck.consrc ~ textcat(' = ', srid::text) | |
AND typecheck.conrelid = c.oid | |
AND typecheck.consrc LIKE | |
'((geometrytype(%) = ''%''::text) OR (% IS NULL))' | |
AND typecheck.consrc ~ textcat(' = ''', type::text) | |
AND NOT EXISTS ( | |
SELECT oid FROM geometry_columns gc | |
WHERE c.relname::varchar = gc.f_table_name | |
AND n.nspname::varchar = gc.f_table_schema | |
AND a.attname::varchar = gc.f_geometry_column | |
); | |
GET DIAGNOSTICS foundschema = ROW_COUNT; | |
-- no linkage to system table needed | |
return 'fixed:'||foundschema::text; | |
END; | |
$$; | |
ALTER FUNCTION public.fix_geometry_columns() OWNER TO postgres; | |
-- | |
-- TOC entry 161 (class 1255 OID 18514) | |
-- Dependencies: 6 1102 1102 | |
-- Name: force_2d(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION force_2d(geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_force_2d'; | |
ALTER FUNCTION public.force_2d(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 162 (class 1255 OID 18515) | |
-- Dependencies: 6 1102 1102 | |
-- Name: force_3d(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION force_3d(geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_force_3dz'; | |
ALTER FUNCTION public.force_3d(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 163 (class 1255 OID 18516) | |
-- Dependencies: 6 1102 1102 | |
-- Name: force_3dm(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION force_3dm(geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_force_3dm'; | |
ALTER FUNCTION public.force_3dm(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 164 (class 1255 OID 18517) | |
-- Dependencies: 6 1102 1102 | |
-- Name: force_3dz(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION force_3dz(geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_force_3dz'; | |
ALTER FUNCTION public.force_3dz(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 165 (class 1255 OID 18518) | |
-- Dependencies: 6 1102 1102 | |
-- Name: force_4d(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION force_4d(geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_force_4d'; | |
ALTER FUNCTION public.force_4d(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 166 (class 1255 OID 18519) | |
-- Dependencies: 6 1102 1102 | |
-- Name: force_collection(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION force_collection(geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_force_collection'; | |
ALTER FUNCTION public.force_collection(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 167 (class 1255 OID 18520) | |
-- Dependencies: 6 1102 1102 | |
-- Name: forcerhr(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION forcerhr(geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_forceRHR_poly'; | |
ALTER FUNCTION public.forcerhr(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 169 (class 1255 OID 18522) | |
-- Dependencies: 6 1099 1102 | |
-- Name: geography(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geography(geometry) RETURNS geography | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'geography_from_geometry'; | |
ALTER FUNCTION public.geography(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 168 (class 1255 OID 18521) | |
-- Dependencies: 6 1099 1099 | |
-- Name: geography(geography, integer, boolean); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geography(geography, integer, boolean) RETURNS geography | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'geography_enforce_typmod'; | |
ALTER FUNCTION public.geography(geography, integer, boolean) OWNER TO postgres; | |
-- | |
-- TOC entry 170 (class 1255 OID 18523) | |
-- Dependencies: 6 1099 1099 | |
-- Name: geography_cmp(geography, geography); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geography_cmp(geography, geography) RETURNS integer | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'geography_cmp'; | |
ALTER FUNCTION public.geography_cmp(geography, geography) OWNER TO postgres; | |
-- | |
-- TOC entry 171 (class 1255 OID 18524) | |
-- Dependencies: 6 1099 1099 | |
-- Name: geography_eq(geography, geography); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geography_eq(geography, geography) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'geography_eq'; | |
ALTER FUNCTION public.geography_eq(geography, geography) OWNER TO postgres; | |
-- | |
-- TOC entry 172 (class 1255 OID 18525) | |
-- Dependencies: 6 1099 1099 | |
-- Name: geography_ge(geography, geography); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geography_ge(geography, geography) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'geography_ge'; | |
ALTER FUNCTION public.geography_ge(geography, geography) OWNER TO postgres; | |
-- | |
-- TOC entry 173 (class 1255 OID 18526) | |
-- Dependencies: 6 | |
-- Name: geography_gist_compress(internal); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geography_gist_compress(internal) RETURNS internal | |
LANGUAGE c | |
AS '$libdir/postgis-1.5', 'geography_gist_compress'; | |
ALTER FUNCTION public.geography_gist_compress(internal) OWNER TO postgres; | |
-- | |
-- TOC entry 174 (class 1255 OID 18527) | |
-- Dependencies: 6 1102 | |
-- Name: geography_gist_consistent(internal, geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geography_gist_consistent(internal, geometry, integer) RETURNS boolean | |
LANGUAGE c | |
AS '$libdir/postgis-1.5', 'geography_gist_consistent'; | |
ALTER FUNCTION public.geography_gist_consistent(internal, geometry, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 175 (class 1255 OID 18528) | |
-- Dependencies: 6 | |
-- Name: geography_gist_decompress(internal); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geography_gist_decompress(internal) RETURNS internal | |
LANGUAGE c | |
AS '$libdir/postgis-1.5', 'geography_gist_decompress'; | |
ALTER FUNCTION public.geography_gist_decompress(internal) OWNER TO postgres; | |
-- | |
-- TOC entry 176 (class 1255 OID 18529) | |
-- Dependencies: 6 | |
-- Name: geography_gist_join_selectivity(internal, oid, internal, smallint); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geography_gist_join_selectivity(internal, oid, internal, smallint) RETURNS double precision | |
LANGUAGE c | |
AS '$libdir/postgis-1.5', 'geography_gist_join_selectivity'; | |
ALTER FUNCTION public.geography_gist_join_selectivity(internal, oid, internal, smallint) OWNER TO postgres; | |
-- | |
-- TOC entry 177 (class 1255 OID 18530) | |
-- Dependencies: 6 | |
-- Name: geography_gist_penalty(internal, internal, internal); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geography_gist_penalty(internal, internal, internal) RETURNS internal | |
LANGUAGE c | |
AS '$libdir/postgis-1.5', 'geography_gist_penalty'; | |
ALTER FUNCTION public.geography_gist_penalty(internal, internal, internal) OWNER TO postgres; | |
-- | |
-- TOC entry 178 (class 1255 OID 18531) | |
-- Dependencies: 6 | |
-- Name: geography_gist_picksplit(internal, internal); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geography_gist_picksplit(internal, internal) RETURNS internal | |
LANGUAGE c | |
AS '$libdir/postgis-1.5', 'geography_gist_picksplit'; | |
ALTER FUNCTION public.geography_gist_picksplit(internal, internal) OWNER TO postgres; | |
-- | |
-- TOC entry 179 (class 1255 OID 18532) | |
-- Dependencies: 6 1087 1087 | |
-- Name: geography_gist_same(box2d, box2d, internal); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geography_gist_same(box2d, box2d, internal) RETURNS internal | |
LANGUAGE c | |
AS '$libdir/postgis-1.5', 'geography_gist_same'; | |
ALTER FUNCTION public.geography_gist_same(box2d, box2d, internal) OWNER TO postgres; | |
-- | |
-- TOC entry 180 (class 1255 OID 18533) | |
-- Dependencies: 6 | |
-- Name: geography_gist_selectivity(internal, oid, internal, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geography_gist_selectivity(internal, oid, internal, integer) RETURNS double precision | |
LANGUAGE c | |
AS '$libdir/postgis-1.5', 'geography_gist_selectivity'; | |
ALTER FUNCTION public.geography_gist_selectivity(internal, oid, internal, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 181 (class 1255 OID 18534) | |
-- Dependencies: 6 | |
-- Name: geography_gist_union(bytea, internal); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geography_gist_union(bytea, internal) RETURNS internal | |
LANGUAGE c | |
AS '$libdir/postgis-1.5', 'geography_gist_union'; | |
ALTER FUNCTION public.geography_gist_union(bytea, internal) OWNER TO postgres; | |
-- | |
-- TOC entry 182 (class 1255 OID 18535) | |
-- Dependencies: 6 1099 1099 | |
-- Name: geography_gt(geography, geography); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geography_gt(geography, geography) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'geography_gt'; | |
ALTER FUNCTION public.geography_gt(geography, geography) OWNER TO postgres; | |
-- | |
-- TOC entry 183 (class 1255 OID 18536) | |
-- Dependencies: 6 1099 1099 | |
-- Name: geography_le(geography, geography); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geography_le(geography, geography) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'geography_le'; | |
ALTER FUNCTION public.geography_le(geography, geography) OWNER TO postgres; | |
-- | |
-- TOC entry 184 (class 1255 OID 18537) | |
-- Dependencies: 6 1099 1099 | |
-- Name: geography_lt(geography, geography); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geography_lt(geography, geography) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'geography_lt'; | |
ALTER FUNCTION public.geography_lt(geography, geography) OWNER TO postgres; | |
-- | |
-- TOC entry 185 (class 1255 OID 18538) | |
-- Dependencies: 6 1099 1099 | |
-- Name: geography_overlaps(geography, geography); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geography_overlaps(geography, geography) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'geography_overlaps'; | |
ALTER FUNCTION public.geography_overlaps(geography, geography) OWNER TO postgres; | |
-- | |
-- TOC entry 186 (class 1255 OID 18539) | |
-- Dependencies: 6 | |
-- Name: geography_typmod_dims(integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geography_typmod_dims(integer) RETURNS integer | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'geography_typmod_dims'; | |
ALTER FUNCTION public.geography_typmod_dims(integer) OWNER TO postgres; | |
-- | |
-- TOC entry 187 (class 1255 OID 18540) | |
-- Dependencies: 6 | |
-- Name: geography_typmod_srid(integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geography_typmod_srid(integer) RETURNS integer | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'geography_typmod_srid'; | |
ALTER FUNCTION public.geography_typmod_srid(integer) OWNER TO postgres; | |
-- | |
-- TOC entry 188 (class 1255 OID 18541) | |
-- Dependencies: 6 | |
-- Name: geography_typmod_type(integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geography_typmod_type(integer) RETURNS text | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'geography_typmod_type'; | |
ALTER FUNCTION public.geography_typmod_type(integer) OWNER TO postgres; | |
-- | |
-- TOC entry 190 (class 1255 OID 18543) | |
-- Dependencies: 6 1102 | |
-- Name: geomcollfromtext(text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geomcollfromtext(text) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE | |
WHEN geometrytype(GeomFromText($1)) = 'GEOMETRYCOLLECTION' | |
THEN GeomFromText($1) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.geomcollfromtext(text) OWNER TO postgres; | |
-- | |
-- TOC entry 189 (class 1255 OID 18542) | |
-- Dependencies: 6 1102 | |
-- Name: geomcollfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geomcollfromtext(text, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE | |
WHEN geometrytype(GeomFromText($1, $2)) = 'GEOMETRYCOLLECTION' | |
THEN GeomFromText($1,$2) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.geomcollfromtext(text, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 192 (class 1255 OID 18545) | |
-- Dependencies: 6 1102 | |
-- Name: geomcollfromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geomcollfromwkb(bytea) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE | |
WHEN geometrytype(GeomFromWKB($1)) = 'GEOMETRYCOLLECTION' | |
THEN GeomFromWKB($1) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.geomcollfromwkb(bytea) OWNER TO postgres; | |
-- | |
-- TOC entry 191 (class 1255 OID 18544) | |
-- Dependencies: 6 1102 | |
-- Name: geomcollfromwkb(bytea, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geomcollfromwkb(bytea, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE | |
WHEN geometrytype(GeomFromWKB($1, $2)) = 'GEOMETRYCOLLECTION' | |
THEN GeomFromWKB($1, $2) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.geomcollfromwkb(bytea, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 193 (class 1255 OID 18546) | |
-- Dependencies: 6 1102 1093 | |
-- Name: geometry(box3d_extent); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geometry(box3d_extent) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'BOX3D_to_LWGEOM'; | |
ALTER FUNCTION public.geometry(box3d_extent) OWNER TO postgres; | |
-- | |
-- TOC entry 194 (class 1255 OID 18547) | |
-- Dependencies: 6 1102 1087 | |
-- Name: geometry(box2d); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geometry(box2d) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'BOX2DFLOAT4_to_LWGEOM'; | |
ALTER FUNCTION public.geometry(box2d) OWNER TO postgres; | |
-- | |
-- TOC entry 195 (class 1255 OID 18548) | |
-- Dependencies: 6 1102 1090 | |
-- Name: geometry(box3d); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geometry(box3d) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'BOX3D_to_LWGEOM'; | |
ALTER FUNCTION public.geometry(box3d) OWNER TO postgres; | |
-- | |
-- TOC entry 196 (class 1255 OID 18549) | |
-- Dependencies: 6 1102 | |
-- Name: geometry(text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geometry(text) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'parse_WKT_lwgeom'; | |
ALTER FUNCTION public.geometry(text) OWNER TO postgres; | |
-- | |
-- TOC entry 197 (class 1255 OID 18550) | |
-- Dependencies: 6 1102 1096 | |
-- Name: geometry(chip); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geometry(chip) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'CHIP_to_LWGEOM'; | |
ALTER FUNCTION public.geometry(chip) OWNER TO postgres; | |
-- | |
-- TOC entry 198 (class 1255 OID 18551) | |
-- Dependencies: 6 1102 | |
-- Name: geometry(bytea); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geometry(bytea) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_from_bytea'; | |
ALTER FUNCTION public.geometry(bytea) OWNER TO postgres; | |
-- | |
-- TOC entry 199 (class 1255 OID 18552) | |
-- Dependencies: 6 1102 1099 | |
-- Name: geometry(geography); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geometry(geography) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'geometry_from_geography'; | |
ALTER FUNCTION public.geometry(geography) OWNER TO postgres; | |
-- | |
-- TOC entry 200 (class 1255 OID 18553) | |
-- Dependencies: 6 1102 1102 | |
-- Name: geometry_above(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geometry_above(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_above'; | |
ALTER FUNCTION public.geometry_above(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 201 (class 1255 OID 18554) | |
-- Dependencies: 6 1102 1102 | |
-- Name: geometry_below(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geometry_below(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_below'; | |
ALTER FUNCTION public.geometry_below(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 202 (class 1255 OID 18555) | |
-- Dependencies: 6 1102 1102 | |
-- Name: geometry_cmp(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geometry_cmp(geometry, geometry) RETURNS integer | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'lwgeom_cmp'; | |
ALTER FUNCTION public.geometry_cmp(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 203 (class 1255 OID 18556) | |
-- Dependencies: 6 1102 1102 | |
-- Name: geometry_contain(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geometry_contain(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_contain'; | |
ALTER FUNCTION public.geometry_contain(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 204 (class 1255 OID 18557) | |
-- Dependencies: 6 1102 1102 | |
-- Name: geometry_contained(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geometry_contained(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_contained'; | |
ALTER FUNCTION public.geometry_contained(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 205 (class 1255 OID 18558) | |
-- Dependencies: 6 1102 1102 | |
-- Name: geometry_eq(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geometry_eq(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'lwgeom_eq'; | |
ALTER FUNCTION public.geometry_eq(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 206 (class 1255 OID 18559) | |
-- Dependencies: 6 1102 1102 | |
-- Name: geometry_ge(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geometry_ge(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'lwgeom_ge'; | |
ALTER FUNCTION public.geometry_ge(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 207 (class 1255 OID 18560) | |
-- Dependencies: 6 | |
-- Name: geometry_gist_joinsel(internal, oid, internal, smallint); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geometry_gist_joinsel(internal, oid, internal, smallint) RETURNS double precision | |
LANGUAGE c | |
AS '$libdir/postgis-1.5', 'LWGEOM_gist_joinsel'; | |
ALTER FUNCTION public.geometry_gist_joinsel(internal, oid, internal, smallint) OWNER TO postgres; | |
-- | |
-- TOC entry 208 (class 1255 OID 18561) | |
-- Dependencies: 6 | |
-- Name: geometry_gist_sel(internal, oid, internal, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geometry_gist_sel(internal, oid, internal, integer) RETURNS double precision | |
LANGUAGE c | |
AS '$libdir/postgis-1.5', 'LWGEOM_gist_sel'; | |
ALTER FUNCTION public.geometry_gist_sel(internal, oid, internal, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 209 (class 1255 OID 18562) | |
-- Dependencies: 1102 6 1102 | |
-- Name: geometry_gt(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geometry_gt(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'lwgeom_gt'; | |
ALTER FUNCTION public.geometry_gt(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 210 (class 1255 OID 18563) | |
-- Dependencies: 1102 6 1102 | |
-- Name: geometry_le(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geometry_le(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'lwgeom_le'; | |
ALTER FUNCTION public.geometry_le(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 211 (class 1255 OID 18564) | |
-- Dependencies: 1102 6 1102 | |
-- Name: geometry_left(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geometry_left(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_left'; | |
ALTER FUNCTION public.geometry_left(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 212 (class 1255 OID 18565) | |
-- Dependencies: 1102 6 1102 | |
-- Name: geometry_lt(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geometry_lt(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'lwgeom_lt'; | |
ALTER FUNCTION public.geometry_lt(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 213 (class 1255 OID 18566) | |
-- Dependencies: 1102 6 1102 | |
-- Name: geometry_overabove(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geometry_overabove(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_overabove'; | |
ALTER FUNCTION public.geometry_overabove(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 214 (class 1255 OID 18567) | |
-- Dependencies: 1102 6 1102 | |
-- Name: geometry_overbelow(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geometry_overbelow(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_overbelow'; | |
ALTER FUNCTION public.geometry_overbelow(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 215 (class 1255 OID 18568) | |
-- Dependencies: 1102 6 1102 | |
-- Name: geometry_overlap(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geometry_overlap(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_overlap'; | |
ALTER FUNCTION public.geometry_overlap(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 216 (class 1255 OID 18569) | |
-- Dependencies: 1102 6 1102 | |
-- Name: geometry_overleft(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geometry_overleft(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_overleft'; | |
ALTER FUNCTION public.geometry_overleft(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 217 (class 1255 OID 18570) | |
-- Dependencies: 1102 6 1102 | |
-- Name: geometry_overright(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geometry_overright(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_overright'; | |
ALTER FUNCTION public.geometry_overright(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 218 (class 1255 OID 18571) | |
-- Dependencies: 1102 6 1102 | |
-- Name: geometry_right(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geometry_right(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_right'; | |
ALTER FUNCTION public.geometry_right(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 219 (class 1255 OID 18572) | |
-- Dependencies: 1102 6 1102 | |
-- Name: geometry_same(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geometry_same(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_samebox'; | |
ALTER FUNCTION public.geometry_same(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 220 (class 1255 OID 18573) | |
-- Dependencies: 1102 6 1102 | |
-- Name: geometry_samebox(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geometry_samebox(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_samebox'; | |
ALTER FUNCTION public.geometry_samebox(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 221 (class 1255 OID 18574) | |
-- Dependencies: 6 1102 | |
-- Name: geometryfromtext(text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geometryfromtext(text) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_from_text'; | |
ALTER FUNCTION public.geometryfromtext(text) OWNER TO postgres; | |
-- | |
-- TOC entry 222 (class 1255 OID 18575) | |
-- Dependencies: 1102 6 | |
-- Name: geometryfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geometryfromtext(text, integer) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_from_text'; | |
ALTER FUNCTION public.geometryfromtext(text, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 223 (class 1255 OID 18576) | |
-- Dependencies: 6 1102 1102 | |
-- Name: geometryn(geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geometryn(geometry, integer) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_geometryn_collection'; | |
ALTER FUNCTION public.geometryn(geometry, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 224 (class 1255 OID 18577) | |
-- Dependencies: 1102 6 | |
-- Name: geometrytype(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geometrytype(geometry) RETURNS text | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_getTYPE'; | |
ALTER FUNCTION public.geometrytype(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 225 (class 1255 OID 18578) | |
-- Dependencies: 6 1102 | |
-- Name: geomfromewkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geomfromewkb(bytea) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOMFromWKB'; | |
ALTER FUNCTION public.geomfromewkb(bytea) OWNER TO postgres; | |
-- | |
-- TOC entry 226 (class 1255 OID 18579) | |
-- Dependencies: 6 1102 | |
-- Name: geomfromewkt(text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geomfromewkt(text) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'parse_WKT_lwgeom'; | |
ALTER FUNCTION public.geomfromewkt(text) OWNER TO postgres; | |
-- | |
-- TOC entry 227 (class 1255 OID 18580) | |
-- Dependencies: 6 1102 | |
-- Name: geomfromtext(text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geomfromtext(text) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT geometryfromtext($1)$_$; | |
ALTER FUNCTION public.geomfromtext(text) OWNER TO postgres; | |
-- | |
-- TOC entry 228 (class 1255 OID 18581) | |
-- Dependencies: 6 1102 | |
-- Name: geomfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geomfromtext(text, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT geometryfromtext($1, $2)$_$; | |
ALTER FUNCTION public.geomfromtext(text, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 229 (class 1255 OID 18582) | |
-- Dependencies: 6 1102 | |
-- Name: geomfromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geomfromwkb(bytea) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_from_WKB'; | |
ALTER FUNCTION public.geomfromwkb(bytea) OWNER TO postgres; | |
-- | |
-- TOC entry 230 (class 1255 OID 18583) | |
-- Dependencies: 6 1102 | |
-- Name: geomfromwkb(bytea, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geomfromwkb(bytea, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT setSRID(GeomFromWKB($1), $2)$_$; | |
ALTER FUNCTION public.geomfromwkb(bytea, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 231 (class 1255 OID 18584) | |
-- Dependencies: 1102 6 1102 1102 | |
-- Name: geomunion(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION geomunion(geometry, geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'geomunion'; | |
ALTER FUNCTION public.geomunion(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 232 (class 1255 OID 18585) | |
-- Dependencies: 6 1168 | |
-- Name: get_proj4_from_srid(integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION get_proj4_from_srid(integer) RETURNS text | |
LANGUAGE plpgsql IMMUTABLE STRICT | |
AS $_$ | |
BEGIN | |
RETURN proj4text::text FROM spatial_ref_sys WHERE srid= $1; | |
END; | |
$_$; | |
ALTER FUNCTION public.get_proj4_from_srid(integer) OWNER TO postgres; | |
-- | |
-- TOC entry 233 (class 1255 OID 18586) | |
-- Dependencies: 1087 6 1102 | |
-- Name: getbbox(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION getbbox(geometry) RETURNS box2d | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_to_BOX2DFLOAT4'; | |
ALTER FUNCTION public.getbbox(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 234 (class 1255 OID 18587) | |
-- Dependencies: 1102 6 | |
-- Name: getsrid(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION getsrid(geometry) RETURNS integer | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_getSRID'; | |
ALTER FUNCTION public.getsrid(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 235 (class 1255 OID 18588) | |
-- Dependencies: 6 | |
-- Name: gettransactionid(); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION gettransactionid() RETURNS xid | |
LANGUAGE c | |
AS '$libdir/postgis-1.5', 'getTransactionID'; | |
ALTER FUNCTION public.gettransactionid() OWNER TO postgres; | |
-- | |
-- TOC entry 236 (class 1255 OID 18589) | |
-- Dependencies: 1102 6 | |
-- Name: hasbbox(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION hasbbox(geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_hasBBOX'; | |
ALTER FUNCTION public.hasbbox(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 237 (class 1255 OID 18590) | |
-- Dependencies: 6 1096 | |
-- Name: height(chip); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION height(chip) RETURNS integer | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'CHIP_getHeight'; | |
ALTER FUNCTION public.height(chip) OWNER TO postgres; | |
-- | |
-- TOC entry 238 (class 1255 OID 18591) | |
-- Dependencies: 1102 1102 6 | |
-- Name: interiorringn(geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION interiorringn(geometry, integer) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_interiorringn_polygon'; | |
ALTER FUNCTION public.interiorringn(geometry, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 239 (class 1255 OID 18592) | |
-- Dependencies: 1102 6 1102 1102 | |
-- Name: intersection(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION intersection(geometry, geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'intersection'; | |
ALTER FUNCTION public.intersection(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 240 (class 1255 OID 18593) | |
-- Dependencies: 1102 6 1102 | |
-- Name: intersects(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION intersects(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'intersects'; | |
ALTER FUNCTION public.intersects(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 241 (class 1255 OID 18594) | |
-- Dependencies: 6 1102 | |
-- Name: isclosed(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION isclosed(geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_isclosed_linestring'; | |
ALTER FUNCTION public.isclosed(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 242 (class 1255 OID 18595) | |
-- Dependencies: 6 1102 | |
-- Name: isempty(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION isempty(geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_isempty'; | |
ALTER FUNCTION public.isempty(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 243 (class 1255 OID 18596) | |
-- Dependencies: 1102 6 | |
-- Name: isring(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION isring(geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'isring'; | |
ALTER FUNCTION public.isring(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 244 (class 1255 OID 18597) | |
-- Dependencies: 6 1102 | |
-- Name: issimple(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION issimple(geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'issimple'; | |
ALTER FUNCTION public.issimple(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 245 (class 1255 OID 18598) | |
-- Dependencies: 6 1102 | |
-- Name: isvalid(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION isvalid(geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT COST 100 | |
AS '$libdir/postgis-1.5', 'isvalid'; | |
ALTER FUNCTION public.isvalid(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 246 (class 1255 OID 18599) | |
-- Dependencies: 1102 6 | |
-- Name: length(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION length(geometry) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_length_linestring'; | |
ALTER FUNCTION public.length(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 247 (class 1255 OID 18600) | |
-- Dependencies: 6 1102 | |
-- Name: length2d(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION length2d(geometry) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_length2d_linestring'; | |
ALTER FUNCTION public.length2d(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 248 (class 1255 OID 18601) | |
-- Dependencies: 1102 6 1113 | |
-- Name: length2d_spheroid(geometry, spheroid); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION length2d_spheroid(geometry, spheroid) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT COST 100 | |
AS '$libdir/postgis-1.5', 'LWGEOM_length2d_ellipsoid'; | |
ALTER FUNCTION public.length2d_spheroid(geometry, spheroid) OWNER TO postgres; | |
-- | |
-- TOC entry 249 (class 1255 OID 18602) | |
-- Dependencies: 1102 6 | |
-- Name: length3d(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION length3d(geometry) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_length_linestring'; | |
ALTER FUNCTION public.length3d(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 250 (class 1255 OID 18603) | |
-- Dependencies: 6 1102 1113 | |
-- Name: length3d_spheroid(geometry, spheroid); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION length3d_spheroid(geometry, spheroid) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_length_ellipsoid_linestring'; | |
ALTER FUNCTION public.length3d_spheroid(geometry, spheroid) OWNER TO postgres; | |
-- | |
-- TOC entry 251 (class 1255 OID 18604) | |
-- Dependencies: 1113 6 1102 | |
-- Name: length_spheroid(geometry, spheroid); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION length_spheroid(geometry, spheroid) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT COST 100 | |
AS '$libdir/postgis-1.5', 'LWGEOM_length_ellipsoid_linestring'; | |
ALTER FUNCTION public.length_spheroid(geometry, spheroid) OWNER TO postgres; | |
-- | |
-- TOC entry 252 (class 1255 OID 18605) | |
-- Dependencies: 6 1102 1102 | |
-- Name: line_interpolate_point(geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION line_interpolate_point(geometry, double precision) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_line_interpolate_point'; | |
ALTER FUNCTION public.line_interpolate_point(geometry, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 253 (class 1255 OID 18606) | |
-- Dependencies: 6 1102 1102 | |
-- Name: line_locate_point(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION line_locate_point(geometry, geometry) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_line_locate_point'; | |
ALTER FUNCTION public.line_locate_point(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 254 (class 1255 OID 18607) | |
-- Dependencies: 6 1102 1102 | |
-- Name: line_substring(geometry, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION line_substring(geometry, double precision, double precision) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_line_substring'; | |
ALTER FUNCTION public.line_substring(geometry, double precision, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 255 (class 1255 OID 18608) | |
-- Dependencies: 6 1102 1102 | |
-- Name: linefrommultipoint(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION linefrommultipoint(geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_line_from_mpoint'; | |
ALTER FUNCTION public.linefrommultipoint(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 256 (class 1255 OID 18609) | |
-- Dependencies: 6 1102 | |
-- Name: linefromtext(text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION linefromtext(text) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(GeomFromText($1)) = 'LINESTRING' | |
THEN GeomFromText($1) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.linefromtext(text) OWNER TO postgres; | |
-- | |
-- TOC entry 257 (class 1255 OID 18610) | |
-- Dependencies: 6 1102 | |
-- Name: linefromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION linefromtext(text, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(GeomFromText($1, $2)) = 'LINESTRING' | |
THEN GeomFromText($1,$2) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.linefromtext(text, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 259 (class 1255 OID 18612) | |
-- Dependencies: 6 1102 | |
-- Name: linefromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION linefromwkb(bytea) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = 'LINESTRING' | |
THEN GeomFromWKB($1) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.linefromwkb(bytea) OWNER TO postgres; | |
-- | |
-- TOC entry 258 (class 1255 OID 18611) | |
-- Dependencies: 6 1102 | |
-- Name: linefromwkb(bytea, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION linefromwkb(bytea, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = 'LINESTRING' | |
THEN GeomFromWKB($1, $2) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.linefromwkb(bytea, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 260 (class 1255 OID 18613) | |
-- Dependencies: 6 1102 1102 | |
-- Name: linemerge(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION linemerge(geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT COST 100 | |
AS '$libdir/postgis-1.5', 'linemerge'; | |
ALTER FUNCTION public.linemerge(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 261 (class 1255 OID 18614) | |
-- Dependencies: 6 1102 | |
-- Name: linestringfromtext(text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION linestringfromtext(text) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT LineFromText($1)$_$; | |
ALTER FUNCTION public.linestringfromtext(text) OWNER TO postgres; | |
-- | |
-- TOC entry 262 (class 1255 OID 18615) | |
-- Dependencies: 6 1102 | |
-- Name: linestringfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION linestringfromtext(text, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT LineFromText($1, $2)$_$; | |
ALTER FUNCTION public.linestringfromtext(text, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 264 (class 1255 OID 18617) | |
-- Dependencies: 6 1102 | |
-- Name: linestringfromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION linestringfromwkb(bytea) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = 'LINESTRING' | |
THEN GeomFromWKB($1) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.linestringfromwkb(bytea) OWNER TO postgres; | |
-- | |
-- TOC entry 263 (class 1255 OID 18616) | |
-- Dependencies: 6 1102 | |
-- Name: linestringfromwkb(bytea, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION linestringfromwkb(bytea, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = 'LINESTRING' | |
THEN GeomFromWKB($1, $2) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.linestringfromwkb(bytea, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 265 (class 1255 OID 18618) | |
-- Dependencies: 6 1102 1102 | |
-- Name: locate_along_measure(geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION locate_along_measure(geometry, double precision) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ SELECT locate_between_measures($1, $2, $2) $_$; | |
ALTER FUNCTION public.locate_along_measure(geometry, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 266 (class 1255 OID 18619) | |
-- Dependencies: 1102 1102 6 | |
-- Name: locate_between_measures(geometry, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION locate_between_measures(geometry, double precision, double precision) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_locate_between_m'; | |
ALTER FUNCTION public.locate_between_measures(geometry, double precision, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 269 (class 1255 OID 18622) | |
-- Dependencies: 6 | |
-- Name: lockrow(text, text, text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION lockrow(text, text, text) RETURNS integer | |
LANGUAGE sql STRICT | |
AS $_$ SELECT LockRow(current_schema(), $1, $2, $3, now()::timestamp+'1:00'); $_$; | |
ALTER FUNCTION public.lockrow(text, text, text) OWNER TO postgres; | |
-- | |
-- TOC entry 268 (class 1255 OID 18621) | |
-- Dependencies: 6 | |
-- Name: lockrow(text, text, text, text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION lockrow(text, text, text, text) RETURNS integer | |
LANGUAGE sql STRICT | |
AS $_$ SELECT LockRow($1, $2, $3, $4, now()::timestamp+'1:00'); $_$; | |
ALTER FUNCTION public.lockrow(text, text, text, text) OWNER TO postgres; | |
-- | |
-- TOC entry 270 (class 1255 OID 18623) | |
-- Dependencies: 6 | |
-- Name: lockrow(text, text, text, timestamp without time zone); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION lockrow(text, text, text, timestamp without time zone) RETURNS integer | |
LANGUAGE sql STRICT | |
AS $_$ SELECT LockRow(current_schema(), $1, $2, $3, $4); $_$; | |
ALTER FUNCTION public.lockrow(text, text, text, timestamp without time zone) OWNER TO postgres; | |
-- | |
-- TOC entry 267 (class 1255 OID 18620) | |
-- Dependencies: 6 1168 | |
-- Name: lockrow(text, text, text, text, timestamp without time zone); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION lockrow(text, text, text, text, timestamp without time zone) RETURNS integer | |
LANGUAGE plpgsql STRICT | |
AS $_$ | |
DECLARE | |
myschema alias for $1; | |
mytable alias for $2; | |
myrid alias for $3; | |
authid alias for $4; | |
expires alias for $5; | |
ret int; | |
mytoid oid; | |
myrec RECORD; | |
BEGIN | |
IF NOT LongTransactionsEnabled() THEN | |
RAISE EXCEPTION 'Long transaction support disabled, use EnableLongTransaction() to enable.'; | |
END IF; | |
EXECUTE 'DELETE FROM authorization_table WHERE expires < now()'; | |
SELECT c.oid INTO mytoid FROM pg_class c, pg_namespace n | |
WHERE c.relname = mytable | |
AND c.relnamespace = n.oid | |
AND n.nspname = myschema; | |
-- RAISE NOTICE 'toid: %', mytoid; | |
FOR myrec IN SELECT * FROM authorization_table WHERE | |
toid = mytoid AND rid = myrid | |
LOOP | |
IF myrec.authid != authid THEN | |
RETURN 0; | |
ELSE | |
RETURN 1; | |
END IF; | |
END LOOP; | |
EXECUTE 'INSERT INTO authorization_table VALUES ('|| | |
quote_literal(mytoid::text)||','||quote_literal(myrid)|| | |
','||quote_literal(expires::text)|| | |
','||quote_literal(authid) ||')'; | |
GET DIAGNOSTICS ret = ROW_COUNT; | |
RETURN ret; | |
END; | |
$_$; | |
ALTER FUNCTION public.lockrow(text, text, text, text, timestamp without time zone) OWNER TO postgres; | |
-- | |
-- TOC entry 271 (class 1255 OID 18624) | |
-- Dependencies: 1168 6 | |
-- Name: longtransactionsenabled(); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION longtransactionsenabled() RETURNS boolean | |
LANGUAGE plpgsql | |
AS $$ | |
DECLARE | |
rec RECORD; | |
BEGIN | |
FOR rec IN SELECT oid FROM pg_class WHERE relname = 'authorized_tables' | |
LOOP | |
return 't'; | |
END LOOP; | |
return 'f'; | |
END; | |
$$; | |
ALTER FUNCTION public.longtransactionsenabled() OWNER TO postgres; | |
-- | |
-- TOC entry 272 (class 1255 OID 18625) | |
-- Dependencies: 6 | |
-- Name: lwgeom_gist_compress(internal); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION lwgeom_gist_compress(internal) RETURNS internal | |
LANGUAGE c | |
AS '$libdir/postgis-1.5', 'LWGEOM_gist_compress'; | |
ALTER FUNCTION public.lwgeom_gist_compress(internal) OWNER TO postgres; | |
-- | |
-- TOC entry 273 (class 1255 OID 18626) | |
-- Dependencies: 6 1102 | |
-- Name: lwgeom_gist_consistent(internal, geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION lwgeom_gist_consistent(internal, geometry, integer) RETURNS boolean | |
LANGUAGE c | |
AS '$libdir/postgis-1.5', 'LWGEOM_gist_consistent'; | |
ALTER FUNCTION public.lwgeom_gist_consistent(internal, geometry, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 274 (class 1255 OID 18627) | |
-- Dependencies: 6 | |
-- Name: lwgeom_gist_decompress(internal); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION lwgeom_gist_decompress(internal) RETURNS internal | |
LANGUAGE c | |
AS '$libdir/postgis-1.5', 'LWGEOM_gist_decompress'; | |
ALTER FUNCTION public.lwgeom_gist_decompress(internal) OWNER TO postgres; | |
-- | |
-- TOC entry 275 (class 1255 OID 18628) | |
-- Dependencies: 6 | |
-- Name: lwgeom_gist_penalty(internal, internal, internal); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION lwgeom_gist_penalty(internal, internal, internal) RETURNS internal | |
LANGUAGE c | |
AS '$libdir/postgis-1.5', 'LWGEOM_gist_penalty'; | |
ALTER FUNCTION public.lwgeom_gist_penalty(internal, internal, internal) OWNER TO postgres; | |
-- | |
-- TOC entry 276 (class 1255 OID 18629) | |
-- Dependencies: 6 | |
-- Name: lwgeom_gist_picksplit(internal, internal); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION lwgeom_gist_picksplit(internal, internal) RETURNS internal | |
LANGUAGE c | |
AS '$libdir/postgis-1.5', 'LWGEOM_gist_picksplit'; | |
ALTER FUNCTION public.lwgeom_gist_picksplit(internal, internal) OWNER TO postgres; | |
-- | |
-- TOC entry 277 (class 1255 OID 18630) | |
-- Dependencies: 6 1087 1087 | |
-- Name: lwgeom_gist_same(box2d, box2d, internal); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION lwgeom_gist_same(box2d, box2d, internal) RETURNS internal | |
LANGUAGE c | |
AS '$libdir/postgis-1.5', 'LWGEOM_gist_same'; | |
ALTER FUNCTION public.lwgeom_gist_same(box2d, box2d, internal) OWNER TO postgres; | |
-- | |
-- TOC entry 278 (class 1255 OID 18631) | |
-- Dependencies: 6 | |
-- Name: lwgeom_gist_union(bytea, internal); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION lwgeom_gist_union(bytea, internal) RETURNS internal | |
LANGUAGE c | |
AS '$libdir/postgis-1.5', 'LWGEOM_gist_union'; | |
ALTER FUNCTION public.lwgeom_gist_union(bytea, internal) OWNER TO postgres; | |
-- | |
-- TOC entry 279 (class 1255 OID 18632) | |
-- Dependencies: 6 1102 | |
-- Name: m(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION m(geometry) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_m_point'; | |
ALTER FUNCTION public.m(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 280 (class 1255 OID 18633) | |
-- Dependencies: 1102 6 1087 1102 | |
-- Name: makebox2d(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION makebox2d(geometry, geometry) RETURNS box2d | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'BOX2DFLOAT4_construct'; | |
ALTER FUNCTION public.makebox2d(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 281 (class 1255 OID 18634) | |
-- Dependencies: 1090 6 1102 1102 | |
-- Name: makebox3d(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION makebox3d(geometry, geometry) RETURNS box3d | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'BOX3D_construct'; | |
ALTER FUNCTION public.makebox3d(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 282 (class 1255 OID 18635) | |
-- Dependencies: 6 1102 1102 1102 | |
-- Name: makeline(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION makeline(geometry, geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_makeline'; | |
ALTER FUNCTION public.makeline(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 283 (class 1255 OID 18636) | |
-- Dependencies: 6 1102 1104 | |
-- Name: makeline_garray(geometry[]); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION makeline_garray(geometry[]) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_makeline_garray'; | |
ALTER FUNCTION public.makeline_garray(geometry[]) OWNER TO postgres; | |
-- | |
-- TOC entry 284 (class 1255 OID 18637) | |
-- Dependencies: 6 1102 | |
-- Name: makepoint(double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION makepoint(double precision, double precision) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_makepoint'; | |
ALTER FUNCTION public.makepoint(double precision, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 285 (class 1255 OID 18638) | |
-- Dependencies: 6 1102 | |
-- Name: makepoint(double precision, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION makepoint(double precision, double precision, double precision) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_makepoint'; | |
ALTER FUNCTION public.makepoint(double precision, double precision, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 286 (class 1255 OID 18639) | |
-- Dependencies: 6 1102 | |
-- Name: makepoint(double precision, double precision, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION makepoint(double precision, double precision, double precision, double precision) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_makepoint'; | |
ALTER FUNCTION public.makepoint(double precision, double precision, double precision, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 287 (class 1255 OID 18640) | |
-- Dependencies: 6 1102 | |
-- Name: makepointm(double precision, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION makepointm(double precision, double precision, double precision) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_makepoint3dm'; | |
ALTER FUNCTION public.makepointm(double precision, double precision, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 289 (class 1255 OID 18642) | |
-- Dependencies: 6 1102 1102 | |
-- Name: makepolygon(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION makepolygon(geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_makepoly'; | |
ALTER FUNCTION public.makepolygon(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 288 (class 1255 OID 18641) | |
-- Dependencies: 1104 6 1102 1102 | |
-- Name: makepolygon(geometry, geometry[]); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION makepolygon(geometry, geometry[]) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_makepoly'; | |
ALTER FUNCTION public.makepolygon(geometry, geometry[]) OWNER TO postgres; | |
-- | |
-- TOC entry 290 (class 1255 OID 18643) | |
-- Dependencies: 1102 1102 6 | |
-- Name: max_distance(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION max_distance(geometry, geometry) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_maxdistance2d_linestring'; | |
ALTER FUNCTION public.max_distance(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 291 (class 1255 OID 18644) | |
-- Dependencies: 6 1102 | |
-- Name: mem_size(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION mem_size(geometry) RETURNS integer | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_mem_size'; | |
ALTER FUNCTION public.mem_size(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 293 (class 1255 OID 18646) | |
-- Dependencies: 6 1102 | |
-- Name: mlinefromtext(text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION mlinefromtext(text) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(GeomFromText($1)) = 'MULTILINESTRING' | |
THEN GeomFromText($1) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.mlinefromtext(text) OWNER TO postgres; | |
-- | |
-- TOC entry 292 (class 1255 OID 18645) | |
-- Dependencies: 6 1102 | |
-- Name: mlinefromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION mlinefromtext(text, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE | |
WHEN geometrytype(GeomFromText($1, $2)) = 'MULTILINESTRING' | |
THEN GeomFromText($1,$2) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.mlinefromtext(text, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 295 (class 1255 OID 18648) | |
-- Dependencies: 6 1102 | |
-- Name: mlinefromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION mlinefromwkb(bytea) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = 'MULTILINESTRING' | |
THEN GeomFromWKB($1) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.mlinefromwkb(bytea) OWNER TO postgres; | |
-- | |
-- TOC entry 294 (class 1255 OID 18647) | |
-- Dependencies: 1102 6 | |
-- Name: mlinefromwkb(bytea, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION mlinefromwkb(bytea, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = 'MULTILINESTRING' | |
THEN GeomFromWKB($1, $2) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.mlinefromwkb(bytea, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 297 (class 1255 OID 18650) | |
-- Dependencies: 6 1102 | |
-- Name: mpointfromtext(text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION mpointfromtext(text) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(GeomFromText($1)) = 'MULTIPOINT' | |
THEN GeomFromText($1) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.mpointfromtext(text) OWNER TO postgres; | |
-- | |
-- TOC entry 296 (class 1255 OID 18649) | |
-- Dependencies: 6 1102 | |
-- Name: mpointfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION mpointfromtext(text, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(GeomFromText($1,$2)) = 'MULTIPOINT' | |
THEN GeomFromText($1,$2) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.mpointfromtext(text, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 299 (class 1255 OID 18652) | |
-- Dependencies: 6 1102 | |
-- Name: mpointfromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION mpointfromwkb(bytea) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = 'MULTIPOINT' | |
THEN GeomFromWKB($1) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.mpointfromwkb(bytea) OWNER TO postgres; | |
-- | |
-- TOC entry 298 (class 1255 OID 18651) | |
-- Dependencies: 6 1102 | |
-- Name: mpointfromwkb(bytea, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION mpointfromwkb(bytea, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(GeomFromWKB($1,$2)) = 'MULTIPOINT' | |
THEN GeomFromWKB($1, $2) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.mpointfromwkb(bytea, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 301 (class 1255 OID 18654) | |
-- Dependencies: 6 1102 | |
-- Name: mpolyfromtext(text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION mpolyfromtext(text) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(GeomFromText($1)) = 'MULTIPOLYGON' | |
THEN GeomFromText($1) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.mpolyfromtext(text) OWNER TO postgres; | |
-- | |
-- TOC entry 300 (class 1255 OID 18653) | |
-- Dependencies: 1102 6 | |
-- Name: mpolyfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION mpolyfromtext(text, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(GeomFromText($1, $2)) = 'MULTIPOLYGON' | |
THEN GeomFromText($1,$2) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.mpolyfromtext(text, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 303 (class 1255 OID 18656) | |
-- Dependencies: 1102 6 | |
-- Name: mpolyfromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION mpolyfromwkb(bytea) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = 'MULTIPOLYGON' | |
THEN GeomFromWKB($1) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.mpolyfromwkb(bytea) OWNER TO postgres; | |
-- | |
-- TOC entry 302 (class 1255 OID 18655) | |
-- Dependencies: 1102 6 | |
-- Name: mpolyfromwkb(bytea, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION mpolyfromwkb(bytea, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = 'MULTIPOLYGON' | |
THEN GeomFromWKB($1, $2) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.mpolyfromwkb(bytea, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 304 (class 1255 OID 18657) | |
-- Dependencies: 1102 6 1102 | |
-- Name: multi(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION multi(geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_force_multi'; | |
ALTER FUNCTION public.multi(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 306 (class 1255 OID 18659) | |
-- Dependencies: 1102 6 | |
-- Name: multilinefromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION multilinefromwkb(bytea) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = 'MULTILINESTRING' | |
THEN GeomFromWKB($1) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.multilinefromwkb(bytea) OWNER TO postgres; | |
-- | |
-- TOC entry 305 (class 1255 OID 18658) | |
-- Dependencies: 1102 6 | |
-- Name: multilinefromwkb(bytea, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION multilinefromwkb(bytea, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = 'MULTILINESTRING' | |
THEN GeomFromWKB($1, $2) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.multilinefromwkb(bytea, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 307 (class 1255 OID 18660) | |
-- Dependencies: 1102 6 | |
-- Name: multilinestringfromtext(text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION multilinestringfromtext(text) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT ST_MLineFromText($1)$_$; | |
ALTER FUNCTION public.multilinestringfromtext(text) OWNER TO postgres; | |
-- | |
-- TOC entry 308 (class 1255 OID 18661) | |
-- Dependencies: 1102 6 | |
-- Name: multilinestringfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION multilinestringfromtext(text, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT MLineFromText($1, $2)$_$; | |
ALTER FUNCTION public.multilinestringfromtext(text, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 310 (class 1255 OID 18663) | |
-- Dependencies: 1102 6 | |
-- Name: multipointfromtext(text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION multipointfromtext(text) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT MPointFromText($1)$_$; | |
ALTER FUNCTION public.multipointfromtext(text) OWNER TO postgres; | |
-- | |
-- TOC entry 309 (class 1255 OID 18662) | |
-- Dependencies: 1102 6 | |
-- Name: multipointfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION multipointfromtext(text, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT MPointFromText($1, $2)$_$; | |
ALTER FUNCTION public.multipointfromtext(text, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 312 (class 1255 OID 18665) | |
-- Dependencies: 1102 6 | |
-- Name: multipointfromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION multipointfromwkb(bytea) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = 'MULTIPOINT' | |
THEN GeomFromWKB($1) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.multipointfromwkb(bytea) OWNER TO postgres; | |
-- | |
-- TOC entry 311 (class 1255 OID 18664) | |
-- Dependencies: 6 1102 | |
-- Name: multipointfromwkb(bytea, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION multipointfromwkb(bytea, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(GeomFromWKB($1,$2)) = 'MULTIPOINT' | |
THEN GeomFromWKB($1, $2) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.multipointfromwkb(bytea, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 314 (class 1255 OID 18667) | |
-- Dependencies: 6 1102 | |
-- Name: multipolyfromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION multipolyfromwkb(bytea) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = 'MULTIPOLYGON' | |
THEN GeomFromWKB($1) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.multipolyfromwkb(bytea) OWNER TO postgres; | |
-- | |
-- TOC entry 313 (class 1255 OID 18666) | |
-- Dependencies: 6 1102 | |
-- Name: multipolyfromwkb(bytea, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION multipolyfromwkb(bytea, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = 'MULTIPOLYGON' | |
THEN GeomFromWKB($1, $2) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.multipolyfromwkb(bytea, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 316 (class 1255 OID 18669) | |
-- Dependencies: 1102 6 | |
-- Name: multipolygonfromtext(text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION multipolygonfromtext(text) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT MPolyFromText($1)$_$; | |
ALTER FUNCTION public.multipolygonfromtext(text) OWNER TO postgres; | |
-- | |
-- TOC entry 315 (class 1255 OID 18668) | |
-- Dependencies: 6 1102 | |
-- Name: multipolygonfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION multipolygonfromtext(text, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT MPolyFromText($1, $2)$_$; | |
ALTER FUNCTION public.multipolygonfromtext(text, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 317 (class 1255 OID 18670) | |
-- Dependencies: 6 1102 | |
-- Name: ndims(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION ndims(geometry) RETURNS smallint | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_ndims'; | |
ALTER FUNCTION public.ndims(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 318 (class 1255 OID 18671) | |
-- Dependencies: 6 1102 1102 | |
-- Name: noop(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION noop(geometry) RETURNS geometry | |
LANGUAGE c STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_noop'; | |
ALTER FUNCTION public.noop(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 319 (class 1255 OID 18672) | |
-- Dependencies: 6 1102 | |
-- Name: npoints(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION npoints(geometry) RETURNS integer | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_npoints'; | |
ALTER FUNCTION public.npoints(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 320 (class 1255 OID 18673) | |
-- Dependencies: 6 1102 | |
-- Name: nrings(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION nrings(geometry) RETURNS integer | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_nrings'; | |
ALTER FUNCTION public.nrings(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 321 (class 1255 OID 18674) | |
-- Dependencies: 6 1102 | |
-- Name: numgeometries(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION numgeometries(geometry) RETURNS integer | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_numgeometries_collection'; | |
ALTER FUNCTION public.numgeometries(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 322 (class 1255 OID 18675) | |
-- Dependencies: 6 1102 | |
-- Name: numinteriorring(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION numinteriorring(geometry) RETURNS integer | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_numinteriorrings_polygon'; | |
ALTER FUNCTION public.numinteriorring(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 323 (class 1255 OID 18676) | |
-- Dependencies: 6 1102 | |
-- Name: numinteriorrings(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION numinteriorrings(geometry) RETURNS integer | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_numinteriorrings_polygon'; | |
ALTER FUNCTION public.numinteriorrings(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 324 (class 1255 OID 18677) | |
-- Dependencies: 6 1102 | |
-- Name: numpoints(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION numpoints(geometry) RETURNS integer | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_numpoints_linestring'; | |
ALTER FUNCTION public.numpoints(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 325 (class 1255 OID 18678) | |
-- Dependencies: 6 1102 1102 | |
-- Name: overlaps(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION "overlaps"(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'overlaps'; | |
ALTER FUNCTION public."overlaps"(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 326 (class 1255 OID 18679) | |
-- Dependencies: 6 1102 | |
-- Name: perimeter(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION perimeter(geometry) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_perimeter_poly'; | |
ALTER FUNCTION public.perimeter(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 327 (class 1255 OID 18680) | |
-- Dependencies: 1102 6 | |
-- Name: perimeter2d(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION perimeter2d(geometry) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_perimeter2d_poly'; | |
ALTER FUNCTION public.perimeter2d(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 328 (class 1255 OID 18681) | |
-- Dependencies: 6 1102 | |
-- Name: perimeter3d(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION perimeter3d(geometry) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_perimeter_poly'; | |
ALTER FUNCTION public.perimeter3d(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 329 (class 1255 OID 18682) | |
-- Dependencies: 1104 6 1110 | |
-- Name: pgis_geometry_accum_finalfn(pgis_abs); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION pgis_geometry_accum_finalfn(pgis_abs) RETURNS geometry[] | |
LANGUAGE c | |
AS '$libdir/postgis-1.5', 'pgis_geometry_accum_finalfn'; | |
ALTER FUNCTION public.pgis_geometry_accum_finalfn(pgis_abs) OWNER TO postgres; | |
-- | |
-- TOC entry 330 (class 1255 OID 18683) | |
-- Dependencies: 1110 6 1110 1102 | |
-- Name: pgis_geometry_accum_transfn(pgis_abs, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION pgis_geometry_accum_transfn(pgis_abs, geometry) RETURNS pgis_abs | |
LANGUAGE c | |
AS '$libdir/postgis-1.5', 'pgis_geometry_accum_transfn'; | |
ALTER FUNCTION public.pgis_geometry_accum_transfn(pgis_abs, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 331 (class 1255 OID 18684) | |
-- Dependencies: 1102 6 1110 | |
-- Name: pgis_geometry_collect_finalfn(pgis_abs); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION pgis_geometry_collect_finalfn(pgis_abs) RETURNS geometry | |
LANGUAGE c | |
AS '$libdir/postgis-1.5', 'pgis_geometry_collect_finalfn'; | |
ALTER FUNCTION public.pgis_geometry_collect_finalfn(pgis_abs) OWNER TO postgres; | |
-- | |
-- TOC entry 332 (class 1255 OID 18685) | |
-- Dependencies: 1102 6 1110 | |
-- Name: pgis_geometry_makeline_finalfn(pgis_abs); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION pgis_geometry_makeline_finalfn(pgis_abs) RETURNS geometry | |
LANGUAGE c | |
AS '$libdir/postgis-1.5', 'pgis_geometry_makeline_finalfn'; | |
ALTER FUNCTION public.pgis_geometry_makeline_finalfn(pgis_abs) OWNER TO postgres; | |
-- | |
-- TOC entry 333 (class 1255 OID 18686) | |
-- Dependencies: 1110 6 1102 | |
-- Name: pgis_geometry_polygonize_finalfn(pgis_abs); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION pgis_geometry_polygonize_finalfn(pgis_abs) RETURNS geometry | |
LANGUAGE c | |
AS '$libdir/postgis-1.5', 'pgis_geometry_polygonize_finalfn'; | |
ALTER FUNCTION public.pgis_geometry_polygonize_finalfn(pgis_abs) OWNER TO postgres; | |
-- | |
-- TOC entry 334 (class 1255 OID 18687) | |
-- Dependencies: 1110 1102 6 | |
-- Name: pgis_geometry_union_finalfn(pgis_abs); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION pgis_geometry_union_finalfn(pgis_abs) RETURNS geometry | |
LANGUAGE c | |
AS '$libdir/postgis-1.5', 'pgis_geometry_union_finalfn'; | |
ALTER FUNCTION public.pgis_geometry_union_finalfn(pgis_abs) OWNER TO postgres; | |
-- | |
-- TOC entry 335 (class 1255 OID 18688) | |
-- Dependencies: 1102 6 | |
-- Name: point_inside_circle(geometry, double precision, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION point_inside_circle(geometry, double precision, double precision, double precision) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_inside_circle_point'; | |
ALTER FUNCTION public.point_inside_circle(geometry, double precision, double precision, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 336 (class 1255 OID 18689) | |
-- Dependencies: 6 1102 | |
-- Name: pointfromtext(text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION pointfromtext(text) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(GeomFromText($1)) = 'POINT' | |
THEN GeomFromText($1) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.pointfromtext(text) OWNER TO postgres; | |
-- | |
-- TOC entry 337 (class 1255 OID 18690) | |
-- Dependencies: 6 1102 | |
-- Name: pointfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION pointfromtext(text, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(GeomFromText($1, $2)) = 'POINT' | |
THEN GeomFromText($1,$2) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.pointfromtext(text, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 339 (class 1255 OID 18692) | |
-- Dependencies: 6 1102 | |
-- Name: pointfromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION pointfromwkb(bytea) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = 'POINT' | |
THEN GeomFromWKB($1) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.pointfromwkb(bytea) OWNER TO postgres; | |
-- | |
-- TOC entry 338 (class 1255 OID 18691) | |
-- Dependencies: 1102 6 | |
-- Name: pointfromwkb(bytea, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION pointfromwkb(bytea, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = 'POINT' | |
THEN GeomFromWKB($1, $2) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.pointfromwkb(bytea, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 340 (class 1255 OID 18693) | |
-- Dependencies: 6 1102 1102 | |
-- Name: pointn(geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION pointn(geometry, integer) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_pointn_linestring'; | |
ALTER FUNCTION public.pointn(geometry, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 341 (class 1255 OID 18694) | |
-- Dependencies: 6 1102 1102 | |
-- Name: pointonsurface(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION pointonsurface(geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'pointonsurface'; | |
ALTER FUNCTION public.pointonsurface(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 342 (class 1255 OID 18695) | |
-- Dependencies: 6 1102 | |
-- Name: polyfromtext(text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION polyfromtext(text) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(GeomFromText($1)) = 'POLYGON' | |
THEN GeomFromText($1) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.polyfromtext(text) OWNER TO postgres; | |
-- | |
-- TOC entry 343 (class 1255 OID 18696) | |
-- Dependencies: 6 1102 | |
-- Name: polyfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION polyfromtext(text, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(GeomFromText($1, $2)) = 'POLYGON' | |
THEN GeomFromText($1,$2) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.polyfromtext(text, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 345 (class 1255 OID 18698) | |
-- Dependencies: 6 1102 | |
-- Name: polyfromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION polyfromwkb(bytea) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = 'POLYGON' | |
THEN GeomFromWKB($1) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.polyfromwkb(bytea) OWNER TO postgres; | |
-- | |
-- TOC entry 344 (class 1255 OID 18697) | |
-- Dependencies: 1102 6 | |
-- Name: polyfromwkb(bytea, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION polyfromwkb(bytea, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = 'POLYGON' | |
THEN GeomFromWKB($1, $2) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.polyfromwkb(bytea, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 347 (class 1255 OID 18700) | |
-- Dependencies: 6 1102 | |
-- Name: polygonfromtext(text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION polygonfromtext(text) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT PolyFromText($1)$_$; | |
ALTER FUNCTION public.polygonfromtext(text) OWNER TO postgres; | |
-- | |
-- TOC entry 346 (class 1255 OID 18699) | |
-- Dependencies: 6 1102 | |
-- Name: polygonfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION polygonfromtext(text, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT PolyFromText($1, $2)$_$; | |
ALTER FUNCTION public.polygonfromtext(text, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 349 (class 1255 OID 18702) | |
-- Dependencies: 1102 6 | |
-- Name: polygonfromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION polygonfromwkb(bytea) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = 'POLYGON' | |
THEN GeomFromWKB($1) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.polygonfromwkb(bytea) OWNER TO postgres; | |
-- | |
-- TOC entry 348 (class 1255 OID 18701) | |
-- Dependencies: 6 1102 | |
-- Name: polygonfromwkb(bytea, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION polygonfromwkb(bytea, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(GeomFromWKB($1,$2)) = 'POLYGON' | |
THEN GeomFromWKB($1, $2) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.polygonfromwkb(bytea, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 350 (class 1255 OID 18703) | |
-- Dependencies: 6 1102 1104 | |
-- Name: polygonize_garray(geometry[]); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION polygonize_garray(geometry[]) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT COST 100 | |
AS '$libdir/postgis-1.5', 'polygonize_garray'; | |
ALTER FUNCTION public.polygonize_garray(geometry[]) OWNER TO postgres; | |
-- | |
-- TOC entry 351 (class 1255 OID 18704) | |
-- Dependencies: 6 1168 | |
-- Name: populate_geometry_columns(); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION populate_geometry_columns() RETURNS text | |
LANGUAGE plpgsql | |
AS $$ | |
DECLARE | |
inserted integer; | |
oldcount integer; | |
probed integer; | |
stale integer; | |
gcs RECORD; | |
gc RECORD; | |
gsrid integer; | |
gndims integer; | |
gtype text; | |
query text; | |
gc_is_valid boolean; | |
BEGIN | |
SELECT count(*) INTO oldcount FROM geometry_columns; | |
inserted := 0; | |
EXECUTE 'TRUNCATE geometry_columns'; | |
-- Count the number of geometry columns in all tables and views | |
SELECT count(DISTINCT c.oid) INTO probed | |
FROM pg_class c, | |
pg_attribute a, | |
pg_type t, | |
pg_namespace n | |
WHERE (c.relkind = 'r' OR c.relkind = 'v') | |
AND t.typname = 'geometry' | |
AND a.attisdropped = false | |
AND a.atttypid = t.oid | |
AND a.attrelid = c.oid | |
AND c.relnamespace = n.oid | |
AND n.nspname NOT ILIKE 'pg_temp%'; | |
-- Iterate through all non-dropped geometry columns | |
RAISE DEBUG 'Processing Tables.....'; | |
FOR gcs IN | |
SELECT DISTINCT ON (c.oid) c.oid, n.nspname, c.relname | |
FROM pg_class c, | |
pg_attribute a, | |
pg_type t, | |
pg_namespace n | |
WHERE c.relkind = 'r' | |
AND t.typname = 'geometry' | |
AND a.attisdropped = false | |
AND a.atttypid = t.oid | |
AND a.attrelid = c.oid | |
AND c.relnamespace = n.oid | |
AND n.nspname NOT ILIKE 'pg_temp%' | |
LOOP | |
inserted := inserted + populate_geometry_columns(gcs.oid); | |
END LOOP; | |
-- Add views to geometry columns table | |
RAISE DEBUG 'Processing Views.....'; | |
FOR gcs IN | |
SELECT DISTINCT ON (c.oid) c.oid, n.nspname, c.relname | |
FROM pg_class c, | |
pg_attribute a, | |
pg_type t, | |
pg_namespace n | |
WHERE c.relkind = 'v' | |
AND t.typname = 'geometry' | |
AND a.attisdropped = false | |
AND a.atttypid = t.oid | |
AND a.attrelid = c.oid | |
AND c.relnamespace = n.oid | |
LOOP | |
inserted := inserted + populate_geometry_columns(gcs.oid); | |
END LOOP; | |
IF oldcount > inserted THEN | |
stale = oldcount-inserted; | |
ELSE | |
stale = 0; | |
END IF; | |
RETURN 'probed:' ||probed|| ' inserted:'||inserted|| ' conflicts:'||probed-inserted|| ' deleted:'||stale; | |
END | |
$$; | |
ALTER FUNCTION public.populate_geometry_columns() OWNER TO postgres; | |
-- | |
-- TOC entry 352 (class 1255 OID 18705) | |
-- Dependencies: 6 1168 | |
-- Name: populate_geometry_columns(oid); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION populate_geometry_columns(tbl_oid oid) RETURNS integer | |
LANGUAGE plpgsql | |
AS $$ | |
DECLARE | |
gcs RECORD; | |
gc RECORD; | |
gsrid integer; | |
gndims integer; | |
gtype text; | |
query text; | |
gc_is_valid boolean; | |
inserted integer; | |
BEGIN | |
inserted := 0; | |
-- Iterate through all geometry columns in this table | |
FOR gcs IN | |
SELECT n.nspname, c.relname, a.attname | |
FROM pg_class c, | |
pg_attribute a, | |
pg_type t, | |
pg_namespace n | |
WHERE c.relkind = 'r' | |
AND t.typname = 'geometry' | |
AND a.attisdropped = false | |
AND a.atttypid = t.oid | |
AND a.attrelid = c.oid | |
AND c.relnamespace = n.oid | |
AND n.nspname NOT ILIKE 'pg_temp%' | |
AND c.oid = tbl_oid | |
LOOP | |
RAISE DEBUG 'Processing table %.%.%', gcs.nspname, gcs.relname, gcs.attname; | |
DELETE FROM geometry_columns | |
WHERE f_table_schema = quote_ident(gcs.nspname) | |
AND f_table_name = quote_ident(gcs.relname) | |
AND f_geometry_column = quote_ident(gcs.attname); | |
gc_is_valid := true; | |
-- Try to find srid check from system tables (pg_constraint) | |
gsrid := | |
(SELECT replace(replace(split_part(s.consrc, ' = ', 2), ')', ''), '(', '') | |
FROM pg_class c, pg_namespace n, pg_attribute a, pg_constraint s | |
WHERE n.nspname = gcs.nspname | |
AND c.relname = gcs.relname | |
AND a.attname = gcs.attname | |
AND a.attrelid = c.oid | |
AND s.connamespace = n.oid | |
AND s.conrelid = c.oid | |
AND a.attnum = ANY (s.conkey) | |
AND s.consrc LIKE '%srid(% = %'); | |
IF (gsrid IS NULL) THEN | |
-- Try to find srid from the geometry itself | |
EXECUTE 'SELECT srid(' || quote_ident(gcs.attname) || ') | |
FROM ONLY ' || quote_ident(gcs.nspname) || '.' || quote_ident(gcs.relname) || ' | |
WHERE ' || quote_ident(gcs.attname) || ' IS NOT NULL LIMIT 1' | |
INTO gc; | |
gsrid := gc.srid; | |
-- Try to apply srid check to column | |
IF (gsrid IS NOT NULL) THEN | |
BEGIN | |
EXECUTE 'ALTER TABLE ONLY ' || quote_ident(gcs.nspname) || '.' || quote_ident(gcs.relname) || ' | |
ADD CONSTRAINT ' || quote_ident('enforce_srid_' || gcs.attname) || ' | |
CHECK (srid(' || quote_ident(gcs.attname) || ') = ' || gsrid || ')'; | |
EXCEPTION | |
WHEN check_violation THEN | |
RAISE WARNING 'Not inserting ''%'' in ''%.%'' into geometry_columns: could not apply constraint CHECK (srid(%) = %)', quote_ident(gcs.attname), quote_ident(gcs.nspname), quote_ident(gcs.relname), quote_ident(gcs.attname), gsrid; | |
gc_is_valid := false; | |
END; | |
END IF; | |
END IF; | |
-- Try to find ndims check from system tables (pg_constraint) | |
gndims := | |
(SELECT replace(split_part(s.consrc, ' = ', 2), ')', '') | |
FROM pg_class c, pg_namespace n, pg_attribute a, pg_constraint s | |
WHERE n.nspname = gcs.nspname | |
AND c.relname = gcs.relname | |
AND a.attname = gcs.attname | |
AND a.attrelid = c.oid | |
AND s.connamespace = n.oid | |
AND s.conrelid = c.oid | |
AND a.attnum = ANY (s.conkey) | |
AND s.consrc LIKE '%ndims(% = %'); | |
IF (gndims IS NULL) THEN | |
-- Try to find ndims from the geometry itself | |
EXECUTE 'SELECT ndims(' || quote_ident(gcs.attname) || ') | |
FROM ONLY ' || quote_ident(gcs.nspname) || '.' || quote_ident(gcs.relname) || ' | |
WHERE ' || quote_ident(gcs.attname) || ' IS NOT NULL LIMIT 1' | |
INTO gc; | |
gndims := gc.ndims; | |
-- Try to apply ndims check to column | |
IF (gndims IS NOT NULL) THEN | |
BEGIN | |
EXECUTE 'ALTER TABLE ONLY ' || quote_ident(gcs.nspname) || '.' || quote_ident(gcs.relname) || ' | |
ADD CONSTRAINT ' || quote_ident('enforce_dims_' || gcs.attname) || ' | |
CHECK (ndims(' || quote_ident(gcs.attname) || ') = '||gndims||')'; | |
EXCEPTION | |
WHEN check_violation THEN | |
RAISE WARNING 'Not inserting ''%'' in ''%.%'' into geometry_columns: could not apply constraint CHECK (ndims(%) = %)', quote_ident(gcs.attname), quote_ident(gcs.nspname), quote_ident(gcs.relname), quote_ident(gcs.attname), gndims; | |
gc_is_valid := false; | |
END; | |
END IF; | |
END IF; | |
-- Try to find geotype check from system tables (pg_constraint) | |
gtype := | |
(SELECT replace(split_part(s.consrc, '''', 2), ')', '') | |
FROM pg_class c, pg_namespace n, pg_attribute a, pg_constraint s | |
WHERE n.nspname = gcs.nspname | |
AND c.relname = gcs.relname | |
AND a.attname = gcs.attname | |
AND a.attrelid = c.oid | |
AND s.connamespace = n.oid | |
AND s.conrelid = c.oid | |
AND a.attnum = ANY (s.conkey) | |
AND s.consrc LIKE '%geometrytype(% = %'); | |
IF (gtype IS NULL) THEN | |
-- Try to find geotype from the geometry itself | |
EXECUTE 'SELECT geometrytype(' || quote_ident(gcs.attname) || ') | |
FROM ONLY ' || quote_ident(gcs.nspname) || '.' || quote_ident(gcs.relname) || ' | |
WHERE ' || quote_ident(gcs.attname) || ' IS NOT NULL LIMIT 1' | |
INTO gc; | |
gtype := gc.geometrytype; | |
--IF (gtype IS NULL) THEN | |
-- gtype := 'GEOMETRY'; | |
--END IF; | |
-- Try to apply geometrytype check to column | |
IF (gtype IS NOT NULL) THEN | |
BEGIN | |
EXECUTE 'ALTER TABLE ONLY ' || quote_ident(gcs.nspname) || '.' || quote_ident(gcs.relname) || ' | |
ADD CONSTRAINT ' || quote_ident('enforce_geotype_' || gcs.attname) || ' | |
CHECK ((geometrytype(' || quote_ident(gcs.attname) || ') = ' || quote_literal(gtype) || ') OR (' || quote_ident(gcs.attname) || ' IS NULL))'; | |
EXCEPTION | |
WHEN check_violation THEN | |
-- No geometry check can be applied. This column contains a number of geometry types. | |
RAISE WARNING 'Could not add geometry type check (%) to table column: %.%.%', gtype, quote_ident(gcs.nspname),quote_ident(gcs.relname),quote_ident(gcs.attname); | |
END; | |
END IF; | |
END IF; | |
IF (gsrid IS NULL) THEN | |
RAISE WARNING 'Not inserting ''%'' in ''%.%'' into geometry_columns: could not determine the srid', quote_ident(gcs.attname), quote_ident(gcs.nspname), quote_ident(gcs.relname); | |
ELSIF (gndims IS NULL) THEN | |
RAISE WARNING 'Not inserting ''%'' in ''%.%'' into geometry_columns: could not determine the number of dimensions', quote_ident(gcs.attname), quote_ident(gcs.nspname), quote_ident(gcs.relname); | |
ELSIF (gtype IS NULL) THEN | |
RAISE WARNING 'Not inserting ''%'' in ''%.%'' into geometry_columns: could not determine the geometry type', quote_ident(gcs.attname), quote_ident(gcs.nspname), quote_ident(gcs.relname); | |
ELSE | |
-- Only insert into geometry_columns if table constraints could be applied. | |
IF (gc_is_valid) THEN | |
INSERT INTO geometry_columns (f_table_catalog,f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, type) | |
VALUES ('', gcs.nspname, gcs.relname, gcs.attname, gndims, gsrid, gtype); | |
inserted := inserted + 1; | |
END IF; | |
END IF; | |
END LOOP; | |
-- Add views to geometry columns table | |
FOR gcs IN | |
SELECT n.nspname, c.relname, a.attname | |
FROM pg_class c, | |
pg_attribute a, | |
pg_type t, | |
pg_namespace n | |
WHERE c.relkind = 'v' | |
AND t.typname = 'geometry' | |
AND a.attisdropped = false | |
AND a.atttypid = t.oid | |
AND a.attrelid = c.oid | |
AND c.relnamespace = n.oid | |
AND n.nspname NOT ILIKE 'pg_temp%' | |
AND c.oid = tbl_oid | |
LOOP | |
RAISE DEBUG 'Processing view %.%.%', gcs.nspname, gcs.relname, gcs.attname; | |
EXECUTE 'SELECT ndims(' || quote_ident(gcs.attname) || ') | |
FROM ' || quote_ident(gcs.nspname) || '.' || quote_ident(gcs.relname) || ' | |
WHERE ' || quote_ident(gcs.attname) || ' IS NOT NULL LIMIT 1' | |
INTO gc; | |
gndims := gc.ndims; | |
EXECUTE 'SELECT srid(' || quote_ident(gcs.attname) || ') | |
FROM ' || quote_ident(gcs.nspname) || '.' || quote_ident(gcs.relname) || ' | |
WHERE ' || quote_ident(gcs.attname) || ' IS NOT NULL LIMIT 1' | |
INTO gc; | |
gsrid := gc.srid; | |
EXECUTE 'SELECT geometrytype(' || quote_ident(gcs.attname) || ') | |
FROM ' || quote_ident(gcs.nspname) || '.' || quote_ident(gcs.relname) || ' | |
WHERE ' || quote_ident(gcs.attname) || ' IS NOT NULL LIMIT 1' | |
INTO gc; | |
gtype := gc.geometrytype; | |
IF (gndims IS NULL) THEN | |
RAISE WARNING 'Not inserting ''%'' in ''%.%'' into geometry_columns: could not determine ndims', quote_ident(gcs.attname), quote_ident(gcs.nspname), quote_ident(gcs.relname); | |
ELSIF (gsrid IS NULL) THEN | |
RAISE WARNING 'Not inserting ''%'' in ''%.%'' into geometry_columns: could not determine srid', quote_ident(gcs.attname), quote_ident(gcs.nspname), quote_ident(gcs.relname); | |
ELSIF (gtype IS NULL) THEN | |
RAISE WARNING 'Not inserting ''%'' in ''%.%'' into geometry_columns: could not determine gtype', quote_ident(gcs.attname), quote_ident(gcs.nspname), quote_ident(gcs.relname); | |
ELSE | |
query := 'INSERT INTO geometry_columns (f_table_catalog,f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, type) ' || | |
'VALUES ('''', ' || quote_literal(gcs.nspname) || ',' || quote_literal(gcs.relname) || ',' || quote_literal(gcs.attname) || ',' || gndims || ',' || gsrid || ',' || quote_literal(gtype) || ')'; | |
EXECUTE query; | |
inserted := inserted + 1; | |
END IF; | |
END LOOP; | |
RETURN inserted; | |
END | |
$$; | |
ALTER FUNCTION public.populate_geometry_columns(tbl_oid oid) OWNER TO postgres; | |
-- | |
-- TOC entry 353 (class 1255 OID 18707) | |
-- Dependencies: 6 1102 1102 | |
-- Name: postgis_addbbox(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION postgis_addbbox(geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_addBBOX'; | |
ALTER FUNCTION public.postgis_addbbox(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 354 (class 1255 OID 18708) | |
-- Dependencies: 6 | |
-- Name: postgis_cache_bbox(); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION postgis_cache_bbox() RETURNS trigger | |
LANGUAGE c | |
AS '$libdir/postgis-1.5', 'cache_bbox'; | |
ALTER FUNCTION public.postgis_cache_bbox() OWNER TO postgres; | |
-- | |
-- TOC entry 355 (class 1255 OID 18709) | |
-- Dependencies: 1102 1102 6 | |
-- Name: postgis_dropbbox(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION postgis_dropbbox(geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_dropBBOX'; | |
ALTER FUNCTION public.postgis_dropbbox(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 356 (class 1255 OID 18710) | |
-- Dependencies: 6 1168 | |
-- Name: postgis_full_version(); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION postgis_full_version() RETURNS text | |
LANGUAGE plpgsql IMMUTABLE | |
AS $$ | |
DECLARE | |
libver text; | |
projver text; | |
geosver text; | |
libxmlver text; | |
usestats bool; | |
dbproc text; | |
relproc text; | |
fullver text; | |
BEGIN | |
SELECT postgis_lib_version() INTO libver; | |
SELECT postgis_proj_version() INTO projver; | |
SELECT postgis_geos_version() INTO geosver; | |
SELECT postgis_libxml_version() INTO libxmlver; | |
SELECT postgis_uses_stats() INTO usestats; | |
SELECT postgis_scripts_installed() INTO dbproc; | |
SELECT postgis_scripts_released() INTO relproc; | |
fullver = 'POSTGIS="' || libver || '"'; | |
IF geosver IS NOT NULL THEN | |
fullver = fullver || ' GEOS="' || geosver || '"'; | |
END IF; | |
IF projver IS NOT NULL THEN | |
fullver = fullver || ' PROJ="' || projver || '"'; | |
END IF; | |
IF libxmlver IS NOT NULL THEN | |
fullver = fullver || ' LIBXML="' || libxmlver || '"'; | |
END IF; | |
IF usestats THEN | |
fullver = fullver || ' USE_STATS'; | |
END IF; | |
-- fullver = fullver || ' DBPROC="' || dbproc || '"'; | |
-- fullver = fullver || ' RELPROC="' || relproc || '"'; | |
IF dbproc != relproc THEN | |
fullver = fullver || ' (procs from ' || dbproc || ' need upgrade)'; | |
END IF; | |
RETURN fullver; | |
END | |
$$; | |
ALTER FUNCTION public.postgis_full_version() OWNER TO postgres; | |
-- | |
-- TOC entry 357 (class 1255 OID 18711) | |
-- Dependencies: 6 | |
-- Name: postgis_geos_version(); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION postgis_geos_version() RETURNS text | |
LANGUAGE c IMMUTABLE | |
AS '$libdir/postgis-1.5', 'postgis_geos_version'; | |
ALTER FUNCTION public.postgis_geos_version() OWNER TO postgres; | |
-- | |
-- TOC entry 358 (class 1255 OID 18712) | |
-- Dependencies: 1102 6 1087 | |
-- Name: postgis_getbbox(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION postgis_getbbox(geometry) RETURNS box2d | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_to_BOX2DFLOAT4'; | |
ALTER FUNCTION public.postgis_getbbox(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 359 (class 1255 OID 18713) | |
-- Dependencies: 6 | |
-- Name: postgis_gist_joinsel(internal, oid, internal, smallint); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION postgis_gist_joinsel(internal, oid, internal, smallint) RETURNS double precision | |
LANGUAGE c | |
AS '$libdir/postgis-1.5', 'LWGEOM_gist_joinsel'; | |
ALTER FUNCTION public.postgis_gist_joinsel(internal, oid, internal, smallint) OWNER TO postgres; | |
-- | |
-- TOC entry 360 (class 1255 OID 18714) | |
-- Dependencies: 6 | |
-- Name: postgis_gist_sel(internal, oid, internal, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION postgis_gist_sel(internal, oid, internal, integer) RETURNS double precision | |
LANGUAGE c | |
AS '$libdir/postgis-1.5', 'LWGEOM_gist_sel'; | |
ALTER FUNCTION public.postgis_gist_sel(internal, oid, internal, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 361 (class 1255 OID 18715) | |
-- Dependencies: 1102 6 | |
-- Name: postgis_hasbbox(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION postgis_hasbbox(geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_hasBBOX'; | |
ALTER FUNCTION public.postgis_hasbbox(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 362 (class 1255 OID 18716) | |
-- Dependencies: 6 | |
-- Name: postgis_lib_build_date(); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION postgis_lib_build_date() RETURNS text | |
LANGUAGE c IMMUTABLE | |
AS '$libdir/postgis-1.5', 'postgis_lib_build_date'; | |
ALTER FUNCTION public.postgis_lib_build_date() OWNER TO postgres; | |
-- | |
-- TOC entry 363 (class 1255 OID 18717) | |
-- Dependencies: 6 | |
-- Name: postgis_lib_version(); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION postgis_lib_version() RETURNS text | |
LANGUAGE c IMMUTABLE | |
AS '$libdir/postgis-1.5', 'postgis_lib_version'; | |
ALTER FUNCTION public.postgis_lib_version() OWNER TO postgres; | |
-- | |
-- TOC entry 364 (class 1255 OID 18718) | |
-- Dependencies: 6 | |
-- Name: postgis_libxml_version(); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION postgis_libxml_version() RETURNS text | |
LANGUAGE c IMMUTABLE | |
AS '$libdir/postgis-1.5', 'postgis_libxml_version'; | |
ALTER FUNCTION public.postgis_libxml_version() OWNER TO postgres; | |
-- | |
-- TOC entry 365 (class 1255 OID 18719) | |
-- Dependencies: 1102 6 1102 | |
-- Name: postgis_noop(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION postgis_noop(geometry) RETURNS geometry | |
LANGUAGE c STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_noop'; | |
ALTER FUNCTION public.postgis_noop(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 366 (class 1255 OID 18720) | |
-- Dependencies: 6 | |
-- Name: postgis_proj_version(); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION postgis_proj_version() RETURNS text | |
LANGUAGE c IMMUTABLE | |
AS '$libdir/postgis-1.5', 'postgis_proj_version'; | |
ALTER FUNCTION public.postgis_proj_version() OWNER TO postgres; | |
-- | |
-- TOC entry 367 (class 1255 OID 18721) | |
-- Dependencies: 6 | |
-- Name: postgis_scripts_build_date(); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION postgis_scripts_build_date() RETURNS text | |
LANGUAGE sql IMMUTABLE | |
AS $$SELECT '2010-03-11 19:15:17'::text AS version$$; | |
ALTER FUNCTION public.postgis_scripts_build_date() OWNER TO postgres; | |
-- | |
-- TOC entry 368 (class 1255 OID 18722) | |
-- Dependencies: 6 | |
-- Name: postgis_scripts_installed(); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION postgis_scripts_installed() RETURNS text | |
LANGUAGE sql IMMUTABLE | |
AS $$SELECT '1.5 r5385'::text AS version$$; | |
ALTER FUNCTION public.postgis_scripts_installed() OWNER TO postgres; | |
-- | |
-- TOC entry 369 (class 1255 OID 18723) | |
-- Dependencies: 6 | |
-- Name: postgis_scripts_released(); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION postgis_scripts_released() RETURNS text | |
LANGUAGE c IMMUTABLE | |
AS '$libdir/postgis-1.5', 'postgis_scripts_released'; | |
ALTER FUNCTION public.postgis_scripts_released() OWNER TO postgres; | |
-- | |
-- TOC entry 370 (class 1255 OID 18724) | |
-- Dependencies: 1102 6 1102 | |
-- Name: postgis_transform_geometry(geometry, text, text, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION postgis_transform_geometry(geometry, text, text, integer) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'transform_geom'; | |
ALTER FUNCTION public.postgis_transform_geometry(geometry, text, text, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 371 (class 1255 OID 18725) | |
-- Dependencies: 6 | |
-- Name: postgis_uses_stats(); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION postgis_uses_stats() RETURNS boolean | |
LANGUAGE c IMMUTABLE | |
AS '$libdir/postgis-1.5', 'postgis_uses_stats'; | |
ALTER FUNCTION public.postgis_uses_stats() OWNER TO postgres; | |
-- | |
-- TOC entry 372 (class 1255 OID 18726) | |
-- Dependencies: 6 | |
-- Name: postgis_version(); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION postgis_version() RETURNS text | |
LANGUAGE c IMMUTABLE | |
AS '$libdir/postgis-1.5', 'postgis_version'; | |
ALTER FUNCTION public.postgis_version() OWNER TO postgres; | |
-- | |
-- TOC entry 373 (class 1255 OID 18727) | |
-- Dependencies: 6 1168 | |
-- Name: probe_geometry_columns(); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION probe_geometry_columns() RETURNS text | |
LANGUAGE plpgsql | |
AS $$ | |
DECLARE | |
inserted integer; | |
oldcount integer; | |
probed integer; | |
stale integer; | |
BEGIN | |
SELECT count(*) INTO oldcount FROM geometry_columns; | |
SELECT count(*) INTO probed | |
FROM pg_class c, pg_attribute a, pg_type t, | |
pg_namespace n, | |
pg_constraint sridcheck, pg_constraint typecheck | |
WHERE t.typname = 'geometry' | |
AND a.atttypid = t.oid | |
AND a.attrelid = c.oid | |
AND c.relnamespace = n.oid | |
AND sridcheck.connamespace = n.oid | |
AND typecheck.connamespace = n.oid | |
AND sridcheck.conrelid = c.oid | |
AND sridcheck.consrc LIKE '(srid('||a.attname||') = %)' | |
AND typecheck.conrelid = c.oid | |
AND typecheck.consrc LIKE | |
'((geometrytype('||a.attname||') = ''%''::text) OR (% IS NULL))' | |
; | |
INSERT INTO geometry_columns SELECT | |
''::varchar as f_table_catalogue, | |
n.nspname::varchar as f_table_schema, | |
c.relname::varchar as f_table_name, | |
a.attname::varchar as f_geometry_column, | |
2 as coord_dimension, | |
trim(both ' =)' from | |
replace(replace(split_part( | |
sridcheck.consrc, ' = ', 2), ')', ''), '(', ''))::integer AS srid, | |
trim(both ' =)''' from substr(typecheck.consrc, | |
strpos(typecheck.consrc, '='), | |
strpos(typecheck.consrc, '::')- | |
strpos(typecheck.consrc, '=') | |
))::varchar as type | |
FROM pg_class c, pg_attribute a, pg_type t, | |
pg_namespace n, | |
pg_constraint sridcheck, pg_constraint typecheck | |
WHERE t.typname = 'geometry' | |
AND a.atttypid = t.oid | |
AND a.attrelid = c.oid | |
AND c.relnamespace = n.oid | |
AND sridcheck.connamespace = n.oid | |
AND typecheck.connamespace = n.oid | |
AND sridcheck.conrelid = c.oid | |
AND sridcheck.consrc LIKE '(st_srid('||a.attname||') = %)' | |
AND typecheck.conrelid = c.oid | |
AND typecheck.consrc LIKE | |
'((geometrytype('||a.attname||') = ''%''::text) OR (% IS NULL))' | |
AND NOT EXISTS ( | |
SELECT oid FROM geometry_columns gc | |
WHERE c.relname::varchar = gc.f_table_name | |
AND n.nspname::varchar = gc.f_table_schema | |
AND a.attname::varchar = gc.f_geometry_column | |
); | |
GET DIAGNOSTICS inserted = ROW_COUNT; | |
IF oldcount > probed THEN | |
stale = oldcount-probed; | |
ELSE | |
stale = 0; | |
END IF; | |
RETURN 'probed:'||probed::text|| | |
' inserted:'||inserted::text|| | |
' conflicts:'||(probed-inserted)::text|| | |
' stale:'||stale::text; | |
END | |
$$; | |
ALTER FUNCTION public.probe_geometry_columns() OWNER TO postgres; | |
-- | |
-- TOC entry 374 (class 1255 OID 18728) | |
-- Dependencies: 6 1102 1102 | |
-- Name: relate(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION relate(geometry, geometry) RETURNS text | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'relate_full'; | |
ALTER FUNCTION public.relate(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 375 (class 1255 OID 18729) | |
-- Dependencies: 1102 6 1102 | |
-- Name: relate(geometry, geometry, text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION relate(geometry, geometry, text) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'relate_pattern'; | |
ALTER FUNCTION public.relate(geometry, geometry, text) OWNER TO postgres; | |
-- | |
-- TOC entry 376 (class 1255 OID 18730) | |
-- Dependencies: 1102 6 1102 | |
-- Name: removepoint(geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION removepoint(geometry, integer) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_removepoint'; | |
ALTER FUNCTION public.removepoint(geometry, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 377 (class 1255 OID 18731) | |
-- Dependencies: 6 | |
-- Name: rename_geometry_table_constraints(); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION rename_geometry_table_constraints() RETURNS text | |
LANGUAGE sql IMMUTABLE | |
AS $$ | |
SELECT 'rename_geometry_table_constraint() is obsoleted'::text | |
$$; | |
ALTER FUNCTION public.rename_geometry_table_constraints() OWNER TO postgres; | |
-- | |
-- TOC entry 378 (class 1255 OID 18732) | |
-- Dependencies: 1102 6 1102 | |
-- Name: reverse(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION reverse(geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_reverse'; | |
ALTER FUNCTION public.reverse(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 379 (class 1255 OID 18733) | |
-- Dependencies: 1102 6 1102 | |
-- Name: rotate(geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION rotate(geometry, double precision) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT rotateZ($1, $2)$_$; | |
ALTER FUNCTION public.rotate(geometry, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 380 (class 1255 OID 18734) | |
-- Dependencies: 1102 6 1102 | |
-- Name: rotatex(geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION rotatex(geometry, double precision) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT affine($1, 1, 0, 0, 0, cos($2), -sin($2), 0, sin($2), cos($2), 0, 0, 0)$_$; | |
ALTER FUNCTION public.rotatex(geometry, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 381 (class 1255 OID 18735) | |
-- Dependencies: 1102 6 1102 | |
-- Name: rotatey(geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION rotatey(geometry, double precision) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT affine($1, cos($2), 0, sin($2), 0, 1, 0, -sin($2), 0, cos($2), 0, 0, 0)$_$; | |
ALTER FUNCTION public.rotatey(geometry, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 382 (class 1255 OID 18736) | |
-- Dependencies: 1102 6 1102 | |
-- Name: rotatez(geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION rotatez(geometry, double precision) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT affine($1, cos($2), -sin($2), 0, sin($2), cos($2), 0, 0, 0, 1, 0, 0, 0)$_$; | |
ALTER FUNCTION public.rotatez(geometry, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 384 (class 1255 OID 18738) | |
-- Dependencies: 6 1102 1102 | |
-- Name: scale(geometry, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION scale(geometry, double precision, double precision) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT scale($1, $2, $3, 1)$_$; | |
ALTER FUNCTION public.scale(geometry, double precision, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 383 (class 1255 OID 18737) | |
-- Dependencies: 6 1102 1102 | |
-- Name: scale(geometry, double precision, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION scale(geometry, double precision, double precision, double precision) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT affine($1, $2, 0, 0, 0, $3, 0, 0, 0, $4, 0, 0, 0)$_$; | |
ALTER FUNCTION public.scale(geometry, double precision, double precision, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 385 (class 1255 OID 18739) | |
-- Dependencies: 1102 6 1102 | |
-- Name: se_envelopesintersect(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION se_envelopesintersect(geometry, geometry) RETURNS boolean | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT $1 && $2 | |
$_$; | |
ALTER FUNCTION public.se_envelopesintersect(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 386 (class 1255 OID 18740) | |
-- Dependencies: 6 1102 | |
-- Name: se_is3d(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION se_is3d(geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_hasz'; | |
ALTER FUNCTION public.se_is3d(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 387 (class 1255 OID 18741) | |
-- Dependencies: 6 1102 | |
-- Name: se_ismeasured(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION se_ismeasured(geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_hasm'; | |
ALTER FUNCTION public.se_ismeasured(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 388 (class 1255 OID 18742) | |
-- Dependencies: 1102 6 1102 | |
-- Name: se_locatealong(geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION se_locatealong(geometry, double precision) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ SELECT locate_between_measures($1, $2, $2) $_$; | |
ALTER FUNCTION public.se_locatealong(geometry, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 389 (class 1255 OID 18743) | |
-- Dependencies: 1102 6 1102 | |
-- Name: se_locatebetween(geometry, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION se_locatebetween(geometry, double precision, double precision) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_locate_between_m'; | |
ALTER FUNCTION public.se_locatebetween(geometry, double precision, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 390 (class 1255 OID 18744) | |
-- Dependencies: 6 1102 | |
-- Name: se_m(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION se_m(geometry) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_m_point'; | |
ALTER FUNCTION public.se_m(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 391 (class 1255 OID 18745) | |
-- Dependencies: 6 1102 | |
-- Name: se_z(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION se_z(geometry) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_z_point'; | |
ALTER FUNCTION public.se_z(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 392 (class 1255 OID 18746) | |
-- Dependencies: 1102 6 1102 | |
-- Name: segmentize(geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION segmentize(geometry, double precision) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_segmentize2d'; | |
ALTER FUNCTION public.segmentize(geometry, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 393 (class 1255 OID 18747) | |
-- Dependencies: 1096 6 1096 | |
-- Name: setfactor(chip, real); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION setfactor(chip, real) RETURNS chip | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'CHIP_setFactor'; | |
ALTER FUNCTION public.setfactor(chip, real) OWNER TO postgres; | |
-- | |
-- TOC entry 394 (class 1255 OID 18748) | |
-- Dependencies: 1102 6 1102 1102 | |
-- Name: setpoint(geometry, integer, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION setpoint(geometry, integer, geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_setpoint_linestring'; | |
ALTER FUNCTION public.setpoint(geometry, integer, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 395 (class 1255 OID 18749) | |
-- Dependencies: 1096 6 1096 | |
-- Name: setsrid(chip, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION setsrid(chip, integer) RETURNS chip | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'CHIP_setSRID'; | |
ALTER FUNCTION public.setsrid(chip, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 396 (class 1255 OID 18750) | |
-- Dependencies: 1102 6 1102 | |
-- Name: setsrid(geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION setsrid(geometry, integer) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_setSRID'; | |
ALTER FUNCTION public.setsrid(geometry, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 397 (class 1255 OID 18751) | |
-- Dependencies: 6 1102 1102 | |
-- Name: shift_longitude(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION shift_longitude(geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_longitude_shift'; | |
ALTER FUNCTION public.shift_longitude(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 398 (class 1255 OID 18752) | |
-- Dependencies: 6 1102 1102 | |
-- Name: simplify(geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION simplify(geometry, double precision) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_simplify2d'; | |
ALTER FUNCTION public.simplify(geometry, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 401 (class 1255 OID 18755) | |
-- Dependencies: 1102 6 1102 | |
-- Name: snaptogrid(geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION snaptogrid(geometry, double precision) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT SnapToGrid($1, 0, 0, $2, $2)$_$; | |
ALTER FUNCTION public.snaptogrid(geometry, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 400 (class 1255 OID 18754) | |
-- Dependencies: 1102 6 1102 | |
-- Name: snaptogrid(geometry, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION snaptogrid(geometry, double precision, double precision) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT SnapToGrid($1, 0, 0, $2, $3)$_$; | |
ALTER FUNCTION public.snaptogrid(geometry, double precision, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 399 (class 1255 OID 18753) | |
-- Dependencies: 6 1102 1102 | |
-- Name: snaptogrid(geometry, double precision, double precision, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION snaptogrid(geometry, double precision, double precision, double precision, double precision) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_snaptogrid'; | |
ALTER FUNCTION public.snaptogrid(geometry, double precision, double precision, double precision, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 402 (class 1255 OID 18756) | |
-- Dependencies: 1102 6 1102 1102 | |
-- Name: snaptogrid(geometry, geometry, double precision, double precision, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION snaptogrid(geometry, geometry, double precision, double precision, double precision, double precision) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_snaptogrid_pointoff'; | |
ALTER FUNCTION public.snaptogrid(geometry, geometry, double precision, double precision, double precision, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 403 (class 1255 OID 18757) | |
-- Dependencies: 6 1096 | |
-- Name: srid(chip); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION srid(chip) RETURNS integer | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'CHIP_getSRID'; | |
ALTER FUNCTION public.srid(chip) OWNER TO postgres; | |
-- | |
-- TOC entry 404 (class 1255 OID 18758) | |
-- Dependencies: 6 1102 | |
-- Name: srid(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION srid(geometry) RETURNS integer | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_getSRID'; | |
ALTER FUNCTION public.srid(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 405 (class 1255 OID 18759) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_addmeasure(geometry, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_addmeasure(geometry, double precision, double precision) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'ST_AddMeasure'; | |
ALTER FUNCTION public.st_addmeasure(geometry, double precision, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 406 (class 1255 OID 18760) | |
-- Dependencies: 6 1102 1102 1102 | |
-- Name: st_addpoint(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_addpoint(geometry, geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_addpoint'; | |
ALTER FUNCTION public.st_addpoint(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 407 (class 1255 OID 18761) | |
-- Dependencies: 6 1102 1102 1102 | |
-- Name: st_addpoint(geometry, geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_addpoint(geometry, geometry, integer) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_addpoint'; | |
ALTER FUNCTION public.st_addpoint(geometry, geometry, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 409 (class 1255 OID 18763) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_affine(geometry, double precision, double precision, double precision, double precision, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_affine(geometry, double precision, double precision, double precision, double precision, double precision, double precision) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT affine($1, $2, $3, 0, $4, $5, 0, 0, 0, 1, $6, $7, 0)$_$; | |
ALTER FUNCTION public.st_affine(geometry, double precision, double precision, double precision, double precision, double precision, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 408 (class 1255 OID 18762) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_affine(geometry, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_affine(geometry, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_affine'; | |
ALTER FUNCTION public.st_affine(geometry, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 410 (class 1255 OID 18764) | |
-- Dependencies: 6 1102 | |
-- Name: st_area(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_area(geometry) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_area_polygon'; | |
ALTER FUNCTION public.st_area(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 412 (class 1255 OID 18766) | |
-- Dependencies: 6 1099 | |
-- Name: st_area(geography); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_area(geography) RETURNS double precision | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT ST_Area($1, true)$_$; | |
ALTER FUNCTION public.st_area(geography) OWNER TO postgres; | |
-- | |
-- TOC entry 413 (class 1255 OID 18767) | |
-- Dependencies: 6 | |
-- Name: st_area(text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_area(text) RETURNS double precision | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ SELECT ST_Area($1::geometry); $_$; | |
ALTER FUNCTION public.st_area(text) OWNER TO postgres; | |
-- | |
-- TOC entry 411 (class 1255 OID 18765) | |
-- Dependencies: 6 1099 | |
-- Name: st_area(geography, boolean); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_area(geography, boolean) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT COST 100 | |
AS '$libdir/postgis-1.5', 'geography_area'; | |
ALTER FUNCTION public.st_area(geography, boolean) OWNER TO postgres; | |
-- | |
-- TOC entry 414 (class 1255 OID 18768) | |
-- Dependencies: 6 1102 | |
-- Name: st_area2d(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_area2d(geometry) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_area_polygon'; | |
ALTER FUNCTION public.st_area2d(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 415 (class 1255 OID 18769) | |
-- Dependencies: 6 1102 | |
-- Name: st_asbinary(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_asbinary(geometry) RETURNS bytea | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_asBinary'; | |
ALTER FUNCTION public.st_asbinary(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 417 (class 1255 OID 18771) | |
-- Dependencies: 6 1099 | |
-- Name: st_asbinary(geography); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_asbinary(geography) RETURNS bytea | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'geography_as_binary'; | |
ALTER FUNCTION public.st_asbinary(geography) OWNER TO postgres; | |
-- | |
-- TOC entry 418 (class 1255 OID 18772) | |
-- Dependencies: 6 | |
-- Name: st_asbinary(text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_asbinary(text) RETURNS bytea | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ SELECT ST_AsBinary($1::geometry); $_$; | |
ALTER FUNCTION public.st_asbinary(text) OWNER TO postgres; | |
-- | |
-- TOC entry 416 (class 1255 OID 18770) | |
-- Dependencies: 6 1102 | |
-- Name: st_asbinary(geometry, text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_asbinary(geometry, text) RETURNS bytea | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_asBinary'; | |
ALTER FUNCTION public.st_asbinary(geometry, text) OWNER TO postgres; | |
-- | |
-- TOC entry 419 (class 1255 OID 18773) | |
-- Dependencies: 6 1102 | |
-- Name: st_asewkb(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_asewkb(geometry) RETURNS bytea | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'WKBFromLWGEOM'; | |
ALTER FUNCTION public.st_asewkb(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 420 (class 1255 OID 18774) | |
-- Dependencies: 6 1102 | |
-- Name: st_asewkb(geometry, text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_asewkb(geometry, text) RETURNS bytea | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'WKBFromLWGEOM'; | |
ALTER FUNCTION public.st_asewkb(geometry, text) OWNER TO postgres; | |
-- | |
-- TOC entry 421 (class 1255 OID 18775) | |
-- Dependencies: 6 1102 | |
-- Name: st_asewkt(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_asewkt(geometry) RETURNS text | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_asEWKT'; | |
ALTER FUNCTION public.st_asewkt(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 423 (class 1255 OID 18777) | |
-- Dependencies: 6 1102 | |
-- Name: st_asgeojson(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_asgeojson(geometry) RETURNS text | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT _ST_AsGeoJson(1, $1, 15, 0)$_$; | |
ALTER FUNCTION public.st_asgeojson(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 429 (class 1255 OID 18783) | |
-- Dependencies: 6 1099 | |
-- Name: st_asgeojson(geography); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_asgeojson(geography) RETURNS text | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT _ST_AsGeoJson(1, $1, 15, 0)$_$; | |
ALTER FUNCTION public.st_asgeojson(geography) OWNER TO postgres; | |
-- | |
-- TOC entry 430 (class 1255 OID 18784) | |
-- Dependencies: 6 | |
-- Name: st_asgeojson(text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_asgeojson(text) RETURNS text | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ SELECT ST_AsGeoJson($1::geometry); $_$; | |
ALTER FUNCTION public.st_asgeojson(text) OWNER TO postgres; | |
-- | |
-- TOC entry 422 (class 1255 OID 18776) | |
-- Dependencies: 6 1102 | |
-- Name: st_asgeojson(geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_asgeojson(geometry, integer) RETURNS text | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT _ST_AsGeoJson(1, $1, $2, 0)$_$; | |
ALTER FUNCTION public.st_asgeojson(geometry, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 424 (class 1255 OID 18778) | |
-- Dependencies: 6 1102 | |
-- Name: st_asgeojson(integer, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_asgeojson(integer, geometry) RETURNS text | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT _ST_AsGeoJson($1, $2, 15, 0)$_$; | |
ALTER FUNCTION public.st_asgeojson(integer, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 428 (class 1255 OID 18782) | |
-- Dependencies: 6 1099 | |
-- Name: st_asgeojson(geography, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_asgeojson(geography, integer) RETURNS text | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT _ST_AsGeoJson(1, $1, $2, 0)$_$; | |
ALTER FUNCTION public.st_asgeojson(geography, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 431 (class 1255 OID 18785) | |
-- Dependencies: 6 1099 | |
-- Name: st_asgeojson(integer, geography); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_asgeojson(integer, geography) RETURNS text | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT _ST_AsGeoJson($1, $2, 15, 0)$_$; | |
ALTER FUNCTION public.st_asgeojson(integer, geography) OWNER TO postgres; | |
-- | |
-- TOC entry 425 (class 1255 OID 18779) | |
-- Dependencies: 6 1102 | |
-- Name: st_asgeojson(integer, geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_asgeojson(integer, geometry, integer) RETURNS text | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT _ST_AsGeoJson($1, $2, $3, 0)$_$; | |
ALTER FUNCTION public.st_asgeojson(integer, geometry, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 426 (class 1255 OID 18780) | |
-- Dependencies: 6 1102 | |
-- Name: st_asgeojson(geometry, integer, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_asgeojson(geometry, integer, integer) RETURNS text | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT _ST_AsGeoJson(1, $1, $2, $3)$_$; | |
ALTER FUNCTION public.st_asgeojson(geometry, integer, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 432 (class 1255 OID 18786) | |
-- Dependencies: 6 1099 | |
-- Name: st_asgeojson(integer, geography, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_asgeojson(integer, geography, integer) RETURNS text | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT _ST_AsGeoJson($1, $2, $3, 0)$_$; | |
ALTER FUNCTION public.st_asgeojson(integer, geography, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 433 (class 1255 OID 18787) | |
-- Dependencies: 6 1099 | |
-- Name: st_asgeojson(geography, integer, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_asgeojson(geography, integer, integer) RETURNS text | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT _ST_AsGeoJson(1, $1, $2, $3)$_$; | |
ALTER FUNCTION public.st_asgeojson(geography, integer, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 427 (class 1255 OID 18781) | |
-- Dependencies: 6 1102 | |
-- Name: st_asgeojson(integer, geometry, integer, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_asgeojson(integer, geometry, integer, integer) RETURNS text | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT _ST_AsGeoJson($1, $2, $3, $4)$_$; | |
ALTER FUNCTION public.st_asgeojson(integer, geometry, integer, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 434 (class 1255 OID 18788) | |
-- Dependencies: 6 1099 | |
-- Name: st_asgeojson(integer, geography, integer, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_asgeojson(integer, geography, integer, integer) RETURNS text | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT _ST_AsGeoJson($1, $2, $3, $4)$_$; | |
ALTER FUNCTION public.st_asgeojson(integer, geography, integer, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 436 (class 1255 OID 18790) | |
-- Dependencies: 6 1102 | |
-- Name: st_asgml(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_asgml(geometry) RETURNS text | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT _ST_AsGML(2, $1, 15, 0)$_$; | |
ALTER FUNCTION public.st_asgml(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 442 (class 1255 OID 18796) | |
-- Dependencies: 6 1099 | |
-- Name: st_asgml(geography); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_asgml(geography) RETURNS text | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT _ST_AsGML(2, $1, 15, 0)$_$; | |
ALTER FUNCTION public.st_asgml(geography) OWNER TO postgres; | |
-- | |
-- TOC entry 443 (class 1255 OID 18797) | |
-- Dependencies: 6 | |
-- Name: st_asgml(text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_asgml(text) RETURNS text | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ SELECT ST_AsGML($1::geometry); $_$; | |
ALTER FUNCTION public.st_asgml(text) OWNER TO postgres; | |
-- | |
-- TOC entry 435 (class 1255 OID 18789) | |
-- Dependencies: 6 1102 | |
-- Name: st_asgml(geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_asgml(geometry, integer) RETURNS text | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT _ST_AsGML(2, $1, $2, 0)$_$; | |
ALTER FUNCTION public.st_asgml(geometry, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 437 (class 1255 OID 18791) | |
-- Dependencies: 6 1102 | |
-- Name: st_asgml(integer, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_asgml(integer, geometry) RETURNS text | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT _ST_AsGML($1, $2, 15, 0)$_$; | |
ALTER FUNCTION public.st_asgml(integer, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 441 (class 1255 OID 18795) | |
-- Dependencies: 6 1099 | |
-- Name: st_asgml(geography, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_asgml(geography, integer) RETURNS text | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT _ST_AsGML(2, $1, $2, 0)$_$; | |
ALTER FUNCTION public.st_asgml(geography, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 444 (class 1255 OID 18798) | |
-- Dependencies: 6 1099 | |
-- Name: st_asgml(integer, geography); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_asgml(integer, geography) RETURNS text | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT _ST_AsGML($1, $2, 15, 0)$_$; | |
ALTER FUNCTION public.st_asgml(integer, geography) OWNER TO postgres; | |
-- | |
-- TOC entry 438 (class 1255 OID 18792) | |
-- Dependencies: 6 1102 | |
-- Name: st_asgml(integer, geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_asgml(integer, geometry, integer) RETURNS text | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT _ST_AsGML($1, $2, $3, 0)$_$; | |
ALTER FUNCTION public.st_asgml(integer, geometry, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 439 (class 1255 OID 18793) | |
-- Dependencies: 6 1102 | |
-- Name: st_asgml(geometry, integer, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_asgml(geometry, integer, integer) RETURNS text | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT _ST_AsGML(2, $1, $2, $3)$_$; | |
ALTER FUNCTION public.st_asgml(geometry, integer, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 445 (class 1255 OID 18799) | |
-- Dependencies: 6 1099 | |
-- Name: st_asgml(integer, geography, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_asgml(integer, geography, integer) RETURNS text | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT _ST_AsGML($1, $2, $3, 0)$_$; | |
ALTER FUNCTION public.st_asgml(integer, geography, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 446 (class 1255 OID 18800) | |
-- Dependencies: 6 1099 | |
-- Name: st_asgml(geography, integer, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_asgml(geography, integer, integer) RETURNS text | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT _ST_AsGML(2, $1, $2, $3)$_$; | |
ALTER FUNCTION public.st_asgml(geography, integer, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 440 (class 1255 OID 18794) | |
-- Dependencies: 6 1102 | |
-- Name: st_asgml(integer, geometry, integer, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_asgml(integer, geometry, integer, integer) RETURNS text | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT _ST_AsGML($1, $2, $3, $4)$_$; | |
ALTER FUNCTION public.st_asgml(integer, geometry, integer, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 447 (class 1255 OID 18801) | |
-- Dependencies: 6 1099 | |
-- Name: st_asgml(integer, geography, integer, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_asgml(integer, geography, integer, integer) RETURNS text | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT _ST_AsGML($1, $2, $3, $4)$_$; | |
ALTER FUNCTION public.st_asgml(integer, geography, integer, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 448 (class 1255 OID 18802) | |
-- Dependencies: 6 1102 | |
-- Name: st_ashexewkb(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_ashexewkb(geometry) RETURNS text | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_asHEXEWKB'; | |
ALTER FUNCTION public.st_ashexewkb(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 449 (class 1255 OID 18803) | |
-- Dependencies: 6 1102 | |
-- Name: st_ashexewkb(geometry, text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_ashexewkb(geometry, text) RETURNS text | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_asHEXEWKB'; | |
ALTER FUNCTION public.st_ashexewkb(geometry, text) OWNER TO postgres; | |
-- | |
-- TOC entry 451 (class 1255 OID 18805) | |
-- Dependencies: 6 1102 | |
-- Name: st_askml(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_askml(geometry) RETURNS text | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT _ST_AsKML(2, ST_Transform($1,4326), 15)$_$; | |
ALTER FUNCTION public.st_askml(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 455 (class 1255 OID 18809) | |
-- Dependencies: 6 1099 | |
-- Name: st_askml(geography); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_askml(geography) RETURNS text | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT _ST_AsKML(2, $1, 15)$_$; | |
ALTER FUNCTION public.st_askml(geography) OWNER TO postgres; | |
-- | |
-- TOC entry 456 (class 1255 OID 18810) | |
-- Dependencies: 6 | |
-- Name: st_askml(text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_askml(text) RETURNS text | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ SELECT ST_AsKML($1::geometry); $_$; | |
ALTER FUNCTION public.st_askml(text) OWNER TO postgres; | |
-- | |
-- TOC entry 450 (class 1255 OID 18804) | |
-- Dependencies: 6 1102 | |
-- Name: st_askml(geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_askml(geometry, integer) RETURNS text | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT _ST_AsKML(2, ST_Transform($1,4326), $2)$_$; | |
ALTER FUNCTION public.st_askml(geometry, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 452 (class 1255 OID 18806) | |
-- Dependencies: 6 1102 | |
-- Name: st_askml(integer, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_askml(integer, geometry) RETURNS text | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT _ST_AsKML($1, ST_Transform($2,4326), 15)$_$; | |
ALTER FUNCTION public.st_askml(integer, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 454 (class 1255 OID 18808) | |
-- Dependencies: 1099 6 | |
-- Name: st_askml(geography, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_askml(geography, integer) RETURNS text | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT _ST_AsKML(2, $1, $2)$_$; | |
ALTER FUNCTION public.st_askml(geography, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 457 (class 1255 OID 18811) | |
-- Dependencies: 6 1099 | |
-- Name: st_askml(integer, geography); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_askml(integer, geography) RETURNS text | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT _ST_AsKML($1, $2, 15)$_$; | |
ALTER FUNCTION public.st_askml(integer, geography) OWNER TO postgres; | |
-- | |
-- TOC entry 453 (class 1255 OID 18807) | |
-- Dependencies: 6 1102 | |
-- Name: st_askml(integer, geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_askml(integer, geometry, integer) RETURNS text | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT _ST_AsKML($1, ST_Transform($2,4326), $3)$_$; | |
ALTER FUNCTION public.st_askml(integer, geometry, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 458 (class 1255 OID 18812) | |
-- Dependencies: 6 1099 | |
-- Name: st_askml(integer, geography, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_askml(integer, geography, integer) RETURNS text | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT _ST_AsKML($1, $2, $3)$_$; | |
ALTER FUNCTION public.st_askml(integer, geography, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 461 (class 1255 OID 18815) | |
-- Dependencies: 6 1102 | |
-- Name: st_assvg(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_assvg(geometry) RETURNS text | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'assvg_geometry'; | |
ALTER FUNCTION public.st_assvg(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 464 (class 1255 OID 18818) | |
-- Dependencies: 6 1099 | |
-- Name: st_assvg(geography); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_assvg(geography) RETURNS text | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'geography_as_svg'; | |
ALTER FUNCTION public.st_assvg(geography) OWNER TO postgres; | |
-- | |
-- TOC entry 465 (class 1255 OID 18819) | |
-- Dependencies: 6 | |
-- Name: st_assvg(text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_assvg(text) RETURNS text | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ SELECT ST_AsSVG($1::geometry); $_$; | |
ALTER FUNCTION public.st_assvg(text) OWNER TO postgres; | |
-- | |
-- TOC entry 460 (class 1255 OID 18814) | |
-- Dependencies: 6 1102 | |
-- Name: st_assvg(geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_assvg(geometry, integer) RETURNS text | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'assvg_geometry'; | |
ALTER FUNCTION public.st_assvg(geometry, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 463 (class 1255 OID 18817) | |
-- Dependencies: 6 1099 | |
-- Name: st_assvg(geography, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_assvg(geography, integer) RETURNS text | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'geography_as_svg'; | |
ALTER FUNCTION public.st_assvg(geography, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 459 (class 1255 OID 18813) | |
-- Dependencies: 6 1102 | |
-- Name: st_assvg(geometry, integer, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_assvg(geometry, integer, integer) RETURNS text | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'assvg_geometry'; | |
ALTER FUNCTION public.st_assvg(geometry, integer, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 462 (class 1255 OID 18816) | |
-- Dependencies: 6 1099 | |
-- Name: st_assvg(geography, integer, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_assvg(geography, integer, integer) RETURNS text | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'geography_as_svg'; | |
ALTER FUNCTION public.st_assvg(geography, integer, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 466 (class 1255 OID 18820) | |
-- Dependencies: 6 1102 | |
-- Name: st_astext(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_astext(geometry) RETURNS text | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_asText'; | |
ALTER FUNCTION public.st_astext(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 467 (class 1255 OID 18821) | |
-- Dependencies: 6 1099 | |
-- Name: st_astext(geography); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_astext(geography) RETURNS text | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'geography_as_text'; | |
ALTER FUNCTION public.st_astext(geography) OWNER TO postgres; | |
-- | |
-- TOC entry 468 (class 1255 OID 18822) | |
-- Dependencies: 6 | |
-- Name: st_astext(text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_astext(text) RETURNS text | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ SELECT ST_AsText($1::geometry); $_$; | |
ALTER FUNCTION public.st_astext(text) OWNER TO postgres; | |
-- | |
-- TOC entry 469 (class 1255 OID 18823) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_azimuth(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_azimuth(geometry, geometry) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_azimuth'; | |
ALTER FUNCTION public.st_azimuth(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 470 (class 1255 OID 18824) | |
-- Dependencies: 6 1168 1102 | |
-- Name: st_bdmpolyfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_bdmpolyfromtext(text, integer) RETURNS geometry | |
LANGUAGE plpgsql IMMUTABLE STRICT | |
AS $_$ | |
DECLARE | |
geomtext alias for $1; | |
srid alias for $2; | |
mline geometry; | |
geom geometry; | |
BEGIN | |
mline := ST_MultiLineStringFromText(geomtext, srid); | |
IF mline IS NULL | |
THEN | |
RAISE EXCEPTION 'Input is not a MultiLinestring'; | |
END IF; | |
geom := multi(ST_BuildArea(mline)); | |
RETURN geom; | |
END; | |
$_$; | |
ALTER FUNCTION public.st_bdmpolyfromtext(text, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 471 (class 1255 OID 18825) | |
-- Dependencies: 6 1168 1102 | |
-- Name: st_bdpolyfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_bdpolyfromtext(text, integer) RETURNS geometry | |
LANGUAGE plpgsql IMMUTABLE STRICT | |
AS $_$ | |
DECLARE | |
geomtext alias for $1; | |
srid alias for $2; | |
mline geometry; | |
geom geometry; | |
BEGIN | |
mline := ST_MultiLineStringFromText(geomtext, srid); | |
IF mline IS NULL | |
THEN | |
RAISE EXCEPTION 'Input is not a MultiLinestring'; | |
END IF; | |
geom := ST_BuildArea(mline); | |
IF GeometryType(geom) != 'POLYGON' | |
THEN | |
RAISE EXCEPTION 'Input returns more then a single polygon, try using BdMPolyFromText instead'; | |
END IF; | |
RETURN geom; | |
END; | |
$_$; | |
ALTER FUNCTION public.st_bdpolyfromtext(text, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 472 (class 1255 OID 18826) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_boundary(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_boundary(geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'boundary'; | |
ALTER FUNCTION public.st_boundary(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 473 (class 1255 OID 18827) | |
-- Dependencies: 6 1102 | |
-- Name: st_box(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_box(geometry) RETURNS box | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_to_BOX'; | |
ALTER FUNCTION public.st_box(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 474 (class 1255 OID 18828) | |
-- Dependencies: 6 1090 | |
-- Name: st_box(box3d); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_box(box3d) RETURNS box | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'BOX3D_to_BOX'; | |
ALTER FUNCTION public.st_box(box3d) OWNER TO postgres; | |
-- | |
-- TOC entry 475 (class 1255 OID 18829) | |
-- Dependencies: 6 1087 1102 | |
-- Name: st_box2d(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_box2d(geometry) RETURNS box2d | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_to_BOX2DFLOAT4'; | |
ALTER FUNCTION public.st_box2d(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 476 (class 1255 OID 18830) | |
-- Dependencies: 6 1087 1090 | |
-- Name: st_box2d(box3d); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_box2d(box3d) RETURNS box2d | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'BOX3D_to_BOX2DFLOAT4'; | |
ALTER FUNCTION public.st_box2d(box3d) OWNER TO postgres; | |
-- | |
-- TOC entry 477 (class 1255 OID 18831) | |
-- Dependencies: 6 1087 1093 | |
-- Name: st_box2d(box3d_extent); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_box2d(box3d_extent) RETURNS box2d | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'BOX3D_to_BOX2DFLOAT4'; | |
ALTER FUNCTION public.st_box2d(box3d_extent) OWNER TO postgres; | |
-- | |
-- TOC entry 478 (class 1255 OID 18832) | |
-- Dependencies: 6 1087 | |
-- Name: st_box2d_in(cstring); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_box2d_in(cstring) RETURNS box2d | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'BOX2DFLOAT4_in'; | |
ALTER FUNCTION public.st_box2d_in(cstring) OWNER TO postgres; | |
-- | |
-- TOC entry 479 (class 1255 OID 18833) | |
-- Dependencies: 6 1087 | |
-- Name: st_box2d_out(box2d); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_box2d_out(box2d) RETURNS cstring | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'BOX2DFLOAT4_out'; | |
ALTER FUNCTION public.st_box2d_out(box2d) OWNER TO postgres; | |
-- | |
-- TOC entry 480 (class 1255 OID 18834) | |
-- Dependencies: 6 1090 1102 | |
-- Name: st_box3d(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_box3d(geometry) RETURNS box3d | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_to_BOX3D'; | |
ALTER FUNCTION public.st_box3d(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 481 (class 1255 OID 18835) | |
-- Dependencies: 6 1090 1087 | |
-- Name: st_box3d(box2d); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_box3d(box2d) RETURNS box3d | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'BOX2DFLOAT4_to_BOX3D'; | |
ALTER FUNCTION public.st_box3d(box2d) OWNER TO postgres; | |
-- | |
-- TOC entry 482 (class 1255 OID 18836) | |
-- Dependencies: 6 1090 1093 | |
-- Name: st_box3d_extent(box3d_extent); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_box3d_extent(box3d_extent) RETURNS box3d | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'BOX3D_extent_to_BOX3D'; | |
ALTER FUNCTION public.st_box3d_extent(box3d_extent) OWNER TO postgres; | |
-- | |
-- TOC entry 483 (class 1255 OID 18837) | |
-- Dependencies: 6 1090 | |
-- Name: st_box3d_in(cstring); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_box3d_in(cstring) RETURNS box3d | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'BOX3D_in'; | |
ALTER FUNCTION public.st_box3d_in(cstring) OWNER TO postgres; | |
-- | |
-- TOC entry 484 (class 1255 OID 18838) | |
-- Dependencies: 6 1090 | |
-- Name: st_box3d_out(box3d); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_box3d_out(box3d) RETURNS cstring | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'BOX3D_out'; | |
ALTER FUNCTION public.st_box3d_out(box3d) OWNER TO postgres; | |
-- | |
-- TOC entry 485 (class 1255 OID 18839) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_buffer(geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_buffer(geometry, double precision) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT COST 100 | |
AS '$libdir/postgis-1.5', 'buffer'; | |
ALTER FUNCTION public.st_buffer(geometry, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 488 (class 1255 OID 18842) | |
-- Dependencies: 6 1099 1099 | |
-- Name: st_buffer(geography, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_buffer(geography, double precision) RETURNS geography | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT geography(ST_Transform(ST_Buffer(ST_Transform(geometry($1), _ST_BestSRID($1)), $2), 4326))$_$; | |
ALTER FUNCTION public.st_buffer(geography, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 489 (class 1255 OID 18843) | |
-- Dependencies: 6 1102 | |
-- Name: st_buffer(text, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_buffer(text, double precision) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ SELECT ST_Buffer($1::geometry, $2); $_$; | |
ALTER FUNCTION public.st_buffer(text, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 486 (class 1255 OID 18840) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_buffer(geometry, double precision, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_buffer(geometry, double precision, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ SELECT _ST_Buffer($1, $2, | |
CAST('quad_segs='||CAST($3 AS text) as cstring)) | |
$_$; | |
ALTER FUNCTION public.st_buffer(geometry, double precision, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 487 (class 1255 OID 18841) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_buffer(geometry, double precision, text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_buffer(geometry, double precision, text) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ SELECT _ST_Buffer($1, $2, | |
CAST( regexp_replace($3, '^[0123456789]+$', | |
'quad_segs='||$3) AS cstring) | |
) | |
$_$; | |
ALTER FUNCTION public.st_buffer(geometry, double precision, text) OWNER TO postgres; | |
-- | |
-- TOC entry 490 (class 1255 OID 18844) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_buildarea(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_buildarea(geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT COST 100 | |
AS '$libdir/postgis-1.5', 'LWGEOM_buildarea'; | |
ALTER FUNCTION public.st_buildarea(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 491 (class 1255 OID 18845) | |
-- Dependencies: 6 1102 | |
-- Name: st_bytea(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_bytea(geometry) RETURNS bytea | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_to_bytea'; | |
ALTER FUNCTION public.st_bytea(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 492 (class 1255 OID 18846) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_centroid(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_centroid(geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'centroid'; | |
ALTER FUNCTION public.st_centroid(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 493 (class 1255 OID 18847) | |
-- Dependencies: 6 1096 | |
-- Name: st_chip_in(cstring); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_chip_in(cstring) RETURNS chip | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'CHIP_in'; | |
ALTER FUNCTION public.st_chip_in(cstring) OWNER TO postgres; | |
-- | |
-- TOC entry 494 (class 1255 OID 18848) | |
-- Dependencies: 6 1096 | |
-- Name: st_chip_out(chip); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_chip_out(chip) RETURNS cstring | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'CHIP_out'; | |
ALTER FUNCTION public.st_chip_out(chip) OWNER TO postgres; | |
-- | |
-- TOC entry 495 (class 1255 OID 18849) | |
-- Dependencies: 6 1102 1102 1102 | |
-- Name: st_closestpoint(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_closestpoint(geometry, geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_closestpoint'; | |
ALTER FUNCTION public.st_closestpoint(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 497 (class 1255 OID 18851) | |
-- Dependencies: 6 1102 1104 | |
-- Name: st_collect(geometry[]); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_collect(geometry[]) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_collect_garray'; | |
ALTER FUNCTION public.st_collect(geometry[]) OWNER TO postgres; | |
-- | |
-- TOC entry 496 (class 1255 OID 18850) | |
-- Dependencies: 6 1102 1102 1102 | |
-- Name: st_collect(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_collect(geometry, geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE | |
AS '$libdir/postgis-1.5', 'LWGEOM_collect'; | |
ALTER FUNCTION public.st_collect(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 498 (class 1255 OID 18852) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_collectionextract(geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_collectionextract(geometry, integer) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'ST_CollectionExtract'; | |
ALTER FUNCTION public.st_collectionextract(geometry, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 499 (class 1255 OID 18853) | |
-- Dependencies: 6 1087 1087 1102 | |
-- Name: st_combine_bbox(box2d, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_combine_bbox(box2d, geometry) RETURNS box2d | |
LANGUAGE c IMMUTABLE | |
AS '$libdir/postgis-1.5', 'BOX2DFLOAT4_combine'; | |
ALTER FUNCTION public.st_combine_bbox(box2d, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 500 (class 1255 OID 18854) | |
-- Dependencies: 6 1093 1093 1102 | |
-- Name: st_combine_bbox(box3d_extent, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_combine_bbox(box3d_extent, geometry) RETURNS box3d_extent | |
LANGUAGE c IMMUTABLE | |
AS '$libdir/postgis-1.5', 'BOX3D_combine'; | |
ALTER FUNCTION public.st_combine_bbox(box3d_extent, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 501 (class 1255 OID 18855) | |
-- Dependencies: 6 1090 1090 1102 | |
-- Name: st_combine_bbox(box3d, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_combine_bbox(box3d, geometry) RETURNS box3d | |
LANGUAGE c IMMUTABLE | |
AS '$libdir/postgis-1.5', 'BOX3D_combine'; | |
ALTER FUNCTION public.st_combine_bbox(box3d, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 502 (class 1255 OID 18856) | |
-- Dependencies: 6 1096 | |
-- Name: st_compression(chip); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_compression(chip) RETURNS integer | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'CHIP_getCompression'; | |
ALTER FUNCTION public.st_compression(chip) OWNER TO postgres; | |
-- | |
-- TOC entry 503 (class 1255 OID 18857) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_contains(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_contains(geometry, geometry) RETURNS boolean | |
LANGUAGE sql IMMUTABLE | |
AS $_$SELECT $1 && $2 AND _ST_Contains($1,$2)$_$; | |
ALTER FUNCTION public.st_contains(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 504 (class 1255 OID 18858) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_containsproperly(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_containsproperly(geometry, geometry) RETURNS boolean | |
LANGUAGE sql IMMUTABLE | |
AS $_$SELECT $1 && $2 AND _ST_ContainsProperly($1,$2)$_$; | |
ALTER FUNCTION public.st_containsproperly(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 505 (class 1255 OID 18859) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_convexhull(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_convexhull(geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT COST 100 | |
AS '$libdir/postgis-1.5', 'convexhull'; | |
ALTER FUNCTION public.st_convexhull(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 506 (class 1255 OID 18860) | |
-- Dependencies: 6 1102 | |
-- Name: st_coorddim(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_coorddim(geometry) RETURNS smallint | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_ndims'; | |
ALTER FUNCTION public.st_coorddim(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 507 (class 1255 OID 18861) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_coveredby(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_coveredby(geometry, geometry) RETURNS boolean | |
LANGUAGE sql IMMUTABLE | |
AS $_$SELECT $1 && $2 AND _ST_CoveredBy($1,$2)$_$; | |
ALTER FUNCTION public.st_coveredby(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 508 (class 1255 OID 18862) | |
-- Dependencies: 6 1099 1099 | |
-- Name: st_coveredby(geography, geography); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_coveredby(geography, geography) RETURNS boolean | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT $1 && $2 AND _ST_Covers($2, $1)$_$; | |
ALTER FUNCTION public.st_coveredby(geography, geography) OWNER TO postgres; | |
-- | |
-- TOC entry 509 (class 1255 OID 18863) | |
-- Dependencies: 6 | |
-- Name: st_coveredby(text, text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_coveredby(text, text) RETURNS boolean | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ SELECT ST_CoveredBy($1::geometry, $2::geometry); $_$; | |
ALTER FUNCTION public.st_coveredby(text, text) OWNER TO postgres; | |
-- | |
-- TOC entry 510 (class 1255 OID 18864) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_covers(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_covers(geometry, geometry) RETURNS boolean | |
LANGUAGE sql IMMUTABLE | |
AS $_$SELECT $1 && $2 AND _ST_Covers($1,$2)$_$; | |
ALTER FUNCTION public.st_covers(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 511 (class 1255 OID 18865) | |
-- Dependencies: 6 1099 1099 | |
-- Name: st_covers(geography, geography); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_covers(geography, geography) RETURNS boolean | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT $1 && $2 AND _ST_Covers($1, $2)$_$; | |
ALTER FUNCTION public.st_covers(geography, geography) OWNER TO postgres; | |
-- | |
-- TOC entry 512 (class 1255 OID 18866) | |
-- Dependencies: 6 | |
-- Name: st_covers(text, text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_covers(text, text) RETURNS boolean | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ SELECT ST_Covers($1::geometry, $2::geometry); $_$; | |
ALTER FUNCTION public.st_covers(text, text) OWNER TO postgres; | |
-- | |
-- TOC entry 513 (class 1255 OID 18867) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_crosses(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_crosses(geometry, geometry) RETURNS boolean | |
LANGUAGE sql IMMUTABLE | |
AS $_$SELECT $1 && $2 AND _ST_Crosses($1,$2)$_$; | |
ALTER FUNCTION public.st_crosses(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 515 (class 1255 OID 18869) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_curvetoline(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_curvetoline(geometry) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT ST_CurveToLine($1, 32)$_$; | |
ALTER FUNCTION public.st_curvetoline(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 514 (class 1255 OID 18868) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_curvetoline(geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_curvetoline(geometry, integer) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_curve_segmentize'; | |
ALTER FUNCTION public.st_curvetoline(geometry, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 516 (class 1255 OID 18870) | |
-- Dependencies: 6 1096 | |
-- Name: st_datatype(chip); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_datatype(chip) RETURNS integer | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'CHIP_getDatatype'; | |
ALTER FUNCTION public.st_datatype(chip) OWNER TO postgres; | |
-- | |
-- TOC entry 517 (class 1255 OID 18871) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_dfullywithin(geometry, geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_dfullywithin(geometry, geometry, double precision) RETURNS boolean | |
LANGUAGE sql IMMUTABLE | |
AS $_$SELECT $1 && ST_Expand($2,$3) AND $2 && ST_Expand($1,$3) AND _ST_DFullyWithin(ST_ConvexHull($1), ST_ConvexHull($2), $3)$_$; | |
ALTER FUNCTION public.st_dfullywithin(geometry, geometry, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 518 (class 1255 OID 18872) | |
-- Dependencies: 6 1102 1102 1102 | |
-- Name: st_difference(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_difference(geometry, geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'difference'; | |
ALTER FUNCTION public.st_difference(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 519 (class 1255 OID 18873) | |
-- Dependencies: 6 1102 | |
-- Name: st_dimension(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_dimension(geometry) RETURNS integer | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_dimension'; | |
ALTER FUNCTION public.st_dimension(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 520 (class 1255 OID 18874) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_disjoint(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_disjoint(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'disjoint'; | |
ALTER FUNCTION public.st_disjoint(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 521 (class 1255 OID 18875) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_distance(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_distance(geometry, geometry) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT COST 100 | |
AS '$libdir/postgis-1.5', 'LWGEOM_mindistance2d'; | |
ALTER FUNCTION public.st_distance(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 523 (class 1255 OID 18877) | |
-- Dependencies: 6 1099 1099 | |
-- Name: st_distance(geography, geography); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_distance(geography, geography) RETURNS double precision | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT _ST_Distance($1, $2, 0.0, true)$_$; | |
ALTER FUNCTION public.st_distance(geography, geography) OWNER TO postgres; | |
-- | |
-- TOC entry 524 (class 1255 OID 18878) | |
-- Dependencies: 6 | |
-- Name: st_distance(text, text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_distance(text, text) RETURNS double precision | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ SELECT ST_Distance($1::geometry, $2::geometry); $_$; | |
ALTER FUNCTION public.st_distance(text, text) OWNER TO postgres; | |
-- | |
-- TOC entry 522 (class 1255 OID 18876) | |
-- Dependencies: 6 1099 1099 | |
-- Name: st_distance(geography, geography, boolean); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_distance(geography, geography, boolean) RETURNS double precision | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT _ST_Distance($1, $2, 0.0, $3)$_$; | |
ALTER FUNCTION public.st_distance(geography, geography, boolean) OWNER TO postgres; | |
-- | |
-- TOC entry 525 (class 1255 OID 18879) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_distance_sphere(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_distance_sphere(geometry, geometry) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT COST 100 | |
AS '$libdir/postgis-1.5', 'LWGEOM_distance_sphere'; | |
ALTER FUNCTION public.st_distance_sphere(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 526 (class 1255 OID 18880) | |
-- Dependencies: 6 1102 1102 1113 | |
-- Name: st_distance_spheroid(geometry, geometry, spheroid); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_distance_spheroid(geometry, geometry, spheroid) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT COST 100 | |
AS '$libdir/postgis-1.5', 'LWGEOM_distance_ellipsoid'; | |
ALTER FUNCTION public.st_distance_spheroid(geometry, geometry, spheroid) OWNER TO postgres; | |
-- | |
-- TOC entry 527 (class 1255 OID 18881) | |
-- Dependencies: 6 1105 1102 | |
-- Name: st_dump(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_dump(geometry) RETURNS SETOF geometry_dump | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_dump'; | |
ALTER FUNCTION public.st_dump(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 528 (class 1255 OID 18882) | |
-- Dependencies: 6 1105 1102 | |
-- Name: st_dumppoints(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_dumppoints(geometry) RETURNS SETOF geometry_dump | |
LANGUAGE sql | |
AS $_$ | |
SELECT * FROM _ST_DumpPoints($1, NULL); | |
$_$; | |
ALTER FUNCTION public.st_dumppoints(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 529 (class 1255 OID 18883) | |
-- Dependencies: 6 1105 1102 | |
-- Name: st_dumprings(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_dumprings(geometry) RETURNS SETOF geometry_dump | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_dump_rings'; | |
ALTER FUNCTION public.st_dumprings(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 530 (class 1255 OID 18884) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_dwithin(geometry, geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_dwithin(geometry, geometry, double precision) RETURNS boolean | |
LANGUAGE sql IMMUTABLE | |
AS $_$SELECT $1 && ST_Expand($2,$3) AND $2 && ST_Expand($1,$3) AND _ST_DWithin($1, $2, $3)$_$; | |
ALTER FUNCTION public.st_dwithin(geometry, geometry, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 532 (class 1255 OID 18886) | |
-- Dependencies: 6 1099 1099 | |
-- Name: st_dwithin(geography, geography, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_dwithin(geography, geography, double precision) RETURNS boolean | |
LANGUAGE sql IMMUTABLE | |
AS $_$SELECT $1 && _ST_Expand($2,$3) AND $2 && _ST_Expand($1,$3) AND _ST_DWithin($1, $2, $3, true)$_$; | |
ALTER FUNCTION public.st_dwithin(geography, geography, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 533 (class 1255 OID 18887) | |
-- Dependencies: 6 | |
-- Name: st_dwithin(text, text, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_dwithin(text, text, double precision) RETURNS boolean | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ SELECT ST_DWithin($1::geometry, $2::geometry, $3); $_$; | |
ALTER FUNCTION public.st_dwithin(text, text, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 531 (class 1255 OID 18885) | |
-- Dependencies: 6 1099 1099 | |
-- Name: st_dwithin(geography, geography, double precision, boolean); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_dwithin(geography, geography, double precision, boolean) RETURNS boolean | |
LANGUAGE sql IMMUTABLE | |
AS $_$SELECT $1 && _ST_Expand($2,$3) AND $2 && _ST_Expand($1,$3) AND _ST_DWithin($1, $2, $3, $4)$_$; | |
ALTER FUNCTION public.st_dwithin(geography, geography, double precision, boolean) OWNER TO postgres; | |
-- | |
-- TOC entry 534 (class 1255 OID 18888) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_endpoint(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_endpoint(geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_endpoint_linestring'; | |
ALTER FUNCTION public.st_endpoint(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 535 (class 1255 OID 18889) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_envelope(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_envelope(geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_envelope'; | |
ALTER FUNCTION public.st_envelope(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 536 (class 1255 OID 18890) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_equals(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_equals(geometry, geometry) RETURNS boolean | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT $1 && $2 AND _ST_Equals($1,$2)$_$; | |
ALTER FUNCTION public.st_equals(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 538 (class 1255 OID 18892) | |
-- Dependencies: 1087 6 | |
-- Name: st_estimated_extent(text, text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_estimated_extent(text, text) RETURNS box2d | |
LANGUAGE c IMMUTABLE STRICT SECURITY DEFINER | |
AS '$libdir/postgis-1.5', 'LWGEOM_estimated_extent'; | |
ALTER FUNCTION public.st_estimated_extent(text, text) OWNER TO postgres; | |
-- | |
-- TOC entry 537 (class 1255 OID 18891) | |
-- Dependencies: 6 1087 | |
-- Name: st_estimated_extent(text, text, text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_estimated_extent(text, text, text) RETURNS box2d | |
LANGUAGE c IMMUTABLE STRICT SECURITY DEFINER | |
AS '$libdir/postgis-1.5', 'LWGEOM_estimated_extent'; | |
ALTER FUNCTION public.st_estimated_extent(text, text, text) OWNER TO postgres; | |
-- | |
-- TOC entry 539 (class 1255 OID 18893) | |
-- Dependencies: 6 1090 1090 | |
-- Name: st_expand(box3d, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_expand(box3d, double precision) RETURNS box3d | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'BOX3D_expand'; | |
ALTER FUNCTION public.st_expand(box3d, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 540 (class 1255 OID 18896) | |
-- Dependencies: 1087 1087 6 | |
-- Name: st_expand(box2d, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_expand(box2d, double precision) RETURNS box2d | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'BOX2DFLOAT4_expand'; | |
ALTER FUNCTION public.st_expand(box2d, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 541 (class 1255 OID 18897) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_expand(geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_expand(geometry, double precision) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_expand'; | |
ALTER FUNCTION public.st_expand(geometry, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 542 (class 1255 OID 18898) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_exteriorring(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_exteriorring(geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_exteriorring_polygon'; | |
ALTER FUNCTION public.st_exteriorring(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 543 (class 1255 OID 18899) | |
-- Dependencies: 6 1096 | |
-- Name: st_factor(chip); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_factor(chip) RETURNS real | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'CHIP_getFactor'; | |
ALTER FUNCTION public.st_factor(chip) OWNER TO postgres; | |
-- | |
-- TOC entry 545 (class 1255 OID 18901) | |
-- Dependencies: 1087 1168 6 | |
-- Name: st_find_extent(text, text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_find_extent(text, text) RETURNS box2d | |
LANGUAGE plpgsql IMMUTABLE STRICT | |
AS $_$ | |
DECLARE | |
tablename alias for $1; | |
columnname alias for $2; | |
myrec RECORD; | |
BEGIN | |
FOR myrec IN EXECUTE 'SELECT extent("' || columnname || '") FROM "' || tablename || '"' LOOP | |
return myrec.extent; | |
END LOOP; | |
END; | |
$_$; | |
ALTER FUNCTION public.st_find_extent(text, text) OWNER TO postgres; | |
-- | |
-- TOC entry 544 (class 1255 OID 18900) | |
-- Dependencies: 1168 6 1087 | |
-- Name: st_find_extent(text, text, text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_find_extent(text, text, text) RETURNS box2d | |
LANGUAGE plpgsql IMMUTABLE STRICT | |
AS $_$ | |
DECLARE | |
schemaname alias for $1; | |
tablename alias for $2; | |
columnname alias for $3; | |
myrec RECORD; | |
BEGIN | |
FOR myrec IN EXECUTE 'SELECT extent("' || columnname || '") FROM "' || schemaname || '"."' || tablename || '"' LOOP | |
return myrec.extent; | |
END LOOP; | |
END; | |
$_$; | |
ALTER FUNCTION public.st_find_extent(text, text, text) OWNER TO postgres; | |
-- | |
-- TOC entry 546 (class 1255 OID 18902) | |
-- Dependencies: 1102 1102 6 | |
-- Name: st_force_2d(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_force_2d(geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_force_2d'; | |
ALTER FUNCTION public.st_force_2d(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 547 (class 1255 OID 18903) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_force_3d(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_force_3d(geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_force_3dz'; | |
ALTER FUNCTION public.st_force_3d(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 548 (class 1255 OID 18904) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_force_3dm(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_force_3dm(geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_force_3dm'; | |
ALTER FUNCTION public.st_force_3dm(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 549 (class 1255 OID 18905) | |
-- Dependencies: 1102 6 1102 | |
-- Name: st_force_3dz(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_force_3dz(geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_force_3dz'; | |
ALTER FUNCTION public.st_force_3dz(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 550 (class 1255 OID 18906) | |
-- Dependencies: 1102 1102 6 | |
-- Name: st_force_4d(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_force_4d(geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_force_4d'; | |
ALTER FUNCTION public.st_force_4d(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 551 (class 1255 OID 18907) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_force_collection(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_force_collection(geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_force_collection'; | |
ALTER FUNCTION public.st_force_collection(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 552 (class 1255 OID 18908) | |
-- Dependencies: 1102 1102 6 | |
-- Name: st_forcerhr(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_forcerhr(geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_forceRHR_poly'; | |
ALTER FUNCTION public.st_forcerhr(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 553 (class 1255 OID 18909) | |
-- Dependencies: 1099 6 | |
-- Name: st_geogfromtext(text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_geogfromtext(text) RETURNS geography | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'geography_from_text'; | |
ALTER FUNCTION public.st_geogfromtext(text) OWNER TO postgres; | |
-- | |
-- TOC entry 554 (class 1255 OID 18910) | |
-- Dependencies: 1099 6 | |
-- Name: st_geogfromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_geogfromwkb(bytea) RETURNS geography | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'geography_from_binary'; | |
ALTER FUNCTION public.st_geogfromwkb(bytea) OWNER TO postgres; | |
-- | |
-- TOC entry 555 (class 1255 OID 18911) | |
-- Dependencies: 6 1099 | |
-- Name: st_geographyfromtext(text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_geographyfromtext(text) RETURNS geography | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'geography_from_text'; | |
ALTER FUNCTION public.st_geographyfromtext(text) OWNER TO postgres; | |
-- | |
-- TOC entry 557 (class 1255 OID 18913) | |
-- Dependencies: 6 1102 | |
-- Name: st_geohash(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_geohash(geometry) RETURNS text | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT ST_GeoHash($1, 0)$_$; | |
ALTER FUNCTION public.st_geohash(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 556 (class 1255 OID 18912) | |
-- Dependencies: 1102 6 | |
-- Name: st_geohash(geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_geohash(geometry, integer) RETURNS text | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'ST_GeoHash'; | |
ALTER FUNCTION public.st_geohash(geometry, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 559 (class 1255 OID 18915) | |
-- Dependencies: 6 1102 | |
-- Name: st_geomcollfromtext(text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_geomcollfromtext(text) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE | |
WHEN geometrytype(ST_GeomFromText($1)) = 'GEOMETRYCOLLECTION' | |
THEN ST_GeomFromText($1) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.st_geomcollfromtext(text) OWNER TO postgres; | |
-- | |
-- TOC entry 558 (class 1255 OID 18914) | |
-- Dependencies: 1102 6 | |
-- Name: st_geomcollfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_geomcollfromtext(text, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE | |
WHEN geometrytype(ST_GeomFromText($1, $2)) = 'GEOMETRYCOLLECTION' | |
THEN ST_GeomFromText($1,$2) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.st_geomcollfromtext(text, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 561 (class 1255 OID 18917) | |
-- Dependencies: 6 1102 | |
-- Name: st_geomcollfromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_geomcollfromwkb(bytea) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE | |
WHEN geometrytype(ST_GeomFromWKB($1)) = 'GEOMETRYCOLLECTION' | |
THEN ST_GeomFromWKB($1) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.st_geomcollfromwkb(bytea) OWNER TO postgres; | |
-- | |
-- TOC entry 560 (class 1255 OID 18916) | |
-- Dependencies: 6 1102 | |
-- Name: st_geomcollfromwkb(bytea, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_geomcollfromwkb(bytea, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE | |
WHEN geometrytype(GeomFromWKB($1, $2)) = 'GEOMETRYCOLLECTION' | |
THEN GeomFromWKB($1, $2) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.st_geomcollfromwkb(bytea, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 562 (class 1255 OID 18918) | |
-- Dependencies: 1087 6 1102 | |
-- Name: st_geometry(box2d); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_geometry(box2d) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'BOX2DFLOAT4_to_LWGEOM'; | |
ALTER FUNCTION public.st_geometry(box2d) OWNER TO postgres; | |
-- | |
-- TOC entry 563 (class 1255 OID 18919) | |
-- Dependencies: 6 1102 1090 | |
-- Name: st_geometry(box3d); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_geometry(box3d) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'BOX3D_to_LWGEOM'; | |
ALTER FUNCTION public.st_geometry(box3d) OWNER TO postgres; | |
-- | |
-- TOC entry 564 (class 1255 OID 18920) | |
-- Dependencies: 6 1102 | |
-- Name: st_geometry(text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_geometry(text) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'parse_WKT_lwgeom'; | |
ALTER FUNCTION public.st_geometry(text) OWNER TO postgres; | |
-- | |
-- TOC entry 565 (class 1255 OID 18921) | |
-- Dependencies: 1102 1096 6 | |
-- Name: st_geometry(chip); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_geometry(chip) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'CHIP_to_LWGEOM'; | |
ALTER FUNCTION public.st_geometry(chip) OWNER TO postgres; | |
-- | |
-- TOC entry 566 (class 1255 OID 18922) | |
-- Dependencies: 6 1102 | |
-- Name: st_geometry(bytea); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_geometry(bytea) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_from_bytea'; | |
ALTER FUNCTION public.st_geometry(bytea) OWNER TO postgres; | |
-- | |
-- TOC entry 567 (class 1255 OID 18923) | |
-- Dependencies: 6 1093 1102 | |
-- Name: st_geometry(box3d_extent); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_geometry(box3d_extent) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'BOX3D_to_LWGEOM'; | |
ALTER FUNCTION public.st_geometry(box3d_extent) OWNER TO postgres; | |
-- | |
-- TOC entry 568 (class 1255 OID 18924) | |
-- Dependencies: 1102 1102 6 | |
-- Name: st_geometry_above(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_geometry_above(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_above'; | |
ALTER FUNCTION public.st_geometry_above(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 569 (class 1255 OID 18925) | |
-- Dependencies: 6 | |
-- Name: st_geometry_analyze(internal); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_geometry_analyze(internal) RETURNS boolean | |
LANGUAGE c STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_analyze'; | |
ALTER FUNCTION public.st_geometry_analyze(internal) OWNER TO postgres; | |
-- | |
-- TOC entry 570 (class 1255 OID 18926) | |
-- Dependencies: 1102 1102 6 | |
-- Name: st_geometry_below(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_geometry_below(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_below'; | |
ALTER FUNCTION public.st_geometry_below(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 571 (class 1255 OID 18927) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_geometry_cmp(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_geometry_cmp(geometry, geometry) RETURNS integer | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'lwgeom_cmp'; | |
ALTER FUNCTION public.st_geometry_cmp(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 572 (class 1255 OID 18928) | |
-- Dependencies: 1102 6 1102 | |
-- Name: st_geometry_contain(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_geometry_contain(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_contain'; | |
ALTER FUNCTION public.st_geometry_contain(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 573 (class 1255 OID 18929) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_geometry_contained(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_geometry_contained(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_contained'; | |
ALTER FUNCTION public.st_geometry_contained(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 574 (class 1255 OID 18930) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_geometry_eq(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_geometry_eq(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'lwgeom_eq'; | |
ALTER FUNCTION public.st_geometry_eq(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 575 (class 1255 OID 18931) | |
-- Dependencies: 1102 6 1102 | |
-- Name: st_geometry_ge(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_geometry_ge(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'lwgeom_ge'; | |
ALTER FUNCTION public.st_geometry_ge(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 576 (class 1255 OID 18932) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_geometry_gt(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_geometry_gt(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'lwgeom_gt'; | |
ALTER FUNCTION public.st_geometry_gt(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 577 (class 1255 OID 18933) | |
-- Dependencies: 6 1102 | |
-- Name: st_geometry_in(cstring); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_geometry_in(cstring) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_in'; | |
ALTER FUNCTION public.st_geometry_in(cstring) OWNER TO postgres; | |
-- | |
-- TOC entry 578 (class 1255 OID 18934) | |
-- Dependencies: 1102 6 1102 | |
-- Name: st_geometry_le(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_geometry_le(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'lwgeom_le'; | |
ALTER FUNCTION public.st_geometry_le(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 579 (class 1255 OID 18935) | |
-- Dependencies: 1102 1102 6 | |
-- Name: st_geometry_left(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_geometry_left(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_left'; | |
ALTER FUNCTION public.st_geometry_left(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 580 (class 1255 OID 18936) | |
-- Dependencies: 1102 6 1102 | |
-- Name: st_geometry_lt(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_geometry_lt(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'lwgeom_lt'; | |
ALTER FUNCTION public.st_geometry_lt(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 581 (class 1255 OID 18937) | |
-- Dependencies: 1102 6 | |
-- Name: st_geometry_out(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_geometry_out(geometry) RETURNS cstring | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_out'; | |
ALTER FUNCTION public.st_geometry_out(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 582 (class 1255 OID 18938) | |
-- Dependencies: 1102 1102 6 | |
-- Name: st_geometry_overabove(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_geometry_overabove(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_overabove'; | |
ALTER FUNCTION public.st_geometry_overabove(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 583 (class 1255 OID 18939) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_geometry_overbelow(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_geometry_overbelow(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_overbelow'; | |
ALTER FUNCTION public.st_geometry_overbelow(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 584 (class 1255 OID 18940) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_geometry_overlap(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_geometry_overlap(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_overlap'; | |
ALTER FUNCTION public.st_geometry_overlap(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 585 (class 1255 OID 18941) | |
-- Dependencies: 1102 6 1102 | |
-- Name: st_geometry_overleft(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_geometry_overleft(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_overleft'; | |
ALTER FUNCTION public.st_geometry_overleft(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 586 (class 1255 OID 18942) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_geometry_overright(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_geometry_overright(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_overright'; | |
ALTER FUNCTION public.st_geometry_overright(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 587 (class 1255 OID 18943) | |
-- Dependencies: 1102 6 | |
-- Name: st_geometry_recv(internal); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_geometry_recv(internal) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_recv'; | |
ALTER FUNCTION public.st_geometry_recv(internal) OWNER TO postgres; | |
-- | |
-- TOC entry 588 (class 1255 OID 18944) | |
-- Dependencies: 1102 6 1102 | |
-- Name: st_geometry_right(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_geometry_right(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_right'; | |
ALTER FUNCTION public.st_geometry_right(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 589 (class 1255 OID 18945) | |
-- Dependencies: 1102 6 1102 | |
-- Name: st_geometry_same(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_geometry_same(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_samebox'; | |
ALTER FUNCTION public.st_geometry_same(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 590 (class 1255 OID 18946) | |
-- Dependencies: 6 1102 | |
-- Name: st_geometry_send(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_geometry_send(geometry) RETURNS bytea | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_send'; | |
ALTER FUNCTION public.st_geometry_send(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 591 (class 1255 OID 18947) | |
-- Dependencies: 1102 6 | |
-- Name: st_geometryfromtext(text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_geometryfromtext(text) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_from_text'; | |
ALTER FUNCTION public.st_geometryfromtext(text) OWNER TO postgres; | |
-- | |
-- TOC entry 592 (class 1255 OID 18948) | |
-- Dependencies: 1102 6 | |
-- Name: st_geometryfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_geometryfromtext(text, integer) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_from_text'; | |
ALTER FUNCTION public.st_geometryfromtext(text, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 593 (class 1255 OID 18949) | |
-- Dependencies: 1102 6 1102 | |
-- Name: st_geometryn(geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_geometryn(geometry, integer) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_geometryn_collection'; | |
ALTER FUNCTION public.st_geometryn(geometry, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 594 (class 1255 OID 18950) | |
-- Dependencies: 6 1102 | |
-- Name: st_geometrytype(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_geometrytype(geometry) RETURNS text | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'geometry_geometrytype'; | |
ALTER FUNCTION public.st_geometrytype(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 595 (class 1255 OID 18951) | |
-- Dependencies: 1102 6 | |
-- Name: st_geomfromewkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_geomfromewkb(bytea) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOMFromWKB'; | |
ALTER FUNCTION public.st_geomfromewkb(bytea) OWNER TO postgres; | |
-- | |
-- TOC entry 596 (class 1255 OID 18952) | |
-- Dependencies: 1102 6 | |
-- Name: st_geomfromewkt(text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_geomfromewkt(text) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'parse_WKT_lwgeom'; | |
ALTER FUNCTION public.st_geomfromewkt(text) OWNER TO postgres; | |
-- | |
-- TOC entry 597 (class 1255 OID 18953) | |
-- Dependencies: 6 1102 | |
-- Name: st_geomfromgml(text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_geomfromgml(text) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'geom_from_gml'; | |
ALTER FUNCTION public.st_geomfromgml(text) OWNER TO postgres; | |
-- | |
-- TOC entry 598 (class 1255 OID 18954) | |
-- Dependencies: 6 1102 | |
-- Name: st_geomfromkml(text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_geomfromkml(text) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'geom_from_kml'; | |
ALTER FUNCTION public.st_geomfromkml(text) OWNER TO postgres; | |
-- | |
-- TOC entry 599 (class 1255 OID 18955) | |
-- Dependencies: 6 1102 | |
-- Name: st_geomfromtext(text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_geomfromtext(text) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_from_text'; | |
ALTER FUNCTION public.st_geomfromtext(text) OWNER TO postgres; | |
-- | |
-- TOC entry 600 (class 1255 OID 18956) | |
-- Dependencies: 1102 6 | |
-- Name: st_geomfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_geomfromtext(text, integer) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_from_text'; | |
ALTER FUNCTION public.st_geomfromtext(text, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 601 (class 1255 OID 18957) | |
-- Dependencies: 1102 6 | |
-- Name: st_geomfromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_geomfromwkb(bytea) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_from_WKB'; | |
ALTER FUNCTION public.st_geomfromwkb(bytea) OWNER TO postgres; | |
-- | |
-- TOC entry 602 (class 1255 OID 18958) | |
-- Dependencies: 1102 6 | |
-- Name: st_geomfromwkb(bytea, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_geomfromwkb(bytea, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT ST_SetSRID(ST_GeomFromWKB($1), $2)$_$; | |
ALTER FUNCTION public.st_geomfromwkb(bytea, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 603 (class 1255 OID 18959) | |
-- Dependencies: 1102 6 | |
-- Name: st_gmltosql(text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_gmltosql(text) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'geom_from_gml'; | |
ALTER FUNCTION public.st_gmltosql(text) OWNER TO postgres; | |
-- | |
-- TOC entry 604 (class 1255 OID 18960) | |
-- Dependencies: 1102 6 | |
-- Name: st_hasarc(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_hasarc(geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_has_arc'; | |
ALTER FUNCTION public.st_hasarc(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 605 (class 1255 OID 18961) | |
-- Dependencies: 1102 6 1102 | |
-- Name: st_hausdorffdistance(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_hausdorffdistance(geometry, geometry) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT COST 100 | |
AS '$libdir/postgis-1.5', 'hausdorffdistance'; | |
ALTER FUNCTION public.st_hausdorffdistance(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 606 (class 1255 OID 18962) | |
-- Dependencies: 1102 1102 6 | |
-- Name: st_hausdorffdistance(geometry, geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_hausdorffdistance(geometry, geometry, double precision) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT COST 100 | |
AS '$libdir/postgis-1.5', 'hausdorffdistancedensify'; | |
ALTER FUNCTION public.st_hausdorffdistance(geometry, geometry, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 607 (class 1255 OID 18963) | |
-- Dependencies: 6 1096 | |
-- Name: st_height(chip); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_height(chip) RETURNS integer | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'CHIP_getHeight'; | |
ALTER FUNCTION public.st_height(chip) OWNER TO postgres; | |
-- | |
-- TOC entry 608 (class 1255 OID 18964) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_interiorringn(geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_interiorringn(geometry, integer) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_interiorringn_polygon'; | |
ALTER FUNCTION public.st_interiorringn(geometry, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 609 (class 1255 OID 18965) | |
-- Dependencies: 6 1102 1102 1102 | |
-- Name: st_intersection(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_intersection(geometry, geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT COST 100 | |
AS '$libdir/postgis-1.5', 'intersection'; | |
ALTER FUNCTION public.st_intersection(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 610 (class 1255 OID 18966) | |
-- Dependencies: 6 1099 1099 1099 | |
-- Name: st_intersection(geography, geography); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_intersection(geography, geography) RETURNS geography | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT geography(ST_Transform(ST_Intersection(ST_Transform(geometry($1), _ST_BestSRID($1, $2)), ST_Transform(geometry($2), _ST_BestSRID($1, $2))), 4326))$_$; | |
ALTER FUNCTION public.st_intersection(geography, geography) OWNER TO postgres; | |
-- | |
-- TOC entry 611 (class 1255 OID 18967) | |
-- Dependencies: 6 1102 | |
-- Name: st_intersection(text, text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_intersection(text, text) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ SELECT ST_Intersection($1::geometry, $2::geometry); $_$; | |
ALTER FUNCTION public.st_intersection(text, text) OWNER TO postgres; | |
-- | |
-- TOC entry 612 (class 1255 OID 18968) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_intersects(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_intersects(geometry, geometry) RETURNS boolean | |
LANGUAGE sql IMMUTABLE | |
AS $_$SELECT $1 && $2 AND _ST_Intersects($1,$2)$_$; | |
ALTER FUNCTION public.st_intersects(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 613 (class 1255 OID 18969) | |
-- Dependencies: 6 1099 1099 | |
-- Name: st_intersects(geography, geography); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_intersects(geography, geography) RETURNS boolean | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT $1 && $2 AND _ST_Distance($1, $2, 0.0, false) < 0.00001$_$; | |
ALTER FUNCTION public.st_intersects(geography, geography) OWNER TO postgres; | |
-- | |
-- TOC entry 614 (class 1255 OID 18970) | |
-- Dependencies: 6 | |
-- Name: st_intersects(text, text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_intersects(text, text) RETURNS boolean | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ SELECT ST_Intersects($1::geometry, $2::geometry); $_$; | |
ALTER FUNCTION public.st_intersects(text, text) OWNER TO postgres; | |
-- | |
-- TOC entry 615 (class 1255 OID 18971) | |
-- Dependencies: 6 1102 | |
-- Name: st_isclosed(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_isclosed(geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_isclosed_linestring'; | |
ALTER FUNCTION public.st_isclosed(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 616 (class 1255 OID 18972) | |
-- Dependencies: 6 1102 | |
-- Name: st_isempty(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_isempty(geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_isempty'; | |
ALTER FUNCTION public.st_isempty(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 617 (class 1255 OID 18973) | |
-- Dependencies: 6 1102 | |
-- Name: st_isring(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_isring(geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'isring'; | |
ALTER FUNCTION public.st_isring(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 618 (class 1255 OID 18974) | |
-- Dependencies: 6 1102 | |
-- Name: st_issimple(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_issimple(geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'issimple'; | |
ALTER FUNCTION public.st_issimple(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 619 (class 1255 OID 18975) | |
-- Dependencies: 6 1102 | |
-- Name: st_isvalid(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_isvalid(geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT COST 100 | |
AS '$libdir/postgis-1.5', 'isvalid'; | |
ALTER FUNCTION public.st_isvalid(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 620 (class 1255 OID 18976) | |
-- Dependencies: 6 1102 | |
-- Name: st_isvalidreason(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_isvalidreason(geometry) RETURNS text | |
LANGUAGE c IMMUTABLE STRICT COST 100 | |
AS '$libdir/postgis-1.5', 'isvalidreason'; | |
ALTER FUNCTION public.st_isvalidreason(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 621 (class 1255 OID 18977) | |
-- Dependencies: 6 1102 | |
-- Name: st_length(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_length(geometry) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_length2d_linestring'; | |
ALTER FUNCTION public.st_length(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 623 (class 1255 OID 18979) | |
-- Dependencies: 6 1099 | |
-- Name: st_length(geography); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_length(geography) RETURNS double precision | |
LANGUAGE sql IMMUTABLE | |
AS $_$SELECT ST_Length($1, true)$_$; | |
ALTER FUNCTION public.st_length(geography) OWNER TO postgres; | |
-- | |
-- TOC entry 624 (class 1255 OID 18980) | |
-- Dependencies: 6 | |
-- Name: st_length(text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_length(text) RETURNS double precision | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ SELECT ST_Length($1::geometry); $_$; | |
ALTER FUNCTION public.st_length(text) OWNER TO postgres; | |
-- | |
-- TOC entry 622 (class 1255 OID 18978) | |
-- Dependencies: 6 1099 | |
-- Name: st_length(geography, boolean); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_length(geography, boolean) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT COST 100 | |
AS '$libdir/postgis-1.5', 'geography_length'; | |
ALTER FUNCTION public.st_length(geography, boolean) OWNER TO postgres; | |
-- | |
-- TOC entry 625 (class 1255 OID 18981) | |
-- Dependencies: 6 1102 | |
-- Name: st_length2d(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_length2d(geometry) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_length2d_linestring'; | |
ALTER FUNCTION public.st_length2d(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 626 (class 1255 OID 18982) | |
-- Dependencies: 6 1102 1113 | |
-- Name: st_length2d_spheroid(geometry, spheroid); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_length2d_spheroid(geometry, spheroid) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT COST 100 | |
AS '$libdir/postgis-1.5', 'LWGEOM_length2d_ellipsoid'; | |
ALTER FUNCTION public.st_length2d_spheroid(geometry, spheroid) OWNER TO postgres; | |
-- | |
-- TOC entry 627 (class 1255 OID 18983) | |
-- Dependencies: 6 1102 | |
-- Name: st_length3d(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_length3d(geometry) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_length_linestring'; | |
ALTER FUNCTION public.st_length3d(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 628 (class 1255 OID 18984) | |
-- Dependencies: 6 1102 1113 | |
-- Name: st_length3d_spheroid(geometry, spheroid); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_length3d_spheroid(geometry, spheroid) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT COST 100 | |
AS '$libdir/postgis-1.5', 'LWGEOM_length_ellipsoid_linestring'; | |
ALTER FUNCTION public.st_length3d_spheroid(geometry, spheroid) OWNER TO postgres; | |
-- | |
-- TOC entry 629 (class 1255 OID 18985) | |
-- Dependencies: 6 1102 1113 | |
-- Name: st_length_spheroid(geometry, spheroid); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_length_spheroid(geometry, spheroid) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT COST 100 | |
AS '$libdir/postgis-1.5', 'LWGEOM_length_ellipsoid_linestring'; | |
ALTER FUNCTION public.st_length_spheroid(geometry, spheroid) OWNER TO postgres; | |
-- | |
-- TOC entry 630 (class 1255 OID 18986) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_line_interpolate_point(geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_line_interpolate_point(geometry, double precision) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_line_interpolate_point'; | |
ALTER FUNCTION public.st_line_interpolate_point(geometry, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 631 (class 1255 OID 18987) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_line_locate_point(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_line_locate_point(geometry, geometry) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_line_locate_point'; | |
ALTER FUNCTION public.st_line_locate_point(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 632 (class 1255 OID 18988) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_line_substring(geometry, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_line_substring(geometry, double precision, double precision) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_line_substring'; | |
ALTER FUNCTION public.st_line_substring(geometry, double precision, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 633 (class 1255 OID 18989) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_linecrossingdirection(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_linecrossingdirection(geometry, geometry) RETURNS integer | |
LANGUAGE sql IMMUTABLE | |
AS $_$ SELECT CASE WHEN NOT $1 && $2 THEN 0 ELSE _ST_LineCrossingDirection($1,$2) END $_$; | |
ALTER FUNCTION public.st_linecrossingdirection(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 634 (class 1255 OID 18990) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_linefrommultipoint(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_linefrommultipoint(geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_line_from_mpoint'; | |
ALTER FUNCTION public.st_linefrommultipoint(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 635 (class 1255 OID 18991) | |
-- Dependencies: 6 1102 | |
-- Name: st_linefromtext(text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_linefromtext(text) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(ST_GeomFromText($1)) = 'LINESTRING' | |
THEN ST_GeomFromText($1) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.st_linefromtext(text) OWNER TO postgres; | |
-- | |
-- TOC entry 636 (class 1255 OID 18992) | |
-- Dependencies: 6 1102 | |
-- Name: st_linefromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_linefromtext(text, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(GeomFromText($1, $2)) = 'LINESTRING' | |
THEN GeomFromText($1,$2) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.st_linefromtext(text, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 638 (class 1255 OID 18994) | |
-- Dependencies: 6 1102 | |
-- Name: st_linefromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_linefromwkb(bytea) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1)) = 'LINESTRING' | |
THEN ST_GeomFromWKB($1) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.st_linefromwkb(bytea) OWNER TO postgres; | |
-- | |
-- TOC entry 637 (class 1255 OID 18993) | |
-- Dependencies: 6 1102 | |
-- Name: st_linefromwkb(bytea, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_linefromwkb(bytea, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1, $2)) = 'LINESTRING' | |
THEN ST_GeomFromWKB($1, $2) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.st_linefromwkb(bytea, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 639 (class 1255 OID 18995) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_linemerge(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_linemerge(geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT COST 100 | |
AS '$libdir/postgis-1.5', 'linemerge'; | |
ALTER FUNCTION public.st_linemerge(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 641 (class 1255 OID 18997) | |
-- Dependencies: 6 1102 | |
-- Name: st_linestringfromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_linestringfromwkb(bytea) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = 'LINESTRING' | |
THEN GeomFromWKB($1) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.st_linestringfromwkb(bytea) OWNER TO postgres; | |
-- | |
-- TOC entry 640 (class 1255 OID 18996) | |
-- Dependencies: 6 1102 | |
-- Name: st_linestringfromwkb(bytea, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_linestringfromwkb(bytea, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1, $2)) = 'LINESTRING' | |
THEN ST_GeomFromWKB($1, $2) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.st_linestringfromwkb(bytea, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 642 (class 1255 OID 18998) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_linetocurve(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_linetocurve(geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_line_desegmentize'; | |
ALTER FUNCTION public.st_linetocurve(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 643 (class 1255 OID 18999) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_locate_along_measure(geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_locate_along_measure(geometry, double precision) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ SELECT locate_between_measures($1, $2, $2) $_$; | |
ALTER FUNCTION public.st_locate_along_measure(geometry, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 644 (class 1255 OID 19000) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_locate_between_measures(geometry, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_locate_between_measures(geometry, double precision, double precision) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_locate_between_m'; | |
ALTER FUNCTION public.st_locate_between_measures(geometry, double precision, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 645 (class 1255 OID 19001) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_locatebetweenelevations(geometry, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_locatebetweenelevations(geometry, double precision, double precision) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'ST_LocateBetweenElevations'; | |
ALTER FUNCTION public.st_locatebetweenelevations(geometry, double precision, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 646 (class 1255 OID 19002) | |
-- Dependencies: 6 1102 1102 1102 | |
-- Name: st_longestline(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_longestline(geometry, geometry) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT _ST_LongestLine(ST_ConvexHull($1), ST_ConvexHull($2))$_$; | |
ALTER FUNCTION public.st_longestline(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 647 (class 1255 OID 19003) | |
-- Dependencies: 6 1102 | |
-- Name: st_m(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_m(geometry) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_m_point'; | |
ALTER FUNCTION public.st_m(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 648 (class 1255 OID 19004) | |
-- Dependencies: 6 1087 1102 1102 | |
-- Name: st_makebox2d(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_makebox2d(geometry, geometry) RETURNS box2d | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'BOX2DFLOAT4_construct'; | |
ALTER FUNCTION public.st_makebox2d(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 649 (class 1255 OID 19005) | |
-- Dependencies: 6 1090 1102 1102 | |
-- Name: st_makebox3d(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_makebox3d(geometry, geometry) RETURNS box3d | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'BOX3D_construct'; | |
ALTER FUNCTION public.st_makebox3d(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 650 (class 1255 OID 19006) | |
-- Dependencies: 6 1102 | |
-- Name: st_makeenvelope(double precision, double precision, double precision, double precision, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_makeenvelope(double precision, double precision, double precision, double precision, integer) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'ST_MakeEnvelope'; | |
ALTER FUNCTION public.st_makeenvelope(double precision, double precision, double precision, double precision, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 651 (class 1255 OID 19007) | |
-- Dependencies: 6 1102 1104 | |
-- Name: st_makeline(geometry[]); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_makeline(geometry[]) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_makeline_garray'; | |
ALTER FUNCTION public.st_makeline(geometry[]) OWNER TO postgres; | |
-- | |
-- TOC entry 652 (class 1255 OID 19008) | |
-- Dependencies: 6 1102 1102 1102 | |
-- Name: st_makeline(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_makeline(geometry, geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_makeline'; | |
ALTER FUNCTION public.st_makeline(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 653 (class 1255 OID 19009) | |
-- Dependencies: 6 1102 1104 | |
-- Name: st_makeline_garray(geometry[]); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_makeline_garray(geometry[]) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_makeline_garray'; | |
ALTER FUNCTION public.st_makeline_garray(geometry[]) OWNER TO postgres; | |
-- | |
-- TOC entry 654 (class 1255 OID 19010) | |
-- Dependencies: 1102 6 | |
-- Name: st_makepoint(double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_makepoint(double precision, double precision) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_makepoint'; | |
ALTER FUNCTION public.st_makepoint(double precision, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 655 (class 1255 OID 19011) | |
-- Dependencies: 6 1102 | |
-- Name: st_makepoint(double precision, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_makepoint(double precision, double precision, double precision) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_makepoint'; | |
ALTER FUNCTION public.st_makepoint(double precision, double precision, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 656 (class 1255 OID 19012) | |
-- Dependencies: 6 1102 | |
-- Name: st_makepoint(double precision, double precision, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_makepoint(double precision, double precision, double precision, double precision) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_makepoint'; | |
ALTER FUNCTION public.st_makepoint(double precision, double precision, double precision, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 657 (class 1255 OID 19013) | |
-- Dependencies: 6 1102 | |
-- Name: st_makepointm(double precision, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_makepointm(double precision, double precision, double precision) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_makepoint3dm'; | |
ALTER FUNCTION public.st_makepointm(double precision, double precision, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 659 (class 1255 OID 19015) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_makepolygon(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_makepolygon(geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_makepoly'; | |
ALTER FUNCTION public.st_makepolygon(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 658 (class 1255 OID 19014) | |
-- Dependencies: 6 1102 1102 1104 | |
-- Name: st_makepolygon(geometry, geometry[]); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_makepolygon(geometry, geometry[]) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_makepoly'; | |
ALTER FUNCTION public.st_makepolygon(geometry, geometry[]) OWNER TO postgres; | |
-- | |
-- TOC entry 660 (class 1255 OID 19016) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_maxdistance(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_maxdistance(geometry, geometry) RETURNS double precision | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT _ST_MaxDistance(ST_ConvexHull($1), ST_ConvexHull($2))$_$; | |
ALTER FUNCTION public.st_maxdistance(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 661 (class 1255 OID 19017) | |
-- Dependencies: 6 1102 | |
-- Name: st_mem_size(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_mem_size(geometry) RETURNS integer | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_mem_size'; | |
ALTER FUNCTION public.st_mem_size(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 663 (class 1255 OID 19020) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_minimumboundingcircle(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_minimumboundingcircle(geometry) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT ST_MinimumBoundingCircle($1, 48)$_$; | |
ALTER FUNCTION public.st_minimumboundingcircle(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 662 (class 1255 OID 19018) | |
-- Dependencies: 6 1168 1102 1102 | |
-- Name: st_minimumboundingcircle(geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_minimumboundingcircle(inputgeom geometry, segs_per_quarter integer) RETURNS geometry | |
LANGUAGE plpgsql IMMUTABLE STRICT | |
AS $$ | |
DECLARE | |
hull GEOMETRY; | |
ring GEOMETRY; | |
center GEOMETRY; | |
radius DOUBLE PRECISION; | |
dist DOUBLE PRECISION; | |
d DOUBLE PRECISION; | |
idx1 integer; | |
idx2 integer; | |
l1 GEOMETRY; | |
l2 GEOMETRY; | |
p1 GEOMETRY; | |
p2 GEOMETRY; | |
a1 DOUBLE PRECISION; | |
a2 DOUBLE PRECISION; | |
BEGIN | |
-- First compute the ConvexHull of the geometry | |
hull = ST_ConvexHull(inputgeom); | |
--A point really has no MBC | |
IF ST_GeometryType(hull) = 'ST_Point' THEN | |
RETURN hull; | |
END IF; | |
-- convert the hull perimeter to a linestring so we can manipulate individual points | |
--If its already a linestring force it to a closed linestring | |
ring = CASE WHEN ST_GeometryType(hull) = 'ST_LineString' THEN ST_AddPoint(hull, ST_StartPoint(hull)) ELSE ST_ExteriorRing(hull) END; | |
dist = 0; | |
-- Brute Force - check every pair | |
FOR i in 1 .. (ST_NumPoints(ring)-2) | |
LOOP | |
FOR j in i .. (ST_NumPoints(ring)-1) | |
LOOP | |
d = ST_Distance(ST_PointN(ring,i),ST_PointN(ring,j)); | |
-- Check the distance and update if larger | |
IF (d > dist) THEN | |
dist = d; | |
idx1 = i; | |
idx2 = j; | |
END IF; | |
END LOOP; | |
END LOOP; | |
-- We now have the diameter of the convex hull. The following line returns it if desired. | |
-- RETURN MakeLine(PointN(ring,idx1),PointN(ring,idx2)); | |
-- Now for the Minimum Bounding Circle. Since we know the two points furthest from each | |
-- other, the MBC must go through those two points. Start with those points as a diameter of a circle. | |
-- The radius is half the distance between them and the center is midway between them | |
radius = ST_Distance(ST_PointN(ring,idx1),ST_PointN(ring,idx2)) / 2.0; | |
center = ST_Line_interpolate_point(ST_MakeLine(ST_PointN(ring,idx1),ST_PointN(ring,idx2)),0.5); | |
-- Loop through each vertex and check if the distance from the center to the point | |
-- is greater than the current radius. | |
FOR k in 1 .. (ST_NumPoints(ring)-1) | |
LOOP | |
IF(k <> idx1 and k <> idx2) THEN | |
dist = ST_Distance(center,ST_PointN(ring,k)); | |
IF (dist > radius) THEN | |
-- We have to expand the circle. The new circle must pass trhough | |
-- three points - the two original diameters and this point. | |
-- Draw a line from the first diameter to this point | |
l1 = ST_Makeline(ST_PointN(ring,idx1),ST_PointN(ring,k)); | |
-- Compute the midpoint | |
p1 = ST_line_interpolate_point(l1,0.5); | |
-- Rotate the line 90 degrees around the midpoint (perpendicular bisector) | |
l1 = ST_Translate(ST_Rotate(ST_Translate(l1,-X(p1),-Y(p1)),pi()/2),X(p1),Y(p1)); | |
-- Compute the azimuth of the bisector | |
a1 = ST_Azimuth(ST_PointN(l1,1),ST_PointN(l1,2)); | |
-- Extend the line in each direction the new computed distance to insure they will intersect | |
l1 = ST_AddPoint(l1,ST_Makepoint(X(ST_PointN(l1,2))+sin(a1)*dist,Y(ST_PointN(l1,2))+cos(a1)*dist),-1); | |
l1 = ST_AddPoint(l1,ST_Makepoint(X(ST_PointN(l1,1))-sin(a1)*dist,Y(ST_PointN(l1,1))-cos(a1)*dist),0); | |
-- Repeat for the line from the point to the other diameter point | |
l2 = ST_Makeline(ST_PointN(ring,idx2),ST_PointN(ring,k)); | |
p2 = ST_Line_interpolate_point(l2,0.5); | |
l2 = ST_Translate(ST_Rotate(ST_Translate(l2,-X(p2),-Y(p2)),pi()/2),X(p2),Y(p2)); | |
a2 = ST_Azimuth(ST_PointN(l2,1),ST_PointN(l2,2)); | |
l2 = ST_AddPoint(l2,ST_Makepoint(X(ST_PointN(l2,2))+sin(a2)*dist,Y(ST_PointN(l2,2))+cos(a2)*dist),-1); | |
l2 = ST_AddPoint(l2,ST_Makepoint(X(ST_PointN(l2,1))-sin(a2)*dist,Y(ST_PointN(l2,1))-cos(a2)*dist),0); | |
-- The new center is the intersection of the two bisectors | |
center = ST_Intersection(l1,l2); | |
-- The new radius is the distance to any of the three points | |
radius = ST_Distance(center,ST_PointN(ring,idx1)); | |
END IF; | |
END IF; | |
END LOOP; | |
--DONE!! Return the MBC via the buffer command | |
RETURN ST_Buffer(center,radius,segs_per_quarter); | |
END; | |
$$; | |
ALTER FUNCTION public.st_minimumboundingcircle(inputgeom geometry, segs_per_quarter integer) OWNER TO postgres; | |
-- | |
-- TOC entry 665 (class 1255 OID 19022) | |
-- Dependencies: 6 1102 | |
-- Name: st_mlinefromtext(text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_mlinefromtext(text) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(ST_GeomFromText($1)) = 'MULTILINESTRING' | |
THEN ST_GeomFromText($1) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.st_mlinefromtext(text) OWNER TO postgres; | |
-- | |
-- TOC entry 664 (class 1255 OID 19021) | |
-- Dependencies: 6 1102 | |
-- Name: st_mlinefromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_mlinefromtext(text, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE | |
WHEN geometrytype(GeomFromText($1, $2)) = 'MULTILINESTRING' | |
THEN GeomFromText($1,$2) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.st_mlinefromtext(text, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 667 (class 1255 OID 19024) | |
-- Dependencies: 6 1102 | |
-- Name: st_mlinefromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_mlinefromwkb(bytea) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1)) = 'MULTILINESTRING' | |
THEN ST_GeomFromWKB($1) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.st_mlinefromwkb(bytea) OWNER TO postgres; | |
-- | |
-- TOC entry 666 (class 1255 OID 19023) | |
-- Dependencies: 6 1102 | |
-- Name: st_mlinefromwkb(bytea, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_mlinefromwkb(bytea, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1, $2)) = 'MULTILINESTRING' | |
THEN ST_GeomFromWKB($1, $2) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.st_mlinefromwkb(bytea, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 669 (class 1255 OID 19026) | |
-- Dependencies: 6 1102 | |
-- Name: st_mpointfromtext(text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_mpointfromtext(text) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(ST_GeomFromText($1)) = 'MULTIPOINT' | |
THEN ST_GeomFromText($1) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.st_mpointfromtext(text) OWNER TO postgres; | |
-- | |
-- TOC entry 668 (class 1255 OID 19025) | |
-- Dependencies: 6 1102 | |
-- Name: st_mpointfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_mpointfromtext(text, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(GeomFromText($1, $2)) = 'MULTIPOINT' | |
THEN GeomFromText($1, $2) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.st_mpointfromtext(text, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 672 (class 1255 OID 19028) | |
-- Dependencies: 6 1102 | |
-- Name: st_mpointfromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_mpointfromwkb(bytea) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1)) = 'MULTIPOINT' | |
THEN ST_GeomFromWKB($1) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.st_mpointfromwkb(bytea) OWNER TO postgres; | |
-- | |
-- TOC entry 671 (class 1255 OID 19027) | |
-- Dependencies: 6 1102 | |
-- Name: st_mpointfromwkb(bytea, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_mpointfromwkb(bytea, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = 'MULTIPOINT' | |
THEN GeomFromWKB($1, $2) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.st_mpointfromwkb(bytea, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 674 (class 1255 OID 19030) | |
-- Dependencies: 6 1102 | |
-- Name: st_mpolyfromtext(text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_mpolyfromtext(text) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(ST_GeomFromText($1)) = 'MULTIPOLYGON' | |
THEN ST_GeomFromText($1) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.st_mpolyfromtext(text) OWNER TO postgres; | |
-- | |
-- TOC entry 673 (class 1255 OID 19029) | |
-- Dependencies: 6 1102 | |
-- Name: st_mpolyfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_mpolyfromtext(text, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(ST_GeomFromText($1, $2)) = 'MULTIPOLYGON' | |
THEN ST_GeomFromText($1,$2) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.st_mpolyfromtext(text, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 676 (class 1255 OID 19032) | |
-- Dependencies: 6 1102 | |
-- Name: st_mpolyfromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_mpolyfromwkb(bytea) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1)) = 'MULTIPOLYGON' | |
THEN ST_GeomFromWKB($1) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.st_mpolyfromwkb(bytea) OWNER TO postgres; | |
-- | |
-- TOC entry 675 (class 1255 OID 19031) | |
-- Dependencies: 6 1102 | |
-- Name: st_mpolyfromwkb(bytea, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_mpolyfromwkb(bytea, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1, $2)) = 'MULTIPOLYGON' | |
THEN ST_GeomFromWKB($1, $2) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.st_mpolyfromwkb(bytea, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 677 (class 1255 OID 19033) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_multi(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_multi(geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_force_multi'; | |
ALTER FUNCTION public.st_multi(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 678 (class 1255 OID 19034) | |
-- Dependencies: 6 1102 | |
-- Name: st_multilinefromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_multilinefromwkb(bytea) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1)) = 'MULTILINESTRING' | |
THEN ST_GeomFromWKB($1) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.st_multilinefromwkb(bytea) OWNER TO postgres; | |
-- | |
-- TOC entry 679 (class 1255 OID 19035) | |
-- Dependencies: 6 1102 | |
-- Name: st_multilinestringfromtext(text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_multilinestringfromtext(text) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT ST_MLineFromText($1)$_$; | |
ALTER FUNCTION public.st_multilinestringfromtext(text) OWNER TO postgres; | |
-- | |
-- TOC entry 680 (class 1255 OID 19036) | |
-- Dependencies: 6 1102 | |
-- Name: st_multilinestringfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_multilinestringfromtext(text, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT MLineFromText($1, $2)$_$; | |
ALTER FUNCTION public.st_multilinestringfromtext(text, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 681 (class 1255 OID 19037) | |
-- Dependencies: 6 1102 | |
-- Name: st_multipointfromtext(text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_multipointfromtext(text) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT MPointFromText($1)$_$; | |
ALTER FUNCTION public.st_multipointfromtext(text) OWNER TO postgres; | |
-- | |
-- TOC entry 683 (class 1255 OID 19039) | |
-- Dependencies: 1102 6 | |
-- Name: st_multipointfromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_multipointfromwkb(bytea) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1)) = 'MULTIPOINT' | |
THEN ST_GeomFromWKB($1) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.st_multipointfromwkb(bytea) OWNER TO postgres; | |
-- | |
-- TOC entry 682 (class 1255 OID 19038) | |
-- Dependencies: 6 1102 | |
-- Name: st_multipointfromwkb(bytea, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_multipointfromwkb(bytea, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1,$2)) = 'MULTIPOINT' | |
THEN ST_GeomFromWKB($1, $2) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.st_multipointfromwkb(bytea, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 685 (class 1255 OID 19041) | |
-- Dependencies: 6 1102 | |
-- Name: st_multipolyfromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_multipolyfromwkb(bytea) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1)) = 'MULTIPOLYGON' | |
THEN ST_GeomFromWKB($1) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.st_multipolyfromwkb(bytea) OWNER TO postgres; | |
-- | |
-- TOC entry 684 (class 1255 OID 19040) | |
-- Dependencies: 6 1102 | |
-- Name: st_multipolyfromwkb(bytea, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_multipolyfromwkb(bytea, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1, $2)) = 'MULTIPOLYGON' | |
THEN ST_GeomFromWKB($1, $2) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.st_multipolyfromwkb(bytea, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 687 (class 1255 OID 19043) | |
-- Dependencies: 6 1102 | |
-- Name: st_multipolygonfromtext(text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_multipolygonfromtext(text) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT MPolyFromText($1)$_$; | |
ALTER FUNCTION public.st_multipolygonfromtext(text) OWNER TO postgres; | |
-- | |
-- TOC entry 686 (class 1255 OID 19042) | |
-- Dependencies: 6 1102 | |
-- Name: st_multipolygonfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_multipolygonfromtext(text, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT MPolyFromText($1, $2)$_$; | |
ALTER FUNCTION public.st_multipolygonfromtext(text, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 688 (class 1255 OID 19044) | |
-- Dependencies: 6 1102 | |
-- Name: st_ndims(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_ndims(geometry) RETURNS smallint | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_ndims'; | |
ALTER FUNCTION public.st_ndims(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 689 (class 1255 OID 19045) | |
-- Dependencies: 6 1102 | |
-- Name: st_npoints(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_npoints(geometry) RETURNS integer | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_npoints'; | |
ALTER FUNCTION public.st_npoints(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 690 (class 1255 OID 19046) | |
-- Dependencies: 6 1102 | |
-- Name: st_nrings(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_nrings(geometry) RETURNS integer | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_nrings'; | |
ALTER FUNCTION public.st_nrings(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 691 (class 1255 OID 19047) | |
-- Dependencies: 6 1102 | |
-- Name: st_numgeometries(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_numgeometries(geometry) RETURNS integer | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_numgeometries_collection'; | |
ALTER FUNCTION public.st_numgeometries(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 692 (class 1255 OID 19048) | |
-- Dependencies: 6 1102 | |
-- Name: st_numinteriorring(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_numinteriorring(geometry) RETURNS integer | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_numinteriorrings_polygon'; | |
ALTER FUNCTION public.st_numinteriorring(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 693 (class 1255 OID 19049) | |
-- Dependencies: 6 1102 | |
-- Name: st_numinteriorrings(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_numinteriorrings(geometry) RETURNS integer | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_numinteriorrings_polygon'; | |
ALTER FUNCTION public.st_numinteriorrings(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 694 (class 1255 OID 19050) | |
-- Dependencies: 6 1102 | |
-- Name: st_numpoints(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_numpoints(geometry) RETURNS integer | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_numpoints_linestring'; | |
ALTER FUNCTION public.st_numpoints(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 695 (class 1255 OID 19051) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_orderingequals(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_orderingequals(geometry, geometry) RETURNS boolean | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT $1 ~= $2 AND _ST_OrderingEquals($1, $2) | |
$_$; | |
ALTER FUNCTION public.st_orderingequals(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 696 (class 1255 OID 19052) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_overlaps(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_overlaps(geometry, geometry) RETURNS boolean | |
LANGUAGE sql IMMUTABLE | |
AS $_$SELECT $1 && $2 AND _ST_Overlaps($1,$2)$_$; | |
ALTER FUNCTION public.st_overlaps(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 697 (class 1255 OID 19053) | |
-- Dependencies: 6 1102 | |
-- Name: st_perimeter(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_perimeter(geometry) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_perimeter2d_poly'; | |
ALTER FUNCTION public.st_perimeter(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 698 (class 1255 OID 19054) | |
-- Dependencies: 6 1102 | |
-- Name: st_perimeter2d(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_perimeter2d(geometry) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_perimeter2d_poly'; | |
ALTER FUNCTION public.st_perimeter2d(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 699 (class 1255 OID 19055) | |
-- Dependencies: 6 1102 | |
-- Name: st_perimeter3d(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_perimeter3d(geometry) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_perimeter_poly'; | |
ALTER FUNCTION public.st_perimeter3d(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 700 (class 1255 OID 19056) | |
-- Dependencies: 6 1102 | |
-- Name: st_point(double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_point(double precision, double precision) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_makepoint'; | |
ALTER FUNCTION public.st_point(double precision, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 701 (class 1255 OID 19057) | |
-- Dependencies: 6 1102 | |
-- Name: st_point_inside_circle(geometry, double precision, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_point_inside_circle(geometry, double precision, double precision, double precision) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_inside_circle_point'; | |
ALTER FUNCTION public.st_point_inside_circle(geometry, double precision, double precision, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 702 (class 1255 OID 19058) | |
-- Dependencies: 6 1102 | |
-- Name: st_pointfromtext(text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_pointfromtext(text) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(ST_GeomFromText($1)) = 'POINT' | |
THEN ST_GeomFromText($1) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.st_pointfromtext(text) OWNER TO postgres; | |
-- | |
-- TOC entry 703 (class 1255 OID 19059) | |
-- Dependencies: 6 1102 | |
-- Name: st_pointfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_pointfromtext(text, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(ST_GeomFromText($1, $2)) = 'POINT' | |
THEN ST_GeomFromText($1, $2) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.st_pointfromtext(text, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 706 (class 1255 OID 19061) | |
-- Dependencies: 6 1102 | |
-- Name: st_pointfromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_pointfromwkb(bytea) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1)) = 'POINT' | |
THEN ST_GeomFromWKB($1) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.st_pointfromwkb(bytea) OWNER TO postgres; | |
-- | |
-- TOC entry 705 (class 1255 OID 19060) | |
-- Dependencies: 6 1102 | |
-- Name: st_pointfromwkb(bytea, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_pointfromwkb(bytea, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1, $2)) = 'POINT' | |
THEN ST_GeomFromWKB($1, $2) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.st_pointfromwkb(bytea, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 707 (class 1255 OID 19062) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_pointn(geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_pointn(geometry, integer) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_pointn_linestring'; | |
ALTER FUNCTION public.st_pointn(geometry, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 708 (class 1255 OID 19063) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_pointonsurface(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_pointonsurface(geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT COST 100 | |
AS '$libdir/postgis-1.5', 'pointonsurface'; | |
ALTER FUNCTION public.st_pointonsurface(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 709 (class 1255 OID 19064) | |
-- Dependencies: 6 1102 | |
-- Name: st_polyfromtext(text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_polyfromtext(text) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(ST_GeomFromText($1)) = 'POLYGON' | |
THEN ST_GeomFromText($1) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.st_polyfromtext(text) OWNER TO postgres; | |
-- | |
-- TOC entry 710 (class 1255 OID 19065) | |
-- Dependencies: 6 1102 | |
-- Name: st_polyfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_polyfromtext(text, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(ST_GeomFromText($1, $2)) = 'POLYGON' | |
THEN ST_GeomFromText($1, $2) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.st_polyfromtext(text, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 712 (class 1255 OID 19067) | |
-- Dependencies: 6 1102 | |
-- Name: st_polyfromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_polyfromwkb(bytea) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1)) = 'POLYGON' | |
THEN ST_GeomFromWKB($1) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.st_polyfromwkb(bytea) OWNER TO postgres; | |
-- | |
-- TOC entry 711 (class 1255 OID 19066) | |
-- Dependencies: 6 1102 | |
-- Name: st_polyfromwkb(bytea, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_polyfromwkb(bytea, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1, $2)) = 'POLYGON' | |
THEN ST_GeomFromWKB($1, $2) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.st_polyfromwkb(bytea, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 713 (class 1255 OID 19068) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_polygon(geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_polygon(geometry, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT setSRID(makepolygon($1), $2) | |
$_$; | |
ALTER FUNCTION public.st_polygon(geometry, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 715 (class 1255 OID 19070) | |
-- Dependencies: 1102 6 | |
-- Name: st_polygonfromtext(text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_polygonfromtext(text) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT ST_PolyFromText($1)$_$; | |
ALTER FUNCTION public.st_polygonfromtext(text) OWNER TO postgres; | |
-- | |
-- TOC entry 714 (class 1255 OID 19069) | |
-- Dependencies: 6 1102 | |
-- Name: st_polygonfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_polygonfromtext(text, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT PolyFromText($1, $2)$_$; | |
ALTER FUNCTION public.st_polygonfromtext(text, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 717 (class 1255 OID 19072) | |
-- Dependencies: 6 1102 | |
-- Name: st_polygonfromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_polygonfromwkb(bytea) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = 'POLYGON' | |
THEN GeomFromWKB($1) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.st_polygonfromwkb(bytea) OWNER TO postgres; | |
-- | |
-- TOC entry 716 (class 1255 OID 19071) | |
-- Dependencies: 1102 6 | |
-- Name: st_polygonfromwkb(bytea, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_polygonfromwkb(bytea, integer) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$ | |
SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1,$2)) = 'POLYGON' | |
THEN ST_GeomFromWKB($1, $2) | |
ELSE NULL END | |
$_$; | |
ALTER FUNCTION public.st_polygonfromwkb(bytea, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 718 (class 1255 OID 19073) | |
-- Dependencies: 1102 6 1104 | |
-- Name: st_polygonize(geometry[]); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_polygonize(geometry[]) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT COST 100 | |
AS '$libdir/postgis-1.5', 'polygonize_garray'; | |
ALTER FUNCTION public.st_polygonize(geometry[]) OWNER TO postgres; | |
-- | |
-- TOC entry 719 (class 1255 OID 19074) | |
-- Dependencies: 1102 6 1104 | |
-- Name: st_polygonize_garray(geometry[]); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_polygonize_garray(geometry[]) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT COST 100 | |
AS '$libdir/postgis-1.5', 'polygonize_garray'; | |
ALTER FUNCTION public.st_polygonize_garray(geometry[]) OWNER TO postgres; | |
-- | |
-- TOC entry 720 (class 1255 OID 19075) | |
-- Dependencies: 6 | |
-- Name: st_postgis_gist_joinsel(internal, oid, internal, smallint); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_postgis_gist_joinsel(internal, oid, internal, smallint) RETURNS double precision | |
LANGUAGE c | |
AS '$libdir/postgis-1.5', 'LWGEOM_gist_joinsel'; | |
ALTER FUNCTION public.st_postgis_gist_joinsel(internal, oid, internal, smallint) OWNER TO postgres; | |
-- | |
-- TOC entry 721 (class 1255 OID 19076) | |
-- Dependencies: 6 | |
-- Name: st_postgis_gist_sel(internal, oid, internal, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_postgis_gist_sel(internal, oid, internal, integer) RETURNS double precision | |
LANGUAGE c | |
AS '$libdir/postgis-1.5', 'LWGEOM_gist_sel'; | |
ALTER FUNCTION public.st_postgis_gist_sel(internal, oid, internal, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 722 (class 1255 OID 19077) | |
-- Dependencies: 1102 6 1102 | |
-- Name: st_relate(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_relate(geometry, geometry) RETURNS text | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'relate_full'; | |
ALTER FUNCTION public.st_relate(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 723 (class 1255 OID 19078) | |
-- Dependencies: 1102 6 1102 | |
-- Name: st_relate(geometry, geometry, text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_relate(geometry, geometry, text) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'relate_pattern'; | |
ALTER FUNCTION public.st_relate(geometry, geometry, text) OWNER TO postgres; | |
-- | |
-- TOC entry 724 (class 1255 OID 19079) | |
-- Dependencies: 1102 6 1102 | |
-- Name: st_removepoint(geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_removepoint(geometry, integer) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_removepoint'; | |
ALTER FUNCTION public.st_removepoint(geometry, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 725 (class 1255 OID 19080) | |
-- Dependencies: 1102 6 1102 | |
-- Name: st_reverse(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_reverse(geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_reverse'; | |
ALTER FUNCTION public.st_reverse(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 726 (class 1255 OID 19081) | |
-- Dependencies: 1102 6 1102 | |
-- Name: st_rotate(geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_rotate(geometry, double precision) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT rotateZ($1, $2)$_$; | |
ALTER FUNCTION public.st_rotate(geometry, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 727 (class 1255 OID 19082) | |
-- Dependencies: 1102 6 1102 | |
-- Name: st_rotatex(geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_rotatex(geometry, double precision) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT affine($1, 1, 0, 0, 0, cos($2), -sin($2), 0, sin($2), cos($2), 0, 0, 0)$_$; | |
ALTER FUNCTION public.st_rotatex(geometry, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 728 (class 1255 OID 19083) | |
-- Dependencies: 1102 6 1102 | |
-- Name: st_rotatey(geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_rotatey(geometry, double precision) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT affine($1, cos($2), 0, sin($2), 0, 1, 0, -sin($2), 0, cos($2), 0, 0, 0)$_$; | |
ALTER FUNCTION public.st_rotatey(geometry, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 729 (class 1255 OID 19084) | |
-- Dependencies: 1102 6 1102 | |
-- Name: st_rotatez(geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_rotatez(geometry, double precision) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT affine($1, cos($2), -sin($2), 0, sin($2), cos($2), 0, 0, 0, 1, 0, 0, 0)$_$; | |
ALTER FUNCTION public.st_rotatez(geometry, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 731 (class 1255 OID 19086) | |
-- Dependencies: 1102 1102 6 | |
-- Name: st_scale(geometry, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_scale(geometry, double precision, double precision) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT scale($1, $2, $3, 1)$_$; | |
ALTER FUNCTION public.st_scale(geometry, double precision, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 730 (class 1255 OID 19085) | |
-- Dependencies: 1102 6 1102 | |
-- Name: st_scale(geometry, double precision, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_scale(geometry, double precision, double precision, double precision) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT affine($1, $2, 0, 0, 0, $3, 0, 0, 0, $4, 0, 0, 0)$_$; | |
ALTER FUNCTION public.st_scale(geometry, double precision, double precision, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 732 (class 1255 OID 19087) | |
-- Dependencies: 1102 1102 6 | |
-- Name: st_segmentize(geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_segmentize(geometry, double precision) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_segmentize2d'; | |
ALTER FUNCTION public.st_segmentize(geometry, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 733 (class 1255 OID 19088) | |
-- Dependencies: 6 1096 1096 | |
-- Name: st_setfactor(chip, real); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_setfactor(chip, real) RETURNS chip | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'CHIP_setFactor'; | |
ALTER FUNCTION public.st_setfactor(chip, real) OWNER TO postgres; | |
-- | |
-- TOC entry 734 (class 1255 OID 19089) | |
-- Dependencies: 6 1102 1102 1102 | |
-- Name: st_setpoint(geometry, integer, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_setpoint(geometry, integer, geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_setpoint_linestring'; | |
ALTER FUNCTION public.st_setpoint(geometry, integer, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 735 (class 1255 OID 19090) | |
-- Dependencies: 1102 6 1102 | |
-- Name: st_setsrid(geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_setsrid(geometry, integer) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_setSRID'; | |
ALTER FUNCTION public.st_setsrid(geometry, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 736 (class 1255 OID 19091) | |
-- Dependencies: 1102 6 1102 | |
-- Name: st_shift_longitude(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_shift_longitude(geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_longitude_shift'; | |
ALTER FUNCTION public.st_shift_longitude(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 737 (class 1255 OID 19092) | |
-- Dependencies: 1102 1102 1102 6 | |
-- Name: st_shortestline(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_shortestline(geometry, geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_shortestline2d'; | |
ALTER FUNCTION public.st_shortestline(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 738 (class 1255 OID 19093) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_simplify(geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_simplify(geometry, double precision) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_simplify2d'; | |
ALTER FUNCTION public.st_simplify(geometry, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 739 (class 1255 OID 19094) | |
-- Dependencies: 1102 6 1102 | |
-- Name: st_simplifypreservetopology(geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_simplifypreservetopology(geometry, double precision) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT COST 100 | |
AS '$libdir/postgis-1.5', 'topologypreservesimplify'; | |
ALTER FUNCTION public.st_simplifypreservetopology(geometry, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 740 (class 1255 OID 19097) | |
-- Dependencies: 1102 6 1102 | |
-- Name: st_snaptogrid(geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_snaptogrid(geometry, double precision) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT ST_SnapToGrid($1, 0, 0, $2, $2)$_$; | |
ALTER FUNCTION public.st_snaptogrid(geometry, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 704 (class 1255 OID 19096) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_snaptogrid(geometry, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_snaptogrid(geometry, double precision, double precision) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT ST_SnapToGrid($1, 0, 0, $2, $3)$_$; | |
ALTER FUNCTION public.st_snaptogrid(geometry, double precision, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 670 (class 1255 OID 19095) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_snaptogrid(geometry, double precision, double precision, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_snaptogrid(geometry, double precision, double precision, double precision, double precision) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_snaptogrid'; | |
ALTER FUNCTION public.st_snaptogrid(geometry, double precision, double precision, double precision, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 741 (class 1255 OID 19098) | |
-- Dependencies: 1102 1102 1102 6 | |
-- Name: st_snaptogrid(geometry, geometry, double precision, double precision, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_snaptogrid(geometry, geometry, double precision, double precision, double precision, double precision) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_snaptogrid_pointoff'; | |
ALTER FUNCTION public.st_snaptogrid(geometry, geometry, double precision, double precision, double precision, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 742 (class 1255 OID 19099) | |
-- Dependencies: 6 1113 | |
-- Name: st_spheroid_in(cstring); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_spheroid_in(cstring) RETURNS spheroid | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'ellipsoid_in'; | |
ALTER FUNCTION public.st_spheroid_in(cstring) OWNER TO postgres; | |
-- | |
-- TOC entry 743 (class 1255 OID 19100) | |
-- Dependencies: 6 1113 | |
-- Name: st_spheroid_out(spheroid); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_spheroid_out(spheroid) RETURNS cstring | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'ellipsoid_out'; | |
ALTER FUNCTION public.st_spheroid_out(spheroid) OWNER TO postgres; | |
-- | |
-- TOC entry 744 (class 1255 OID 19101) | |
-- Dependencies: 1096 6 | |
-- Name: st_srid(chip); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_srid(chip) RETURNS integer | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'CHIP_getSRID'; | |
ALTER FUNCTION public.st_srid(chip) OWNER TO postgres; | |
-- | |
-- TOC entry 745 (class 1255 OID 19102) | |
-- Dependencies: 6 1102 | |
-- Name: st_srid(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_srid(geometry) RETURNS integer | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_getSRID'; | |
ALTER FUNCTION public.st_srid(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 746 (class 1255 OID 19103) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_startpoint(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_startpoint(geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_startpoint_linestring'; | |
ALTER FUNCTION public.st_startpoint(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 747 (class 1255 OID 19104) | |
-- Dependencies: 6 1102 | |
-- Name: st_summary(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_summary(geometry) RETURNS text | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_summary'; | |
ALTER FUNCTION public.st_summary(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 748 (class 1255 OID 19105) | |
-- Dependencies: 1102 1102 1102 6 | |
-- Name: st_symdifference(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_symdifference(geometry, geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'symdifference'; | |
ALTER FUNCTION public.st_symdifference(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 749 (class 1255 OID 19106) | |
-- Dependencies: 1102 1102 1102 6 | |
-- Name: st_symmetricdifference(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_symmetricdifference(geometry, geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'symdifference'; | |
ALTER FUNCTION public.st_symmetricdifference(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 750 (class 1255 OID 19107) | |
-- Dependencies: 6 1102 | |
-- Name: st_text(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_text(geometry) RETURNS text | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_to_text'; | |
ALTER FUNCTION public.st_text(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 751 (class 1255 OID 19108) | |
-- Dependencies: 1102 6 1102 | |
-- Name: st_touches(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_touches(geometry, geometry) RETURNS boolean | |
LANGUAGE sql IMMUTABLE | |
AS $_$SELECT $1 && $2 AND _ST_Touches($1,$2)$_$; | |
ALTER FUNCTION public.st_touches(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 752 (class 1255 OID 19109) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_transform(geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_transform(geometry, integer) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'transform'; | |
ALTER FUNCTION public.st_transform(geometry, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 754 (class 1255 OID 19111) | |
-- Dependencies: 1102 6 1102 | |
-- Name: st_translate(geometry, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_translate(geometry, double precision, double precision) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT translate($1, $2, $3, 0)$_$; | |
ALTER FUNCTION public.st_translate(geometry, double precision, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 753 (class 1255 OID 19110) | |
-- Dependencies: 1102 6 1102 | |
-- Name: st_translate(geometry, double precision, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_translate(geometry, double precision, double precision, double precision) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT affine($1, 1, 0, 0, 0, 1, 0, 0, 0, 1, $2, $3, $4)$_$; | |
ALTER FUNCTION public.st_translate(geometry, double precision, double precision, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 755 (class 1255 OID 19112) | |
-- Dependencies: 6 1102 1102 | |
-- Name: st_transscale(geometry, double precision, double precision, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_transscale(geometry, double precision, double precision, double precision, double precision) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT affine($1, $4, 0, 0, 0, $5, 0, | |
0, 0, 1, $2 * $4, $3 * $5, 0)$_$; | |
ALTER FUNCTION public.st_transscale(geometry, double precision, double precision, double precision, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 757 (class 1255 OID 19114) | |
-- Dependencies: 6 1104 1102 | |
-- Name: st_union(geometry[]); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_union(geometry[]) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'pgis_union_geometry_array'; | |
ALTER FUNCTION public.st_union(geometry[]) OWNER TO postgres; | |
-- | |
-- TOC entry 756 (class 1255 OID 19113) | |
-- Dependencies: 6 1102 1102 1102 | |
-- Name: st_union(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_union(geometry, geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'geomunion'; | |
ALTER FUNCTION public.st_union(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 758 (class 1255 OID 19115) | |
-- Dependencies: 1104 6 1102 | |
-- Name: st_unite_garray(geometry[]); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_unite_garray(geometry[]) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'pgis_union_geometry_array'; | |
ALTER FUNCTION public.st_unite_garray(geometry[]) OWNER TO postgres; | |
-- | |
-- TOC entry 759 (class 1255 OID 19116) | |
-- Dependencies: 6 1096 | |
-- Name: st_width(chip); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_width(chip) RETURNS integer | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'CHIP_getWidth'; | |
ALTER FUNCTION public.st_width(chip) OWNER TO postgres; | |
-- | |
-- TOC entry 760 (class 1255 OID 19117) | |
-- Dependencies: 1102 1102 6 | |
-- Name: st_within(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_within(geometry, geometry) RETURNS boolean | |
LANGUAGE sql IMMUTABLE | |
AS $_$SELECT $1 && $2 AND _ST_Within($1,$2)$_$; | |
ALTER FUNCTION public.st_within(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 761 (class 1255 OID 19118) | |
-- Dependencies: 1102 6 | |
-- Name: st_wkbtosql(bytea); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_wkbtosql(bytea) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_from_WKB'; | |
ALTER FUNCTION public.st_wkbtosql(bytea) OWNER TO postgres; | |
-- | |
-- TOC entry 762 (class 1255 OID 19119) | |
-- Dependencies: 6 1102 | |
-- Name: st_wkttosql(text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_wkttosql(text) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_from_text'; | |
ALTER FUNCTION public.st_wkttosql(text) OWNER TO postgres; | |
-- | |
-- TOC entry 763 (class 1255 OID 19120) | |
-- Dependencies: 1102 6 | |
-- Name: st_x(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_x(geometry) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_x_point'; | |
ALTER FUNCTION public.st_x(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 764 (class 1255 OID 19121) | |
-- Dependencies: 6 1090 | |
-- Name: st_xmax(box3d); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_xmax(box3d) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'BOX3D_xmax'; | |
ALTER FUNCTION public.st_xmax(box3d) OWNER TO postgres; | |
-- | |
-- TOC entry 765 (class 1255 OID 19122) | |
-- Dependencies: 6 1090 | |
-- Name: st_xmin(box3d); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_xmin(box3d) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'BOX3D_xmin'; | |
ALTER FUNCTION public.st_xmin(box3d) OWNER TO postgres; | |
-- | |
-- TOC entry 766 (class 1255 OID 19123) | |
-- Dependencies: 1102 6 | |
-- Name: st_y(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_y(geometry) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_y_point'; | |
ALTER FUNCTION public.st_y(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 767 (class 1255 OID 19124) | |
-- Dependencies: 1090 6 | |
-- Name: st_ymax(box3d); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_ymax(box3d) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'BOX3D_ymax'; | |
ALTER FUNCTION public.st_ymax(box3d) OWNER TO postgres; | |
-- | |
-- TOC entry 768 (class 1255 OID 19125) | |
-- Dependencies: 6 1090 | |
-- Name: st_ymin(box3d); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_ymin(box3d) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'BOX3D_ymin'; | |
ALTER FUNCTION public.st_ymin(box3d) OWNER TO postgres; | |
-- | |
-- TOC entry 769 (class 1255 OID 19126) | |
-- Dependencies: 1102 6 | |
-- Name: st_z(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_z(geometry) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_z_point'; | |
ALTER FUNCTION public.st_z(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 770 (class 1255 OID 19127) | |
-- Dependencies: 6 1090 | |
-- Name: st_zmax(box3d); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_zmax(box3d) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'BOX3D_zmax'; | |
ALTER FUNCTION public.st_zmax(box3d) OWNER TO postgres; | |
-- | |
-- TOC entry 771 (class 1255 OID 19128) | |
-- Dependencies: 6 1102 | |
-- Name: st_zmflag(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_zmflag(geometry) RETURNS smallint | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_zmflag'; | |
ALTER FUNCTION public.st_zmflag(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 772 (class 1255 OID 19129) | |
-- Dependencies: 1090 6 | |
-- Name: st_zmin(box3d); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION st_zmin(box3d) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'BOX3D_zmin'; | |
ALTER FUNCTION public.st_zmin(box3d) OWNER TO postgres; | |
-- | |
-- TOC entry 773 (class 1255 OID 19130) | |
-- Dependencies: 1102 6 1102 | |
-- Name: startpoint(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION startpoint(geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_startpoint_linestring'; | |
ALTER FUNCTION public.startpoint(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 774 (class 1255 OID 19131) | |
-- Dependencies: 6 1102 | |
-- Name: summary(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION summary(geometry) RETURNS text | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_summary'; | |
ALTER FUNCTION public.summary(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 775 (class 1255 OID 19132) | |
-- Dependencies: 1102 6 1102 1102 | |
-- Name: symdifference(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION symdifference(geometry, geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'symdifference'; | |
ALTER FUNCTION public.symdifference(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 776 (class 1255 OID 19133) | |
-- Dependencies: 1102 6 1102 1102 | |
-- Name: symmetricdifference(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION symmetricdifference(geometry, geometry) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'symdifference'; | |
ALTER FUNCTION public.symmetricdifference(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 777 (class 1255 OID 19134) | |
-- Dependencies: 6 1102 | |
-- Name: text(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION text(geometry) RETURNS text | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_to_text'; | |
ALTER FUNCTION public.text(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 778 (class 1255 OID 19135) | |
-- Dependencies: 1102 6 1102 | |
-- Name: touches(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION touches(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'touches'; | |
ALTER FUNCTION public.touches(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 779 (class 1255 OID 19136) | |
-- Dependencies: 1102 6 1102 | |
-- Name: transform(geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION transform(geometry, integer) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'transform'; | |
ALTER FUNCTION public.transform(geometry, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 781 (class 1255 OID 19138) | |
-- Dependencies: 1102 6 1102 | |
-- Name: translate(geometry, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION translate(geometry, double precision, double precision) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT translate($1, $2, $3, 0)$_$; | |
ALTER FUNCTION public.translate(geometry, double precision, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 780 (class 1255 OID 19137) | |
-- Dependencies: 1102 6 1102 | |
-- Name: translate(geometry, double precision, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION translate(geometry, double precision, double precision, double precision) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT affine($1, 1, 0, 0, 0, 1, 0, 0, 0, 1, $2, $3, $4)$_$; | |
ALTER FUNCTION public.translate(geometry, double precision, double precision, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 782 (class 1255 OID 19139) | |
-- Dependencies: 6 1102 1102 | |
-- Name: transscale(geometry, double precision, double precision, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION transscale(geometry, double precision, double precision, double precision, double precision) RETURNS geometry | |
LANGUAGE sql IMMUTABLE STRICT | |
AS $_$SELECT affine($1, $4, 0, 0, 0, $5, 0, | |
0, 0, 1, $2 * $4, $3 * $5, 0)$_$; | |
ALTER FUNCTION public.transscale(geometry, double precision, double precision, double precision, double precision) OWNER TO postgres; | |
-- | |
-- TOC entry 783 (class 1255 OID 19140) | |
-- Dependencies: 1104 6 1102 | |
-- Name: unite_garray(geometry[]); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION unite_garray(geometry[]) RETURNS geometry | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'pgis_union_geometry_array'; | |
ALTER FUNCTION public.unite_garray(geometry[]) OWNER TO postgres; | |
-- | |
-- TOC entry 784 (class 1255 OID 19141) | |
-- Dependencies: 6 1168 | |
-- Name: unlockrows(text); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION unlockrows(text) RETURNS integer | |
LANGUAGE plpgsql STRICT | |
AS $_$ | |
DECLARE | |
ret int; | |
BEGIN | |
IF NOT LongTransactionsEnabled() THEN | |
RAISE EXCEPTION 'Long transaction support disabled, use EnableLongTransaction() to enable.'; | |
END IF; | |
EXECUTE 'DELETE FROM authorization_table where authid = ' || | |
quote_literal($1); | |
GET DIAGNOSTICS ret = ROW_COUNT; | |
RETURN ret; | |
END; | |
$_$; | |
ALTER FUNCTION public.unlockrows(text) OWNER TO postgres; | |
-- | |
-- TOC entry 787 (class 1255 OID 19144) | |
-- Dependencies: 6 1168 | |
-- Name: updategeometrysrid(character varying, character varying, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION updategeometrysrid(character varying, character varying, integer) RETURNS text | |
LANGUAGE plpgsql STRICT | |
AS $_$ | |
DECLARE | |
ret text; | |
BEGIN | |
SELECT UpdateGeometrySRID('','',$1,$2,$3) into ret; | |
RETURN ret; | |
END; | |
$_$; | |
ALTER FUNCTION public.updategeometrysrid(character varying, character varying, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 786 (class 1255 OID 19143) | |
-- Dependencies: 6 1168 | |
-- Name: updategeometrysrid(character varying, character varying, character varying, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION updategeometrysrid(character varying, character varying, character varying, integer) RETURNS text | |
LANGUAGE plpgsql STRICT | |
AS $_$ | |
DECLARE | |
ret text; | |
BEGIN | |
SELECT UpdateGeometrySRID('',$1,$2,$3,$4) into ret; | |
RETURN ret; | |
END; | |
$_$; | |
ALTER FUNCTION public.updategeometrysrid(character varying, character varying, character varying, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 785 (class 1255 OID 19142) | |
-- Dependencies: 1168 6 | |
-- Name: updategeometrysrid(character varying, character varying, character varying, character varying, integer); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION updategeometrysrid(character varying, character varying, character varying, character varying, integer) RETURNS text | |
LANGUAGE plpgsql STRICT | |
AS $_$ | |
DECLARE | |
catalog_name alias for $1; | |
schema_name alias for $2; | |
table_name alias for $3; | |
column_name alias for $4; | |
new_srid alias for $5; | |
myrec RECORD; | |
okay boolean; | |
cname varchar; | |
real_schema name; | |
BEGIN | |
-- Find, check or fix schema_name | |
IF ( schema_name != '' ) THEN | |
okay = 'f'; | |
FOR myrec IN SELECT nspname FROM pg_namespace WHERE text(nspname) = schema_name LOOP | |
okay := 't'; | |
END LOOP; | |
IF ( okay <> 't' ) THEN | |
RAISE EXCEPTION 'Invalid schema name'; | |
ELSE | |
real_schema = schema_name; | |
END IF; | |
ELSE | |
SELECT INTO real_schema current_schema()::text; | |
END IF; | |
-- Find out if the column is in the geometry_columns table | |
okay = 'f'; | |
FOR myrec IN SELECT * from geometry_columns where f_table_schema = text(real_schema) and f_table_name = table_name and f_geometry_column = column_name LOOP | |
okay := 't'; | |
END LOOP; | |
IF (okay <> 't') THEN | |
RAISE EXCEPTION 'column not found in geometry_columns table'; | |
RETURN 'f'; | |
END IF; | |
-- Update ref from geometry_columns table | |
EXECUTE 'UPDATE geometry_columns SET SRID = ' || new_srid::text || | |
' where f_table_schema = ' || | |
quote_literal(real_schema) || ' and f_table_name = ' || | |
quote_literal(table_name) || ' and f_geometry_column = ' || | |
quote_literal(column_name); | |
-- Make up constraint name | |
cname = 'enforce_srid_' || column_name; | |
-- Drop enforce_srid constraint | |
EXECUTE 'ALTER TABLE ' || quote_ident(real_schema) || | |
'.' || quote_ident(table_name) || | |
' DROP constraint ' || quote_ident(cname); | |
-- Update geometries SRID | |
EXECUTE 'UPDATE ' || quote_ident(real_schema) || | |
'.' || quote_ident(table_name) || | |
' SET ' || quote_ident(column_name) || | |
' = setSRID(' || quote_ident(column_name) || | |
', ' || new_srid::text || ')'; | |
-- Reset enforce_srid constraint | |
EXECUTE 'ALTER TABLE ' || quote_ident(real_schema) || | |
'.' || quote_ident(table_name) || | |
' ADD constraint ' || quote_ident(cname) || | |
' CHECK (srid(' || quote_ident(column_name) || | |
') = ' || new_srid::text || ')'; | |
RETURN real_schema || '.' || table_name || '.' || column_name ||' SRID changed to ' || new_srid::text; | |
END; | |
$_$; | |
ALTER FUNCTION public.updategeometrysrid(character varying, character varying, character varying, character varying, integer) OWNER TO postgres; | |
-- | |
-- TOC entry 788 (class 1255 OID 19145) | |
-- Dependencies: 6 1096 | |
-- Name: width(chip); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION width(chip) RETURNS integer | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'CHIP_getWidth'; | |
ALTER FUNCTION public.width(chip) OWNER TO postgres; | |
-- | |
-- TOC entry 789 (class 1255 OID 19146) | |
-- Dependencies: 1102 1102 6 | |
-- Name: within(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION within(geometry, geometry) RETURNS boolean | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'within'; | |
ALTER FUNCTION public.within(geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 790 (class 1255 OID 19147) | |
-- Dependencies: 6 1102 | |
-- Name: x(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION x(geometry) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_x_point'; | |
ALTER FUNCTION public.x(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 791 (class 1255 OID 19148) | |
-- Dependencies: 6 1090 | |
-- Name: xmax(box3d); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION xmax(box3d) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'BOX3D_xmax'; | |
ALTER FUNCTION public.xmax(box3d) OWNER TO postgres; | |
-- | |
-- TOC entry 792 (class 1255 OID 19149) | |
-- Dependencies: 1090 6 | |
-- Name: xmin(box3d); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION xmin(box3d) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'BOX3D_xmin'; | |
ALTER FUNCTION public.xmin(box3d) OWNER TO postgres; | |
-- | |
-- TOC entry 793 (class 1255 OID 19150) | |
-- Dependencies: 6 1102 | |
-- Name: y(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION y(geometry) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_y_point'; | |
ALTER FUNCTION public.y(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 794 (class 1255 OID 19151) | |
-- Dependencies: 1090 6 | |
-- Name: ymax(box3d); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION ymax(box3d) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'BOX3D_ymax'; | |
ALTER FUNCTION public.ymax(box3d) OWNER TO postgres; | |
-- | |
-- TOC entry 795 (class 1255 OID 19152) | |
-- Dependencies: 1090 6 | |
-- Name: ymin(box3d); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION ymin(box3d) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'BOX3D_ymin'; | |
ALTER FUNCTION public.ymin(box3d) OWNER TO postgres; | |
-- | |
-- TOC entry 796 (class 1255 OID 19153) | |
-- Dependencies: 1102 6 | |
-- Name: z(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION z(geometry) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_z_point'; | |
ALTER FUNCTION public.z(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 797 (class 1255 OID 19154) | |
-- Dependencies: 1090 6 | |
-- Name: zmax(box3d); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION zmax(box3d) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'BOX3D_zmax'; | |
ALTER FUNCTION public.zmax(box3d) OWNER TO postgres; | |
-- | |
-- TOC entry 798 (class 1255 OID 19155) | |
-- Dependencies: 6 1102 | |
-- Name: zmflag(geometry); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION zmflag(geometry) RETURNS smallint | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'LWGEOM_zmflag'; | |
ALTER FUNCTION public.zmflag(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 799 (class 1255 OID 19156) | |
-- Dependencies: 1090 6 | |
-- Name: zmin(box3d); Type: FUNCTION; Schema: public; Owner: postgres | |
-- | |
CREATE FUNCTION zmin(box3d) RETURNS double precision | |
LANGUAGE c IMMUTABLE STRICT | |
AS '$libdir/postgis-1.5', 'BOX3D_zmin'; | |
ALTER FUNCTION public.zmin(box3d) OWNER TO postgres; | |
-- | |
-- TOC entry 1173 (class 1255 OID 19157) | |
-- Dependencies: 1104 1102 330 329 6 | |
-- Name: accum(geometry); Type: AGGREGATE; Schema: public; Owner: postgres | |
-- | |
CREATE AGGREGATE accum(geometry) ( | |
SFUNC = pgis_geometry_accum_transfn, | |
STYPE = pgis_abs, | |
FINALFUNC = pgis_geometry_accum_finalfn | |
); | |
ALTER AGGREGATE public.accum(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 1174 (class 1255 OID 19158) | |
-- Dependencies: 331 6 1102 1102 330 | |
-- Name: collect(geometry); Type: AGGREGATE; Schema: public; Owner: postgres | |
-- | |
CREATE AGGREGATE collect(geometry) ( | |
SFUNC = pgis_geometry_accum_transfn, | |
STYPE = pgis_abs, | |
FINALFUNC = pgis_geometry_collect_finalfn | |
); | |
ALTER AGGREGATE public.collect(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 1175 (class 1255 OID 19159) | |
-- Dependencies: 6 1102 500 1093 | |
-- Name: extent(geometry); Type: AGGREGATE; Schema: public; Owner: postgres | |
-- | |
CREATE AGGREGATE extent(geometry) ( | |
SFUNC = public.st_combine_bbox, | |
STYPE = box3d_extent | |
); | |
ALTER AGGREGATE public.extent(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 1176 (class 1255 OID 19160) | |
-- Dependencies: 124 1102 1090 6 | |
-- Name: extent3d(geometry); Type: AGGREGATE; Schema: public; Owner: postgres | |
-- | |
CREATE AGGREGATE extent3d(geometry) ( | |
SFUNC = public.combine_bbox, | |
STYPE = box3d | |
); | |
ALTER AGGREGATE public.extent3d(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 1177 (class 1255 OID 19161) | |
-- Dependencies: 1102 6 1102 330 332 | |
-- Name: makeline(geometry); Type: AGGREGATE; Schema: public; Owner: postgres | |
-- | |
CREATE AGGREGATE makeline(geometry) ( | |
SFUNC = pgis_geometry_accum_transfn, | |
STYPE = pgis_abs, | |
FINALFUNC = pgis_geometry_makeline_finalfn | |
); | |
ALTER AGGREGATE public.makeline(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 1178 (class 1255 OID 19162) | |
-- Dependencies: 1102 496 1102 6 | |
-- Name: memcollect(geometry); Type: AGGREGATE; Schema: public; Owner: postgres | |
-- | |
CREATE AGGREGATE memcollect(geometry) ( | |
SFUNC = public.st_collect, | |
STYPE = geometry | |
); | |
ALTER AGGREGATE public.memcollect(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 1179 (class 1255 OID 19163) | |
-- Dependencies: 231 1102 1102 6 | |
-- Name: memgeomunion(geometry); Type: AGGREGATE; Schema: public; Owner: postgres | |
-- | |
CREATE AGGREGATE memgeomunion(geometry) ( | |
SFUNC = geomunion, | |
STYPE = geometry | |
); | |
ALTER AGGREGATE public.memgeomunion(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 1180 (class 1255 OID 19164) | |
-- Dependencies: 6 333 330 1102 1102 | |
-- Name: polygonize(geometry); Type: AGGREGATE; Schema: public; Owner: postgres | |
-- | |
CREATE AGGREGATE polygonize(geometry) ( | |
SFUNC = pgis_geometry_accum_transfn, | |
STYPE = pgis_abs, | |
FINALFUNC = pgis_geometry_polygonize_finalfn | |
); | |
ALTER AGGREGATE public.polygonize(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 1181 (class 1255 OID 19165) | |
-- Dependencies: 329 330 1102 1104 6 | |
-- Name: st_accum(geometry); Type: AGGREGATE; Schema: public; Owner: postgres | |
-- | |
CREATE AGGREGATE st_accum(geometry) ( | |
SFUNC = pgis_geometry_accum_transfn, | |
STYPE = pgis_abs, | |
FINALFUNC = pgis_geometry_accum_finalfn | |
); | |
ALTER AGGREGATE public.st_accum(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 1182 (class 1255 OID 19166) | |
-- Dependencies: 331 330 1102 1102 6 | |
-- Name: st_collect(geometry); Type: AGGREGATE; Schema: public; Owner: postgres | |
-- | |
CREATE AGGREGATE st_collect(geometry) ( | |
SFUNC = pgis_geometry_accum_transfn, | |
STYPE = pgis_abs, | |
FINALFUNC = pgis_geometry_collect_finalfn | |
); | |
ALTER AGGREGATE public.st_collect(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 1183 (class 1255 OID 19167) | |
-- Dependencies: 500 1102 1093 6 | |
-- Name: st_extent(geometry); Type: AGGREGATE; Schema: public; Owner: postgres | |
-- | |
CREATE AGGREGATE st_extent(geometry) ( | |
SFUNC = public.st_combine_bbox, | |
STYPE = box3d_extent | |
); | |
ALTER AGGREGATE public.st_extent(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 1169 (class 1255 OID 19168) | |
-- Dependencies: 501 1102 1090 6 | |
-- Name: st_extent3d(geometry); Type: AGGREGATE; Schema: public; Owner: postgres | |
-- | |
CREATE AGGREGATE st_extent3d(geometry) ( | |
SFUNC = public.st_combine_bbox, | |
STYPE = box3d | |
); | |
ALTER AGGREGATE public.st_extent3d(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 1170 (class 1255 OID 19169) | |
-- Dependencies: 1102 6 330 332 1102 | |
-- Name: st_makeline(geometry); Type: AGGREGATE; Schema: public; Owner: postgres | |
-- | |
CREATE AGGREGATE st_makeline(geometry) ( | |
SFUNC = pgis_geometry_accum_transfn, | |
STYPE = pgis_abs, | |
FINALFUNC = pgis_geometry_makeline_finalfn | |
); | |
ALTER AGGREGATE public.st_makeline(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 1171 (class 1255 OID 19170) | |
-- Dependencies: 6 496 1102 1102 | |
-- Name: st_memcollect(geometry); Type: AGGREGATE; Schema: public; Owner: postgres | |
-- | |
CREATE AGGREGATE st_memcollect(geometry) ( | |
SFUNC = public.st_collect, | |
STYPE = geometry | |
); | |
ALTER AGGREGATE public.st_memcollect(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 1172 (class 1255 OID 19171) | |
-- Dependencies: 756 6 1102 1102 | |
-- Name: st_memunion(geometry); Type: AGGREGATE; Schema: public; Owner: postgres | |
-- | |
CREATE AGGREGATE st_memunion(geometry) ( | |
SFUNC = public.st_union, | |
STYPE = geometry | |
); | |
ALTER AGGREGATE public.st_memunion(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 1184 (class 1255 OID 19172) | |
-- Dependencies: 330 333 1102 1102 6 | |
-- Name: st_polygonize(geometry); Type: AGGREGATE; Schema: public; Owner: postgres | |
-- | |
CREATE AGGREGATE st_polygonize(geometry) ( | |
SFUNC = pgis_geometry_accum_transfn, | |
STYPE = pgis_abs, | |
FINALFUNC = pgis_geometry_polygonize_finalfn | |
); | |
ALTER AGGREGATE public.st_polygonize(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 1185 (class 1255 OID 19173) | |
-- Dependencies: 330 334 1102 1102 6 | |
-- Name: st_union(geometry); Type: AGGREGATE; Schema: public; Owner: postgres | |
-- | |
CREATE AGGREGATE st_union(geometry) ( | |
SFUNC = pgis_geometry_accum_transfn, | |
STYPE = pgis_abs, | |
FINALFUNC = pgis_geometry_union_finalfn | |
); | |
ALTER AGGREGATE public.st_union(geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 1891 (class 2617 OID 19174) | |
-- Dependencies: 215 6 1102 1102 208 207 | |
-- Name: &&; Type: OPERATOR; Schema: public; Owner: postgres | |
-- | |
CREATE OPERATOR && ( | |
PROCEDURE = geometry_overlap, | |
LEFTARG = geometry, | |
RIGHTARG = geometry, | |
COMMUTATOR = &&, | |
RESTRICT = geometry_gist_sel, | |
JOIN = geometry_gist_joinsel | |
); | |
ALTER OPERATOR public.&& (geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 1892 (class 2617 OID 19175) | |
-- Dependencies: 6 176 180 185 1099 1099 | |
-- Name: &&; Type: OPERATOR; Schema: public; Owner: postgres | |
-- | |
CREATE OPERATOR && ( | |
PROCEDURE = geography_overlaps, | |
LEFTARG = geography, | |
RIGHTARG = geography, | |
COMMUTATOR = &&, | |
RESTRICT = geography_gist_selectivity, | |
JOIN = geography_gist_join_selectivity | |
); | |
ALTER OPERATOR public.&& (geography, geography) OWNER TO postgres; | |
-- | |
-- TOC entry 1893 (class 2617 OID 19177) | |
-- Dependencies: 1102 6 1102 216 | |
-- Name: &<; Type: OPERATOR; Schema: public; Owner: postgres | |
-- | |
CREATE OPERATOR &< ( | |
PROCEDURE = geometry_overleft, | |
LEFTARG = geometry, | |
RIGHTARG = geometry, | |
COMMUTATOR = &>, | |
RESTRICT = positionsel, | |
JOIN = positionjoinsel | |
); | |
ALTER OPERATOR public.&< (geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 1894 (class 2617 OID 19179) | |
-- Dependencies: 1102 214 1102 6 | |
-- Name: &<|; Type: OPERATOR; Schema: public; Owner: postgres | |
-- | |
CREATE OPERATOR &<| ( | |
PROCEDURE = geometry_overbelow, | |
LEFTARG = geometry, | |
RIGHTARG = geometry, | |
COMMUTATOR = |&>, | |
RESTRICT = positionsel, | |
JOIN = positionjoinsel | |
); | |
ALTER OPERATOR public.&<| (geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 1895 (class 2617 OID 19176) | |
-- Dependencies: 1102 217 6 1102 | |
-- Name: &>; Type: OPERATOR; Schema: public; Owner: postgres | |
-- | |
CREATE OPERATOR &> ( | |
PROCEDURE = geometry_overright, | |
LEFTARG = geometry, | |
RIGHTARG = geometry, | |
COMMUTATOR = &<, | |
RESTRICT = positionsel, | |
JOIN = positionjoinsel | |
); | |
ALTER OPERATOR public.&> (geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 1896 (class 2617 OID 19182) | |
-- Dependencies: 6 1102 1102 212 | |
-- Name: <; Type: OPERATOR; Schema: public; Owner: postgres | |
-- | |
CREATE OPERATOR < ( | |
PROCEDURE = geometry_lt, | |
LEFTARG = geometry, | |
RIGHTARG = geometry, | |
COMMUTATOR = >, | |
NEGATOR = >=, | |
RESTRICT = contsel, | |
JOIN = contjoinsel | |
); | |
ALTER OPERATOR public.< (geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 1899 (class 2617 OID 19185) | |
-- Dependencies: 1099 6 1099 184 | |
-- Name: <; Type: OPERATOR; Schema: public; Owner: postgres | |
-- | |
CREATE OPERATOR < ( | |
PROCEDURE = geography_lt, | |
LEFTARG = geography, | |
RIGHTARG = geography, | |
COMMUTATOR = >, | |
NEGATOR = >=, | |
RESTRICT = contsel, | |
JOIN = contjoinsel | |
); | |
ALTER OPERATOR public.< (geography, geography) OWNER TO postgres; | |
-- | |
-- TOC entry 1900 (class 2617 OID 19187) | |
-- Dependencies: 1102 6 1102 211 | |
-- Name: <<; Type: OPERATOR; Schema: public; Owner: postgres | |
-- | |
CREATE OPERATOR << ( | |
PROCEDURE = geometry_left, | |
LEFTARG = geometry, | |
RIGHTARG = geometry, | |
COMMUTATOR = >>, | |
RESTRICT = positionsel, | |
JOIN = positionjoinsel | |
); | |
ALTER OPERATOR public.<< (geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 1901 (class 2617 OID 19189) | |
-- Dependencies: 6 1102 1102 201 | |
-- Name: <<|; Type: OPERATOR; Schema: public; Owner: postgres | |
-- | |
CREATE OPERATOR <<| ( | |
PROCEDURE = geometry_below, | |
LEFTARG = geometry, | |
RIGHTARG = geometry, | |
COMMUTATOR = |>>, | |
RESTRICT = positionsel, | |
JOIN = positionjoinsel | |
); | |
ALTER OPERATOR public.<<| (geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 1902 (class 2617 OID 19190) | |
-- Dependencies: 1102 6 210 1102 | |
-- Name: <=; Type: OPERATOR; Schema: public; Owner: postgres | |
-- | |
CREATE OPERATOR <= ( | |
PROCEDURE = geometry_le, | |
LEFTARG = geometry, | |
RIGHTARG = geometry, | |
COMMUTATOR = >=, | |
NEGATOR = >, | |
RESTRICT = contsel, | |
JOIN = contjoinsel | |
); | |
ALTER OPERATOR public.<= (geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 1903 (class 2617 OID 19191) | |
-- Dependencies: 183 1099 1099 6 | |
-- Name: <=; Type: OPERATOR; Schema: public; Owner: postgres | |
-- | |
CREATE OPERATOR <= ( | |
PROCEDURE = geography_le, | |
LEFTARG = geography, | |
RIGHTARG = geography, | |
COMMUTATOR = >=, | |
NEGATOR = >, | |
RESTRICT = contsel, | |
JOIN = contjoinsel | |
); | |
ALTER OPERATOR public.<= (geography, geography) OWNER TO postgres; | |
-- | |
-- TOC entry 1904 (class 2617 OID 19192) | |
-- Dependencies: 205 6 1102 1102 | |
-- Name: =; Type: OPERATOR; Schema: public; Owner: postgres | |
-- | |
CREATE OPERATOR = ( | |
PROCEDURE = geometry_eq, | |
LEFTARG = geometry, | |
RIGHTARG = geometry, | |
COMMUTATOR = =, | |
RESTRICT = contsel, | |
JOIN = contjoinsel | |
); | |
ALTER OPERATOR public.= (geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 1905 (class 2617 OID 19193) | |
-- Dependencies: 1099 171 1099 6 | |
-- Name: =; Type: OPERATOR; Schema: public; Owner: postgres | |
-- | |
CREATE OPERATOR = ( | |
PROCEDURE = geography_eq, | |
LEFTARG = geography, | |
RIGHTARG = geography, | |
COMMUTATOR = =, | |
RESTRICT = contsel, | |
JOIN = contjoinsel | |
); | |
ALTER OPERATOR public.= (geography, geography) OWNER TO postgres; | |
-- | |
-- TOC entry 1897 (class 2617 OID 19180) | |
-- Dependencies: 209 6 1102 1102 | |
-- Name: >; Type: OPERATOR; Schema: public; Owner: postgres | |
-- | |
CREATE OPERATOR > ( | |
PROCEDURE = geometry_gt, | |
LEFTARG = geometry, | |
RIGHTARG = geometry, | |
COMMUTATOR = <, | |
NEGATOR = <=, | |
RESTRICT = contsel, | |
JOIN = contjoinsel | |
); | |
ALTER OPERATOR public.> (geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 1906 (class 2617 OID 19183) | |
-- Dependencies: 1099 1099 6 182 | |
-- Name: >; Type: OPERATOR; Schema: public; Owner: postgres | |
-- | |
CREATE OPERATOR > ( | |
PROCEDURE = geography_gt, | |
LEFTARG = geography, | |
RIGHTARG = geography, | |
COMMUTATOR = <, | |
NEGATOR = <=, | |
RESTRICT = contsel, | |
JOIN = contjoinsel | |
); | |
ALTER OPERATOR public.> (geography, geography) OWNER TO postgres; | |
-- | |
-- TOC entry 1907 (class 2617 OID 19181) | |
-- Dependencies: 206 1102 1102 6 | |
-- Name: >=; Type: OPERATOR; Schema: public; Owner: postgres | |
-- | |
CREATE OPERATOR >= ( | |
PROCEDURE = geometry_ge, | |
LEFTARG = geometry, | |
RIGHTARG = geometry, | |
COMMUTATOR = <=, | |
NEGATOR = <, | |
RESTRICT = contsel, | |
JOIN = contjoinsel | |
); | |
ALTER OPERATOR public.>= (geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 1908 (class 2617 OID 19184) | |
-- Dependencies: 6 1099 1099 172 | |
-- Name: >=; Type: OPERATOR; Schema: public; Owner: postgres | |
-- | |
CREATE OPERATOR >= ( | |
PROCEDURE = geography_ge, | |
LEFTARG = geography, | |
RIGHTARG = geography, | |
COMMUTATOR = <=, | |
NEGATOR = <, | |
RESTRICT = contsel, | |
JOIN = contjoinsel | |
); | |
ALTER OPERATOR public.>= (geography, geography) OWNER TO postgres; | |
-- | |
-- TOC entry 1909 (class 2617 OID 19186) | |
-- Dependencies: 6 218 1102 1102 | |
-- Name: >>; Type: OPERATOR; Schema: public; Owner: postgres | |
-- | |
CREATE OPERATOR >> ( | |
PROCEDURE = geometry_right, | |
LEFTARG = geometry, | |
RIGHTARG = geometry, | |
COMMUTATOR = <<, | |
RESTRICT = positionsel, | |
JOIN = positionjoinsel | |
); | |
ALTER OPERATOR public.>> (geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 1910 (class 2617 OID 19195) | |
-- Dependencies: 1102 6 204 1102 | |
-- Name: @; Type: OPERATOR; Schema: public; Owner: postgres | |
-- | |
CREATE OPERATOR @ ( | |
PROCEDURE = geometry_contained, | |
LEFTARG = geometry, | |
RIGHTARG = geometry, | |
COMMUTATOR = ~, | |
RESTRICT = contsel, | |
JOIN = contjoinsel | |
); | |
ALTER OPERATOR public.@ (geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 1898 (class 2617 OID 19178) | |
-- Dependencies: 1102 1102 213 6 | |
-- Name: |&>; Type: OPERATOR; Schema: public; Owner: postgres | |
-- | |
CREATE OPERATOR |&> ( | |
PROCEDURE = geometry_overabove, | |
LEFTARG = geometry, | |
RIGHTARG = geometry, | |
COMMUTATOR = &<|, | |
RESTRICT = positionsel, | |
JOIN = positionjoinsel | |
); | |
ALTER OPERATOR public.|&> (geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 1911 (class 2617 OID 19188) | |
-- Dependencies: 200 1102 6 1102 | |
-- Name: |>>; Type: OPERATOR; Schema: public; Owner: postgres | |
-- | |
CREATE OPERATOR |>> ( | |
PROCEDURE = geometry_above, | |
LEFTARG = geometry, | |
RIGHTARG = geometry, | |
COMMUTATOR = <<|, | |
RESTRICT = positionsel, | |
JOIN = positionjoinsel | |
); | |
ALTER OPERATOR public.|>> (geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 1912 (class 2617 OID 19194) | |
-- Dependencies: 6 1102 1102 203 | |
-- Name: ~; Type: OPERATOR; Schema: public; Owner: postgres | |
-- | |
CREATE OPERATOR ~ ( | |
PROCEDURE = geometry_contain, | |
LEFTARG = geometry, | |
RIGHTARG = geometry, | |
COMMUTATOR = @, | |
RESTRICT = contsel, | |
JOIN = contjoinsel | |
); | |
ALTER OPERATOR public.~ (geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 1913 (class 2617 OID 19196) | |
-- Dependencies: 1102 220 6 1102 | |
-- Name: ~=; Type: OPERATOR; Schema: public; Owner: postgres | |
-- | |
CREATE OPERATOR ~= ( | |
PROCEDURE = geometry_samebox, | |
LEFTARG = geometry, | |
RIGHTARG = geometry, | |
COMMUTATOR = ~=, | |
RESTRICT = eqsel, | |
JOIN = eqjoinsel | |
); | |
ALTER OPERATOR public.~= (geometry, geometry) OWNER TO postgres; | |
-- | |
-- TOC entry 2026 (class 2616 OID 19198) | |
-- Dependencies: 2137 6 1099 | |
-- Name: btree_geography_ops; Type: OPERATOR CLASS; Schema: public; Owner: postgres | |
-- | |
CREATE OPERATOR CLASS btree_geography_ops | |
DEFAULT FOR TYPE geography USING btree AS | |
OPERATOR 1 <(geography,geography) , | |
OPERATOR 2 <=(geography,geography) , | |
OPERATOR 3 =(geography,geography) , | |
OPERATOR 4 >=(geography,geography) , | |
OPERATOR 5 >(geography,geography) , | |
FUNCTION 1 geography_cmp(geography,geography); | |
ALTER OPERATOR CLASS public.btree_geography_ops USING btree OWNER TO postgres; | |
-- | |
-- TOC entry 2027 (class 2616 OID 19206) | |
-- Dependencies: 1102 2138 6 | |
-- Name: btree_geometry_ops; Type: OPERATOR CLASS; Schema: public; Owner: postgres | |
-- | |
CREATE OPERATOR CLASS btree_geometry_ops | |
DEFAULT FOR TYPE geometry USING btree AS | |
OPERATOR 1 <(geometry,geometry) , | |
OPERATOR 2 <=(geometry,geometry) , | |
OPERATOR 3 =(geometry,geometry) , | |
OPERATOR 4 >=(geometry,geometry) , | |
OPERATOR 5 >(geometry,geometry) , | |
FUNCTION 1 geometry_cmp(geometry,geometry); | |
ALTER OPERATOR CLASS public.btree_geometry_ops USING btree OWNER TO postgres; | |
-- | |
-- TOC entry 2028 (class 2616 OID 19214) | |
-- Dependencies: 1099 1107 6 2139 | |
-- Name: gist_geography_ops; Type: OPERATOR CLASS; Schema: public; Owner: postgres | |
-- | |
CREATE OPERATOR CLASS gist_geography_ops | |
DEFAULT FOR TYPE geography USING gist AS | |
STORAGE gidx , | |
OPERATOR 3 &&(geography,geography) , | |
FUNCTION 1 geography_gist_consistent(internal,geometry,integer) , | |
FUNCTION 2 geography_gist_union(bytea,internal) , | |
FUNCTION 3 geography_gist_compress(internal) , | |
FUNCTION 4 geography_gist_decompress(internal) , | |
FUNCTION 5 geography_gist_penalty(internal,internal,internal) , | |
FUNCTION 6 geography_gist_picksplit(internal,internal) , | |
FUNCTION 7 geography_gist_same(box2d,box2d,internal); | |
ALTER OPERATOR CLASS public.gist_geography_ops USING gist OWNER TO postgres; | |
-- | |
-- TOC entry 2029 (class 2616 OID 19224) | |
-- Dependencies: 2140 6 1087 1102 | |
-- Name: gist_geometry_ops; Type: OPERATOR CLASS; Schema: public; Owner: postgres | |
-- | |
CREATE OPERATOR CLASS gist_geometry_ops | |
DEFAULT FOR TYPE geometry USING gist AS | |
STORAGE box2d , | |
OPERATOR 1 <<(geometry,geometry) , | |
OPERATOR 2 &<(geometry,geometry) , | |
OPERATOR 3 &&(geometry,geometry) , | |
OPERATOR 4 &>(geometry,geometry) , | |
OPERATOR 5 >>(geometry,geometry) , | |
OPERATOR 6 ~=(geometry,geometry) , | |
OPERATOR 7 ~(geometry,geometry) , | |
OPERATOR 8 @(geometry,geometry) , | |
OPERATOR 9 &<|(geometry,geometry) , | |
OPERATOR 10 <<|(geometry,geometry) , | |
OPERATOR 11 |>>(geometry,geometry) , | |
OPERATOR 12 |&>(geometry,geometry) , | |
FUNCTION 1 lwgeom_gist_consistent(internal,geometry,integer) , | |
FUNCTION 2 lwgeom_gist_union(bytea,internal) , | |
FUNCTION 3 lwgeom_gist_compress(internal) , | |
FUNCTION 4 lwgeom_gist_decompress(internal) , | |
FUNCTION 5 lwgeom_gist_penalty(internal,internal,internal) , | |
FUNCTION 6 lwgeom_gist_picksplit(internal,internal) , | |
FUNCTION 7 lwgeom_gist_same(box2d,box2d,internal); | |
ALTER OPERATOR CLASS public.gist_geometry_ops USING gist OWNER TO postgres; | |
SET search_path = pg_catalog; | |
-- | |
-- TOC entry 2708 (class 2605 OID 19244) | |
-- Dependencies: 110 110 1087 1090 | |
-- Name: CAST (public.box2d AS public.box3d); Type: CAST; Schema: pg_catalog; Owner: | |
-- | |
CREATE CAST (public.box2d AS public.box3d) WITH FUNCTION public.box3d(public.box2d) AS IMPLICIT; | |
-- | |
-- TOC entry 2709 (class 2605 OID 19245) | |
-- Dependencies: 194 194 1102 1087 | |
-- Name: CAST (public.box2d AS public.geometry); Type: CAST; Schema: pg_catalog; Owner: | |
-- | |
CREATE CAST (public.box2d AS public.geometry) WITH FUNCTION public.geometry(public.box2d) AS IMPLICIT; | |
-- | |
-- TOC entry 2710 (class 2605 OID 19246) | |
-- Dependencies: 105 1090 105 | |
-- Name: CAST (public.box3d AS box); Type: CAST; Schema: pg_catalog; Owner: | |
-- | |
CREATE CAST (public.box3d AS box) WITH FUNCTION public.box(public.box3d) AS IMPLICIT; | |
-- | |
-- TOC entry 2711 (class 2605 OID 19247) | |
-- Dependencies: 108 1087 1090 108 | |
-- Name: CAST (public.box3d AS public.box2d); Type: CAST; Schema: pg_catalog; Owner: | |
-- | |
CREATE CAST (public.box3d AS public.box2d) WITH FUNCTION public.box2d(public.box3d) AS IMPLICIT; | |
-- | |
-- TOC entry 2712 (class 2605 OID 19248) | |
-- Dependencies: 195 1102 1090 195 | |
-- Name: CAST (public.box3d AS public.geometry); Type: CAST; Schema: pg_catalog; Owner: | |
-- | |
CREATE CAST (public.box3d AS public.geometry) WITH FUNCTION public.geometry(public.box3d) AS IMPLICIT; | |
-- | |
-- TOC entry 2713 (class 2605 OID 19249) | |
-- Dependencies: 106 106 1087 1093 | |
-- Name: CAST (public.box3d_extent AS public.box2d); Type: CAST; Schema: pg_catalog; Owner: | |
-- | |
CREATE CAST (public.box3d_extent AS public.box2d) WITH FUNCTION public.box2d(public.box3d_extent) AS IMPLICIT; | |
-- | |
-- TOC entry 2714 (class 2605 OID 19250) | |
-- Dependencies: 111 1093 1090 111 | |
-- Name: CAST (public.box3d_extent AS public.box3d); Type: CAST; Schema: pg_catalog; Owner: | |
-- | |
CREATE CAST (public.box3d_extent AS public.box3d) WITH FUNCTION public.box3d_extent(public.box3d_extent) AS IMPLICIT; | |
-- | |
-- TOC entry 2715 (class 2605 OID 19251) | |
-- Dependencies: 193 1093 1102 193 | |
-- Name: CAST (public.box3d_extent AS public.geometry); Type: CAST; Schema: pg_catalog; Owner: | |
-- | |
CREATE CAST (public.box3d_extent AS public.geometry) WITH FUNCTION public.geometry(public.box3d_extent) AS IMPLICIT; | |
-- | |
-- TOC entry 2519 (class 2605 OID 19252) | |
-- Dependencies: 198 1102 198 | |
-- Name: CAST (bytea AS public.geometry); Type: CAST; Schema: pg_catalog; Owner: | |
-- | |
CREATE CAST (bytea AS public.geometry) WITH FUNCTION public.geometry(bytea) AS IMPLICIT; | |
-- | |
-- TOC entry 2716 (class 2605 OID 19253) | |
-- Dependencies: 197 197 1096 1102 | |
-- Name: CAST (public.chip AS public.geometry); Type: CAST; Schema: pg_catalog; Owner: | |
-- | |
CREATE CAST (public.chip AS public.geometry) WITH FUNCTION public.geometry(public.chip) AS IMPLICIT; | |
-- | |
-- TOC entry 2717 (class 2605 OID 19254) | |
-- Dependencies: 168 1099 168 1099 | |
-- Name: CAST (public.geography AS public.geography); Type: CAST; Schema: pg_catalog; Owner: | |
-- | |
CREATE CAST (public.geography AS public.geography) WITH FUNCTION public.geography(public.geography, integer, boolean) AS IMPLICIT; | |
-- | |
-- TOC entry 2718 (class 2605 OID 19255) | |
-- Dependencies: 199 1102 199 1099 | |
-- Name: CAST (public.geography AS public.geometry); Type: CAST; Schema: pg_catalog; Owner: | |
-- | |
CREATE CAST (public.geography AS public.geometry) WITH FUNCTION public.geometry(public.geography); | |
-- | |
-- TOC entry 2721 (class 2605 OID 19256) | |
-- Dependencies: 104 1102 104 | |
-- Name: CAST (public.geometry AS box); Type: CAST; Schema: pg_catalog; Owner: | |
-- | |
CREATE CAST (public.geometry AS box) WITH FUNCTION public.box(public.geometry) AS IMPLICIT; | |
-- | |
-- TOC entry 2722 (class 2605 OID 19257) | |
-- Dependencies: 107 1087 1102 107 | |
-- Name: CAST (public.geometry AS public.box2d); Type: CAST; Schema: pg_catalog; Owner: | |
-- | |
CREATE CAST (public.geometry AS public.box2d) WITH FUNCTION public.box2d(public.geometry) AS IMPLICIT; | |
-- | |
-- TOC entry 2723 (class 2605 OID 19258) | |
-- Dependencies: 109 1090 1102 109 | |
-- Name: CAST (public.geometry AS public.box3d); Type: CAST; Schema: pg_catalog; Owner: | |
-- | |
CREATE CAST (public.geometry AS public.box3d) WITH FUNCTION public.box3d(public.geometry) AS IMPLICIT; | |
-- | |
-- TOC entry 2719 (class 2605 OID 19259) | |
-- Dependencies: 116 1102 116 | |
-- Name: CAST (public.geometry AS bytea); Type: CAST; Schema: pg_catalog; Owner: | |
-- | |
CREATE CAST (public.geometry AS bytea) WITH FUNCTION public.bytea(public.geometry) AS IMPLICIT; | |
-- | |
-- TOC entry 2724 (class 2605 OID 19260) | |
-- Dependencies: 169 1099 1102 169 | |
-- Name: CAST (public.geometry AS public.geography); Type: CAST; Schema: pg_catalog; Owner: | |
-- | |
CREATE CAST (public.geometry AS public.geography) WITH FUNCTION public.geography(public.geometry) AS IMPLICIT; | |
-- | |
-- TOC entry 2720 (class 2605 OID 19261) | |
-- Dependencies: 777 1102 777 | |
-- Name: CAST (public.geometry AS text); Type: CAST; Schema: pg_catalog; Owner: | |
-- | |
CREATE CAST (public.geometry AS text) WITH FUNCTION public.text(public.geometry) AS IMPLICIT; | |
-- | |
-- TOC entry 2585 (class 2605 OID 19262) | |
-- Dependencies: 196 196 1102 | |
-- Name: CAST (text AS public.geometry); Type: CAST; Schema: pg_catalog; Owner: | |
-- | |
CREATE CAST (text AS public.geometry) WITH FUNCTION public.geometry(text) AS IMPLICIT; | |
SET search_path = public, pg_catalog; | |
SET default_tablespace = ''; | |
SET default_with_oids = false; | |
-- | |
-- TOC entry 2423 (class 1259 OID 40481) | |
-- Dependencies: 6 | |
-- Name: agency; Type: TABLE; Schema: public; Owner: postgres; Tablespace: | |
-- | |
CREATE TABLE agency ( | |
agency_name text NOT NULL, | |
agency_url text, | |
agency_timezone text, | |
agency_lang text, | |
agency_phone text | |
); | |
ALTER TABLE public.agency OWNER TO postgres; | |
-- | |
-- TOC entry 2409 (class 1259 OID 19269) | |
-- Dependencies: 6 | |
-- Name: calendar; Type: TABLE; Schema: public; Owner: postgres; Tablespace: | |
-- | |
CREATE TABLE calendar ( | |
service_id text NOT NULL, | |
start_date text, | |
end_date text, | |
monday integer, | |
tuesday integer, | |
wednesday integer, | |
thursday integer, | |
friday integer, | |
saturday integer, | |
sunday integer | |
); | |
ALTER TABLE public.calendar OWNER TO postgres; | |
-- | |
-- TOC entry 2410 (class 1259 OID 19275) | |
-- Dependencies: 6 | |
-- Name: calendar_dates; Type: TABLE; Schema: public; Owner: postgres; Tablespace: | |
-- | |
CREATE TABLE calendar_dates ( | |
service_id text NOT NULL, | |
date text NOT NULL, | |
exception_type text | |
); | |
ALTER TABLE public.calendar_dates OWNER TO postgres; | |
-- | |
-- TOC entry 2411 (class 1259 OID 19281) | |
-- Dependencies: 2514 6 | |
-- Name: geography_columns; Type: VIEW; Schema: public; Owner: postgres | |
-- | |
CREATE VIEW geography_columns AS | |
SELECT current_database() AS f_table_catalog, n.nspname AS f_table_schema, c.relname AS f_table_name, a.attname AS f_geography_column, geography_typmod_dims(a.atttypmod) AS coord_dimension, geography_typmod_srid(a.atttypmod) AS srid, geography_typmod_type(a.atttypmod) AS type FROM pg_class c, pg_attribute a, pg_type t, pg_namespace n WHERE ((((((c.relkind = ANY (ARRAY['r'::"char", 'v'::"char"])) AND (t.typname = 'geography'::name)) AND (a.attisdropped = false)) AND (a.atttypid = t.oid)) AND (a.attrelid = c.oid)) AND (c.relnamespace = n.oid)); | |
ALTER TABLE public.geography_columns OWNER TO postgres; | |
SET default_with_oids = true; | |
-- | |
-- TOC entry 2412 (class 1259 OID 19286) | |
-- Dependencies: 6 | |
-- Name: geometry_columns; Type: TABLE; Schema: public; Owner: postgres; Tablespace: | |
-- | |
CREATE TABLE geometry_columns ( | |
f_table_catalog character varying(256) NOT NULL, | |
f_table_schema character varying(256) NOT NULL, | |
f_table_name character varying(256) NOT NULL, | |
f_geometry_column character varying(256) NOT NULL, | |
coord_dimension integer NOT NULL, | |
srid integer NOT NULL, | |
type character varying(30) NOT NULL | |
); | |
ALTER TABLE public.geometry_columns OWNER TO postgres; | |
SET default_with_oids = false; | |
-- | |
-- TOC entry 2413 (class 1259 OID 19292) | |
-- Dependencies: 6 | |
-- Name: myway_observations; Type: TABLE; Schema: public; Owner: postgres; Tablespace: | |
-- | |
CREATE TABLE myway_observations ( | |
observation_id text NOT NULL, | |
myway_stop text, | |
"time" timestamp with time zone, | |
myway_route text | |
); | |
ALTER TABLE public.myway_observations OWNER TO postgres; | |
-- | |
-- TOC entry 2427 (class 1259 OID 40519) | |
-- Dependencies: 6 | |
-- Name: myway_routes; Type: TABLE; Schema: public; Owner: postgres; Tablespace: | |
-- | |
CREATE TABLE myway_routes ( | |
myway_route text NOT NULL, | |
route_short_name text, | |
trip_headsign text | |
); | |
ALTER TABLE public.myway_routes OWNER TO postgres; | |
-- | |
-- TOC entry 2424 (class 1259 OID 40489) | |
-- Dependencies: 6 | |
-- Name: myway_stops; Type: TABLE; Schema: public; Owner: postgres; Tablespace: | |
-- | |
CREATE TABLE myway_stops ( | |
myway_stop text NOT NULL, | |
stop_id text | |
); | |
ALTER TABLE public.myway_stops OWNER TO postgres; | |
-- | |
-- TOC entry 2425 (class 1259 OID 40498) | |
-- Dependencies: 6 | |
-- Name: myway_timingdeltas; Type: TABLE; Schema: public; Owner: postgres; Tablespace: | |
-- | |
CREATE TABLE myway_timingdeltas ( | |
observation_id text NOT NULL, | |
route_id text, | |
stop_id text, | |
timing_delta integer, | |
"time" time with time zone, | |
date date, | |
timing_period text, | |
stop_sequence integer, | |
myway_stop text, | |
route_name text | |
); | |
ALTER TABLE public.myway_timingdeltas OWNER TO postgres; | |
-- | |
-- TOC entry 2426 (class 1259 OID 40504) | |
-- Dependencies: 6 2425 | |
-- Name: myway_timingdeltas_timing_period_seq; Type: SEQUENCE; Schema: public; Owner: postgres | |
-- | |
CREATE SEQUENCE myway_timingdeltas_timing_period_seq | |
START WITH 1 | |
INCREMENT BY 1 | |
NO MINVALUE | |
NO MAXVALUE | |
CACHE 1; | |
ALTER TABLE public.myway_timingdeltas_timing_period_seq OWNER TO postgres; | |
-- | |
-- TOC entry 2771 (class 0 OID 0) | |
-- Dependencies: 2426 | |
-- Name: myway_timingdeltas_timing_period_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres | |
-- | |
ALTER SEQUENCE myway_timingdeltas_timing_period_seq OWNED BY myway_timingdeltas.timing_period; | |
-- | |
-- TOC entry 2420 (class 1259 OID 40443) | |
-- Dependencies: 6 | |
-- Name: routes; Type: TABLE; Schema: public; Owner: postgres; Tablespace: | |
-- | |
CREATE TABLE routes ( | |
route_id text NOT NULL, | |
route_short_name text, | |
route_long_name text, | |
route_desc text, | |
route_type integer, | |
route_url text, | |
route_text_color text, | |
route_color text | |
); | |
ALTER TABLE public.routes OWNER TO postgres; | |
-- | |
-- TOC entry 2414 (class 1259 OID 19328) | |
-- Dependencies: 6 | |
-- Name: servicealerts_alerts; Type: TABLE; Schema: public; Owner: postgres; Tablespace: | |
-- | |
CREATE TABLE servicealerts_alerts ( | |
id integer NOT NULL, | |
url text, | |
description text, | |
start timestamp with time zone, | |
"end" timestamp with time zone, | |
cause text, | |
effect text, | |
header text | |
); | |
ALTER TABLE public.servicealerts_alerts OWNER TO postgres; | |
-- | |
-- TOC entry 2415 (class 1259 OID 19334) | |
-- Dependencies: 2414 6 | |
-- Name: servicealerts_alerts_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres | |
-- | |
CREATE SEQUENCE servicealerts_alerts_id_seq | |
START WITH 1 | |
INCREMENT BY 1 | |
NO MINVALUE | |
NO MAXVALUE | |
CACHE 1; | |
ALTER TABLE public.servicealerts_alerts_id_seq OWNER TO postgres; | |
-- | |
-- TOC entry 2772 (class 0 OID 0) | |
-- Dependencies: 2415 | |
-- Name: servicealerts_alerts_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres | |
-- | |
ALTER SEQUENCE servicealerts_alerts_id_seq OWNED BY servicealerts_alerts.id; | |
-- | |
-- TOC entry 2416 (class 1259 OID 19336) | |
-- Dependencies: 6 | |
-- Name: servicealerts_informed; Type: TABLE; Schema: public; Owner: postgres; Tablespace: | |
-- | |
CREATE TABLE servicealerts_informed ( | |
servicealert_id integer NOT NULL, | |
informed_class text NOT NULL, | |
informed_id text NOT NULL, | |
informed_action text | |
); | |
ALTER TABLE public.servicealerts_informed OWNER TO postgres; | |
-- | |
-- TOC entry 2417 (class 1259 OID 19342) | |
-- Dependencies: 6 | |
-- Name: shapes; Type: TABLE; Schema: public; Owner: postgres; Tablespace: | |
-- | |
CREATE TABLE shapes ( | |
shape_id text NOT NULL, | |
shape_pt_lat double precision, | |
shape_pt_lon double precision, | |
shape_pt_sequence integer NOT NULL, | |
shape_dist_traveled integer, | |
shape_pt geography, | |
); | |
ALTER TABLE public.shapes OWNER TO postgres; | |
-- | |
-- TOC entry 2418 (class 1259 OID 19348) | |
-- Dependencies: 6 | |
-- Name: spatial_ref_sys; Type: TABLE; Schema: public; Owner: postgres; Tablespace: | |
-- | |
CREATE TABLE spatial_ref_sys ( | |
srid integer NOT NULL, | |
auth_name character varying(256), | |
auth_srid integer, | |
srtext character varying(2048), | |
proj4text character varying(2048) | |
); | |
ALTER TABLE public.spatial_ref_sys OWNER TO postgres; | |
-- | |
-- TOC entry 2419 (class 1259 OID 20682) | |
-- Dependencies: 6 | |
-- Name: stop_times; Type: TABLE; Schema: public; Owner: postgres; Tablespace: | |
-- | |
CREATE TABLE stop_times ( | |
trip_id text NOT NULL, | |
arrival_time time without time zone, | |
departure_time time without time zone, | |
stop_id text, | |
stop_sequence integer NOT NULL, | |
stop_headsign text, | |
pickup_type text, | |
drop_off_type text, | |
shape_dist_travelled text | |
); | |
ALTER TABLE public.stop_times OWNER TO postgres; | |
-- | |
-- TOC entry 2421 (class 1259 OID 40452) | |
-- Dependencies: 6 1099 | |
-- Name: stops; Type: TABLE; Schema: public; Owner: postgres; Tablespace: | |
-- | |
CREATE TABLE stops ( | |
stop_id text NOT NULL, | |
stop_code text, | |
stop_name text, | |
stop_desc text, | |
stop_lat double precision, | |
stop_lon double precision, | |
zone_id text, | |
stop_url text, | |
location_type integer, | |
"position" geography | |
); | |
ALTER TABLE public.stops OWNER TO postgres; | |
-- | |
-- TOC entry 2422 (class 1259 OID 40466) | |
-- Dependencies: 6 | |
-- Name: trips; Type: TABLE; Schema: public; Owner: postgres; Tablespace: | |
-- | |
CREATE TABLE trips ( | |
route_id text, | |
service_id text, | |
trip_id text NOT NULL, | |
trip_headsign text, | |
direction_id text, | |
block_id text, | |
shape_id text | |
); | |
ALTER TABLE public.trips OWNER TO postgres; | |
-- | |
-- TOC entry 2725 (class 2604 OID 19372) | |
-- Dependencies: 2415 2414 | |
-- Name: id; Type: DEFAULT; Schema: public; Owner: postgres | |
-- | |
ALTER TABLE servicealerts_alerts ALTER COLUMN id SET DEFAULT nextval('servicealerts_alerts_id_seq'::regclass); | |
-- | |
-- TOC entry 2758 (class 2606 OID 40488) | |
-- Dependencies: 2423 2423 | |
-- Name: agency_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres; Tablespace: | |
-- | |
ALTER TABLE ONLY agency | |
ADD CONSTRAINT agency_pkey PRIMARY KEY (agency_name); | |
-- | |
-- TOC entry 2729 (class 2606 OID 19376) | |
-- Dependencies: 2410 2410 2410 | |
-- Name: calendar_dates_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres; Tablespace: | |
-- | |
ALTER TABLE ONLY calendar_dates | |
ADD CONSTRAINT calendar_dates_pkey PRIMARY KEY (service_id, date); | |
-- | |
-- TOC entry 2727 (class 2606 OID 19378) | |
-- Dependencies: 2409 2409 | |
-- Name: calendar_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres; Tablespace: | |
-- | |
ALTER TABLE ONLY calendar | |
ADD CONSTRAINT calendar_pkey PRIMARY KEY (service_id); | |
-- | |
-- TOC entry 2731 (class 2606 OID 19380) | |
-- Dependencies: 2412 2412 2412 2412 2412 | |
-- Name: geometry_columns_pk; Type: CONSTRAINT; Schema: public; Owner: postgres; Tablespace: | |
-- | |
ALTER TABLE ONLY geometry_columns | |
ADD CONSTRAINT geometry_columns_pk PRIMARY KEY (f_table_catalog, f_table_schema, f_table_name, f_geometry_column); | |
-- | |
-- TOC entry 2733 (class 2606 OID 19382) | |
-- Dependencies: 2413 2413 | |
-- Name: myway_observations_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres; Tablespace: | |
-- | |
ALTER TABLE ONLY myway_observations | |
ADD CONSTRAINT myway_observations_pkey PRIMARY KEY (observation_id); | |
-- | |
-- TOC entry 2764 (class 2606 OID 40526) | |
-- Dependencies: 2427 2427 | |
-- Name: myway_routes_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres; Tablespace: | |
-- | |
ALTER TABLE ONLY myway_routes | |
ADD CONSTRAINT myway_routes_pkey PRIMARY KEY (myway_route); | |
-- | |
-- TOC entry 2762 (class 2606 OID 40507) | |
-- Dependencies: 2425 2425 | |
-- Name: myway_timingdeltas_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres; Tablespace: | |
-- | |
ALTER TABLE ONLY myway_timingdeltas | |
ADD CONSTRAINT myway_timingdeltas_pkey PRIMARY KEY (observation_id); | |
-- | |
-- TOC entry 2760 (class 2606 OID 40496) | |
-- Dependencies: 2424 2424 | |
-- Name: mywaystops_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres; Tablespace: | |
-- | |
ALTER TABLE ONLY myway_stops | |
ADD CONSTRAINT mywaystops_pkey PRIMARY KEY (myway_stop); | |
-- | |
-- TOC entry 2749 (class 2606 OID 40450) | |
-- Dependencies: 2420 2420 | |
-- Name: routes_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres; Tablespace: | |
-- | |
ALTER TABLE ONLY routes | |
ADD CONSTRAINT routes_pkey PRIMARY KEY (route_id); | |
-- | |
-- TOC entry 2735 (class 2606 OID 19392) | |
-- Dependencies: 2414 2414 | |
-- Name: servicealerts_alerts_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres; Tablespace: | |
-- | |
ALTER TABLE ONLY servicealerts_alerts | |
ADD CONSTRAINT servicealerts_alerts_pkey PRIMARY KEY (id); | |
-- | |
-- TOC entry 2737 (class 2606 OID 19394) | |
-- Dependencies: 2416 2416 2416 2416 | |
-- Name: servicealerts_informed_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres; Tablespace: | |
-- | |
ALTER TABLE ONLY servicealerts_informed | |
ADD CONSTRAINT servicealerts_informed_pkey PRIMARY KEY (servicealert_id, informed_class, informed_id); | |
-- | |
-- TOC entry 2739 (class 2606 OID 19396) | |
-- Dependencies: 2417 2417 2417 | |
-- Name: shapes_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres; Tablespace: | |
-- | |
ALTER TABLE ONLY shapes | |
ADD CONSTRAINT shapes_pkey PRIMARY KEY (shape_id, shape_pt_sequence); | |
-- | |
-- TOC entry 2741 (class 2606 OID 19398) | |
-- Dependencies: 2418 2418 | |
-- Name: spatial_ref_sys_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres; Tablespace: | |
-- | |
ALTER TABLE ONLY spatial_ref_sys | |
ADD CONSTRAINT spatial_ref_sys_pkey PRIMARY KEY (srid); | |
-- | |
-- TOC entry 2744 (class 2606 OID 40421) | |
-- Dependencies: 2419 2419 2419 | |
-- Name: stop_times_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres; Tablespace: | |
-- | |
ALTER TABLE ONLY stop_times | |
ADD CONSTRAINT stop_times_pkey PRIMARY KEY (trip_id, stop_sequence); | |
-- | |
-- TOC entry 2751 (class 2606 OID 40459) | |
-- Dependencies: 2421 2421 | |
-- Name: stops_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres; Tablespace: | |
-- | |
ALTER TABLE ONLY stops | |
ADD CONSTRAINT stops_pkey PRIMARY KEY (stop_id); | |
-- | |
-- TOC entry 2753 (class 2606 OID 40461) | |
-- Dependencies: 2421 2421 | |
-- Name: stops_stop_code_key; Type: CONSTRAINT; Schema: public; Owner: postgres; Tablespace: | |
-- | |
ALTER TABLE ONLY stops | |
ADD CONSTRAINT stops_stop_code_key UNIQUE (stop_code); | |
-- | |
-- TOC entry 2756 (class 2606 OID 40473) | |
-- Dependencies: 2422 2422 | |
-- Name: trips_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres; Tablespace: | |
-- | |
ALTER TABLE ONLY trips | |
ADD CONSTRAINT trips_pkey PRIMARY KEY (trip_id); | |
-- | |
-- TOC entry 2747 (class 1259 OID 40451) | |
-- Dependencies: 2420 | |
-- Name: routenumber; Type: INDEX; Schema: public; Owner: postgres; Tablespace: | |
-- | |
CREATE INDEX routenumber ON routes USING btree (route_short_name); | |
-- | |
-- TOC entry 2754 (class 1259 OID 40474) | |
-- Dependencies: 2422 | |
-- Name: routetrips; Type: INDEX; Schema: public; Owner: postgres; Tablespace: | |
-- | |
CREATE INDEX routetrips ON trips USING btree (route_id); | |
-- | |
-- TOC entry 2742 (class 1259 OID 40418) | |
-- Dependencies: 2419 2419 2419 | |
-- Name: starttime; Type: INDEX; Schema: public; Owner: postgres; Tablespace: | |
-- | |
CREATE UNIQUE INDEX starttime ON stop_times USING btree (trip_id, stop_id, stop_sequence); | |
-- | |
-- TOC entry 2745 (class 1259 OID 40406) | |
-- Dependencies: 2419 2419 | |
-- Name: stoptimes; Type: INDEX; Schema: public; Owner: postgres; Tablespace: | |
-- | |
CREATE INDEX stoptimes ON stop_times USING btree (arrival_time, stop_id); | |
-- | |
-- TOC entry 2746 (class 1259 OID 40419) | |
-- Dependencies: 2419 2419 | |
-- Name: triptimes; Type: INDEX; Schema: public; Owner: postgres; Tablespace: | |
-- | |
CREATE INDEX triptimes ON stop_times USING btree (trip_id, arrival_time); | |
-- | |
-- TOC entry 2765 (class 2606 OID 19412) | |
-- Dependencies: 2734 2414 2416 | |
-- Name: servicealerts_alertid; Type: FK CONSTRAINT; Schema: public; Owner: postgres | |
-- | |
ALTER TABLE ONLY servicealerts_informed | |
ADD CONSTRAINT servicealerts_alertid FOREIGN KEY (servicealert_id) REFERENCES servicealerts_alerts(id); | |
-- | |
-- TOC entry 2770 (class 0 OID 0) | |
-- Dependencies: 6 | |
-- Name: public; Type: ACL; Schema: -; Owner: postgres | |
-- | |
REVOKE ALL ON SCHEMA public FROM PUBLIC; | |
REVOKE ALL ON SCHEMA public FROM postgres; | |
GRANT ALL ON SCHEMA public TO postgres; | |
GRANT ALL ON SCHEMA public TO PUBLIC; | |
-- Completed on 2011-10-11 23:16:12 | |
-- | |
-- PostgreSQL database dump complete | |
-- | |
/*! jQuery Mobile v1.1.0 db342b1f315c282692791aa870455901fdb46a55 jquerymobile.com | jquery.org/license */ | |
.ui-bar-a{border:1px solid #333;background:#111;color:#fff;font-weight:bold;text-shadow:0 -1px 1px #000;background-image:-webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#111));background-image:-webkit-linear-gradient(#3c3c3c,#111);background-image:-moz-linear-gradient(#3c3c3c,#111);background-image:-ms-linear-gradient(#3c3c3c,#111);background-image:-o-linear-gradient(#3c3c3c,#111);background-image:linear-gradient(#3c3c3c,#111)}.ui-bar-a,.ui-bar-a input,.ui-bar-a select,.ui-bar-a textarea,.ui-bar-a button{font-family:Helvetica,Arial,sans-serif}.ui-bar-a .ui-link-inherit{color:#fff}.ui-bar-a .ui-link{color:#7cc4e7;font-weight:bold}.ui-bar-a .ui-link:hover{color:#2489ce}.ui-bar-a .ui-link:active{color:#2489ce}.ui-bar-a .ui-link:visited{color:#2489ce}.ui-body-a,.ui-overlay-a{border:1px solid #444;background:#222;color:#fff;text-shadow:0 1px 1px #111;font-weight:normal;background-image:-webkit-gradient(linear,left top,left bottom,from(#444),to(#222));background-image:-webkit-linear-gradient(#444,#222);background-image:-moz-linear-gradient(#444,#222);background-image:-ms-linear-gradient(#444,#222);background-image:-o-linear-gradient(#444,#222);background-image:linear-gradient(#444,#222)}.ui-overlay-a{background-image:none;border-width:0}.ui-body-a,.ui-body-a input,.ui-body-a select,.ui-body-a textarea,.ui-body-a button{font-family:Helvetica,Arial,sans-serif}.ui-body-a .ui-link-inherit{color:#fff}.ui-body-a .ui-link{color:#2489ce;font-weight:bold}.ui-body-a .ui-link:hover{color:#2489ce}.ui-body-a .ui-link:active{color:#2489ce}.ui-body-a .ui-link:visited{color:#2489ce}.ui-btn-up-a{border:1px solid #111;background:#333;font-weight:bold;color:#fff;text-shadow:0 1px 1px #111;background-image:-webkit-gradient(linear,left top,left bottom,from(#444),to(#2d2d2d));background-image:-webkit-linear-gradient(#444,#2d2d2d);background-image:-moz-linear-gradient(#444,#2d2d2d);background-image:-ms-linear-gradient(#444,#2d2d2d);background-image:-o-linear-gradient(#444,#2d2d2d);background-image:linear-gradient(#444,#2d2d2d)}.ui-btn-up-a a.ui-link-inherit{color:#fff}.ui-btn-hover-a{border:1px solid #000;background:#444;font-weight:bold;color:#fff;text-shadow:0 1px 1px #111;background-image:-webkit-gradient(linear,left top,left bottom,from(#555),to(#383838));background-image:-webkit-linear-gradient(#555,#383838);background-image:-moz-linear-gradient(#555,#383838);background-image:-ms-linear-gradient(#555,#383838);background-image:-o-linear-gradient(#555,#383838);background-image:linear-gradient(#555,#383838)}.ui-btn-hover-a a.ui-link-inherit{color:#fff}.ui-btn-down-a{border:1px solid #000;background:#222;font-weight:bold;color:#fff;text-shadow:0 1px 1px #111;background-image:-webkit-gradient(linear,left top,left bottom,from(#202020),to(#2c2c2c));background-image:-webkit-linear-gradient(#202020,#2c2c2c);background-image:-moz-linear-gradient(#202020,#2c2c2c);background-image:-ms-linear-gradient(#202020,#2c2c2c);background-image:-o-linear-gradient(#202020,#2c2c2c);background-image:linear-gradient(#202020,#2c2c2c)}.ui-btn-down-a a.ui-link-inherit{color:#fff}.ui-btn-up-a,.ui-btn-hover-a,.ui-btn-down-a{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-b{border:1px solid #456f9a;background:#5e87b0;color:#fff;font-weight:bold;text-shadow:0 1px 1px #3e6790;background-image:-webkit-gradient(linear,left top,left bottom,from(#6facd5),to(#497bae));background-image:-webkit-linear-gradient(#6facd5,#497bae);background-image:-moz-linear-gradient(#6facd5,#497bae);background-image:-ms-linear-gradient(#6facd5,#497bae);background-image:-o-linear-gradient(#6facd5,#497bae);background-image:linear-gradient(#6facd5,#497bae)}.ui-bar-b,.ui-bar-b input,.ui-bar-b select,.ui-bar-b textarea,.ui-bar-b button{font-family:Helvetica,Arial,sans-serif}.ui-bar-b .ui-link-inherit{color:#fff}.ui-bar-b .ui-link{color:#ddf0f8;font-weight:bold}.ui-bar-b .ui-link:hover{color:#ddf0f8}.ui-bar-b .ui-link:active{color:#ddf0f8}.ui-bar-b .ui-link:visited{color:#ddf0f8}.ui-body-b,.ui-overlay-b{border:1px solid #999;background:#f3f3f3;color:#222;text-shadow:0 1px 0 #fff;font-weight:normal;background-image:-webkit-gradient(linear,left top,left bottom,from(#ddd),to(#ccc));background-image:-webkit-linear-gradient(#ddd,#ccc);background-image:-moz-linear-gradient(#ddd,#ccc);background-image:-ms-linear-gradient(#ddd,#ccc);background-image:-o-linear-gradient(#ddd,#ccc);background-image:linear-gradient(#ddd,#ccc)}.ui-overlay-b{background-image:none;border-width:0}.ui-body-b,.ui-body-b input,.ui-body-b select,.ui-body-b textarea,.ui-body-b button{font-family:Helvetica,Arial,sans-serif}.ui-body-b .ui-link-inherit{color:#333}.ui-body-b .ui-link{color:#2489ce;font-weight:bold}.ui-body-b .ui-link:hover{color:#2489ce}.ui-body-b .ui-link:active{color:#2489ce}.ui-body-b .ui-link:visited{color:#2489ce}.ui-btn-up-b{border:1px solid #044062;background:#396b9e;font-weight:bold;color:#fff;text-shadow:0 1px 1px #194b7e;background-image:-webkit-gradient(linear,left top,left bottom,from(#5f9cc5),to(#396b9e));background-image:-webkit-linear-gradient(#5f9cc5,#396b9e);background-image:-moz-linear-gradient(#5f9cc5,#396b9e);background-image:-ms-linear-gradient(#5f9cc5,#396b9e);background-image:-o-linear-gradient(#5f9cc5,#396b9e);background-image:linear-gradient(#5f9cc5,#396b9e)}.ui-btn-up-b a.ui-link-inherit{color:#fff}.ui-btn-hover-b{border:1px solid #00415e;background:#4b88b6;font-weight:bold;color:#fff;text-shadow:0 1px 1px #194b7e;background-image:-webkit-gradient(linear,left top,left bottom,from(#6facd5),to(#4272a4));background-image:-webkit-linear-gradient(#6facd5,#4272a4);background-image:-moz-linear-gradient(#6facd5,#4272a4);background-image:-ms-linear-gradient(#6facd5,#4272a4);background-image:-o-linear-gradient(#6facd5,#4272a4);background-image:linear-gradient(#6facd5,#4272a4)}.ui-btn-hover-b a.ui-link-inherit{color:#fff}.ui-btn-down-b{border:1px solid #225377;background:#4e89c5;font-weight:bold;color:#fff;text-shadow:0 1px 1px #194b7e;background-image:-webkit-gradient(linear,left top,left bottom,from(#295b8e),to(#3e79b5));background-image:-webkit-linear-gradient(#295b8e,#3e79b5);background-image:-moz-linear-gradient(#295b8e,#3e79b5);background-image:-ms-linear-gradient(#295b8e,#3e79b5);background-image:-o-linear-gradient(#295b8e,#3e79b5);background-image:linear-gradient(#295b8e,#3e79b5)}.ui-btn-down-b a.ui-link-inherit{color:#fff}.ui-btn-up-b,.ui-btn-hover-b,.ui-btn-down-b{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-c{border:1px solid #b3b3b3;background:#eee;color:#3e3e3e;font-weight:bold;text-shadow:0 1px 1px #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#f0f0f0),to(#ddd));background-image:-webkit-linear-gradient(#f0f0f0,#ddd);background-image:-moz-linear-gradient(#f0f0f0,#ddd);background-image:-ms-linear-gradient(#f0f0f0,#ddd);background-image:-o-linear-gradient(#f0f0f0,#ddd);background-image:linear-gradient(#f0f0f0,#ddd)}.ui-bar-c .ui-link-inherit{color:#3e3e3e}.ui-bar-c .ui-link{color:#7cc4e7;font-weight:bold}.ui-bar-c .ui-link:hover{color:#2489ce}.ui-bar-c .ui-link:active{color:#2489ce}.ui-bar-c .ui-link:visited{color:#2489ce}.ui-bar-c,.ui-bar-c input,.ui-bar-c select,.ui-bar-c textarea,.ui-bar-c button{font-family:Helvetica,Arial,sans-serif}.ui-body-c,.ui-overlay-c{border:1px solid #aaa;color:#333;text-shadow:0 1px 0 #fff;background:#f9f9f9;background-image:-webkit-gradient(linear,left top,left bottom,from(#f9f9f9),to(#eee));background-image:-webkit-linear-gradient(#f9f9f9,#eee);background-image:-moz-linear-gradient(#f9f9f9,#eee);background-image:-ms-linear-gradient(#f9f9f9,#eee);background-image:-o-linear-gradient(#f9f9f9,#eee);background-image:linear-gradient(#f9f9f9,#eee)}.ui-overlay-c{background-image:none;border-width:0}.ui-body-c,.ui-body-c input,.ui-body-c select,.ui-body-c textarea,.ui-body-c button{font-family:Helvetica,Arial,sans-serif}.ui-body-c .ui-link-inherit{color:#333}.ui-body-c .ui-link{color:#2489ce;font-weight:bold}.ui-body-c .ui-link:hover{color:#2489ce}.ui-body-c .ui-link:active{color:#2489ce}.ui-body-c .ui-link:visited{color:#2489ce}.ui-btn-up-c{border:1px solid #ccc;background:#eee;font-weight:bold;color:#222;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f1f1f1));background-image:-webkit-linear-gradient(#fff,#f1f1f1);background-image:-moz-linear-gradient(#fff,#f1f1f1);background-image:-ms-linear-gradient(#fff,#f1f1f1);background-image:-o-linear-gradient(#fff,#f1f1f1);background-image:linear-gradient(#fff,#f1f1f1)}.ui-btn-up-c a.ui-link-inherit{color:#2f3e46}.ui-btn-hover-c{border:1px solid #bbb;background:#dfdfdf;font-weight:bold;color:#222;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#f6f6f6),to(#e0e0e0));background-image:-webkit-linear-gradient(#f9f9f9,#e0e0e0);background-image:-moz-linear-gradient(#f6f6f6,#e0e0e0);background-image:-ms-linear-gradient(#f6f6f6,#e0e0e0);background-image:-o-linear-gradient(#f6f6f6,#e0e0e0);background-image:linear-gradient(#f6f6f6,#e0e0e0)}.ui-btn-hover-c a.ui-link-inherit{color:#2f3e46}.ui-btn-down-c{border:1px solid #bbb;background:#d6d6d6;font-weight:bold;color:#222;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#d0d0d0),to(#dfdfdf));background-image:-webkit-linear-gradient(#d0d0d0,#dfdfdf);background-image:-moz-linear-gradient(#d0d0d0,#dfdfdf);background-image:-ms-linear-gradient(#d0d0d0,#dfdfdf);background-image:-o-linear-gradient(#d0d0d0,#dfdfdf);background-image:linear-gradient(#d0d0d0,#dfdfdf)}.ui-btn-down-c a.ui-link-inherit{color:#2f3e46}.ui-btn-up-c,.ui-btn-hover-c,.ui-btn-down-c{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-d{border:1px solid #bbb;background:#bbb;color:#333;text-shadow:0 1px 0 #eee;background-image:-webkit-gradient(linear,left top,left bottom,from(#ddd),to(#bbb));background-image:-webkit-linear-gradient(#ddd,#bbb);background-image:-moz-linear-gradient(#ddd,#bbb);background-image:-ms-linear-gradient(#ddd,#bbb);background-image:-o-linear-gradient(#ddd,#bbb);background-image:linear-gradient(#ddd,#bbb)}.ui-bar-d,.ui-bar-d input,.ui-bar-d select,.ui-bar-d textarea,.ui-bar-d button{font-family:Helvetica,Arial,sans-serif}.ui-bar-d .ui-link-inherit{color:#333}.ui-bar-d .ui-link{color:#2489ce;font-weight:bold}.ui-bar-d .ui-link:hover{color:#2489ce}.ui-bar-d .ui-link:active{color:#2489ce}.ui-bar-d .ui-link:visited{color:#2489ce}.ui-body-d,.ui-overlay-d{border:1px solid #bbb;color:#333;text-shadow:0 1px 0 #fff;background:#fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#fff));background-image:-webkit-linear-gradient(#fff,#fff);background-image:-moz-linear-gradient(#fff,#fff);background-image:-ms-linear-gradient(#fff,#fff);background-image:-o-linear-gradient(#fff,#fff);background-image:linear-gradient(#fff,#fff)}.ui-overlay-d{background-image:none;border-width:0}.ui-body-d,.ui-body-d input,.ui-body-d select,.ui-body-d textarea,.ui-body-d button{font-family:Helvetica,Arial,sans-serif}.ui-body-d .ui-link-inherit{color:#333}.ui-body-d .ui-link{color:#2489ce;font-weight:bold}.ui-body-d .ui-link:hover{color:#2489ce}.ui-body-d .ui-link:active{color:#2489ce}.ui-body-d .ui-link:visited{color:#2489ce}.ui-btn-up-d{border:1px solid #bbb;background:#fff;font-weight:bold;color:#333;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fafafa),to(#f6f6f6));background-image:-webkit-linear-gradient(#fafafa,#f6f6f6);background-image:-moz-linear-gradient(#fafafa,#f6f6f6);background-image:-ms-linear-gradient(#fafafa,#f6f6f6);background-image:-o-linear-gradient(#fafafa,#f6f6f6);background-image:linear-gradient(#fafafa,#f6f6f6)}.ui-btn-up-d a.ui-link-inherit{color:#333}.ui-btn-hover-d{border:1px solid #aaa;background:#eee;font-weight:bold;color:#333;cursor:pointer;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#eee),to(#fff));background-image:-webkit-linear-gradient(#eee,#fff);background-image:-moz-linear-gradient(#eee,#fff);background-image:-ms-linear-gradient(#eee,#fff);background-image:-o-linear-gradient(#eee,#fff);background-image:linear-gradient(#eee,#fff)}.ui-btn-hover-d a.ui-link-inherit{color:#333}.ui-btn-down-d{border:1px solid #aaa;background:#eee;font-weight:bold;color:#333;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#e5e5e5),to(#f2f2f2));background-image:-webkit-linear-gradient(#e5e5e5,#f2f2f2);background-image:-moz-linear-gradient(#e5e5e5,#f2f2f2);background-image:-ms-linear-gradient(#e5e5e5,#f2f2f2);background-image:-o-linear-gradient(#e5e5e5,#f2f2f2);background-image:linear-gradient(#e5e5e5,#f2f2f2)}.ui-btn-down-d a.ui-link-inherit{color:#333}.ui-btn-up-d,.ui-btn-hover-d,.ui-btn-down-d{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-e{border:1px solid #f7c942;background:#fadb4e;color:#333;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fceda7),to(#fbef7e));background-image:-webkit-linear-gradient(#fceda7,#fbef7e);background-image:-moz-linear-gradient(#fceda7,#fbef7e);background-image:-ms-linear-gradient(#fceda7,#fbef7e);background-image:-o-linear-gradient(#fceda7,#fbef7e);background-image:linear-gradient(#fceda7,#fbef7e)}.ui-bar-e,.ui-bar-e input,.ui-bar-e select,.ui-bar-e textarea,.ui-bar-e button{font-family:Helvetica,Arial,sans-serif}.ui-bar-e .ui-link-inherit{color:#333}.ui-bar-e .ui-link{color:#2489ce;font-weight:bold}.ui-bar-e .ui-link:hover{color:#2489ce}.ui-bar-e .ui-link:active{color:#2489ce}.ui-bar-e .ui-link:visited{color:#2489ce}.ui-body-e,.ui-overlay-e{border:1px solid #f7c942;color:#222;text-shadow:0 1px 0 #fff;background:#fff9df;background-image:-webkit-gradient(linear,left top,left bottom,from(#fffadf),to(#fff3a5));background-image:-webkit-linear-gradient(#fffadf,#fff3a5);background-image:-moz-linear-gradient(#fffadf,#fff3a5);background-image:-ms-linear-gradient(#fffadf,#fff3a5);background-image:-o-linear-gradient(#fffadf,#fff3a5);background-image:linear-gradient(#fffadf,#fff3a5)}.ui-overlay-e{background-image:none;border-width:0}.ui-body-e,.ui-body-e input,.ui-body-e select,.ui-body-e textarea,.ui-body-e button{font-family:Helvetica,Arial,sans-serif}.ui-body-e .ui-link-inherit{color:#333}.ui-body-e .ui-link{color:#2489ce;font-weight:bold}.ui-body-e .ui-link:hover{color:#2489ce}.ui-body-e .ui-link:active{color:#2489ce}.ui-body-e .ui-link:visited{color:#2489ce}.ui-btn-up-e{border:1px solid #f4c63f;background:#fadb4e;font-weight:bold;color:#222;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#ffefaa),to(#ffe155));background-image:-webkit-linear-gradient(#ffefaa,#ffe155);background-image:-moz-linear-gradient(#ffefaa,#ffe155);background-image:-ms-linear-gradient(#ffefaa,#ffe155);background-image:-o-linear-gradient(#ffefaa,#ffe155);background-image:linear-gradient(#ffefaa,#ffe155)}.ui-btn-up-e a.ui-link-inherit{color:#222}.ui-btn-hover-e{border:1px solid #f2c43d;background:#fbe26f;font-weight:bold;color:#111;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff5ba),to(#fbdd52));background-image:-webkit-linear-gradient(#fff5ba,#fbdd52);background-image:-moz-linear-gradient(#fff5ba,#fbdd52);background-image:-ms-linear-gradient(#fff5ba,#fbdd52);background-image:-o-linear-gradient(#fff5ba,#fbdd52);background-image:linear-gradient(#fff5ba,#fbdd52)}.ui-btn-hover-e a.ui-link-inherit{color:#333}.ui-btn-down-e{border:1px solid #f2c43d;background:#fceda7;font-weight:bold;color:#111;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#f8d94c),to(#fadb4e));background-image:-webkit-linear-gradient(#f8d94c,#fadb4e);background-image:-moz-linear-gradient(#f8d94c,#fadb4e);background-image:-ms-linear-gradient(#f8d94c,#fadb4e);background-image:-o-linear-gradient(#f8d94c,#fadb4e);background-image:linear-gradient(#f8d94c,#fadb4e)}.ui-btn-down-e a.ui-link-inherit{color:#333}.ui-btn-up-e,.ui-btn-hover-e,.ui-btn-down-e{font-family:Helvetica,Arial,sans-serif;text-decoration:none}a.ui-link-inherit{text-decoration:none!important}.ui-btn-active{border:1px solid #2373a5;background:#5393c5;font-weight:bold;color:#fff;cursor:pointer;text-shadow:0 1px 1px #3373a5;text-decoration:none;background-image:-webkit-gradient(linear,left top,left bottom,from(#5393c5),to(#6facd5));background-image:-webkit-linear-gradient(#5393c5,#6facd5);background-image:-moz-linear-gradient(#5393c5,#6facd5);background-image:-ms-linear-gradient(#5393c5,#6facd5);background-image:-o-linear-gradient(#5393c5,#6facd5);background-image:linear-gradient(#5393c5,#6facd5);font-family:Helvetica,Arial,sans-serif}.ui-btn-active a.ui-link-inherit{color:#fff}.ui-btn-inner{border-top:1px solid #fff;border-color:rgba(255,255,255,.3)}.ui-corner-tl{-moz-border-radius-topleft:.6em;-webkit-border-top-left-radius:.6em;border-top-left-radius:.6em}.ui-corner-tr{-moz-border-radius-topright:.6em;-webkit-border-top-right-radius:.6em;border-top-right-radius:.6em}.ui-corner-bl{-moz-border-radius-bottomleft:.6em;-webkit-border-bottom-left-radius:.6em;border-bottom-left-radius:.6em}.ui-corner-br{-moz-border-radius-bottomright:.6em;-webkit-border-bottom-right-radius:.6em;border-bottom-right-radius:.6em}.ui-corner-top{-moz-border-radius-topleft:.6em;-webkit-border-top-left-radius:.6em;border-top-left-radius:.6em;-moz-border-radius-topright:.6em;-webkit-border-top-right-radius:.6em;border-top-right-radius:.6em}.ui-corner-bottom{-moz-border-radius-bottomleft:.6em;-webkit-border-bottom-left-radius:.6em;border-bottom-left-radius:.6em;-moz-border-radius-bottomright:.6em;-webkit-border-bottom-right-radius:.6em;border-bottom-right-radius:.6em}.ui-corner-right{-moz-border-radius-topright:.6em;-webkit-border-top-right-radius:.6em;border-top-right-radius:.6em;-moz-border-radius-bottomright:.6em;-webkit-border-bottom-right-radius:.6em;border-bottom-right-radius:.6em}.ui-corner-left{-moz-border-radius-topleft:.6em;-webkit-border-top-left-radius:.6em;border-top-left-radius:.6em;-moz-border-radius-bottomleft:.6em;-webkit-border-bottom-left-radius:.6em;border-bottom-left-radius:.6em}.ui-corner-all{-moz-border-radius:.6em;-webkit-border-radius:.6em;border-radius:.6em}.ui-corner-none{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.ui-br{border-bottom:#828282;border-bottom:rgba(130,130,130,.3);border-bottom-width:1px;border-bottom-style:solid}.ui-disabled{opacity:.3}.ui-disabled,.ui-disabled a{cursor:default!important;pointer-events:none}.ui-disabled .ui-btn-text{-ms-filter:"alpha(opacity=30)";filter:alpha(opacity=30);zoom:1}.ui-icon,.ui-icon-searchfield:after{background:#666;background:rgba(0,0,0,.4);background-image:url(images/icons-18-white.png);background-repeat:no-repeat;-moz-border-radius:9px;-webkit-border-radius:9px;border-radius:9px}.ui-icon-alt{background:#fff;background:rgba(255,255,255,.3);background-image:url(images/icons-18-black.png);background-repeat:no-repeat}@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min--moz-device-pixel-ratio:1.5),only screen and (min-resolution:240dpi){.ui-icon-plus,.ui-icon-minus,.ui-icon-delete,.ui-icon-arrow-r,.ui-icon-arrow-l,.ui-icon-arrow-u,.ui-icon-arrow-d,.ui-icon-check,.ui-icon-gear,.ui-icon-refresh,.ui-icon-forward,.ui-icon-back,.ui-icon-grid,.ui-icon-star,.ui-icon-alert,.ui-icon-info,.ui-icon-home,.ui-icon-search,.ui-icon-searchfield:after,.ui-icon-checkbox-off,.ui-icon-checkbox-on,.ui-icon-radio-off,.ui-icon-radio-on{background-image:url(images/icons-36-white.png);-moz-background-size:776px 18px;-o-background-size:776px 18px;-webkit-background-size:776px 18px;background-size:776px 18px}.ui-icon-alt{background-image:url(images/icons-36-black.png)}}.ui-icon-plus{background-position:-0 50%}.ui-icon-minus{background-position:-36px 50%}.ui-icon-delete{background-position:-72px 50%}.ui-icon-arrow-r{background-position:-108px 50%}.ui-icon-arrow-l{background-position:-144px 50%}.ui-icon-arrow-u{background-position:-180px 50%}.ui-icon-arrow-d{background-position:-216px 50%}.ui-icon-check{background-position:-252px 50%}.ui-icon-gear{background-position:-288px 50%}.ui-icon-refresh{background-position:-324px 50%}.ui-icon-forward{background-position:-360px 50%}.ui-icon-back{background-position:-396px 50%}.ui-icon-grid{background-position:-432px 50%}.ui-icon-star{background-position:-468px 50%}.ui-icon-alert{background-position:-504px 50%}.ui-icon-info{background-position:-540px 50%}.ui-icon-home{background-position:-576px 50%}.ui-icon-search,.ui-icon-searchfield:after{background-position:-612px 50%}.ui-icon-checkbox-off{background-position:-684px 50%}.ui-icon-checkbox-on{background-position:-648px 50%}.ui-icon-radio-off{background-position:-756px 50%}.ui-icon-radio-on{background-position:-720px 50%}.ui-checkbox .ui-icon{-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.ui-icon-checkbox-off,.ui-icon-radio-off{background-color:transparent}.ui-checkbox-on .ui-icon,.ui-radio-on .ui-icon{background-color:#4596ce}.ui-icon-loading{background:url(images/ajax-loader.gif);background-size:46px 46px}.ui-btn-corner-tl{-moz-border-radius-topleft:1em;-webkit-border-top-left-radius:1em;border-top-left-radius:1em}.ui-btn-corner-tr{-moz-border-radius-topright:1em;-webkit-border-top-right-radius:1em;border-top-right-radius:1em}.ui-btn-corner-bl{-moz-border-radius-bottomleft:1em;-webkit-border-bottom-left-radius:1em;border-bottom-left-radius:1em}.ui-btn-corner-br{-moz-border-radius-bottomright:1em;-webkit-border-bottom-right-radius:1em;border-bottom-right-radius:1em}.ui-btn-corner-top{-moz-border-radius-topleft:1em;-webkit-border-top-left-radius:1em;border-top-left-radius:1em;-moz-border-radius-topright:1em;-webkit-border-top-right-radius:1em;border-top-right-radius:1em}.ui-btn-corner-bottom{-moz-border-radius-bottomleft:1em;-webkit-border-bottom-left-radius:1em;border-bottom-left-radius:1em;-moz-border-radius-bottomright:1em;-webkit-border-bottom-right-radius:1em;border-bottom-right-radius:1em}.ui-btn-corner-right{-moz-border-radius-topright:1em;-webkit-border-top-right-radius:1em;border-top-right-radius:1em;-moz-border-radius-bottomright:1em;-webkit-border-bottom-right-radius:1em;border-bottom-right-radius:1em}.ui-btn-corner-left{-moz-border-radius-topleft:1em;-webkit-border-top-left-radius:1em;border-top-left-radius:1em;-moz-border-radius-bottomleft:1em;-webkit-border-bottom-left-radius:1em;border-bottom-left-radius:1em}.ui-btn-corner-all{-moz-border-radius:1em;-webkit-border-radius:1em;border-radius:1em}.ui-corner-tl,.ui-corner-tr,.ui-corner-bl,.ui-corner-br,.ui-corner-top,.ui-corner-bottom,.ui-corner-right,.ui-corner-left,.ui-corner-all,.ui-btn-corner-tl,.ui-btn-corner-tr,.ui-btn-corner-bl,.ui-btn-corner-br,.ui-btn-corner-top,.ui-btn-corner-bottom,.ui-btn-corner-right,.ui-btn-corner-left,.ui-btn-corner-all{-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.ui-overlay{background:#666;opacity:.5;filter:Alpha(Opacity=50);position:absolute;width:100%;height:100%}.ui-overlay-shadow{-moz-box-shadow:0 0 12px rgba(0,0,0,.6);-webkit-box-shadow:0 0 12px rgba(0,0,0,.6);box-shadow:0 0 12px rgba(0,0,0,.6)}.ui-shadow{-moz-box-shadow:0 1px 4px rgba(0,0,0,.3);-webkit-box-shadow:0 1px 4px rgba(0,0,0,.3);box-shadow:0 1px 4px rgba(0,0,0,.3)}.ui-bar-a .ui-shadow,.ui-bar-b .ui-shadow,.ui-bar-c .ui-shadow{-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.ui-shadow-inset{-moz-box-shadow:inset 0 1px 4px rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 4px rgba(0,0,0,.2);box-shadow:inset 0 1px 4px rgba(0,0,0,.2)}.ui-icon-shadow{-moz-box-shadow:0 1px 0 rgba(255,255,255,.4);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.4);box-shadow:0 1px 0 rgba(255,255,255,.4)}.ui-btn:focus{outline:0}.ui-focus,.ui-btn:focus{-moz-box-shadow:0 0 12px #387bbe;-webkit-box-shadow:0 0 12px #387bbe;box-shadow:0 0 12px #387bbe}.ui-mobile-nosupport-boxshadow *{-moz-box-shadow:none!important;-webkit-box-shadow:none!important;box-shadow:none!important}.ui-mobile-nosupport-boxshadow .ui-focus,.ui-mobile-nosupport-boxshadow .ui-btn:focus{outline-width:1px;outline-style:dotted}.ui-mobile,.ui-mobile body{height:99.9%}.ui-mobile fieldset,.ui-page{padding:0;margin:0}.ui-mobile a img,.ui-mobile fieldset{border-width:0}.ui-mobile-viewport{margin:0;overflow-x:visible;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}body.ui-mobile-viewport,div.ui-mobile-viewport{overflow-x:hidden}.ui-mobile [data-role=page],.ui-mobile [data-role=dialog],.ui-page{top:0;left:0;width:100%;min-height:100%;position:absolute;display:none;border:0}.ui-mobile .ui-page-active{display:block;overflow:visible}.ui-page{outline:0}@media screen and (orientation:portrait){.ui-mobile,.ui-mobile .ui-page{min-height:420px}}@media screen and (orientation:landscape){.ui-mobile,.ui-mobile .ui-page{min-height:300px}}.ui-loading .ui-loader{display:block}.ui-loader{display:none;z-index:9999999;position:fixed;top:50%;box-shadow:0 1px 1px -1px #fff;left:50%;border:0}.ui-loader-default{background:0;opacity:.18;width:46px;height:46px;margin-left:-23px;margin-top:-23px}.ui-loader-verbose{width:200px;opacity:.88;height:auto;margin-left:-110px;margin-top:-43px;padding:10px}.ui-loader-default h1{font-size:0;width:0;height:0;overflow:hidden}.ui-loader-verbose h1{font-size:16px;margin:0;text-align:center}.ui-loader .ui-icon{background-color:#000;display:block;margin:0;width:44px;height:44px;padding:1px;-webkit-border-radius:36px;-moz-border-radius:36px;border-radius:36px}.ui-loader-verbose .ui-icon{margin:0 auto 10px;opacity:.75}.ui-loader-textonly{padding:15px;margin-left:-115px}.ui-loader-textonly .ui-icon{display:none}.ui-loader-fakefix{position:absolute}.ui-mobile-rendering>*{visibility:hidden}.ui-bar,.ui-body{position:relative;padding:.4em 15px;overflow:hidden;display:block;clear:both}.ui-bar{font-size:16px;margin:0}.ui-bar h1,.ui-bar h2,.ui-bar h3,.ui-bar h4,.ui-bar h5,.ui-bar h6{margin:0;padding:0;font-size:16px;display:inline-block}.ui-header,.ui-footer{position:relative;border-left-width:0;border-right-width:0}.ui-header .ui-btn-left,.ui-header .ui-btn-right,.ui-footer .ui-btn-left,.ui-footer .ui-btn-right{position:absolute;top:3px}.ui-header .ui-btn-left,.ui-footer .ui-btn-left{left:5px}.ui-header .ui-btn-right,.ui-footer .ui-btn-right{right:5px}.ui-footer .ui-btn-icon-notext,.ui-header .ui-btn-icon-notext{top:6px}.ui-header .ui-title,.ui-footer .ui-title{min-height:1.1em;text-align:center;font-size:16px;display:block;margin:.6em 30% .8em;padding:0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;outline:0!important}.ui-footer .ui-title{margin:.6em 15px .8em}.ui-content{border-width:0;overflow:visible;overflow-x:hidden;padding:15px}.ui-icon{width:18px;height:18px}.ui-nojs{position:absolute;left:-9999px}.ui-hide-label label,.ui-hidden-accessible{position:absolute!important;left:-9999px;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px)}.ui-mobile-viewport-transitioning,.ui-mobile-viewport-transitioning .ui-page{width:100%;height:100%;overflow:hidden}.in{-webkit-animation-timing-function:ease-out;-webkit-animation-duration:350ms;-moz-animation-timing-function:ease-out;-moz-animation-duration:350ms}.out{-webkit-animation-timing-function:ease-in;-webkit-animation-duration:225ms;-moz-animation-timing-function:ease-in;-moz-animation-duration:225}@-webkit-keyframes fadein{from{opacity:0}to{opacity:1}}@-moz-keyframes fadein{from{opacity:0}to{opacity:1}}@-webkit-keyframes fadeout{from{opacity:1}to{opacity:0}}@-moz-keyframes fadeout{from{opacity:1}to{opacity:0}}.fade.out{opacity:0;-webkit-animation-duration:125ms;-webkit-animation-name:fadeout;-moz-animation-duration:125ms;-moz-animation-name:fadeout}.fade.in{opacity:1;-webkit-animation-duration:225ms;-webkit-animation-name:fadein;-moz-animation-duration:225ms;-moz-animation-name:fadein}.pop{-webkit-transform-origin:50% 50%;-moz-transform-origin:50% 50%}.pop.in{-webkit-transform:scale(1);-moz-transform:scale(1);opacity:1;-webkit-animation-name:popin;-moz-animation-name:popin;-webkit-animation-duration:350ms;-moz-animation-duration:350ms}.pop.out{-webkit-animation-name:fadeout;-moz-animation-name:fadeout;opacity:0;-webkit-animation-duration:100ms;-moz-animation-duration:100ms}.pop.in.reverse{-webkit-animation-name:fadein;-moz-animation-name:fadein}.pop.out.reverse{-webkit-transform:scale(.8);-moz-transform:scale(.8);-webkit-animation-name:popout;-moz-animation-name:popout}@-webkit-keyframes popin{from{-webkit-transform:scale(.8);opacity:0}to{-webkit-transform:scale(1);opacity:1}}@-moz-keyframes popin{from{-moz-transform:scale(.8);opacity:0}to{-moz-transform:scale(1);opacity:1}}@-webkit-keyframes popout{from{-webkit-transform:scale(1);opacity:1}to{-webkit-transform:scale(.8);opacity:0}}@-moz-keyframes popout{from{-moz-transform:scale(1);opacity:1}to{-moz-transform:scale(.8);opacity:0}}@-webkit-keyframes slideinfromright{from{-webkit-transform:translateX(100%)}to{-webkit-transform:translateX(0)}}@-moz-keyframes slideinfromright{from{-moz-transform:translateX(100%)}to{-moz-transform:translateX(0)}}@-webkit-keyframes slideinfromleft{from{-webkit-transform:translateX(-100%)}to{-webkit-transform:translateX(0)}}@-moz-keyframes slideinfromleft{from{-moz-transform:translateX(-100%)}to{-moz-transform:translateX(0)}}@-webkit-keyframes slideouttoleft{from{-webkit-transform:translateX(0)}to{-webkit-transform:translateX(-100%)}}@-moz-keyframes slideouttoleft{from{-moz-transform:translateX(0)}to{-moz-transform:translateX(-100%)}}@-webkit-keyframes slideouttoright{from{-webkit-transform:translateX(0)}to{-webkit-transform:translateX(100%)}}@-moz-keyframes slideouttoright{from{-moz-transform:translateX(0)}to{-moz-transform:translateX(100%)}}.slide.out,.slide.in{-webkit-animation-timing-function:ease-out;-webkit-animation-duration:350ms;-moz-animation-timing-function:ease-out;-moz-animation-duration:350ms}.slide.out{-webkit-transform:translateX(-100%);-webkit-animation-name:slideouttoleft;-moz-transform:translateX(-100%);-moz-animation-name:slideouttoleft}.slide.in{-webkit-transform:translateX(0);-webkit-animation-name:slideinfromright;-moz-transform:translateX(0);-moz-animation-name:slideinfromright}.slide.out.reverse{-webkit-transform:translateX(100%);-webkit-animation-name:slideouttoright;-moz-transform:translateX(100%);-moz-animation-name:slideouttoright}.slide.in.reverse{-webkit-transform:translateX(0);-webkit-animation-name:slideinfromleft;-moz-transform:translateX(0);-moz-animation-name:slideinfromleft}.slidefade.out{-webkit-transform:translateX(-100%);-webkit-animation-name:slideouttoleft;-moz-transform:translateX(-100%);-moz-animation-name:slideouttoleft;-webkit-animation-duration:225ms;-moz-animation-duration:225ms}.slidefade.in{-webkit-transform:translateX(0);-webkit-animation-name:fadein;-moz-transform:translateX(0);-moz-animation-name:fadein;-webkit-animation-duration:200ms;-moz-animation-duration:200ms}.slidefade.out.reverse{-webkit-transform:translateX(100%);-webkit-animation-name:slideouttoright;-moz-transform:translateX(100%);-moz-animation-name:slideouttoright;-webkit-animation-duration:200ms;-moz-animation-duration:200ms}.slidefade.in.reverse{-webkit-transform:translateX(0);-webkit-animation-name:fadein;-moz-transform:translateX(0);-moz-animation-name:fadein;-webkit-animation-duration:200ms;-moz-animation-duration:200ms}.slidedown.out{-webkit-animation-name:fadeout;-moz-animation-name:fadeout;-webkit-animation-duration:100ms;-moz-animation-duration:100ms}.slidedown.in{-webkit-transform:translateY(0);-webkit-animation-name:slideinfromtop;-moz-transform:translateY(0);-moz-animation-name:slideinfromtop;-webkit-animation-duration:250ms;-moz-animation-duration:250ms}.slidedown.in.reverse{-webkit-animation-name:fadein;-moz-animation-name:fadein;-webkit-animation-duration:150ms;-moz-animation-duration:150ms}.slidedown.out.reverse{-webkit-transform:translateY(-100%);-moz-transform:translateY(-100%);-webkit-animation-name:slideouttotop;-moz-animation-name:slideouttotop;-webkit-animation-duration:200ms;-moz-animation-duration:200ms}@-webkit-keyframes slideinfromtop{from{-webkit-transform:translateY(-100%)}to{-webkit-transform:translateY(0)}}@-moz-keyframes slideinfromtop{from{-moz-transform:translateY(-100%)}to{-moz-transform:translateY(0)}}@-webkit-keyframes slideouttotop{from{-webkit-transform:translateY(0)}to{-webkit-transform:translateY(-100%)}}@-moz-keyframes slideouttotop{from{-moz-transform:translateY(0)}to{-moz-transform:translateY(-100%)}}.slideup.out{-webkit-animation-name:fadeout;-moz-animation-name:fadeout;-webkit-animation-duration:100ms;-moz-animation-duration:100ms}.slideup.in{-webkit-transform:translateY(0);-webkit-animation-name:slideinfrombottom;-moz-transform:translateY(0);-moz-animation-name:slideinfrombottom;-webkit-animation-duration:250ms;-moz-animation-duration:250ms}.slideup.in.reverse{-webkit-animation-name:fadein;-moz-animation-name:fadein;-webkit-animation-duration:150ms;-moz-animation-duration:150ms}.slideup.out.reverse{-webkit-transform:translateY(100%);-moz-transform:translateY(100%);-webkit-animation-name:slideouttobottom;-moz-animation-name:slideouttobottom;-webkit-animation-duration:200ms;-moz-animation-duration:200ms}@-webkit-keyframes slideinfrombottom{from{-webkit-transform:translateY(100%)}to{-webkit-transform:translateY(0)}}@-moz-keyframes slideinfrombottom{from{-moz-transform:translateY(100%)}to{-moz-transform:translateY(0)}}@-webkit-keyframes slideouttobottom{from{-webkit-transform:translateY(0)}to{-webkit-transform:translateY(100%)}}@-moz-keyframes slideouttobottom{from{-moz-transform:translateY(0)}to{-moz-transform:translateY(100%)}}.viewport-flip{-webkit-perspective:1000;-moz-perspective:1000;position:absolute}.flip{-webkit-backface-visibility:hidden;-webkit-transform:translateX(0);-moz-backface-visibility:hidden;-moz-transform:translateX(0)}.flip.out{-webkit-transform:rotateY(-90deg) scale(.9);-webkit-animation-name:flipouttoleft;-webkit-animation-duration:175ms;-moz-transform:rotateY(-90deg) scale(.9);-moz-animation-name:flipouttoleft;-moz-animation-duration:175ms}.flip.in{-webkit-animation-name:flipintoright;-webkit-animation-duration:225ms;-moz-animation-name:flipintoright;-moz-animation-duration:225ms}.flip.out.reverse{-webkit-transform:rotateY(90deg) scale(.9);-webkit-animation-name:flipouttoright;-moz-transform:rotateY(90deg) scale(.9);-moz-animation-name:flipouttoright}.flip.in.reverse{-webkit-animation-name:flipintoleft;-moz-animation-name:flipintoleft}@-webkit-keyframes flipouttoleft{from{-webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(-90deg) scale(.9)}}@-moz-keyframes flipouttoleft{from{-moz-transform:rotateY(0)}to{-moz-transform:rotateY(-90deg) scale(.9)}}@-webkit-keyframes flipouttoright{from{-webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(90deg) scale(.9)}}@-moz-keyframes flipouttoright{from{-moz-transform:rotateY(0)}to{-moz-transform:rotateY(90deg) scale(.9)}}@-webkit-keyframes flipintoleft{from{-webkit-transform:rotateY(-90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoleft{from{-moz-transform:rotateY(-90deg) scale(.9)}to{-moz-transform:rotateY(0)}}@-webkit-keyframes flipintoright{from{-webkit-transform:rotateY(90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoright{from{-moz-transform:rotateY(90deg) scale(.9)}to{-moz-transform:rotateY(0)}}.viewport-turn{-webkit-perspective:1000;-moz-perspective:1000;position:absolute}.turn{-webkit-backface-visibility:hidden;-webkit-transform:translateX(0);-webkit-transform-origin:0 0;-moz-backface-visibility:hidden;-moz-transform:translateX(0);-moz-transform-origin:0 0}.turn.out{-webkit-transform:rotateY(-90deg) scale(.9);-webkit-animation-name:flipouttoleft;-moz-transform:rotateY(-90deg) scale(.9);-moz-animation-name:flipouttoleft;-webkit-animation-duration:125ms;-moz-animation-duration:125ms}.turn.in{-webkit-animation-name:flipintoright;-moz-animation-name:flipintoright;-webkit-animation-duration:250ms;-moz-animation-duration:250ms}.turn.out.reverse{-webkit-transform:rotateY(90deg) scale(.9);-webkit-animation-name:flipouttoright;-moz-transform:rotateY(90deg) scale(.9);-moz-animation-name:flipouttoright}.turn.in.reverse{-webkit-animation-name:flipintoleft;-moz-animation-name:flipintoleft}@-webkit-keyframes flipouttoleft{from{-webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(-90deg) scale(.9)}}@-moz-keyframes flipouttoleft{from{-moz-transform:rotateY(0)}to{-moz-transform:rotateY(-90deg) scale(.9)}}@-webkit-keyframes flipouttoright{from{-webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(90deg) scale(.9)}}@-moz-keyframes flipouttoright{from{-moz-transform:rotateY(0)}to{-moz-transform:rotateY(90deg) scale(.9)}}@-webkit-keyframes flipintoleft{from{-webkit-transform:rotateY(-90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoleft{from{-moz-transform:rotateY(-90deg) scale(.9)}to{-moz-transform:rotateY(0)}}@-webkit-keyframes flipintoright{from{-webkit-transform:rotateY(90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoright{from{-moz-transform:rotateY(90deg) scale(.9)}to{-moz-transform:rotateY(0)}}.flow{-webkit-transform-origin:50% 30%;-moz-transform-origin:50% 30%;-webkit-box-shadow:0 0 20px rgba(0,0,0,.4);-moz-box-shadow:0 0 20px rgba(0,0,0,.4)}.ui-dialog.flow{-webkit-transform-origin:none;-moz-transform-origin:none;-webkit-box-shadow:none;-moz-box-shadow:none}.flow.out{-webkit-transform:translateX(-100%) scale(.7);-webkit-animation-name:flowouttoleft;-webkit-animation-timing-function:ease;-webkit-animation-duration:350ms;-moz-transform:translateX(-100%) scale(.7);-moz-animation-name:flowouttoleft;-moz-animation-timing-function:ease;-moz-animation-duration:350ms}.flow.in{-webkit-transform:translateX(0) scale(1);-webkit-animation-name:flowinfromright;-webkit-animation-timing-function:ease;-webkit-animation-duration:350ms;-moz-transform:translateX(0) scale(1);-moz-animation-name:flowinfromright;-moz-animation-timing-function:ease;-moz-animation-duration:350ms}.flow.out.reverse{-webkit-transform:translateX(100%);-webkit-animation-name:flowouttoright;-moz-transform:translateX(100%);-moz-animation-name:flowouttoright}.flow.in.reverse{-webkit-animation-name:flowinfromleft;-moz-animation-name:flowinfromleft}@-webkit-keyframes flowouttoleft{0%{-webkit-transform:translateX(0) scale(1)}60%,70%{-webkit-transform:translateX(0) scale(.7)}100%{-webkit-transform:translateX(-100%) scale(.7)}}@-moz-keyframes flowouttoleft{0%{-moz-transform:translateX(0) scale(1)}60%,70%{-moz-transform:translateX(0) scale(.7)}100%{-moz-transform:translateX(-100%) scale(.7)}}@-webkit-keyframes flowouttoright{0%{-webkit-transform:translateX(0) scale(1)}60%,70%{-webkit-transform:translateX(0) scale(.7)}100%{-webkit-transform:translateX(100%) scale(.7)}}@-moz-keyframes flowouttoright{0%{-moz-transform:translateX(0) scale(1)}60%,70%{-moz-transform:translateX(0) scale(.7)}100%{-moz-transform:translateX(100%) scale(.7)}}@-webkit-keyframes flowinfromleft{0%{-webkit-transform:translateX(-100%) scale(.7)}30%,40%{-webkit-transform:translateX(0) scale(.7)}100%{-webkit-transform:translateX(0) scale(1)}}@-moz-keyframes flowinfromleft{0%{-moz-transform:translateX(-100%) scale(.7)}30%,40%{-moz-transform:translateX(0) scale(.7)}100%{-moz-transform:translateX(0) scale(1)}}@-webkit-keyframes flowinfromright{0%{-webkit-transform:translateX(100%) scale(.7)}30%,40%{-webkit-transform:translateX(0) scale(.7)}100%{-webkit-transform:translateX(0) scale(1)}}@-moz-keyframes flowinfromright{0%{-moz-transform:translateX(100%) scale(.7)}30%,40%{-moz-transform:translateX(0) scale(.7)}100%{-moz-transform:translateX(0) scale(1)}}.ui-grid-a,.ui-grid-b,.ui-grid-c,.ui-grid-d{overflow:hidden}.ui-block-a,.ui-block-b,.ui-block-c,.ui-block-d,.ui-block-e{margin:0;padding:0;border:0;float:left;min-height:1px}.ui-grid-solo .ui-block-a{width:100%;float:none}.ui-grid-a .ui-block-a,.ui-grid-a .ui-block-b{width:50%}.ui-grid-a .ui-block-a{clear:left}.ui-grid-b .ui-block-a,.ui-grid-b .ui-block-b,.ui-grid-b .ui-block-c{width:33.333%}.ui-grid-b .ui-block-a{clear:left}.ui-grid-c .ui-block-a,.ui-grid-c .ui-block-b,.ui-grid-c .ui-block-c,.ui-grid-c .ui-block-d{width:25%}.ui-grid-c .ui-block-a{clear:left}.ui-grid-d .ui-block-a,.ui-grid-d .ui-block-b,.ui-grid-d .ui-block-c,.ui-grid-d .ui-block-d,.ui-grid-d .ui-block-e{width:20%}.ui-grid-d .ui-block-a{clear:left}.ui-header-fixed,.ui-footer-fixed{left:0;right:0;width:100%;position:fixed;z-index:1000}.ui-header-fixed{top:0}.ui-footer-fixed{bottom:0}.ui-header-fullscreen,.ui-footer-fullscreen{opacity:.9}.ui-page-header-fixed{padding-top:2.5em}.ui-page-footer-fixed{padding-bottom:3em}.ui-page-header-fullscreen .ui-content,.ui-page-footer-fullscreen .ui-content{padding:0}.ui-fixed-hidden{position:absolute}.ui-page-header-fullscreen .ui-fixed-hidden,.ui-page-footer-fullscreen .ui-fixed-hidden{left:-99999em}.ui-header-fixed .ui-btn,.ui-footer-fixed .ui-btn{z-index:10}.ui-navbar{overflow:hidden}.ui-navbar ul,.ui-navbar-expanded ul{list-style:none;padding:0;margin:0;position:relative;display:block;border:0}.ui-navbar-collapsed ul{float:left;width:75%;margin-right:-2px}.ui-navbar-collapsed .ui-navbar-toggle{float:left;width:25%}.ui-navbar li.ui-navbar-truncate{position:absolute;left:-9999px;top:-9999px}.ui-navbar li .ui-btn,.ui-navbar .ui-navbar-toggle .ui-btn{display:block;font-size:12px;text-align:center;margin:0;border-right-width:0;max-width:100%}.ui-navbar li .ui-btn{margin-right:-1px}.ui-navbar li .ui-btn:last-child{margin-right:0}.ui-header .ui-navbar li .ui-btn,.ui-header .ui-navbar .ui-navbar-toggle .ui-btn,.ui-footer .ui-navbar li .ui-btn,.ui-footer .ui-navbar .ui-navbar-toggle .ui-btn{border-top-width:0;border-bottom-width:0}.ui-navbar .ui-btn-inner{padding-left:2px;padding-right:2px}.ui-navbar-noicons li .ui-btn .ui-btn-inner,.ui-navbar-noicons .ui-navbar-toggle .ui-btn-inner{padding-top:.8em;padding-bottom:.9em}.ui-navbar-expanded .ui-btn{margin:0;font-size:14px}.ui-navbar-expanded .ui-btn-inner{padding-left:5px;padding-right:5px}.ui-navbar-expanded .ui-btn-icon-top .ui-btn-inner{padding:45px 5px 15px;text-align:center}.ui-navbar-expanded .ui-btn-icon-top .ui-icon{top:15px}.ui-navbar-expanded .ui-btn-icon-bottom .ui-btn-inner{padding:15px 5px 45px;text-align:center}.ui-navbar-expanded .ui-btn-icon-bottom .ui-icon{bottom:15px}.ui-navbar-expanded li .ui-btn .ui-btn-inner{min-height:2.5em}.ui-navbar-expanded .ui-navbar-noicons .ui-btn .ui-btn-inner{padding-top:1.8em;padding-bottom:1.9em}.ui-btn{display:block;text-align:center;cursor:pointer;position:relative;margin:.5em 5px;padding:0}.ui-mini{margin:.25em 5px}.ui-btn-inner{padding:.6em 20px;min-width:.75em;display:block;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;position:relative;zoom:1}.ui-btn input,.ui-btn button{z-index:2}.ui-btn-left,.ui-btn-right,.ui-btn-inline{display:inline-block}.ui-btn-block{display:block}.ui-header .ui-btn,.ui-footer .ui-btn{display:inline-block;margin:0}.ui-header .ui-btn-inner,.ui-footer .ui-btn-inner,.ui-mini .ui-btn-inner{font-size:12.5px;padding:.55em 11px .5em}.ui-header .ui-fullsize .ui-btn-inner,.ui-footer .ui-fullsize .ui-btn-inner{font-size:16px;padding:.6em 25px}.ui-btn-icon-notext{width:24px;height:24px}.ui-btn-icon-notext .ui-btn-inner{padding:0;height:100%}.ui-btn-icon-notext .ui-btn-inner .ui-icon{margin:2px 1px 2px 3px}.ui-btn-text{position:relative;z-index:1;width:100%}.ui-btn-icon-notext .ui-btn-text{position:absolute;left:-9999px}.ui-btn-icon-left .ui-btn-inner{padding-left:40px}.ui-btn-icon-right .ui-btn-inner{padding-right:40px}.ui-btn-icon-top .ui-btn-inner{padding-top:40px}.ui-btn-icon-bottom .ui-btn-inner{padding-bottom:40px}.ui-header .ui-btn-icon-left .ui-btn-inner,.ui-footer .ui-btn-icon-left .ui-btn-inner,.ui-mini .ui-btn-icon-left .ui-btn-inner{padding-left:30px}.ui-header .ui-btn-icon-right .ui-btn-inner,.ui-footer .ui-btn-icon-right .ui-btn-inner,.ui-mini .ui-btn-icon-right .ui-btn-inner{padding-right:30px}.ui-header .ui-btn-icon-top .ui-btn-inner,.ui-footer .ui-btn-icon-top .ui-btn-inner,.ui-mini .ui-btn-icon-top .ui-btn-inner{padding:30px 3px .5em 3px}.ui-header .ui-btn-icon-bottom .ui-btn-inner,.ui-footer .ui-btn-icon-bottom .ui-btn-inner,.ui-mini .ui-btn-icon-bottom .ui-btn-inner{padding:.55em 3px 30px 3px}.ui-btn-icon-notext .ui-icon{display:block;z-index:0}.ui-btn-icon-left .ui-btn-inner .ui-icon,.ui-btn-icon-right .ui-btn-inner .ui-icon{position:absolute;top:50%;margin-top:-9px}.ui-btn-icon-top .ui-btn-inner .ui-icon,.ui-btn-icon-bottom .ui-btn-inner .ui-icon{position:absolute;left:50%;margin-left:-9px}.ui-btn-icon-left .ui-icon{left:10px}.ui-btn-icon-right .ui-icon{right:10px}.ui-btn-icon-top .ui-icon{top:10px}.ui-btn-icon-bottom .ui-icon{top:auto;bottom:10px}.ui-header .ui-btn-icon-left .ui-icon,.ui-footer .ui-btn-icon-left .ui-icon,.ui-mini.ui-btn-icon-left .ui-icon,.ui-mini .ui-btn-icon-left .ui-icon{left:5px}.ui-header .ui-btn-icon-right .ui-icon,.ui-footer .ui-btn-icon-right .ui-icon,.ui-mini.ui-btn-icon-right .ui-icon,.ui-mini .ui-btn-icon-right .ui-icon{right:5px}.ui-header .ui-btn-icon-top .ui-icon,.ui-footer .ui-btn-icon-top .ui-icon,.ui-mini.ui-btn-icon-top .ui-icon,.ui-mini .ui-btn-icon-top .ui-icon{top:5px}.ui-header .ui-btn-icon-bottom .ui-icon,.ui-footer .ui-btn-icon-bottom .ui-icon,.ui-mini.ui-btn-icon-bottom .ui-icon,.ui-mini .ui-btn-icon-bottom .ui-icon{bottom:5px}.ui-btn-hidden{position:absolute;top:0;left:0;width:100%;height:100%;-webkit-appearance:button;opacity:.1;cursor:pointer;background:#fff;background:rgba(255,255,255,0);filter:Alpha(Opacity=.0001);font-size:1px;border:0;text-indent:-9999px}.ui-collapsible{margin:.5em 0}.ui-collapsible-heading{font-size:16px;display:block;margin:0 -8px;padding:0;border-width:0 0 1px 0;position:relative}.ui-collapsible-heading a{text-align:left;margin:0}.ui-collapsible-heading .ui-btn-inner,.ui-collapsible-heading .ui-btn-icon-left .ui-btn-inner{padding-left:40px}.ui-collapsible-heading .ui-btn-icon-right .ui-btn-inner{padding-left:12px;padding-right:40px}.ui-collapsible-heading .ui-btn-icon-top .ui-btn-inner,.ui-collapsible-heading .ui-btn-icon-bottom .ui-btn-inner{padding-right:40px;text-align:center}.ui-collapsible-heading a span.ui-btn{position:absolute;left:6px;top:50%;margin:-12px 0 0 0;width:20px;height:20px;padding:1px 0 1px 2px;text-indent:-9999px}.ui-collapsible-heading a span.ui-btn .ui-btn-inner{padding:10px 0}.ui-collapsible-heading a span.ui-btn .ui-icon{left:0;margin-top:-10px}.ui-collapsible-heading-status{position:absolute;top:-9999px;left:0}.ui-collapsible-content{display:block;margin:0 -8px;padding:10px 16px;border-top:0;background-image:none;font-weight:normal}.ui-collapsible-content-collapsed{display:none}.ui-collapsible-set{margin:.5em 0}.ui-collapsible-set .ui-collapsible{margin:-1px 0 0}.ui-controlgroup,fieldset.ui-controlgroup{padding:0;margin:0 0 .5em;zoom:1}.ui-bar .ui-controlgroup{margin:0 .3em}.ui-controlgroup-label{font-size:16px;line-height:1.4;font-weight:normal;margin:0 0 .4em}.ui-controlgroup-controls{display:block;width:100%}.ui-controlgroup li{list-style:none}.ui-controlgroup-vertical .ui-btn,.ui-controlgroup-vertical .ui-checkbox,.ui-controlgroup-vertical .ui-radio{margin:0;border-bottom-width:0}.ui-controlgroup-controls label.ui-select{position:absolute;left:-9999px}.ui-controlgroup-vertical .ui-controlgroup-last{border-bottom-width:1px}.ui-controlgroup-horizontal{padding:0}.ui-controlgroup-horizontal .ui-btn-inner{text-align:center}.ui-controlgroup-horizontal .ui-btn,.ui-controlgroup-horizontal .ui-select{display:inline-block;margin:0 -6px 0 0}.ui-controlgroup-horizontal .ui-checkbox,.ui-controlgroup-horizontal .ui-radio{float:left;clear:none;margin:0 -1px 0 0}.ui-controlgroup-horizontal .ui-checkbox .ui-btn,.ui-controlgroup-horizontal .ui-radio .ui-btn,.ui-controlgroup-horizontal .ui-checkbox:last-child,.ui-controlgroup-horizontal .ui-radio:last-child{margin-right:0}.ui-controlgroup-horizontal .ui-controlgroup-last{margin-right:0}.ui-controlgroup .ui-checkbox label,.ui-controlgroup .ui-radio label{font-size:16px}@media all and (min-width:450px){.ui-field-contain .ui-controlgroup-label{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain .ui-controlgroup-controls{width:60%;display:inline-block}.ui-field-contain .ui-controlgroup .ui-select{width:100%}.ui-field-contain .ui-controlgroup-horizontal .ui-select{width:auto}}.ui-dialog{background:none!important}.ui-dialog-contain{width:92.5%;max-width:500px;margin:10% auto 15px auto;padding:0}.ui-dialog .ui-header{margin-top:15%;border:0;overflow:hidden}.ui-dialog .ui-header,.ui-dialog .ui-content,.ui-dialog .ui-footer{display:block;position:relative;width:auto}.ui-dialog .ui-header,.ui-dialog .ui-footer{z-index:10;padding:0}.ui-dialog .ui-footer{padding:0 15px}.ui-dialog .ui-content{padding:15px}.ui-dialog{margin-top:-15px}.ui-checkbox,.ui-radio{position:relative;clear:both;margin:.2em 0 .5em;z-index:1}.ui-checkbox .ui-btn,.ui-radio .ui-btn{margin:0;text-align:left;z-index:2}.ui-checkbox .ui-btn-inner,.ui-radio .ui-btn-inner{white-space:normal}.ui-checkbox .ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-btn-icon-left .ui-btn-inner{padding-left:45px}.ui-checkbox .ui-mini.ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-mini.ui-btn-icon-left .ui-btn-inner{padding-left:36px}.ui-checkbox .ui-btn-icon-right .ui-btn-inner,.ui-radio .ui-btn-icon-right .ui-btn-inner{padding-right:45px}.ui-checkbox .ui-mini.ui-btn-icon-right .ui-btn-inner,.ui-radio .ui-mini.ui-btn-icon-right .ui-btn-inner{padding-right:36px}.ui-checkbox .ui-btn-icon-top .ui-btn-inner,.ui-radio .ui-btn-icon-top .ui-btn-inner{padding-right:0;padding-left:0;text-align:center}.ui-checkbox .ui-btn-icon-bottom .ui-btn-inner,.ui-radio .ui-btn-icon-bottom .ui-btn-inner{padding-right:0;padding-left:0;text-align:center}.ui-checkbox .ui-icon,.ui-radio .ui-icon{top:1.1em}.ui-checkbox .ui-btn-icon-left .ui-icon,.ui-radio .ui-btn-icon-left .ui-icon{left:15px}.ui-checkbox .ui-mini.ui-btn-icon-left .ui-icon,.ui-radio .ui-mini.ui-btn-icon-left .ui-icon{left:9px}.ui-checkbox .ui-btn-icon-right .ui-icon,.ui-radio .ui-btn-icon-right .ui-icon{right:15px}.ui-checkbox .ui-mini.ui-btn-icon-right .ui-icon,.ui-radio .ui-mini.ui-btn-icon-right .ui-icon{right:9px}.ui-checkbox .ui-btn-icon-top .ui-icon,.ui-radio .ui-btn-icon-top .ui-icon{top:10px}.ui-checkbox .ui-btn-icon-bottom .ui-icon,.ui-radio .ui-btn-icon-bottom .ui-icon{top:auto;bottom:10px}.ui-checkbox .ui-btn-icon-right .ui-icon,.ui-radio .ui-btn-icon-right .ui-icon{right:15px}.ui-checkbox .ui-mini.ui-btn-icon-right .ui-icon,.ui-radio .ui-mini.ui-btn-icon-right .ui-icon{right:9px}.ui-checkbox input,.ui-radio input{position:absolute;left:20px;top:50%;width:10px;height:10px;margin:-5px 0 0 0;outline:0!important;z-index:1}.ui-field-contain,fieldset.ui-field-contain{padding:.8em 0;margin:0;border-width:0 0 1px 0;overflow:visible}.ui-field-contain:first-child{border-top-width:0}.ui-header .ui-field-contain-left,.ui-header .ui-field-contain-right{position:absolute;top:0;width:25%}.ui-header .ui-field-contain-left{left:1em}.ui-header .ui-field-contain-right{right:1em}@media all and (min-width:450px){.ui-field-contain,.ui-mobile fieldset.ui-field-contain{border-width:0;padding:0;margin:1em 0}}.ui-select{display:block;position:relative}.ui-select select{position:absolute;left:-9999px;top:-9999px}.ui-select .ui-btn{overflow:hidden;opacity:1;margin:0}.ui-select .ui-btn select{cursor:pointer;-webkit-appearance:button;left:0;top:0;width:100%;min-height:1.5em;min-height:100%;height:3em;max-height:100%;opacity:0;-ms-filter:"alpha(opacity=0)";filter:alpha(opacity=0);z-index:2}.ui-select .ui-disabled{opacity:.3}@-moz-document url-prefix(){.ui-select .ui-btn select{opacity:.0001}}.ui-select .ui-btn select.ui-select-nativeonly{opacity:1;text-indent:0}.ui-select .ui-btn-icon-right .ui-btn-inner{padding-right:45px}.ui-select .ui-btn-icon-right .ui-icon{right:15px}.ui-select .ui-mini.ui-btn-icon-right .ui-icon{right:7px}label.ui-select{font-size:16px;line-height:1.4;font-weight:normal;margin:0 0 .3em;display:block}.ui-select .ui-btn-text,.ui-selectmenu .ui-btn-text{display:block;min-height:1em;overflow:hidden!important}.ui-select .ui-btn-text{text-overflow:ellipsis}.ui-selectmenu{position:absolute;padding:0;z-index:1100!important;width:80%;max-width:350px;padding:6px}.ui-selectmenu .ui-listview{margin:0}.ui-selectmenu .ui-btn.ui-li-divider{cursor:default}.ui-selectmenu-hidden{top:-9999px;left:-9999px}.ui-selectmenu-screen{position:absolute;top:0;left:0;width:100%;height:100%;z-index:99}.ui-screen-hidden,.ui-selectmenu-list .ui-li .ui-icon{display:none}.ui-selectmenu-list .ui-li .ui-icon{display:block}.ui-li.ui-selectmenu-placeholder{display:none}.ui-selectmenu .ui-header .ui-title{margin:.6em 46px .8em}@media all and (min-width:450px){.ui-field-contain label.ui-select{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain .ui-select{width:60%;display:inline-block}}.ui-selectmenu .ui-header h1:after{content:'.';visibility:hidden}label.ui-input-text{font-size:16px;line-height:1.4;display:block;font-weight:normal;margin:0 0 .3em}input.ui-input-text,textarea.ui-input-text{background-image:none;padding:.4em;line-height:1.4;font-size:16px;display:block;width:97%;outline:0}.ui-header input.ui-input-text,.ui-footer input.ui-input-text{margin-left:1.25%;padding:.4em 1%;width:95.5%}input.ui-input-text{-webkit-appearance:none}textarea.ui-input-text{height:50px;-webkit-transition:height 200ms linear;-moz-transition:height 200ms linear;-o-transition:height 200ms linear;transition:height 200ms linear}.ui-input-search{padding:0 30px;background-image:none;position:relative}.ui-icon-searchfield:after{position:absolute;left:7px;top:50%;margin-top:-9px;content:"";width:18px;height:18px;opacity:.5}.ui-input-search input.ui-input-text{border:0;width:98%;padding:.4em 0;margin:0;display:block;background:transparent none;outline:0!important}.ui-input-search .ui-input-clear{position:absolute;right:0;top:50%;margin-top:-13px}.ui-mini .ui-input-clear{right:-3px}.ui-input-search .ui-input-clear-hidden{display:none}input.ui-mini,.ui-mini input,textarea.ui-mini{font-size:14px}textarea.ui-mini{height:45px}@media all and (min-width:450px){.ui-field-contain label.ui-input-text{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain input.ui-input-text,.ui-field-contain textarea.ui-input-text,.ui-field-contain .ui-input-search{width:60%;display:inline-block}.ui-field-contain .ui-input-search{width:50%}.ui-hide-label input.ui-input-text,.ui-hide-label textarea.ui-input-text,.ui-hide-label .ui-input-search{padding:.4em;width:97%}.ui-input-search input.ui-input-text{width:98%}}.ui-listview{margin:0;counter-reset:listnumbering}.ui-content .ui-listview{margin:-15px}.ui-content .ui-listview-inset{margin:1em 0}.ui-listview,.ui-li{list-style:none;padding:0}.ui-li,.ui-li.ui-field-contain{display:block;margin:0;position:relative;overflow:visible;text-align:left;border-width:0;border-top-width:1px}.ui-li .ui-btn-text a.ui-link-inherit{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-li-divider,.ui-li-static{padding:.5em 15px;font-size:14px;font-weight:bold}.ui-li-divider{counter-reset:listnumbering}ol.ui-listview .ui-link-inherit:before,ol.ui-listview .ui-li-static:before,.ui-li-dec{font-size:.8em;display:inline-block;padding-right:.3em;font-weight:normal;counter-increment:listnumbering;content:counter(listnumbering) ". "}ol.ui-listview .ui-li-jsnumbering:before{content:""!important}.ui-listview-inset .ui-li{border-right-width:1px;border-left-width:1px}.ui-li:last-child,.ui-li.ui-field-contain:last-child{border-bottom-width:1px}.ui-li>.ui-btn-inner{display:block;position:relative;padding:0}.ui-li .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li{padding:.7em 15px .7em 15px;display:block}.ui-li-has-thumb .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-thumb{min-height:60px;padding-left:100px}.ui-li-has-icon .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-icon{min-height:20px;padding-left:40px}.ui-li-has-count .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-count{padding-right:45px}.ui-li-has-arrow .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-arrow{padding-right:30px}.ui-li-has-arrow.ui-li-has-count .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-arrow.ui-li-has-count{padding-right:75px}.ui-li-has-count .ui-btn-text{padding-right:15px}.ui-li-heading{font-size:16px;font-weight:bold;display:block;margin:.6em 0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-li-desc{font-size:12px;font-weight:normal;display:block;margin:-.5em 0 .6em;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-li-thumb,.ui-listview .ui-li-icon{position:absolute;left:1px;top:0;max-height:80px;max-width:80px}.ui-listview .ui-li-icon{max-height:40px;max-width:40px;left:10px;top:.9em}.ui-li-thumb,.ui-listview .ui-li-icon,.ui-li-content{float:left;margin-right:10px}.ui-li-aside{float:right;width:50%;text-align:right;margin:.3em 0}@media all and (min-width:480px){.ui-li-aside{width:45%}}.ui-li-divider{cursor:default}.ui-li-has-alt .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-alt{padding-right:95px}.ui-li-has-count .ui-li-count{position:absolute;font-size:11px;font-weight:bold;padding:.2em .5em;top:50%;margin-top:-.9em;right:48px}.ui-li-divider .ui-li-count,.ui-li-static .ui-li-count{right:10px}.ui-li-has-alt .ui-li-count{right:55px}.ui-li-link-alt{position:absolute;width:40px;height:100%;border-width:0;border-left-width:1px;top:0;right:0;margin:0;padding:0;z-index:2}.ui-li-link-alt .ui-btn{overflow:hidden;position:absolute;right:8px;top:50%;margin:-11px 0 0 0;border-bottom-width:1px;z-index:-1}.ui-li-link-alt .ui-btn-inner{padding:0;height:100%;position:absolute;width:100%;top:0;left:0}.ui-li-link-alt .ui-btn .ui-icon{right:50%;margin-right:-9px}.ui-listview * .ui-btn-inner>.ui-btn>.ui-btn-inner{border-top:0}.ui-listview-filter{border-width:0;overflow:hidden;margin:-15px -15px 15px -15px}.ui-listview-filter .ui-input-search{margin:5px;width:auto;display:block}.ui-listview-filter-inset{margin:-15px -5px -15px -5px;background:transparent}.ui-li.ui-screen-hidden{display:none}@media only screen and (min-device-width:768px) and (max-device-width:1024px){.ui-li .ui-btn-text{overflow:visible}}label.ui-slider{font-size:16px;line-height:1.4;font-weight:normal;margin:0 0 .3em;display:block}input.ui-slider-input,.ui-field-contain input.ui-slider-input{display:inline-block;width:50px}select.ui-slider-switch{display:none}div.ui-slider{position:relative;display:inline-block;overflow:visible;height:15px;padding:0;margin:0 2% 0 20px;top:4px;width:65%}div.ui-slider-mini{height:12px;margin-left:10px}div.ui-slider-bg{border:0;height:100%;padding-right:8px}.ui-controlgroup a.ui-slider-handle,a.ui-slider-handle{position:absolute;z-index:1;top:50%;width:28px;height:28px;margin-top:-15px;margin-left:-15px;outline:0}a.ui-slider-handle .ui-btn-inner{padding:0;height:100%}div.ui-slider-mini a.ui-slider-handle{height:14px;width:14px;margin:-8px 0 0 -7px}div.ui-slider-mini a.ui-slider-handle .ui-btn-inner{height:30px;width:30px;padding:0;margin:-9px 0 0 -9px}@media all and (min-width:450px){.ui-field-contain label.ui-slider{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain div.ui-slider{width:43%}.ui-field-contain div.ui-slider-switch{width:5.5em}}div.ui-slider-switch{height:32px;margin-left:0;width:5.8em}a.ui-slider-handle-snapping{-webkit-transition:left 70ms linear;-moz-transition:left 70ms linear}div.ui-slider-switch .ui-slider-handle{margin-top:1px}.ui-slider-inneroffset{margin:0 16px;position:relative;z-index:1}div.ui-slider-switch.ui-slider-mini{width:5em;height:29px}div.ui-slider-switch.ui-slider-mini .ui-slider-inneroffset{margin:0 15px 0 14px}div.ui-slider-switch.ui-slider-mini .ui-slider-handle{width:25px;height:25px;margin:1px 0 0 -13px}div.ui-slider-switch.ui-slider-mini a.ui-slider-handle .ui-btn-inner{height:30px;width:30px;padding:0;margin:0}span.ui-slider-label{position:absolute;text-align:center;width:100%;overflow:hidden;font-size:16px;top:0;line-height:2;min-height:100%;border-width:0;white-space:nowrap}.ui-slider-mini span.ui-slider-label{font-size:14px}span.ui-slider-label-a{z-index:1;left:0;text-indent:-1.5em}span.ui-slider-label-b{z-index:0;right:0;text-indent:1.5em}.ui-slider-inline{width:120px;display:inline-block} |
/*! jQuery Mobile v1.0rc2 jquerymobile.com | jquery.org/license */ | |
.ui-bar-a{border:1px solid #2a2a2a;background:#111;color:#fff;font-weight:bold;text-shadow:0 -1px 1px #000;background-image:-webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#111));background-image:-webkit-linear-gradient(#3c3c3c,#111);background-image:-moz-linear-gradient(#3c3c3c,#111);background-image:-ms-linear-gradient(#3c3c3c,#111);background-image:-o-linear-gradient(#3c3c3c,#111);background-image:linear-gradient(#3c3c3c,#111)}.ui-bar-a,.ui-bar-a input,.ui-bar-a select,.ui-bar-a textarea,.ui-bar-a button{font-family:Helvetica,Arial,sans-serif}.ui-bar-a .ui-link-inherit{color:#fff}.ui-bar-a .ui-link{color:#7cc4e7;font-weight:bold}.ui-bar-a .ui-link:hover{color:#2489ce}.ui-bar-a .ui-link:active{color:#2489ce}.ui-bar-a .ui-link:visited{color:#2489ce}.ui-body-a,.ui-dialog.ui-overlay-a{border:1px solid #2a2a2a;background:#222;color:#fff;text-shadow:0 1px 0 #000;font-weight:normal;background-image:-webkit-gradient(linear,left top,left bottom,from(#666),to(#222));background-image:-webkit-linear-gradient(#666,#222);background-image:-moz-linear-gradient(#666,#222);background-image:-ms-linear-gradient(#666,#222);background-image:-o-linear-gradient(#666,#222);background-image:linear-gradient(#666,#222)}.ui-body-a,.ui-body-a input,.ui-body-a select,.ui-body-a textarea,.ui-body-a button{font-family:Helvetica,Arial,sans-serif}.ui-body-a .ui-link-inherit{color:#fff}.ui-body-a .ui-link{color:#2489ce;font-weight:bold}.ui-body-a .ui-link:hover{color:#2489ce}.ui-body-a .ui-link:active{color:#2489ce}.ui-body-a .ui-link:visited{color:#2489ce}.ui-btn-up-a{border:1px solid #222;background:#333;font-weight:bold;color:#fff;text-shadow:0 -1px 1px #000;background-image:-webkit-gradient(linear,left top,left bottom,from(#555),to(#333));background-image:-webkit-linear-gradient(#555,#333);background-image:-moz-linear-gradient(#555,#333);background-image:-ms-linear-gradient(#555,#333);background-image:-o-linear-gradient(#555,#333);background-image:linear-gradient(#555,#333)}.ui-btn-up-a a.ui-link-inherit{color:#fff}.ui-btn-hover-a{border:1px solid #000;background:#444;font-weight:bold;color:#fff;text-shadow:0 -1px 1px #000;background-image:-webkit-gradient(linear,left top,left bottom,from(#666),to(#444));background-image:-webkit-linear-gradient(#666,#444);background-image:-moz-linear-gradient(#666,#444);background-image:-ms-linear-gradient(#666,#444);background-image:-o-linear-gradient(#666,#444);background-image:linear-gradient(#666,#444)}.ui-btn-hover-a a.ui-link-inherit{color:#fff}.ui-btn-down-a{border:1px solid #000;background:#3d3d3d;font-weight:bold;color:#fff;text-shadow:0 -1px 1px #000;background-image:-webkit-gradient(linear,left top,left bottom,from(#333),to(#5a5a5a));background-image:-webkit-linear-gradient(#333,#5a5a5a);background-image:-moz-linear-gradient(#333,#5a5a5a);background-image:-ms-linear-gradient(#333,#5a5a5a);background-image:-o-linear-gradient(#333,#5a5a5a);background-image:linear-gradient(#333,#5a5a5a)}.ui-btn-down-a a.ui-link-inherit{color:#fff}.ui-btn-up-a,.ui-btn-hover-a,.ui-btn-down-a{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-b{border:1px solid #456f9a;background:#5e87b0;color:#fff;font-weight:bold;text-shadow:0 -1px 1px #254f7a;background-image:-webkit-gradient(linear,left top,left bottom,from(#81a8ce),to(#5e87b0));background-image:-webkit-linear-gradient(#81a8ce,#5e87b0);background-image:-moz-linear-gradient(#81a8ce,#5e87b0);background-image:-ms-linear-gradient(#81a8ce,#5e87b0);background-image:-o-linear-gradient(#81a8ce,#5e87b0);background-image:linear-gradient(#81a8ce,#5e87b0)}.ui-bar-b,.ui-bar-b input,.ui-bar-b select,.ui-bar-b textarea,.ui-bar-b button{font-family:Helvetica,Arial,sans-serif}.ui-bar-b .ui-link-inherit{color:#fff}.ui-bar-b .ui-link{color:#ddf0f8;font-weight:bold}.ui-bar-b .ui-link:hover{color:#ddf0f8}.ui-bar-b .ui-link:active{color:#ddf0f8}.ui-bar-b .ui-link:visited{color:#ddf0f8}.ui-body-b,.ui-dialog.ui-overlay-b{border:1px solid #c6c6c6;background:#ccc;color:#333;text-shadow:0 1px 0 #fff;font-weight:normal;background-image:-webkit-gradient(linear,left top,left bottom,from(#e6e6e6),to(#ccc));background-image:-webkit-linear-gradient(#e6e6e6,#ccc);background-image:-moz-linear-gradient(#e6e6e6,#ccc);background-image:-ms-linear-gradient(#e6e6e6,#ccc);background-image:-o-linear-gradient(#e6e6e6,#ccc);background-image:linear-gradient(#e6e6e6,#ccc)}.ui-body-b,.ui-body-b input,.ui-body-b select,.ui-body-b textarea,.ui-body-b button{font-family:Helvetica,Arial,sans-serif}.ui-body-b .ui-link-inherit{color:#333}.ui-body-b .ui-link{color:#2489ce;font-weight:bold}.ui-body-b .ui-link:hover{color:#2489ce}.ui-body-b .ui-link:active{color:#2489ce}.ui-body-b .ui-link:visited{color:#2489ce}.ui-btn-up-b{border:1px solid #145072;background:#2567ab;font-weight:bold;color:#fff;text-shadow:0 -1px 1px #145072;background-image:-webkit-gradient(linear,left top,left bottom,from(#5f9cc5),to(#396b9e));background-image:-webkit-linear-gradient(#5f9cc5,#396b9e);background-image:-moz-linear-gradient(#5f9cc5,#396b9e);background-image:-ms-linear-gradient(#5f9cc5,#396b9e);background-image:-o-linear-gradient(#5f9cc5,#396b9e);background-image:linear-gradient(#5f9cc5,#396b9e)}.ui-btn-up-b a.ui-link-inherit{color:#fff}.ui-btn-hover-b{border:1px solid #00516e;background:#4b88b6;font-weight:bold;color:#fff;text-shadow:0 -1px 1px #014d68;background-image:-webkit-gradient(linear,left top,left bottom,from(#72b0d4),to(#4b88b6));background-image:-webkit-linear-gradient(#72b0d4,#4b88b6);background-image:-moz-linear-gradient(#72b0d4,#4b88b6);background-image:-ms-linear-gradient(#72b0d4,#4b88b6);background-image:-o-linear-gradient(#72b0d4,#4b88b6);background-image:linear-gradient(#72b0d4,#4b88b6)}.ui-btn-hover-b a.ui-link-inherit{color:#fff}.ui-btn-down-b{border:1px solid #225377;background:#4e89c5;font-weight:bold;color:#fff;text-shadow:0 -1px 1px #225377;background-image:-webkit-gradient(linear,left top,left bottom,from(#396b9e),to(#4e89c5));background-image:-webkit-linear-gradient(#396b9e,#4e89c5);background-image:-moz-linear-gradient(#396b9e,#4e89c5);background-image:-ms-linear-gradient(#396b9e,#4e89c5);background-image:-o-linear-gradient(#396b9e,#4e89c5);background-image:linear-gradient(#396b9e,#4e89c5)}.ui-btn-down-b a.ui-link-inherit{color:#fff}.ui-btn-up-b,.ui-btn-hover-b,.ui-btn-down-b{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-c{border:1px solid #b3b3b3;background:#e9eaeb;color:#3e3e3e;font-weight:bold;text-shadow:0 1px 1px #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#f0f0f0),to(#e9eaeb));background-image:-webkit-linear-gradient(#f0f0f0,#e9eaeb);background-image:-moz-linear-gradient(#f0f0f0,#e9eaeb);background-image:-ms-linear-gradient(#f0f0f0,#e9eaeb);background-image:-o-linear-gradient(#f0f0f0,#e9eaeb);background-image:linear-gradient(#f0f0f0,#e9eaeb)}.ui-bar-c .ui-link-inherit{color:#3e3e3e}.ui-bar-c .ui-link{color:#7cc4e7;font-weight:bold}.ui-bar-c .ui-link:hover{color:#2489ce}.ui-bar-c .ui-link:active{color:#2489ce}.ui-bar-c .ui-link:visited{color:#2489ce}.ui-bar-c,.ui-bar-c input,.ui-bar-c select,.ui-bar-c textarea,.ui-bar-c button{font-family:Helvetica,Arial,sans-serif}.ui-body-c,.ui-dialog.ui-overlay-c{border:1px solid #b3b3b3;color:#333;text-shadow:0 1px 0 #fff;background:#f0f0f0;background-image:-webkit-gradient(linear,left top,left bottom,from(#eee),to(#ddd));background-image:-webkit-linear-gradient(#eee,#ddd);background-image:-moz-linear-gradient(#eee,#ddd);background-image:-ms-linear-gradient(#eee,#ddd);background-image:-o-linear-gradient(#eee,#ddd);background-image:linear-gradient(#eee,#ddd)}.ui-body-c,.ui-body-c input,.ui-body-c select,.ui-body-c textarea,.ui-body-c button{font-family:Helvetica,Arial,sans-serif}.ui-body-c .ui-link-inherit{color:#333}.ui-body-c .ui-link{color:#2489ce;font-weight:bold}.ui-body-c .ui-link:hover{color:#2489ce}.ui-body-c .ui-link:active{color:#2489ce}.ui-body-c .ui-link:visited{color:#2489ce}.ui-btn-up-c{border:1px solid #ccc;background:#eee;font-weight:bold;color:#444;text-shadow:0 1px 1px #f6f6f6;background-image:-webkit-gradient(linear,left top,left bottom,from(#fdfdfd),to(#eee));background-image:-webkit-linear-gradient(#fdfdfd,#eee);background-image:-moz-linear-gradient(#fdfdfd,#eee);background-image:-ms-linear-gradient(#fdfdfd,#eee);background-image:-o-linear-gradient(#fdfdfd,#eee);background-image:linear-gradient(#fdfdfd,#eee)}.ui-btn-up-c a.ui-link-inherit{color:#2f3e46}.ui-btn-hover-c{border:1px solid #bbb;background:#dadada;font-weight:bold;color:#101010;text-shadow:0 1px 1px #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#ededed),to(#dadada));background-image:-webkit-linear-gradient(#ededed,#dadada);background-image:-moz-linear-gradient(#ededed,#dadada);background-image:-ms-linear-gradient(#ededed,#dadada);background-image:-o-linear-gradient(#ededed,#dadada);background-image:linear-gradient(#ededed,#dadada)}.ui-btn-hover-c a.ui-link-inherit{color:#2f3e46}.ui-btn-down-c{border:1px solid #808080;background:#fdfdfd;font-weight:bold;color:#111;text-shadow:0 1px 1px #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#eee),to(#fdfdfd));background-image:-webkit-linear-gradient(#eee,#fdfdfd);background-image:-moz-linear-gradient(#eee,#fdfdfd);background-image:-ms-linear-gradient(#eee,#fdfdfd);background-image:-o-linear-gradient(#eee,#fdfdfd);background-image:linear-gradient(#eee,#fdfdfd)}.ui-btn-down-c a.ui-link-inherit{color:#2f3e46}.ui-btn-up-c,.ui-btn-hover-c,.ui-btn-down-c{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-d{border:1px solid #ccc;background:#bbb;color:#333;text-shadow:0 1px 0 #eee;background-image:-webkit-gradient(linear,left top,left bottom,from(#ddd),to(#bbb));background-image:-webkit-linear-gradient(#ddd,#bbb);background-image:-moz-linear-gradient(#ddd,#bbb);background-image:-ms-linear-gradient(#ddd,#bbb);background-image:-o-linear-gradient(#ddd,#bbb);background-image:linear-gradient(#ddd,#bbb)}.ui-bar-d,.ui-bar-d input,.ui-bar-d select,.ui-bar-d textarea,.ui-bar-d button{font-family:Helvetica,Arial,sans-serif}.ui-bar-d .ui-link-inherit{color:#333}.ui-bar-d .ui-link{color:#2489ce;font-weight:bold}.ui-bar-d .ui-link:hover{color:#2489ce}.ui-bar-d .ui-link:active{color:#2489ce}.ui-bar-d .ui-link:visited{color:#2489ce}.ui-body-d,.ui-dialog.ui-overlay-d{border:1px solid #ccc;color:#333;text-shadow:0 1px 0 #fff;background:#fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#fff));background-image:-webkit-linear-gradient(#fff,#fff);background-image:-moz-linear-gradient(#fff,#fff);background-image:-ms-linear-gradient(#fff,#fff);background-image:-o-linear-gradient(#fff,#fff);background-image:linear-gradient(#fff,#fff)}.ui-body-d,.ui-body-d input,.ui-body-d select,.ui-body-d textarea,.ui-body-d button{font-family:Helvetica,Arial,sans-serif}.ui-body-d .ui-link-inherit{color:#333}.ui-body-d .ui-link{color:#2489ce;font-weight:bold}.ui-body-d .ui-link:hover{color:#2489ce}.ui-body-d .ui-link:active{color:#2489ce}.ui-body-d .ui-link:visited{color:#2489ce}.ui-btn-up-d{border:1px solid #ccc;background:#fff;font-weight:bold;color:#444;text-shadow:0 1px 1px #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#fff));background-image:-webkit-linear-gradient(#fff,#fff);background-image:-moz-linear-gradient(#fff,#fff);background-image:-ms-linear-gradient(#fff,#fff);background-image:-o-linear-gradient(#fff,#fff);background-image:linear-gradient(#fff,#fff)}.ui-btn-up-d a.ui-link-inherit{color:#333}.ui-btn-hover-d{border:1px solid #aaa;background:#eee;font-weight:bold;color:#222;cursor:pointer;text-shadow:0 1px 1px #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fdfdfd),to(#eee));background-image:-webkit-linear-gradient(#fdfdfd,#eee);background-image:-moz-linear-gradient(#fdfdfd,#eee);background-image:-ms-linear-gradient(#fdfdfd,#eee);background-image:-o-linear-gradient(#fdfdfd,#eee);background-image:linear-gradient(#fdfdfd,#eee)}.ui-btn-hover-d a.ui-link-inherit{color:#222}.ui-btn-down-d{border:1px solid #aaa;background:#fff;font-weight:bold;color:#111;text-shadow:0 1px 1px #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#eee),to(#fff));background-image:-webkit-linear-gradient(#eee,#fff);background-image:-moz-linear-gradient(#eee,#fff);background-image:-ms-linear-gradient(#eee,#fff);background-image:-o-linear-gradient(#eee,#fff);background-image:linear-gradient(#eee,#fff)}.ui-btn-down-d a.ui-link-inherit{color:#111}.ui-btn-up-d,.ui-btn-hover-d,.ui-btn-down-d{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-e{border:1px solid #f7c942;background:#fadb4e;color:#333;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fceda7),to(#fadb4e));background-image:-webkit-linear-gradient(#fceda7,#fadb4e);background-image:-moz-linear-gradient(#fceda7,#fadb4e);background-image:-ms-linear-gradient(#fceda7,#fadb4e);background-image:-o-linear-gradient(#fceda7,#fadb4e);background-image:linear-gradient(#fceda7,#fadb4e)}.ui-bar-e,.ui-bar-e input,.ui-bar-e select,.ui-bar-e textarea,.ui-bar-e button{font-family:Helvetica,Arial,sans-serif}.ui-bar-e .ui-link-inherit{color:#333}.ui-bar-e .ui-link{color:#2489ce;font-weight:bold}.ui-bar-e .ui-link:hover{color:#2489ce}.ui-bar-e .ui-link:active{color:#2489ce}.ui-bar-e .ui-link:visited{color:#2489ce}.ui-body-e,.ui-dialog.ui-overlay-e{border:1px solid #f7c942;color:#333;text-shadow:0 1px 0 #fff;background:#faeb9e;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#faeb9e));background-image:-webkit-linear-gradient(#fff,#faeb9e);background-image:-moz-linear-gradient(#fff,#faeb9e);background-image:-ms-linear-gradient(#fff,#faeb9e);background-image:-o-linear-gradient(#fff,#faeb9e);background-image:linear-gradient(#fff,#faeb9e)}.ui-body-e,.ui-body-e input,.ui-body-e select,.ui-body-e textarea,.ui-body-e button{font-family:Helvetica,Arial,sans-serif}.ui-body-e .ui-link-inherit{color:#333}.ui-body-e .ui-link{color:#2489ce;font-weight:bold}.ui-body-e .ui-link:hover{color:#2489ce}.ui-body-e .ui-link:active{color:#2489ce}.ui-body-e .ui-link:visited{color:#2489ce}.ui-btn-up-e{border:1px solid #f7c942;background:#fadb4e;font-weight:bold;color:#333;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fceda7),to(#fadb4e));background-image:-webkit-linear-gradient(#fceda7,#fadb4e);background-image:-moz-linear-gradient(#fceda7,#fadb4e);background-image:-ms-linear-gradient(#fceda7,#fadb4e);background-image:-o-linear-gradient(#fceda7,#fadb4e);background-image:linear-gradient(#fceda7,#fadb4e)}.ui-btn-up-e a.ui-link-inherit{color:#333}.ui-btn-hover-e{border:1px solid #e79952;background:#fbe26f;font-weight:bold;color:#111;text-shadow:0 1px 1px #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf0b5),to(#fbe26f));background-image:-webkit-linear-gradient(#fcf0b5,#fbe26f);background-image:-moz-linear-gradient(#fcf0b5,#fbe26f);background-image:-ms-linear-gradient(#fcf0b5,#fbe26f);background-image:-o-linear-gradient(#fcf0b5,#fbe26f);background-image:linear-gradient(#fcf0b5,#fbe26f)}.ui-btn-hover-e a.ui-link-inherit{color:#333}.ui-btn-down-e{border:1px solid #f7c942;background:#fceda7;font-weight:bold;color:#111;text-shadow:0 1px 1px #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fadb4e),to(#fceda7));background-image:-webkit-linear-gradient(#fadb4e,#fceda7);background-image:-moz-linear-gradient(#fadb4e,#fceda7);background-image:-ms-linear-gradient(#fadb4e,#fceda7);background-image:-o-linear-gradient(#fadb4e,#fceda7);background-image:linear-gradient(#fadb4e,#fceda7)}.ui-btn-down-e a.ui-link-inherit{color:#333}.ui-btn-up-e,.ui-btn-hover-e,.ui-btn-down-e{font-family:Helvetica,Arial,sans-serif;text-decoration:none}a.ui-link-inherit{text-decoration:none!important}.ui-btn-active{border:1px solid #155678;background:#4596ce;font-weight:bold;color:#fff;cursor:pointer;text-shadow:0 -1px 1px #145072;text-decoration:none;background-image:-webkit-gradient(linear,left top,left bottom,from(#85bae4),to(#5393c5));background-image:-webkit-linear-gradient(#85bae4,#5393c5);background-image:-moz-linear-gradient(#85bae4,#5393c5);background-image:-ms-linear-gradient(#85bae4,#5393c5);background-image:-o-linear-gradient(#85bae4,#5393c5);background-image:linear-gradient(#85bae4,#5393c5);font-family:Helvetica,Arial,sans-serif}.ui-btn-active a.ui-link-inherit{color:#fff}.ui-btn-inner{border-top:1px solid #fff;border-color:rgba(255,255,255,.3)}.ui-corner-tl{-moz-border-radius-topleft:.6em;-webkit-border-top-left-radius:.6em;border-top-left-radius:.6em}.ui-corner-tr{-moz-border-radius-topright:.6em;-webkit-border-top-right-radius:.6em;border-top-right-radius:.6em}.ui-corner-bl{-moz-border-radius-bottomleft:.6em;-webkit-border-bottom-left-radius:.6em;border-bottom-left-radius:.6em}.ui-corner-br{-moz-border-radius-bottomright:.6em;-webkit-border-bottom-right-radius:.6em;border-bottom-right-radius:.6em}.ui-corner-top{-moz-border-radius-topleft:.6em;-webkit-border-top-left-radius:.6em;border-top-left-radius:.6em;-moz-border-radius-topright:.6em;-webkit-border-top-right-radius:.6em;border-top-right-radius:.6em}.ui-corner-bottom{-moz-border-radius-bottomleft:.6em;-webkit-border-bottom-left-radius:.6em;border-bottom-left-radius:.6em;-moz-border-radius-bottomright:.6em;-webkit-border-bottom-right-radius:.6em;border-bottom-right-radius:.6em}.ui-corner-right{-moz-border-radius-topright:.6em;-webkit-border-top-right-radius:.6em;border-top-right-radius:.6em;-moz-border-radius-bottomright:.6em;-webkit-border-bottom-right-radius:.6em;border-bottom-right-radius:.6em}.ui-corner-left{-moz-border-radius-topleft:.6em;-webkit-border-top-left-radius:.6em;border-top-left-radius:.6em;-moz-border-radius-bottomleft:.6em;-webkit-border-bottom-left-radius:.6em;border-bottom-left-radius:.6em}.ui-corner-all{-moz-border-radius:.6em;-webkit-border-radius:.6em;border-radius:.6em}.ui-corner-none{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.ui-br{border-bottom:#828282;border-bottom:rgba(130,130,130,.3);border-bottom-width:1px;border-bottom-style:solid}.ui-disabled{opacity:.3}.ui-disabled,.ui-disabled a{pointer-events:none;cursor:default}.ui-icon,.ui-icon-searchfield:after{background:#666;background:rgba(0,0,0,.4);background-image:url(images/icons-18-white.png);background-repeat:no-repeat;-moz-border-radius:9px;-webkit-border-radius:9px;border-radius:9px}.ui-icon-alt{background:#fff;background:rgba(255,255,255,.3);background-image:url(images/icons-18-black.png);background-repeat:no-repeat}@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min--moz-device-pixel-ratio:1.5),only screen and (min-resolution:240dpi){.ui-icon-plus,.ui-icon-minus,.ui-icon-delete,.ui-icon-arrow-r,.ui-icon-arrow-l,.ui-icon-arrow-u,.ui-icon-arrow-d,.ui-icon-check,.ui-icon-gear,.ui-icon-refresh,.ui-icon-forward,.ui-icon-back,.ui-icon-grid,.ui-icon-star,.ui-icon-alert,.ui-icon-info,.ui-icon-home,.ui-icon-search,.ui-icon-searchfield:after,.ui-icon-checkbox-off,.ui-icon-checkbox-on,.ui-icon-radio-off,.ui-icon-radio-on{background-image:url(images/icons-36-white.png);-moz-background-size:776px 18px;-o-background-size:776px 18px;-webkit-background-size:776px 18px;background-size:776px 18px}.ui-icon-alt{background-image:url(images/icons-36-black.png)}}.ui-icon-plus{background-position:-0 50%}.ui-icon-minus{background-position:-36px 50%}.ui-icon-delete{background-position:-72px 50%}.ui-icon-arrow-r{background-position:-108px 50%}.ui-icon-arrow-l{background-position:-144px 50%}.ui-icon-arrow-u{background-position:-180px 50%}.ui-icon-arrow-d{background-position:-216px 50%}.ui-icon-check{background-position:-252px 50%}.ui-icon-gear{background-position:-288px 50%}.ui-icon-refresh{background-position:-324px 50%}.ui-icon-forward{background-position:-360px 50%}.ui-icon-back{background-position:-396px 50%}.ui-icon-grid{background-position:-432px 50%}.ui-icon-star{background-position:-468px 50%}.ui-icon-alert{background-position:-504px 50%}.ui-icon-info{background-position:-540px 50%}.ui-icon-home{background-position:-576px 50%}.ui-icon-search,.ui-icon-searchfield:after{background-position:-612px 50%}.ui-icon-checkbox-off{background-position:-684px 50%}.ui-icon-checkbox-on{background-position:-648px 50%}.ui-icon-radio-off{background-position:-756px 50%}.ui-icon-radio-on{background-position:-720px 50%}.ui-checkbox .ui-icon{-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.ui-icon-checkbox-off,.ui-icon-radio-off{background-color:transparent}.ui-checkbox-on .ui-icon,.ui-radio-on .ui-icon{background-color:#4596ce}.ui-icon-loading{background-image:url(images/ajax-loader.png);width:40px;height:40px;-moz-border-radius:20px;-webkit-border-radius:20px;border-radius:20px;background-size:35px 35px}.ui-btn-corner-tl{-moz-border-radius-topleft:1em;-webkit-border-top-left-radius:1em;border-top-left-radius:1em}.ui-btn-corner-tr{-moz-border-radius-topright:1em;-webkit-border-top-right-radius:1em;border-top-right-radius:1em}.ui-btn-corner-bl{-moz-border-radius-bottomleft:1em;-webkit-border-bottom-left-radius:1em;border-bottom-left-radius:1em}.ui-btn-corner-br{-moz-border-radius-bottomright:1em;-webkit-border-bottom-right-radius:1em;border-bottom-right-radius:1em}.ui-btn-corner-top{-moz-border-radius-topleft:1em;-webkit-border-top-left-radius:1em;border-top-left-radius:1em;-moz-border-radius-topright:1em;-webkit-border-top-right-radius:1em;border-top-right-radius:1em}.ui-btn-corner-bottom{-moz-border-radius-bottomleft:1em;-webkit-border-bottom-left-radius:1em;border-bottom-left-radius:1em;-moz-border-radius-bottomright:1em;-webkit-border-bottom-right-radius:1em;border-bottom-right-radius:1em}.ui-btn-corner-right{-moz-border-radius-topright:1em;-webkit-border-top-right-radius:1em;border-top-right-radius:1em;-moz-border-radius-bottomright:1em;-webkit-border-bottom-right-radius:1em;border-bottom-right-radius:1em}.ui-btn-corner-left{-moz-border-radius-topleft:1em;-webkit-border-top-left-radius:1em;border-top-left-radius:1em;-moz-border-radius-bottomleft:1em;-webkit-border-bottom-left-radius:1em;border-bottom-left-radius:1em}.ui-btn-corner-all{-moz-border-radius:1em;-webkit-border-radius:1em;border-radius:1em}.ui-corner-tl,.ui-corner-tr,.ui-corner-bl,.ui-corner-br,.ui-corner-top,.ui-corner-bottom,.ui-corner-right,.ui-corner-left,.ui-corner-all,.ui-btn-corner-tl,.ui-btn-corner-tr,.ui-btn-corner-bl,.ui-btn-corner-br,.ui-btn-corner-top,.ui-btn-corner-bottom,.ui-btn-corner-right,.ui-btn-corner-left,.ui-btn-corner-all{-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.ui-overlay{background:#666;opacity:.5;filter:Alpha(Opacity=50);position:absolute;width:100%;height:100%}.ui-overlay-shadow{-moz-box-shadow:0 0 12px rgba(0,0,0,.6);-webkit-box-shadow:0 0 12px rgba(0,0,0,.6);box-shadow:0 0 12px rgba(0,0,0,.6)}.ui-shadow{-moz-box-shadow:0 1px 4px rgba(0,0,0,.3);-webkit-box-shadow:0 1px 4px rgba(0,0,0,.3);box-shadow:0 1px 4px rgba(0,0,0,.3)}.ui-bar-a .ui-shadow,.ui-bar-b .ui-shadow,.ui-bar-c .ui-shadow{-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.ui-shadow-inset{-moz-box-shadow:inset 0 1px 4px rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 4px rgba(0,0,0,.2);box-shadow:inset 0 1px 4px rgba(0,0,0,.2)}.ui-icon-shadow{-moz-box-shadow:0 1px 0 rgba(255,255,255,.4);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.4);box-shadow:0 1px 0 rgba(255,255,255,.4)}.ui-focus{-moz-box-shadow:0 0 12px #387bbe;-webkit-box-shadow:0 0 12px #387bbe;box-shadow:0 0 12px #387bbe}.ui-mobile-nosupport-boxshadow *{-moz-box-shadow:none!important;-webkit-box-shadow:none!important;box-shadow:none!important}.ui-mobile-nosupport-boxshadow .ui-focus{outline-width:2px}.ui-mobile,.ui-mobile body{height:100%}.ui-mobile fieldset,.ui-page{padding:0;margin:0}.ui-mobile a img,.ui-mobile fieldset{border:0}.ui-mobile-viewport{margin:0;overflow-x:visible;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}body.ui-mobile-viewport,div.ui-mobile-viewport{overflow-x:hidden}.ui-mobile [data-role=page],.ui-mobile [data-role=dialog],.ui-page{top:0;left:0;width:100%;min-height:100%;position:absolute;display:none;border:0}.ui-mobile .ui-page-active{display:block;overflow:visible}.ui-page{outline:0}@media screen and (orientation:portrait){.ui-mobile,.ui-mobile .ui-page{min-height:420px}}@media screen and (orientation:landscape){.ui-mobile,.ui-mobile .ui-page{min-height:300px}}.ui-page.ui-mobile-touch-overflow,.ui-mobile-touch-overflow.ui-native-fixed .ui-content{overflow:auto;height:100%;-webkit-overflow-scrolling:touch;-moz-overflow-scrolling:touch;-o-overflow-scrolling:touch;-ms-overflow-scrolling:touch;overflow-scrolling:touch}.ui-page.ui-mobile-touch-overflow,.ui-page.ui-mobile-touch-overflow *{-webkit-transform:rotateY(0)}.ui-page.ui-mobile-pre-transition{display:block}.ui-loading .ui-mobile-viewport{overflow:hidden!important}.ui-loading .ui-loader{display:block}.ui-loading .ui-page{overflow:hidden}.ui-loader{display:none;position:absolute;opacity:.85;z-index:100;left:50%;width:200px;margin-left:-130px;margin-top:-35px;padding:10px 30px}.ui-loader h1{font-size:15px;text-align:center}.ui-loader .ui-icon{position:static;display:block;opacity:.9;margin:0 auto;width:35px;height:35px;background-color:transparent}.ui-mobile-rendering>*{visibility:hidden}.ui-bar,.ui-body{position:relative;padding:.4em 15px;overflow:hidden;display:block;clear:both}.ui-bar{font-size:16px;margin:0}.ui-bar h1,.ui-bar h2,.ui-bar h3,.ui-bar h4,.ui-bar h5,.ui-bar h6{margin:0;padding:0;font-size:16px;display:inline-block}.ui-header,.ui-footer{display:block}.ui-page .ui-header,.ui-page .ui-footer{position:relative}.ui-header .ui-btn-left{position:absolute;left:10px;top:.4em}.ui-header .ui-btn-right{position:absolute;right:10px;top:.4em}.ui-header .ui-title,.ui-footer .ui-title{min-height:1.1em;text-align:center;font-size:16px;display:block;margin:.6em 90px .8em;padding:0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;outline:0!important}.ui-footer .ui-title{margin:.6em 15px .8em}.ui-content{border-width:0;overflow:visible;overflow-x:hidden;padding:15px}.ui-page-fullscreen .ui-content{padding:0}.ui-mobile-touch-overflow.ui-page.ui-native-fixed,.ui-mobile-touch-overflow.ui-page.ui-native-fullscreen{overflow:visible}.ui-mobile-touch-overflow.ui-native-fixed .ui-header,.ui-mobile-touch-overflow.ui-native-fixed .ui-footer{position:fixed;left:0;right:0;top:0;z-index:200}.ui-mobile-touch-overflow.ui-page.ui-native-fixed .ui-footer{top:auto;bottom:0}.ui-mobile-touch-overflow.ui-native-fixed .ui-content{padding-top:2.5em;padding-bottom:3em;top:0;bottom:0;height:auto;position:absolute}.ui-mobile-touch-overflow.ui-native-fullscreen .ui-content{padding-top:0;padding-bottom:0}.ui-mobile-touch-overflow.ui-native-fullscreen .ui-header,.ui-mobile-touch-overflow.ui-native-fullscreen .ui-footer{opacity:.9}.ui-native-bars-hidden{display:none}.ui-icon{width:18px;height:18px}.ui-fullscreen img{max-width:100%}.ui-nojs{position:absolute;left:-9999px}.ui-hide-label label,.ui-hidden-accessible{position:absolute!important;left:-9999px;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px)}.spin{-webkit-transform:rotate(360deg);-webkit-animation-name:spin;-webkit-animation-duration:1s;-webkit-animation-iteration-count:infinite;-webkit-animation-timing-function:linear}@-webkit-keyframes spin{from{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(360deg)}}.in,.out{-webkit-animation-timing-function:ease-in-out;-webkit-animation-duration:350ms}.slide.out{-webkit-transform:translateX(-100%);-webkit-animation-name:slideouttoleft}.slide.in{-webkit-transform:translateX(0);-webkit-animation-name:slideinfromright}.slide.out.reverse{-webkit-transform:translateX(100%);-webkit-animation-name:slideouttoright}.slide.in.reverse{-webkit-transform:translateX(0);-webkit-animation-name:slideinfromleft}.slideup.out{-webkit-animation-name:dontmove;z-index:0}.slideup.in{-webkit-transform:translateY(0);-webkit-animation-name:slideinfrombottom;z-index:10}.slideup.in.reverse{z-index:0;-webkit-animation-name:dontmove}.slideup.out.reverse{-webkit-transform:translateY(100%);z-index:10;-webkit-animation-name:slideouttobottom}.slidedown.out{-webkit-animation-name:dontmove;z-index:0}.slidedown.in{-webkit-transform:translateY(0);-webkit-animation-name:slideinfromtop;z-index:10}.slidedown.in.reverse{z-index:0;-webkit-animation-name:dontmove}.slidedown.out.reverse{-webkit-transform:translateY(-100%);z-index:10;-webkit-animation-name:slideouttotop}@-webkit-keyframes slideinfromright{from{-webkit-transform:translateX(100%)}to{-webkit-transform:translateX(0)}}@-webkit-keyframes slideinfromleft{from{-webkit-transform:translateX(-100%)}to{-webkit-transform:translateX(0)}}@-webkit-keyframes slideouttoleft{from{-webkit-transform:translateX(0)}to{-webkit-transform:translateX(-100%)}}@-webkit-keyframes slideouttoright{from{-webkit-transform:translateX(0)}to{-webkit-transform:translateX(100%)}}@-webkit-keyframes slideinfromtop{from{-webkit-transform:translateY(-100%)}to{-webkit-transform:translateY(0)}}@-webkit-keyframes slideinfrombottom{from{-webkit-transform:translateY(100%)}to{-webkit-transform:translateY(0)}}@-webkit-keyframes slideouttobottom{from{-webkit-transform:translateY(0)}to{-webkit-transform:translateY(100%)}}@-webkit-keyframes slideouttotop{from{-webkit-transform:translateY(0)}to{-webkit-transform:translateY(-100%)}}@-webkit-keyframes fadein{from{opacity:0}to{opacity:1}}@-webkit-keyframes fadeout{from{opacity:1}to{opacity:0}}.fade.out{z-index:0;-webkit-animation-name:fadeout}.fade.in{opacity:1;z-index:10;-webkit-animation-name:fadein}.viewport-flip{-webkit-perspective:1000;position:absolute}.ui-mobile-viewport-transitioning,.ui-mobile-viewport-transitioning .ui-page{width:100%;height:100%;overflow:hidden}.flip{-webkit-animation-duration:.65s;-webkit-backface-visibility:hidden;-webkit-transform:translateX(0)}.flip.out{-webkit-transform:rotateY(-180deg) scale(.8);-webkit-animation-name:flipouttoleft}.flip.in{-webkit-transform:rotateY(0) scale(1);-webkit-animation-name:flipinfromleft}.flip.out.reverse{-webkit-transform:rotateY(180deg) scale(.8);-webkit-animation-name:flipouttoright}.flip.in.reverse{-webkit-transform:rotateY(0) scale(1);-webkit-animation-name:flipinfromright}@-webkit-keyframes flipinfromright{from{-webkit-transform:rotateY(-180deg) scale(.8)}to{-webkit-transform:rotateY(0) scale(1)}}@-webkit-keyframes flipinfromleft{from{-webkit-transform:rotateY(180deg) scale(.8)}to{-webkit-transform:rotateY(0) scale(1)}}@-webkit-keyframes flipouttoleft{from{-webkit-transform:rotateY(0) scale(1)}to{-webkit-transform:rotateY(-180deg) scale(.8)}}@-webkit-keyframes flipouttoright{from{-webkit-transform:rotateY(0) scale(1)}to{-webkit-transform:rotateY(180deg) scale(.8)}}@-webkit-keyframes dontmove{from{opacity:1}to{opacity:1}}.pop{-webkit-transform-origin:50% 50%}.pop.in{-webkit-transform:scale(1);opacity:1;-webkit-animation-name:popin;z-index:10}.pop.in.reverse{z-index:0;-webkit-animation-name:dontmove}.pop.out.reverse{-webkit-transform:scale(.2);opacity:0;-webkit-animation-name:popout;z-index:10}@-webkit-keyframes popin{from{-webkit-transform:scale(.2);opacity:0}to{-webkit-transform:scale(1);opacity:1}}@-webkit-keyframes popout{from{-webkit-transform:scale(1);opacity:1}to{-webkit-transform:scale(.2);opacity:0}}.ui-grid-a,.ui-grid-b,.ui-grid-c,.ui-grid-d{overflow:hidden}.ui-block-a,.ui-block-b,.ui-block-c,.ui-block-d,.ui-block-e{margin:0;padding:0;border:0;float:left;min-height:1px}.ui-grid-solo .ui-block-a{width:100%;float:none}.ui-grid-a .ui-block-a,.ui-grid-a .ui-block-b{width:50%}.ui-grid-a .ui-block-a{clear:left}.ui-grid-b .ui-block-a,.ui-grid-b .ui-block-b,.ui-grid-b .ui-block-c{width:33.333%}.ui-grid-b .ui-block-a{clear:left}.ui-grid-c .ui-block-a,.ui-grid-c .ui-block-b,.ui-grid-c .ui-block-c,.ui-grid-c .ui-block-d{width:25%}.ui-grid-c .ui-block-a{clear:left}.ui-grid-d .ui-block-a,.ui-grid-d .ui-block-b,.ui-grid-d .ui-block-c,.ui-grid-d .ui-block-d,.ui-grid-d .ui-block-e{width:20%}.ui-grid-d .ui-block-a{clear:left}.ui-header,.ui-footer,.ui-page-fullscreen .ui-header,.ui-page-fullscreen .ui-footer{position:absolute;overflow:hidden;width:100%;border-left-width:0;border-right-width:0}.ui-header-fixed,.ui-footer-fixed{z-index:1000;-webkit-transform:translateZ(0)}.ui-footer-duplicate,.ui-page-fullscreen .ui-fixed-inline{display:none}.ui-page-fullscreen .ui-header,.ui-page-fullscreen .ui-footer{opacity:.9}.ui-navbar{overflow:hidden}.ui-navbar ul,.ui-navbar-expanded ul{list-style:none;padding:0;margin:0;position:relative;display:block;border:0}.ui-navbar-collapsed ul{float:left;width:75%;margin-right:-2px}.ui-navbar-collapsed .ui-navbar-toggle{float:left;width:25%}.ui-navbar li.ui-navbar-truncate{position:absolute;left:-9999px;top:-9999px}.ui-navbar li .ui-btn,.ui-navbar .ui-navbar-toggle .ui-btn{display:block;font-size:12px;text-align:center;margin:0;border-right-width:0}.ui-navbar li .ui-btn{margin-right:-1px}.ui-navbar li .ui-btn:last-child{margin-right:0}.ui-header .ui-navbar li .ui-btn,.ui-header .ui-navbar .ui-navbar-toggle .ui-btn,.ui-footer .ui-navbar li .ui-btn,.ui-footer .ui-navbar .ui-navbar-toggle .ui-btn{border-top-width:0;border-bottom-width:0}.ui-navbar .ui-btn-inner{padding-left:2px;padding-right:2px}.ui-navbar-noicons li .ui-btn .ui-btn-inner,.ui-navbar-noicons .ui-navbar-toggle .ui-btn-inner{padding-top:.8em;padding-bottom:.9em}.ui-navbar-expanded .ui-btn{margin:0;font-size:14px}.ui-navbar-expanded .ui-btn-inner{padding-left:5px;padding-right:5px}.ui-navbar-expanded .ui-btn-icon-top .ui-btn-inner{padding:45px 5px 15px;text-align:center}.ui-navbar-expanded .ui-btn-icon-top .ui-icon{top:15px}.ui-navbar-expanded .ui-btn-icon-bottom .ui-btn-inner{padding:15px 5px 45px;text-align:center}.ui-navbar-expanded .ui-btn-icon-bottom .ui-icon{bottom:15px}.ui-navbar-expanded li .ui-btn .ui-btn-inner{min-height:2.5em}.ui-navbar-expanded .ui-navbar-noicons .ui-btn .ui-btn-inner{padding-top:1.8em;padding-bottom:1.9em}.ui-btn{display:block;text-align:center;cursor:pointer;position:relative;margin:.5em 5px;padding:0}.ui-header .ui-btn,.ui-footer .ui-btn,.ui-bar .ui-btn{display:inline-block;font-size:13px;margin:0}.ui-btn-inline{display:inline-block}.ui-btn-inner{padding:.6em 25px;display:block;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;position:relative;zoom:1}.ui-btn input,.ui-btn button{z-index:2}.ui-header .ui-btn-inner,.ui-footer .ui-btn-inner,.ui-bar .ui-btn-inner{padding:.4em 8px .5em}.ui-btn-icon-notext{width:24px;height:24px}.ui-btn-icon-notext .ui-btn-inner{padding:2px 1px 2px 3px}.ui-btn-text{position:relative;z-index:1}.ui-btn-icon-notext .ui-btn-text{position:absolute;left:-9999px}.ui-btn-icon-left .ui-btn-inner{padding-left:33px}.ui-header .ui-btn-icon-left .ui-btn-inner,.ui-footer .ui-btn-icon-left .ui-btn-inner,.ui-bar .ui-btn-icon-left .ui-btn-inner{padding-left:27px}.ui-btn-icon-right .ui-btn-inner{padding-right:33px}.ui-header .ui-btn-icon-right .ui-btn-inner,.ui-footer .ui-btn-icon-right .ui-btn-inner,.ui-bar .ui-btn-icon-right .ui-btn-inner{padding-right:27px}.ui-btn-icon-top .ui-btn-inner{padding-top:33px}.ui-header .ui-btn-icon-top .ui-btn-inner,.ui-footer .ui-btn-icon-top .ui-btn-inner,.ui-bar .ui-btn-icon-top .ui-btn-inner{padding-top:27px}.ui-btn-icon-bottom .ui-btn-inner{padding-bottom:33px}.ui-header .ui-btn-icon-bottom .ui-btn-inner,.ui-footer .ui-btn-icon-bottom .ui-btn-inner,.ui-bar .ui-btn-icon-bottom .ui-btn-inner{padding-bottom:27px}.ui-btn-icon-notext .ui-icon{display:block;z-index:0}.ui-btn-icon-left .ui-icon,.ui-btn-icon-right .ui-icon{position:absolute;top:50%;margin-top:-9px}.ui-btn-icon-top .ui-icon,.ui-btn-icon-bottom .ui-icon{position:absolute;left:50%;margin-left:-9px}.ui-btn-icon-left .ui-icon{left:10px}.ui-btn-icon-right .ui-icon{right:10px}.ui-btn-icon-top .ui-icon{top:10px}.ui-btn-icon-bottom .ui-icon{bottom:10px}.ui-header .ui-btn-icon-left .ui-icon,.ui-footer .ui-btn-icon-left .ui-icon,.ui-bar .ui-btn-icon-left .ui-icon{left:4px}.ui-header .ui-btn-icon-right .ui-icon,.ui-footer .ui-btn-icon-right .ui-icon,.ui-bar .ui-btn-icon-right .ui-icon{right:4px}.ui-header .ui-btn-icon-top .ui-icon,.ui-footer .ui-btn-icon-top .ui-icon,.ui-bar .ui-btn-icon-top .ui-icon{top:4px}.ui-header .ui-btn-icon-bottom .ui-icon,.ui-footer .ui-btn-icon-bottom .ui-icon,.ui-bar .ui-btn-icon-bottom .ui-icon{bottom:4px}.ui-btn-hidden{position:absolute;top:0;left:0;width:100%;height:100%;-webkit-appearance:button;opacity:.1;cursor:pointer;background:#fff;background:rgba(255,255,255,0);filter:Alpha(Opacity=.0001);font-size:1px;border:0;line-height:999px}.ui-collapsible{margin:.5em 0}.ui-collapsible-heading{font-size:16px;display:block;margin:0 -8px;padding:0;border-width:0 0 1px 0;position:relative}.ui-collapsible-heading a{text-align:left;margin:0}.ui-collapsible-heading a .ui-btn-inner{padding-left:40px}.ui-collapsible-heading a span.ui-btn{position:absolute;left:6px;top:50%;margin:-12px 0 0 0;width:20px;height:20px;padding:1px 0 1px 2px;text-indent:-9999px}.ui-collapsible-heading a span.ui-btn .ui-btn-inner{padding:10px 0}.ui-collapsible-heading a span.ui-btn .ui-icon{left:0;margin-top:-10px}.ui-collapsible-heading-status{position:absolute;top:-9999px;left:0}.ui-collapsible-content{display:block;margin:0 -8px;padding:10px 16px;border-top:0;background-image:none;font-weight:normal}.ui-collapsible-content-collapsed{display:none}.ui-collapsible-set{margin:.5em 0}.ui-collapsible-set .ui-collapsible{margin:-1px 0 0}.ui-controlgroup,fieldset.ui-controlgroup{padding:0;margin:.5em 0 1em}.ui-bar .ui-controlgroup{margin:0 .3em}.ui-controlgroup-label{font-size:16px;line-height:1.4;font-weight:normal;margin:0 0 .3em}.ui-controlgroup-controls{display:block;width:100%}.ui-controlgroup li{list-style:none}.ui-controlgroup-vertical .ui-btn,.ui-controlgroup-vertical .ui-checkbox,.ui-controlgroup-vertical .ui-radio{margin:0;border-bottom-width:0}.ui-controlgroup-controls label.ui-select{position:absolute;left:-9999px}.ui-controlgroup-vertical .ui-controlgroup-last{border-bottom-width:1px}.ui-controlgroup-horizontal{padding:0}.ui-controlgroup-horizontal .ui-btn,.ui-controlgroup-horizontal .ui-select{display:inline-block;margin:0 -5px 0 0}.ui-controlgroup-horizontal .ui-checkbox,.ui-controlgroup-horizontal .ui-radio{float:left;margin:0 -1px 0 0}.ui-controlgroup-horizontal .ui-checkbox .ui-btn,.ui-controlgroup-horizontal .ui-radio .ui-btn,.ui-controlgroup-horizontal .ui-checkbox:last-child,.ui-controlgroup-horizontal .ui-radio:last-child{margin-right:0}.ui-controlgroup-horizontal .ui-controlgroup-last{margin-right:0}.ui-controlgroup .ui-checkbox label,.ui-controlgroup .ui-radio label{font-size:16px}@media all and (min-width:450px){.ui-field-contain .ui-controlgroup-label{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain .ui-controlgroup-controls{width:60%;display:inline-block}.ui-field-contain .ui-controlgroup .ui-select{width:100%}.ui-field-contain .ui-controlgroup-horizontal .ui-select{width:auto}}.ui-dialog{min-height:480px}.ui-dialog .ui-header,.ui-dialog .ui-content,.ui-dialog .ui-footer{max-width:500px;margin:10% auto 15px auto;width:85%;position:relative}.ui-dialog .ui-header,.ui-dialog .ui-footer{padding:0 15px;z-index:10}.ui-dialog .ui-content{padding:15px}.ui-dialog .ui-content,.ui-dialog .ui-footer{margin-top:-15px}.ui-checkbox,.ui-radio{position:relative;margin:.2em 0 .5em;z-index:1}.ui-checkbox .ui-btn,.ui-radio .ui-btn{margin:0;text-align:left;z-index:2}.ui-checkbox .ui-btn-inner,.ui-radio .ui-btn-inner{white-space:normal}.ui-checkbox .ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-btn-icon-left .ui-btn-inner{padding-left:45px}.ui-checkbox .ui-btn-icon-right .ui-btn-inner,.ui-radio .ui-btn-icon-right .ui-btn-inner{padding-right:45px}.ui-checkbox .ui-icon,.ui-radio .ui-icon{top:1.1em}.ui-checkbox .ui-btn-icon-left .ui-icon,.ui-radio .ui-btn-icon-left .ui-icon{left:15px}.ui-checkbox .ui-btn-icon-right .ui-icon,.ui-radio .ui-btn-icon-right .ui-icon{right:15px}.ui-checkbox input,.ui-radio input{position:absolute;left:20px;top:50%;width:10px;height:10px;margin:-5px 0 0 0;outline:0!important;z-index:1}.ui-field-contain{padding:1.5em 0;margin:0;border-bottom-width:1px;overflow:visible}.ui-field-contain:first-child{border-top-width:0}@media all and (min-width:450px){.ui-field-contain{border-width:0;padding:0;margin:1em 0}}.ui-select{display:block;position:relative}.ui-select select{position:absolute;left:-9999px;top:-9999px}.ui-select .ui-btn{overflow:hidden}.ui-select .ui-btn{opacity:1}.ui-select .ui-btn select{cursor:pointer;-webkit-appearance:button;left:0;top:0;width:100%;min-height:1.5em;min-height:100%;height:3em;max-height:100%;opacity:0;-ms-filter:"alpha(opacity=0)";filter:alpha(opacity=0);z-index:2}@-moz-document url-prefix(){.ui-select .ui-btn select{opacity:.0001}}.ui-select .ui-btn select.ui-select-nativeonly{opacity:1;text-indent:0}.ui-select .ui-btn-icon-right .ui-btn-inner{padding-right:45px}.ui-select .ui-btn-icon-right .ui-icon{right:15px}label.ui-select{font-size:16px;line-height:1.4;font-weight:normal;margin:0 0 .3em;display:block}.ui-select .ui-btn-text,.ui-selectmenu .ui-btn-text{display:block;min-height:1em;overflow:hidden}.ui-select .ui-btn-text{text-overflow:ellipsis}.ui-selectmenu{position:absolute;padding:0;z-index:1100!important;width:80%;max-width:350px;padding:6px}.ui-selectmenu .ui-listview{margin:0}.ui-selectmenu .ui-btn.ui-li-divider{cursor:default}.ui-selectmenu-hidden{top:-9999px;left:-9999px}.ui-selectmenu-screen{position:absolute;top:0;left:0;width:100%;height:100%;z-index:99}.ui-screen-hidden,.ui-selectmenu-list .ui-li .ui-icon{display:none}.ui-selectmenu-list .ui-li .ui-icon{display:block}.ui-li.ui-selectmenu-placeholder{display:none}.ui-selectmenu .ui-header .ui-title{margin:.6em 46px .8em}@media all and (min-width:450px){.ui-field-contain label.ui-select{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain .ui-select{width:60%;display:inline-block}}.ui-selectmenu .ui-header h1:after{content:'.';visibility:hidden}label.ui-input-text{font-size:16px;line-height:1.4;display:block;font-weight:normal;margin:0 0 .3em}input.ui-input-text,textarea.ui-input-text{background-image:none;padding:.4em;line-height:1.4;font-size:16px;display:block;width:97%}input.ui-input-text{-webkit-appearance:none}textarea.ui-input-text{height:50px;-webkit-transition:height 200ms linear;-moz-transition:height 200ms linear;-o-transition:height 200ms linear;transition:height 200ms linear}.ui-input-search{padding:0 30px;background-image:none;position:relative}.ui-icon-searchfield:after{position:absolute;left:7px;top:50%;margin-top:-9px;content:"";width:18px;height:18px;opacity:.5}.ui-input-search input.ui-input-text{border:0;width:98%;padding:.4em 0;margin:0;display:block;background:transparent none;outline:0!important}.ui-input-search .ui-input-clear{position:absolute;right:0;top:50%;margin-top:-13px}.ui-input-search .ui-input-clear-hidden{display:none}@media all and (min-width:450px){.ui-field-contain label.ui-input-text{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain input.ui-input-text,.ui-field-contain textarea.ui-input-text,.ui-field-contain .ui-input-search{width:60%;display:inline-block}.ui-field-contain .ui-input-search{width:50%}.ui-hide-label input.ui-input-text,.ui-hide-label textarea.ui-input-text,.ui-hide-label .ui-input-search{padding:.4em;width:97%}.ui-input-search input.ui-input-text{width:98%}}.ui-listview{margin:0;counter-reset:listnumbering}.ui-content .ui-listview{margin:-15px}.ui-content .ui-listview-inset{margin:1em 0}.ui-listview,.ui-li{list-style:none;padding:0}.ui-li,.ui-li.ui-field-contain{display:block;margin:0;position:relative;overflow:visible;text-align:left;border-width:0;border-top-width:1px}.ui-li .ui-btn-text a.ui-link-inherit{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-li-divider,.ui-li-static{padding:.5em 15px;font-size:14px;font-weight:bold}.ui-li-divider{counter-reset:listnumbering}ol.ui-listview .ui-link-inherit:before,ol.ui-listview .ui-li-static:before,.ui-li-dec{font-size:.8em;display:inline-block;padding-right:.3em;font-weight:normal;counter-increment:listnumbering;content:counter(listnumbering) ". "}ol.ui-listview .ui-li-jsnumbering:before{content:""!important}.ui-listview-inset .ui-li{border-right-width:1px;border-left-width:1px}.ui-li:last-child,.ui-li.ui-field-contain:last-child{border-bottom-width:1px}.ui-li>.ui-btn-inner{display:block;position:relative;padding:0}.ui-li .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li{padding:.7em 15px .7em 15px;display:block}.ui-li-has-thumb .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-thumb{min-height:60px;padding-left:100px}.ui-li-has-icon .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-icon{min-height:20px;padding-left:40px}.ui-li-has-count .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-count{padding-right:45px}.ui-li-has-arrow .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-arrow{padding-right:30px}.ui-li-has-arrow.ui-li-has-count .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-arrow.ui-li-has-count{padding-right:75px}.ui-li-has-count .ui-btn-text{padding-right:15px}.ui-li-heading{font-size:16px;font-weight:bold;display:block;margin:.6em 0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-li-desc{font-size:12px;font-weight:normal;display:block;margin:-.5em 0 .6em;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-li-thumb,.ui-listview .ui-li-icon{position:absolute;left:1px;top:0;max-height:80px;max-width:80px}.ui-listview .ui-li-icon{max-height:40px;max-width:40px;left:10px;top:.9em}.ui-li-thumb,.ui-listview .ui-li-icon,.ui-li-content{float:left;margin-right:10px}.ui-li-aside{float:right;width:50%;text-align:right;margin:.3em 0}@media all and (min-width:480px){.ui-li-aside{width:45%}}.ui-li-divider{cursor:default}.ui-li-has-alt .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-alt{padding-right:95px}.ui-li-has-count .ui-li-count{position:absolute;font-size:11px;font-weight:bold;padding:.2em .5em;top:50%;margin-top:-.9em;right:38px}.ui-li-divider .ui-li-count,.ui-li-static .ui-li-count{right:10px}.ui-li-has-alt .ui-li-count{right:55px}.ui-li-link-alt{position:absolute;width:40px;height:100%;border-width:0;border-left-width:1px;top:0;right:0;margin:0;padding:0;z-index:2}.ui-li-link-alt .ui-btn{overflow:hidden;position:absolute;right:8px;top:50%;margin:-11px 0 0 0;border-bottom-width:1px;z-index:-1}.ui-li-link-alt .ui-btn-inner{padding:0;height:100%;position:absolute;width:100%;top:0;left:0}.ui-li-link-alt .ui-btn .ui-icon{right:50%;margin-right:-9px}.ui-listview * .ui-btn-inner>.ui-btn>.ui-btn-inner{border-top:0}.ui-listview-filter{border-width:0;overflow:hidden;margin:-15px -15px 15px -15px}.ui-listview-filter .ui-input-search{margin:5px;width:auto;display:block}.ui-listview-filter-inset{margin:-15px -5px -15px -5px;background:transparent}.ui-li.ui-screen-hidden{display:none}@media only screen and (min-device-width:768px) and (max-device-width:1024px){.ui-li .ui-btn-text{overflow:visible}}label.ui-slider{font-size:16px;line-height:1.4;font-weight:normal;margin:0 0 .3em;display:block}input.ui-slider-input,.ui-field-contain input.ui-slider-input{display:inline-block;width:50px}select.ui-slider-switch{display:none}div.ui-slider{position:relative;display:inline-block;overflow:visible;height:15px;padding:0;margin:0 2% 0 20px;top:4px;width:66%}div.ui-slider-switch{width:99.8%}a.ui-slider-handle{position:absolute;z-index:10;top:50%;width:28px;height:28px;margin-top:-15px;margin-left:-15px}a.ui-slider-handle .ui-btn-inner{padding-left:0;padding-right:0}@media all and (min-width:480px){.ui-field-contain label.ui-slider{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain div.ui-slider{width:43%}}div.ui-slider-switch{height:32px;overflow:hidden;margin-left:0}div.ui-slider-inneroffset{margin-left:50%;position:absolute;top:1px;height:100%;width:50%}a.ui-slider-handle-snapping{-webkit-transition:left 70ms linear}div.ui-slider-labelbg{position:absolute;top:0;margin:0;border-width:0}div.ui-slider-switch div.ui-slider-labelbg-a{width:60%;height:100%;left:0}div.ui-slider-switch div.ui-slider-labelbg-b{width:60%;height:100%;right:0}.ui-slider-switch-a div.ui-slider-labelbg-a,.ui-slider-switch-b div.ui-slider-labelbg-b{z-index:-1}.ui-slider-switch-a div.ui-slider-labelbg-b,.ui-slider-switch-b div.ui-slider-labelbg-a{z-index:0}div.ui-slider-switch a.ui-slider-handle{z-index:20;width:101%;height:32px;margin-top:-18px;margin-left:-101%}span.ui-slider-label{width:100%;position:absolute;height:32px;font-size:16px;text-align:center;line-height:2;background:0;border-color:transparent}span.ui-slider-label-a{left:-100%;margin-right:-1px}span.ui-slider-label-b{right:-100%;margin-left:-1px} |
<?php | <?php |
header('Content-type: text/css'); | header('Content-type: text/css'); |
ob_start("compress"); | ob_start("compress"); |
function compress($buffer) { | function compress($buffer) { |
/* remove comments */ | /* remove comments */ |
$buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer); | $buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer); |
/* remove tabs, spaces, newlines, etc. */ | /* remove tabs, spaces, newlines, etc. */ |
$buffer = str_replace(array("\r\n", "\r", "\n", "\t", ' ', ' ', ' '), '', $buffer); | $buffer = str_replace(array("\r\n", "\r", "\n", "\t", ' ', ' ', ' '), '', $buffer); |
return $buffer; | return $buffer; |
} | } |
echo ' | echo ' |
.ui-li-thumb, .ui-li-icon { position: relative; } | .ui-li-thumb, .ui-li-icon { position: relative; } |
.ui-navbar { | .ui-navbar { |
width: 100%; | width: 100%; |
} | } |
.ui-btn-inner { | .ui-btn-inner { |
white-space: normal !important; | white-space: normal !important; |
} | } |
.ui-li-heading { | .ui-li-heading { |
white-space: normal !important; | white-space: normal !important; |
} | } |
.ui-listview-filter { | .ui-listview-filter { |
margin: 0 !important; | margin: 0 !important; |
} | } |
.ui-icon-navigation { | .ui-icon-navigation { |
background-image: url(images/113-navigation.png); | background-image: url(images/113-navigation.png); |
background-position: 1px 0; | background-position: 1px 0; |
} | } |
.ui-icon-beaker { | .ui-icon-beaker { |
background-image: url(images/91-beaker-2.png); | background-image: url(images/91-beaker-2.png); |
background-position: 1px 0; | background-position: 1px 0; |
} | } |
#footer { | #footer { |
text-size: 0.75em; | text-size: 0.75em; |
text-align: center; | text-align: center; |
} | } |
body { | body { |
background-color: #F0F0F0; | background-color: #F0F0F0; |
} | } |
#jqm-homeheader { | #jqm-homeheader { |
text-align: center; | text-align: center; |
} | } |
.viaPoints { | .viaPoints { |
display: none; | display: none; |
text-size: 0.2em; | text-size: 0.2em; |
} | } |
.min-width-480px .viaPoints { | .min-width-480px .viaPoints { |
display: inline; | display: inline; |
} | } |
#extrainfo { | #extrainfo { |
visibility: hidden; | visibility: hidden; |
display: none; | display: none; |
} | } |
#servicewarning { | .servicewarning { |
padding: 1em; | padding: 1em; |
margin-bottom: 0.5em; | margin-bottom: 0.5em; |
text-size: 0.2em; | text-size: 0.2em; |
background-color: #FF9; | background-color: #FF9; |
-moz-border-radius: 15px; | -moz-border-radius: 15px; |
border-radius: 15px; | border-radius: 15px; |
} | } |
#footer { | #footer { |
clear:both; | clear:both; |
text-align:center; | text-align:center; |
} | } |
// source http://webaim.org/techniques/skipnav/ | // source http://webaim.org/techniques/skipnav/ |
#skip a, #skip a:hover, #skip a:visited | #skip a, #skip a:hover, #skip a:visited |
{ | { |
position:absolute; | position:absolute; |
left:0px; | left:0px; |
top:-500px; | top:-500px; |
width:1px; | width:1px; |
height:1px; | height:1px; |
overflow:hidden; | overflow:hidden; |
} | } |
#skip a:active, #skip a:focus | #skip a:active, #skip a:focus |
{ | { |
position:static; | position:static; |
width:auto; | width:auto; |
height:auto; | height:auto; |
}'; | }'; |
//if (false) | //if (false) |
echo ' | echo ' |
// adaptive layout from jQuery Mobile docs site | // adaptive layout from jQuery Mobile docs site |
.type-interior .content-secondary { | .type-interior .content-secondary { |
border-right: 0; | border-right: 0; |
border-left: 0; | border-left: 0; |
margin: 10px -15px 0; | margin: 10px -15px 0; |
background: #fff; | background: #fff; |
border-top: 1px solid #ccc; | border-top: 1px solid #ccc; |
} | } |
.type-home .ui-content { | .type-home .ui-content { |
margin-top: 5px; | margin-top: 5px; |
} | } |
.type-interior .ui-content { | .type-interior .ui-content { |
padding-bottom: 0; | padding-bottom: 0; |
} | } |
.content-secondary .ui-collapsible-contain { | .content-secondary .ui-collapsible-contain { |
padding: 10px 15px; | padding: 10px 15px; |
} | } |
.content-secondary .ui-collapsible-heading { | .content-secondary .ui-collapsible-heading { |
margin: 0 0 30px; | margin: 0 0 30px; |
} | } |
.content-secondary .ui-collapsible-heading-collapsed, | .content-secondary .ui-collapsible-heading-collapsed, |
.content-secondary .ui-collapsible-content { | .content-secondary .ui-collapsible-content { |
padding:0; | padding:0; |
margin: 0; | margin: 0; |
} | } |
/* hires ahoy */ | /* hires ahoy */ |
@media all and (min-width: 650px){ | @media all and (min-width: 650px){ |
.content-secondary { | .content-secondary { |
text-align: left; | text-align: left; |
float: left; | float: left; |
width: 45%; | width: 45%; |
background: none; | background: none; |
border-top: 0; | border-top: 0; |
} | } |
.content-secondary, | .content-secondary, |
.type-interior .content-secondary { | .type-interior .content-secondary { |
margin: 30px 0 20px 2%; | margin: 30px 0 20px 2%; |
padding: 20px 4% 0 0; | padding: 20px 4% 0 0; |
background: none; | background: none; |
} | } |
.type-index .content-secondary { | .type-index .content-secondary { |
padding: 0; | padding: 0; |
} | } |
.type-index .content-secondary .ui-listview { | .type-index .content-secondary .ui-listview { |
margin: 0; | margin: 0; |
} | } |
.content-primary { | .content-primary { |
width: 45%; | width: 45%; |
float: right; | float: right; |
margin-top: 30px; | margin-top: 30px; |
margin-right: 1%; | margin-right: 1%; |
padding-right: 1%; | padding-right: 1%; |
} | } |
.content-primary ul:first-child { | .content-primary ul:first-child { |
margin-top: 0; | margin-top: 0; |
} | } |
.type-interior .content-primary { | .type-interior .content-primary { |
padding: 1.5em 6% 3em 0; | padding: 1.5em 6% 3em 0; |
margin: 0; | margin: 0; |
} | } |
/* fix up the collapsibles - expanded on desktop */ | /* fix up the collapsibles - expanded on desktop */ |
.content-secondary .ui-collapsible-heading { | .content-secondary .ui-collapsible-heading { |
display: none; | display: none; |
} | } |
.content-secondary .ui-collapsible-contain { | .content-secondary .ui-collapsible-contain { |
margin:0; | margin:0; |
} | } |
.content-secondary .ui-collapsible-content { | .content-secondary .ui-collapsible-content { |
display: block; | display: block; |
margin: 0; | margin: 0; |
padding: 0; | padding: 0; |
} | } |
.type-interior .content-secondary .ui-li-divider { | .type-interior .content-secondary .ui-li-divider { |
padding-top: 1em; | padding-top: 1em; |
padding-bottom: 1em; | padding-bottom: 1em; |
} | } |
.type-interior .content-secondary { | .type-interior .content-secondary { |
margin: 0; | margin: 0; |
padding: 0; | padding: 0; |
} | } |
} | } |
@media all and (min-width: 750px){ | @media all and (min-width: 750px){ |
.type-home .ui-content, | .type-home .ui-content, |
.type-interior .ui-content { | .type-interior .ui-content { |
background-position: 39%; | background-position: 39%; |
} | } |
.content-secondary { | .content-secondary { |
width: 34%; | width: 34%; |
} | } |
.content-primary { | .content-primary { |
width: 56%; | width: 56%; |
padding-right: 1%; | padding-right: 1%; |
} | } |
.type-interior .ui-content { | .type-interior .ui-content { |
background-position: 34%; | background-position: 34%; |
} | } |
} | } |
@media all and (min-width: 1200px){ | @media all and (min-width: 1200px){ |
.type-home .ui-content{ | .type-home .ui-content{ |
background-position: 38.5%; | background-position: 38.5%; |
} | } |
.type-interior .ui-content { | .type-interior .ui-content { |
background-position: 30%; | background-position: 30%; |
} | } |
.content-secondary { | .content-secondary { |
width: 30%; | width: 30%; |
padding-right:6%; | padding-right:6%; |
margin: 30px 0 20px 5%; | margin: 30px 0 20px 5%; |
} | } |
.type-interior .content-secondary { | .type-interior .content-secondary { |
margin: 0; | margin: 0; |
padding: 0; | padding: 0; |
} | } |
.content-primary { | .content-primary { |
width: 50%; | width: 50%; |
margin-right: 5%; | margin-right: 5%; |
padding-right: 3%; | padding-right: 3%; |
} | } |
.type-interior .content-primary { | .type-interior .content-primary { |
width: 60%; | width: 60%; |
} | } |
} | } |
'; | '; |
ob_end_flush(); | ob_end_flush(); |
?> | ?> |
<?php | <?php |
include ("include/common.inc.php"); | include ("include/common.inc.php"); |
$GTFSREnabled = false; | $GTFSREnabled = false; |
include_header("Feedback", "feedback"); | include_header("Feedback", "feedback"); |
function sendEmail($topic, $message) | function sendEmail($topic, $message) |
{ | { |
$address = "maxious@lambdacomplex.org"; | $address = "maxious@lambdacomplex.org"; |
if (file_exists("/tmp/aws.php")) { | |
include_once ("lib/ses.php"); | |
include_once ("/tmp/aws.php"); | |
$con = new SimpleEmailService($accessKey, $secretKey); | |
//$con->verifyEmailAddress($address); | |
//$con->listVerifiedEmailAddresses(); | |
$m = new SimpleEmailServiceMessage(); | |
$m->addTo($address); | |
$m->setFrom($address); | |
$m->setSubject($topic); | |
$m->setMessageFromString($message); | |
$con->sendEmail($m); | |
} | |
else { | |
// In case any of our lines are larger than 70 characters, we should use wordwrap() | // In case any of our lines are larger than 70 characters, we should use wordwrap() |
$message = wordwrap($message, 70); | $message = wordwrap($message, 70); |
// Send | // Send |
mail($address, $topic, $message); | mail($address, $topic, $message); |
} | |
} | } |
if (isset($_REQUEST['feedback']) || isset($_REQUEST['newlocation'])){ | if (isset($_REQUEST['feedback']) || isset($_REQUEST['newlocation'])){ |
sendEmail("bus.lambda feedback",print_r($_REQUEST,true)); | sendEmail("bus.lambda feedback",print_r($_REQUEST,true)); |
echo "<h2 style='text-align: center;'>Thank you for your feedback!</h2>"; | echo "<h2 style='text-align: center;'>Thank you for your feedback!</h2>"; |
} else { | } else { |
$stopid = ""; | $stopid = ""; |
$stopcode = ""; | $stopcode = ""; |
if (isset($_SERVER["HTTP_REFERER"])) $urlparts = explode("?",$_SERVER["HTTP_REFERER"]); | if (isset($_SERVER["HTTP_REFERER"])) $urlparts = explode("?",$_SERVER["HTTP_REFERER"]); |
if (isset($urlparts[1])) { | if (isset($urlparts[1])) { |
$getparams = explode("&",$urlparts[1]); | $getparams = explode("&",$urlparts[1]); |
foreach ($getparams as $param) { | foreach ($getparams as $param) { |
$paramparts=explode("=",$param); | $paramparts=explode("=",$param); |
if ($paramparts[0] == "stopid") $stopid = $paramparts[1]; | if ($paramparts[0] == "stopid") $stopid = $paramparts[1]; |
if ($paramparts[0] == "stopcode") $stopcode = $paramparts[1]; | if ($paramparts[0] == "stopcode") $stopcode = $paramparts[1]; |
} | } |
} | } |
?> | ?> |
<h3>Add/Move/Delete a Bus Stop Location</h3> | <h3>Add/Move/Delete a Bus Stop Location</h3> |
<form action="feedback.php" method="post"> | <form action="feedback.php" method="post"> |
StopID: <input type="text" name="stopid" value="<?php echo $stopid ?>"/><br> | StopID: <input type="text" name="stopid" value="<?php echo $stopid ?>"/><br> |
or StopCode: <input type="text" name="stopcode" value="<?php echo $stopcode ?>"/><br> | or StopCode: <input type="text" name="stopcode" value="<?php echo $stopcode ?>"/><br> |
<small> if you click on feedback from a stop page, these will get filled in automatically. else describe the location/street of the stop in one of these boxes </small><br> | <small> if you click on feedback from a stop page, these will get filled in automatically. else describe the location/street of the stop in one of these boxes </small><br> |
Suggested Stop Location (lat/long or words): <input type="text" name="newlocation"/><br> | Suggested Stop Location (lat/long or words): <input type="text" name="newlocation"/><br> |
<!--<small> if your device supports javascript, you can pick a location from the map above</small><br>--> | <!--<small> if your device supports javascript, you can pick a location from the map above</small><br>--> |
<input type="submit" value="Submit!"/> | <input type="submit" value="Submit!"/> |
</form> | </form> |
<h3>Bug Report/Feedback</h3> | <h3>Bug Report/Feedback</h3> |
Please leave feedback about bugs/errors or general suggestions about improvements that could be made to the way the data is presented! | Please leave feedback about bugs/errors or general suggestions about improvements that could be made to the way the data is presented! |
<form action="feedback.php" method="post"> | <form action="feedback.php" method="post"> |
<textarea name="feedback"> | <textarea name="feedback"> |
</textarea> | </textarea> |
<textarea name="extrainfo" id="extrainfo"> | <textarea name="extrainfo" id="extrainfo"> |
<?php | <?php |
echo "Referrer URL: ".($_SERVER["HTTP_REFERER"] ? $_SERVER["HTTP_REFERER"] : ""); | echo "Referrer URL: ".($_SERVER["HTTP_REFERER"] ? $_SERVER["HTTP_REFERER"] : ""); |
echo "\nCurrent page URL: ".curPageURL(); | echo "\nCurrent page URL: ".curPageURL(); |
echo "\nUser Agent: ".$_SERVER["HTTP_USER_AGENT"]; | echo "\nUser Agent: ".$_SERVER["HTTP_USER_AGENT"]; |
echo "\nUser host/IP: ".$_SERVER["HTTP_X_FORWARDED_FOR"]." ".$_SERVER["REMOTE_ADDR"]; | echo "\nUser host/IP: ".$_SERVER["HTTP_X_FORWARDED_FOR"]." ".$_SERVER["REMOTE_ADDR"]; |
echo "\nServer host/IP: ".php_uname("n"); | echo "\nServer host/IP: ".php_uname("n"); |
echo "\nCurrent date/time: ". date("c"); | echo "\nCurrent date/time: ". date("c"); |
echo "\nCurrent code revision: ".exec("git rev-parse --short HEAD"); | echo "\nCurrent code revision: ".exec("git rev-parse --short HEAD"); |
echo "\nCurrent timetables version: ".date("c",@filemtime('cbrfeed.zip')); | echo "\nCurrent timetables version: ".date("c",@filemtime('../busresources/cbrfeed.zip')); |
echo "\nDump of session: ".print_r($_SESSION,true); | echo "\nDump of session: ".print_r($_SESSION,true); |
?> | ?> |
</textarea> | </textarea> |
<input type="submit" value="Submit!"/> | <input type="submit" value="Submit!"/> |
</form> | </form> |
<?php | <?php |
} | } |
include_footer(); | include_footer(); |
?> | ?> |
<?php | |
header('Content-Type: application/vnd.google-earth.kml+xml'); | |
include ('../include/common.inc.php'); | |
header('Content-Disposition: attachment; filename="trips.' . date('c') . '.kml"'); | |
$debugOkay = Array(); // disable debugging output even on dev server | |
echo '<?xml version="1.0" encoding="UTF-8"?> | |
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom"><Document>'; | |
echo ' | |
<Style id="ylw-pushpin"> | |
<IconStyle> | |
<Icon> | |
<href>http://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png</href> | |
</Icon> | |
</IconStyle> | |
</Style> | |
<Style id="bus-pushpin"> | |
<IconStyle> | |
<Icon> | |
<href>http://google-maps-icons.googlecode.com/files/bus.png</href> | |
</Icon> | |
</IconStyle> | |
</Style> | |
<Style id="grn-pushpin"> | |
<IconStyle> | |
<Icon> | |
<href>http://maps.google.com/mapfiles/kml/pushpin/grn-pushpin.png</href> | |
</Icon> | |
</IconStyle> | |
</Style>'; | |
foreach (getActiveTrips() as $trip) { | |
echo "\n<Placemark>\n"; | |
$link = curPageURL() . '/../trip.php?tripid=' . htmlspecialchars($trip['trip_id']); | |
$lastStop = getTripLastStop($trip['trip_id']); | |
echo "<name>" . $lastStop[0]['arrival_time'] . " @ " . htmlspecialchars($lastStop[0]['stop_name']) . "</name>"; | |
echo '<atom:link rel="related" href="' . $link . '"/>'; | |
echo '<description><![CDATA[ <a href="' . $link . '">' . htmlspecialchars($lastStop[0]['stop_name']) . "</a>]]> </description>"; | |
echo "<styleUrl>#bus-pushpin</styleUrl>"; | |
echo "<Point><coordinates>" . $lastStop[0]['stop_lon'] . "," . $lastStop[0]['stop_lat'] . "</coordinates></Point>"; | |
echo "</Placemark>\n"; | |
} | |
echo "</Document></kml>\n"; | |
?> | |
<?php | <?php |
require $basePath.'lib/openid.php'; | |
require ROOT . '/../lib/openid.php'; | |
$openid = new LightOpenID($_SERVER['HTTP_HOST']); | $openid = new LightOpenID($_SERVER['HTTP_HOST']); |
function login() | function login() { |
{ | global $openid; |
global $openid; | if (!$openid->mode) { |
if(!$openid->mode) { | $openid->required = array('contact/email'); |
$openid->required = array('contact/email'); | $openid->identity = 'https://www.google.com/accounts/o8/id'; |
$openid->identity = 'https://www.google.com/accounts/o8/id'; | header('Location: ' . $openid->authUrl()); |
header('Location: ' . $openid->authUrl()); | } |
} | } |
} | |
function auth() { | |
if ($_SESSION['authed'] == true) | |
return true; | |
global $openid; | |
if ($openid->mode) { | |
$attr = $openid->getAttributes(); | |
if ($attr['contact/email'] != 'maxious@gmail.com') { | |
die('Access Denied'); | |
} else { | |
$_SESSION['authed'] = true; | |
} | |
} else { | |
login(); | |
} | |
} | |
function auth() | |
{ | |
if ($_SESSION['authed'] == true) return true; | |
global $openid; | |
if($openid->mode) { | |
$attr = $openid->getAttributes(); | |
if ($attr["contact/email"] != "maxious@gmail.com") { | |
die("Access Denied"); | |
} else { | |
$_SESSION['authed'] = true; | |
} | |
} else { | |
login(); | |
} | |
} | |
<?php | <?php |
/* | /* |
* Copyright 2010,2011 Alexander Sadleir | * Copyright 2010,2011 Alexander Sadleir |
Licensed under the Apache License, Version 2.0 (the "License"); | Licensed under the Apache License, Version 2.0 (the 'License'); |
you may not use this file except in compliance with the License. | you may not use this file except in compliance with the License. |
You may obtain a copy of the License at | You may obtain a copy of the License at |
http://www.apache.org/licenses/LICENSE-2.0 | http://www.apache.org/licenses/LICENSE-2.0 |
Unless required by applicable law or agreed to in writing, software | Unless required by applicable law or agreed to in writing, software |
distributed under the License is distributed on an "AS IS" BASIS, | distributed under the License is distributed on an 'AS IS' BASIS, |
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
See the License for the specific language governing permissions and | See the License for the specific language governing permissions and |
limitations under the License. | limitations under the License. |
*/ | */ |
if (strstr(php_uname('n'),"actbus")) { | if (strstr(php_uname('n'),'actbus')) { |
$conn = new PDO("pgsql:dbname=transitdata;user=transitdata;password=transitdata;host=bus-main.lambdacomplex.org"); | $conn = new PDO('pgsql:dbname=transitdata;user=transitdata;password=transitdata;host=bus-main.lambdacomplex.org'); |
} else if (isDebugServer()) { | } else if (isDebugServer()) { |
$conn = new PDO("pgsql:dbname=transitdata;user=postgres;password=snmc;host=localhost"); | $conn = new PDO('pgsql:dbname=transitdata;user=postgres;password=snmc;host=localhost'); |
} else { | } else { |
$conn = new PDO("pgsql:dbname=transitdata;user=transitdata;password=transitdata;host=localhost"); | $conn = new PDO('pgsql:dbname=transitdata;user=transitdata;password=transitdata;host=localhost'); |
} | } |
if (!$conn) { | if (!$conn) { |
die("A database error occurred.\n"); | die('A database error occurred.'.PHP_EOL); |
} | } |
function databaseError($errMsg) { | function databaseError($errMsg) { |
if ($errMsg[1] != "") { | if ($errMsg[1] != '') { |
die(print_r($errMsg,true)); | die(print_r($errMsg,true)); |
} | } |
} | } |
include ('db/route-dao.inc.php'); | include ('db/route-dao.inc.php'); |
include ('db/trip-dao.inc.php'); | include ('db/trip-dao.inc.php'); |
include ('db/stop-dao.inc.php'); | include ('db/stop-dao.inc.php'); |
include ('db/servicealert-dao.inc.php'); | include ('db/servicealert-dao.inc.php'); |
<?php | <?php |
/* | /* |
* Copyright 2010,2011 Alexander Sadleir | * Copyright 2010,2011 Alexander Sadleir |
Licensed under the Apache License, Version 2.0 (the "License"); | Licensed under the Apache License, Version 2.0 (the 'License'); |
you may not use this file except in compliance with the License. | you may not use this file except in compliance with the License. |
You may obtain a copy of the License at | You may obtain a copy of the License at |
http://www.apache.org/licenses/LICENSE-2.0 | http://www.apache.org/licenses/LICENSE-2.0 |
Unless required by applicable law or agreed to in writing, software | Unless required by applicable law or agreed to in writing, software |
distributed under the License is distributed on an "AS IS" BASIS, | distributed under the License is distributed on an 'AS IS' BASIS, |
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
See the License for the specific language governing permissions and | See the License for the specific language governing permissions and |
limitations under the License. | limitations under the License. |
*/ | */ |
// SELECT array_to_string(array(SELECT REPLACE(name_2006, ',', '\,') as name FROM suburbs order by name), ',') | // SELECT array_to_string(array(SELECT REPLACE(name_2006, ',', '\,') as name FROM suburbs order by name), ',') |
$suburbs = explode(",", "Acton,Ainslie,Amaroo,Aranda,Banks,Barton,Belconnen,Bonner,Bonython,Braddon,Bruce,Calwell,Campbell,Chapman,Charnwood,Chifley,Chisholm,City,Conder,Cook,Curtin,Deakin,Dickson,Downer,Duffy,Dunlop,Evatt,Fadden,Farrer,Fisher,Florey,Flynn,Forrest,Franklin,Fraser,Fyshwick,Garran,Gilmore,Giralang,Gordon,Gowrie,Greenway,Griffith,Gungahlin,Hackett,Hall,Harrison,Hawker,Higgins,Holder,Holt,Hughes,Hume,Isaacs,Isabella Plains,Kaleen,Kambah,Kingston,Latham,Lawson,Lyneham,Lyons,Macarthur,Macgregor,Macquarie,Mawson,McKellar,Melba,Mitchell,Monash,Narrabundah,Ngunnawal,Nicholls,Oaks Estate,O'Connor,O'Malley,Oxley,Page,Palmerston,Parkes,Pearce,Phillip,Pialligo,Red Hill,Reid,Richardson,Rivett,Russell,Scullin,Spence,Stirling,Symonston,Tharwa,Theodore,Torrens,Turner,Wanniassa,Waramanga,Watson,Weetangera,Weston,Yarralumla"); | $suburbs = explode(',', 'Acton,Ainslie,Amaroo,Aranda,Banks,Barton,Belconnen,Bonner,Bonython,Braddon,Bruce,Calwell,Campbell,Chapman,Charnwood,Chifley,Chisholm,City,Conder,Cook,Curtin,Deakin,Dickson,Downer,Duffy,Dunlop,Evatt,Fadden,Farrer,Fisher,Florey,Flynn,Forrest,Franklin,Fraser,Fyshwick,Garran,Gilmore,Giralang,Gordon,Gowrie,Greenway,Griffith,Gungahlin,Hackett,Hall,Harrison,Hawker,Higgins,Holder,Holt,Hughes,Hume,Isaacs,Isabella Plains,Kaleen,Kambah,Kingston,Latham,Lawson,Lyneham,Lyons,Macarthur,Macgregor,Macquarie,Mawson,McKellar,Melba,Mitchell,Monash,Narrabundah,Ngunnawal,Nicholls,Oaks Estate,O\'Connor,O\'Malley,Oxley,Page,Palmerston,Parkes,Pearce,Phillip,Pialligo,Red Hill,Reid,Richardson,Rivett,Russell,Scullin,Spence,Stirling,Symonston,Tharwa,Theodore,Torrens,Turner,Wanniassa,Waramanga,Watson,Weetangera,Weston,Yarralumla'); |
function staticmap($mapPoints, $collapsible = true, $twotone = false, $path = false, $numbered = false) { | function staticmap($mapPoints, $collapsible = true, $twotone = false, $path = false, $numbered = false) { |
$markers = ""; | $markers = ''; |
$height = 300; | $height = 300; |
$width = $height; | $width = $height; |
$index = 0; | $index = 0; |
if (sizeof($mapPoints) < 1) | if (sizeof($mapPoints) < 1) |
return "map error"; | return 'map error'; |
if (sizeof($mapPoints) === 1) { | if (sizeof($mapPoints) === 1) { |
$markers = "markers={$mapPoints[0][0]},{$mapPoints[0][1]}"; | $markers = 'markers='.$mapPoints[0][0].','.$mapPoints[0][1]; |
} else { | } else { |
if (!$numbered) { | if (!$numbered) { |
$markers = "markers="; | $markers = 'markers='; |
} | } |
if ($path) { | if ($path) { |
$markers.= "markers={$mapPoints[0][0]},{$mapPoints[0][1]}&path="; | $markers.= 'markers='.$mapPoints[0][0].','.$mapPoints[0][1].'&path='; |
} | } |
foreach ($mapPoints as $index => $mapPoint) { | foreach ($mapPoints as $index => $mapPoint) { |
if ($twotone && $index == 0) { | if ($twotone && $index == 0) { |
$markers = "markerd=color:red|".$mapPoint[0] . "," . $mapPoint[1]."&markers="; | $markers = 'markerd=color:red|' . $mapPoint[0] . ',' . $mapPoint[1] . '&markers='; |
} else { | } else { |
if ($numbered) { | if ($numbered) { |
$label = ($index > 9 ? 9 : $index); | $label = ($index > 9 ? 9 : $index); |
$markers.= "markers=label:$label|" . $mapPoint[0] . "," . $mapPoint[1]; | $markers.= 'markers=label:' . $label . '|' . $mapPoint[0] . ',' . $mapPoint[1]; |
if ($index + 1 != sizeof($mapPoints)) { | if ($index + 1 != sizeof($mapPoints)) { |
$markers.= "&"; | $markers.= '&'; |
} | } |
} else { | } else { |
$markers.= $mapPoint[0] . "," . $mapPoint[1]; | $markers.= $mapPoint[0] . ',' . $mapPoint[1]; |
if ($index + 1 != sizeof($mapPoints)) { | if ($index + 1 != sizeof($mapPoints)) { |
$markers.= "|"; | $markers.= '|'; |
} | } |
} | } |
$index++; | $index++; |
} | } |
} | } |
} | } |
$output = ""; | $output = ''; |
if ($collapsible) | if ($collapsible) |
$output.= '<div class="map" data-role="collapsible" data-collapsed="true"><h3>Open Map...</h3>'; | $output.= '<div class="map" data-role="collapsible" data-collapsed="true"><h3>Open Map...</h3>'; |
if (isIOSDevice()) $output.= '<img class="hiresmap" src="http://maps.googleapis.com/maps/api/staticmap?size=' . $width . 'x' . $height . '&' . $markers . '&scale=2&sensor=true" width=' . $width . ' height=' . $height . '>'; | if (isIOSDevice()) |
else $output.= '<img class="lowresmap" src="http://maps.googleapis.com/maps/api/staticmap?size=' . $width . 'x' . $height . '&' . $markers . '&scale=1&format=jpg&sensor=true" width=' . $width . ' height=' . $height . '>'; | $output.= '<img class="hiresmap" src="http://maps.googleapis.com/maps/api/staticmap?size=' . $width . 'x' . $height . '&' . $markers . '&scale=2&sensor=true" width=' . $width . ' height=' . $height . '" alt="map of stop location">'; |
else | |
$output.= '<img class="lowresmap" src="http://maps.googleapis.com/maps/api/staticmap?size=' . $width . 'x' . $height . '&' . $markers . '&scale=1&format=jpg&sensor=true" width=' . $width . ' height=' . $height . '" alt="map of stop location">'; | |
if ($collapsible) | if ($collapsible) |
$output.= '</div>'; | $output.= '</div>'; |
return $output; | return $output; |
} | } |
function distance($lat1, $lng1, $lat2, $lng2, $roundLargeValues = false) { | function distance($lat1, $lng1, $lat2, $lng2, $roundLargeValues = false) { |
$pi80 = M_PI / 180; | $pi80 = M_PI / 180; |
$lat1*= $pi80; | $lat1*= $pi80; |
$lng1*= $pi80; | $lng1*= $pi80; |
$lat2*= $pi80; | $lat2*= $pi80; |
$lng2*= $pi80; | $lng2*= $pi80; |
$r = 6372.797; // mean radius of Earth in km | $r = 6372.797; // mean radius of Earth in km |
$dlat = $lat2 - $lat1; | $dlat = $lat2 - $lat1; |
$dlng = $lng2 - $lng1; | $dlng = $lng2 - $lng1; |
$a = sin($dlat / 2) * sin($dlat / 2) + cos($lat1) * cos($lat2) * sin($dlng / 2) * sin($dlng / 2); | $a = sin($dlat / 2) * sin($dlat / 2) + cos($lat1) * cos($lat2) * sin($dlng / 2) * sin($dlng / 2); |
$c = 2 * atan2(sqrt($a), sqrt(1 - $a)); | $c = 2 * atan2(sqrt($a), sqrt(1 - $a)); |
$km = $r * $c; | $km = $r * $c; |
if ($roundLargeValues) { | if ($roundLargeValues) { |
if ($km < 1) | if ($km < 1) |
return floor($km * 1000); | return floor($km * 1000); |
else | else |
return round($km, 2) . "k"; | return round($km, 2) . 'k'; |
} | } |
else | else |
return floor($km * 1000); | return floor($km * 1000); |
} | } |
function decodePolylineToArray($encoded) { | function decodePolylineToArray($encoded) { |
// source: http://latlongeeks.com/forum/viewtopic.php?f=4&t=5 | // source: http://latlongeeks.com/forum/viewtopic.php?f=4&t=5 |
$length = strlen($encoded); | $length = strlen($encoded); |
$index = 0; | $index = 0; |
$points = array(); | $points = array(); |
$lat = 0; | $lat = 0; |
$lng = 0; | $lng = 0; |
while ($index < $length) { | while ($index < $length) { |
// Temporary variable to hold each ASCII byte. | // Temporary variable to hold each ASCII byte. |
$b = 0; | $b = 0; |
// The encoded polyline consists of a latitude value followed by a | // The encoded polyline consists of a latitude value followed by a |
// longitude value. They should always come in pairs. Read the | // longitude value. They should always come in pairs. Read the |
// latitude value first. | // latitude value first. |
$shift = 0; | $shift = 0; |
$result = 0; | $result = 0; |
do { | do { |
// The `ord(substr($encoded, $index++))` statement returns the ASCII | // The `ord(substr($encoded, $index++))` statement returns the ASCII |
// code for the character at $index. Subtract 63 to get the original | // code for the character at $index. Subtract 63 to get the original |
// value. (63 was added to ensure proper ASCII characters are displayed | // value. (63 was added to ensure proper ASCII characters are displayed |
// in the encoded polyline string, which is `human` readable) | // in the encoded polyline string, which is `human` readable) |
$b = ord(substr($encoded, $index++)) - 63; | $b = ord(substr($encoded, $index++)) - 63; |
// AND the bits of the byte with 0x1f to get the original 5-bit `chunk. | // AND the bits of the byte with 0x1f to get the original 5-bit `chunk. |
// Then left shift the bits by the required amount, which increases | // Then left shift the bits by the required amount, which increases |
// by 5 bits each time. | // by 5 bits each time. |
// OR the value into $results, which sums up the individual 5-bit chunks | // OR the value into $results, which sums up the individual 5-bit chunks |
// into the original value. Since the 5-bit chunks were reversed in | // into the original value. Since the 5-bit chunks were reversed in |
// order during encoding, reading them in this way ensures proper | // order during encoding, reading them in this way ensures proper |
// summation. | // summation. |
$result|= ($b & 0x1f) << $shift; | $result|= ($b & 0x1f) << $shift; |
$shift+= 5; | $shift+= 5; |
} | } |
// Continue while the read byte is >= 0x20 since the last `chunk` | // Continue while the read byte is >= 0x20 since the last `chunk` |
// was not OR'd with 0x20 during the conversion process. (Signals the end) | // was not OR'd with 0x20 during the conversion process. (Signals the end) |
while ($b >= 0x20); | while ($b >= 0x20); |
// Check if negative, and convert. (All negative values have the last bit | // Check if negative, and convert. (All negative values have the last bit |
// set) | // set) |
$dlat = (($result & 1) ? ~($result >> 1) : ($result >> 1)); | $dlat = (($result & 1) ? ~($result >> 1) : ($result >> 1)); |
// Compute actual latitude since value is offset from previous value. | // Compute actual latitude since value is offset from previous value. |
$lat+= $dlat; | $lat+= $dlat; |
// The next values will correspond to the longitude for this point. | // The next values will correspond to the longitude for this point. |
$shift = 0; | $shift = 0; |
$result = 0; | $result = 0; |
do { | do { |
$b = ord(substr($encoded, $index++)) - 63; | $b = ord(substr($encoded, $index++)) - 63; |
$result|= ($b & 0x1f) << $shift; | $result|= ($b & 0x1f) << $shift; |
$shift+= 5; | $shift+= 5; |
} while ($b >= 0x20); | } while ($b >= 0x20); |
$dlng = (($result & 1) ? ~($result >> 1) : ($result >> 1)); | $dlng = (($result & 1) ? ~($result >> 1) : ($result >> 1)); |
$lng+= $dlng; | $lng+= $dlng; |
// The actual latitude and longitude values were multiplied by | // The actual latitude and longitude values were multiplied by |
// 1e5 before encoding so that they could be converted to a 32-bit | // 1e5 before encoding so that they could be converted to a 32-bit |
// integer representation. (With a decimal accuracy of 5 places) | // integer representation. (With a decimal accuracy of 5 places) |
// Convert back to original values. | // Convert back to original values. |
$points[] = array( | $points[] = array( |
$lat * 1e-5, | $lat * 1e-5, |
$lng * 1e-5 | $lng * 1e-5 |
); | ); |
} | } |
return $points; | return $points; |
} | } |
function geocode($query, $giveOptions) { | function geocode($query, $giveOptions) { |
global $cloudmadeAPIkey; | global $cloudmadeAPIkey; |
$url = "http://geocoding.cloudmade.com/$cloudmadeAPIkey/geocoding/v2/find.js?query=" . urlencode($query) . "&bbox=-35.5,149.00,-35.15,149.1930&return_location=true&bbox_only=true"; | $url = 'http://geocoding.cloudmade.com/$cloudmadeAPIkey/geocoding/v2/find.js?query=' . urlencode($query) . '&bbox=-35.5,149.00,-35.15,149.1930&return_location=true&bbox_only=true'; |
$contents = json_decode(getPage($url)); | $contents = json_decode(getPage($url)); |
if ($giveOptions) | if ($giveOptions) |
return $contents->features; | return $contents->features; |
elseif (isset($contents->features[0]->centroid)) | elseif (isset($contents->features[0]->centroid)) |
return $contents->features[0]->centroid->coordinates[0] . "," . $contents->features[0]->centroid->coordinates[1]; | return $contents->features[0]->centroid->coordinates[0] . ',' . $contents->features[0]->centroid->coordinates[1]; |
else | else |
return ""; | return ''; |
} | } |
function reverseGeocode($lat, $lng) { | function reverseGeocode($lat, $lng) { |
global $cloudmadeAPIkey; | global $cloudmadeAPIkey; |
$url = "http://geocoding.cloudmade.com/$cloudmadeAPIkey/geocoding/v2/find.js?around=" . $lat . "," . $lng . "&distance=closest&object_type=road"; | $url = 'http://geocoding.cloudmade.com/$cloudmadeAPIkey/geocoding/v2/find.js?around=' . $lat . ',' . $lng . '&distance=closest&object_type=road'; |
$contents = json_decode(getPage($url)); | $contents = json_decode(getPage($url)); |
return $contents->features[0]->properties->name; | return $contents->features[0]->properties->name; |
} | } |
<?php | <?php |
/* | /* |
* Copyright 2010,2011 Alexander Sadleir | * Copyright 2010,2011 Alexander Sadleir |
Licensed under the Apache License, Version 2.0 (the "License"); | Licensed under the Apache License, Version 2.0 (the 'License'); |
you may not use this file except in compliance with the License. | you may not use this file except in compliance with the License. |
You may obtain a copy of the License at | You may obtain a copy of the License at |
http://www.apache.org/licenses/LICENSE-2.0 | http://www.apache.org/licenses/LICENSE-2.0 |
Unless required by applicable law or agreed to in writing, software | Unless required by applicable law or agreed to in writing, software |
distributed under the License is distributed on an "AS IS" BASIS, | distributed under the License is distributed on an 'AS IS' BASIS, |
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
See the License for the specific language governing permissions and | See the License for the specific language governing permissions and |
limitations under the License. | limitations under the License. |
*/ | */ |
function getPage($url) { | function getPage($url) { |
debug($url, "json"); | debug($url, 'json'); |
$ch = curl_init($url); | $ch = curl_init($url); |
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); | curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); |
curl_setopt($ch, CURLOPT_HEADER, 0); | curl_setopt($ch, CURLOPT_HEADER, 0); |
curl_setopt($ch, CURLOPT_TIMEOUT, 45); | curl_setopt($ch, CURLOPT_TIMEOUT, 45); |
$page = curl_exec($ch); | $page = curl_exec($ch); |
if (curl_errno($ch)) { | if (curl_errno($ch)) { |
echo "<font color=red> Database temporarily unavailable: "; | echo '<font color=red> Database temporarily unavailable: '; |
echo curl_errno($ch) . " " . curl_error($ch); | echo curl_errno($ch) . ' ' . curl_error($ch); |
if (isDebug()) { | if (isDebug()) { |
echo $url; | echo $url; |
} | } |
echo "</font><br>"; | echo '</font><br>'; |
} | } |
curl_close($ch); | curl_close($ch); |
debug(print_r($page, true), "json"); | debug(print_r($page, true), 'json'); |
return $page; | return $page; |
} | } |
function curPageURL() { | function curPageURL() { |
$isHTTPS = (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on"); | $isHTTPS = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on'); |
$port = (isset($_SERVER["SERVER_PORT"]) && ((!$isHTTPS && $_SERVER["SERVER_PORT"] != "80") || ($isHTTPS && $_SERVER["SERVER_PORT"] != "443"))); | $port = (isset($_SERVER['SERVER_PORT']) && ((!$isHTTPS && $_SERVER['SERVER_PORT'] != '80') || ($isHTTPS && $_SERVER['SERVER_PORT'] != '443'))); |
$port = ($port) ? ':' . $_SERVER["SERVER_PORT"] : ''; | $port = ($port) ? ':' . $_SERVER['SERVER_PORT'] : ''; |
$url = ($isHTTPS ? 'https://' : 'http://') . $_SERVER["SERVER_NAME"] . $port . htmlentities(dirname($_SERVER['PHP_SELF']), ENT_QUOTES); | $url = ($isHTTPS ? 'https://' : 'http://') . $_SERVER['SERVER_NAME'] . $port . htmlentities(dirname($_SERVER['PHP_SELF']), ENT_QUOTES); |
return $url; | return $url; |
} | } |
<?php | <?php |
/* | /* |
* Copyright 2010,2011 Alexander Sadleir | * Copyright 2010,2011 Alexander Sadleir |
Licensed under the Apache License, Version 2.0 (the "License"); | Licensed under the Apache License, Version 2.0 (the "License"); |
you may not use this file except in compliance with the License. | you may not use this file except in compliance with the License. |
You may obtain a copy of the License at | You may obtain a copy of the License at |
http://www.apache.org/licenses/LICENSE-2.0 | http://www.apache.org/licenses/LICENSE-2.0 |
Unless required by applicable law or agreed to in writing, software | Unless required by applicable law or agreed to in writing, software |
distributed under the License is distributed on an "AS IS" BASIS, | distributed under the License is distributed on an "AS IS" BASIS, |
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
See the License for the specific language governing permissions and | See the License for the specific language governing permissions and |
limitations under the License. | limitations under the License. |
*/ | */ |
if (isset($_REQUEST['firstLetter'])) { | if (isset($_REQUEST['firstLetter'])) { |
$firstLetter = filter_var($_REQUEST['firstLetter'], FILTER_SANITIZE_STRING); | $firstLetter = filter_var($_REQUEST['firstLetter'], FILTER_SANITIZE_STRING); |
} | } |
if (isset($_REQUEST['bysuburbs'])) { | if (isset($_REQUEST['bysuburbs'])) { |
$bysuburbs = true; | $bysuburbs = true; |
} | } |
if (isset($_REQUEST['bynumber'])) { | if (isset($_REQUEST['bynumber'])) { |
$bynumber = true; | $bynumber = true; |
} | } |
if (isset($_REQUEST['allstops'])) { | if (isset($_REQUEST['allstops'])) { |
$allstops = true; | $allstops = true; |
} | } |
if (isset($_REQUEST['nearby'])) { | if (isset($_REQUEST['nearby'])) { |
$nearby = true; | $nearby = true; |
} | } |
if (isset($_REQUEST['labs'])) { | |
$labs = true; | |
} | |
if (isset($_REQUEST['suburb'])) { | if (isset($_REQUEST['suburb'])) { |
$suburb = $_REQUEST['suburb']; | $suburb = $_REQUEST['suburb']; |
} | } |
if (isset($_REQUEST['pageKey'])) { | if (isset($_REQUEST['pageKey'])) { |
$pageKey = filter_var($_REQUEST['pageKey'], FILTER_SANITIZE_NUMBER_INT); | $pageKey = filter_var($_REQUEST['pageKey'], FILTER_SANITIZE_NUMBER_INT); |
} | } |
if (isset($_REQUEST['lat'])) { | if (isset($_REQUEST['lat'])) { |
$lat = filter_var($_REQUEST['lat'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION); | $lat = filter_var($_REQUEST['lat'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION); |
} | } |
if (isset($_REQUEST['lon'])) { | if (isset($_REQUEST['lon'])) { |
$lon = filter_var($_REQUEST['lon'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION); | $lon = filter_var($_REQUEST['lon'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION); |
} | } |
if (isset($_REQUEST['radius'])) { | if (isset($_REQUEST['radius'])) { |
$max_distance = filter_var($_REQUEST['radius'], FILTER_SANITIZE_NUMBER_INT); | $max_distance = filter_var($_REQUEST['radius'], FILTER_SANITIZE_NUMBER_INT); |
} | } |
if (isset($_REQUEST['numberSeries'])) { | if (isset($_REQUEST['numberSeries'])) { |
$numberSeries = filter_var($_REQUEST['numberSeries'], FILTER_SANITIZE_NUMBER_INT); | $numberSeries = filter_var($_REQUEST['numberSeries'], FILTER_SANITIZE_NUMBER_INT); |
} | } |
if (isset($_REQUEST['routeDestination'])) { | if (isset($_REQUEST['routeDestination'])) { |
$routeDestination = urldecode(filter_var($_REQUEST['routeDestination'], FILTER_SANITIZE_ENCODED)); | $routeDestination = urldecode(filter_var($_REQUEST['routeDestination'], FILTER_SANITIZE_ENCODED)); |
} | |
if (isset($_REQUEST['routename'])) { | |
$routename = urldecode(filter_var($_REQUEST['routename'], FILTER_SANITIZE_ENCODED)); | |
} | } |
if (isset($_REQUEST['stopcode'])) { | if (isset($_REQUEST['stopcode'])) { |
$stopcode = filter_var($_REQUEST['stopcode'], FILTER_SANITIZE_STRING); | $stopcode = filter_var($_REQUEST['stopcode'], FILTER_SANITIZE_STRING); |
} | } |
if (isset($_REQUEST['stopids'])) { | if (isset($_REQUEST['stopids'])) { |
$stopids = explode(",", filter_var($_REQUEST['stopids'], FILTER_SANITIZE_STRING)); | $stopids = explode(",", filter_var($_REQUEST['stopids'], FILTER_SANITIZE_STRING)); |
} | } |
if (isset($_REQUEST['filterIncludeRoutes'])) { | if (isset($_REQUEST['filterIncludeRoutes'])) { |
$filterIncludeRoutes = explode(",", filter_var($_REQUEST['filterIncludeRoutes'], FILTER_SANITIZE_STRING)); | $filterIncludeRoutes = explode(",", filter_var($_REQUEST['filterIncludeRoutes'], FILTER_SANITIZE_STRING)); |
} | } |
if (isset($_REQUEST['filterHasStop'])) { | if (isset($_REQUEST['filterHasStop'])) { |
$filterHasStop = filter_var($_REQUEST['filterHasStop'], FILTER_SANITIZE_STRING); | $filterHasStop = filter_var($_REQUEST['filterHasStop'], FILTER_SANITIZE_STRING); |
} | } |
if (isset($_REQUEST['tripid'])) { | if (isset($_REQUEST['tripid'])) { |
$tripid = filter_var($_REQUEST['tripid'], FILTER_SANITIZE_STRING); | $tripid = filter_var($_REQUEST['tripid'], FILTER_SANITIZE_STRING); |
} | } |
if (isset($_REQUEST['routeid'])) { | if (isset($_REQUEST['routeid'])) { |
$routeid = filter_var($_REQUEST['routeid'], FILTER_SANITIZE_STRING); | $routeid = filter_var($_REQUEST['routeid'], FILTER_SANITIZE_STRING); |
} | } |
if (isset($_REQUEST['directionid'])) { | if (isset($_REQUEST['directionid'])) { |
$directionid = filter_var($_REQUEST['directionid'], FILTER_SANITIZE_STRING); | $directionid = filter_var($_REQUEST['directionid'], FILTER_SANITIZE_STRING); |
} | } |
if (isset($_REQUEST['stopid'])) { | if (isset($_REQUEST['stopid'])) { |
$stopid = filter_var($_REQUEST['stopid'], FILTER_SANITIZE_NUMBER_INT); | $stopid = filter_var($_REQUEST['stopid'], FILTER_SANITIZE_NUMBER_INT); |
} | } |
if (isset($_REQUEST['geolocate'])) { | if (isset($_REQUEST['geolocate'])) { |
$geolocate = filter_var($_REQUEST['geolocate'], FILTER_SANITIZE_URL); | $geolocate = filter_var($_REQUEST['geolocate'], FILTER_SANITIZE_URL); |
} | } |
<?php | <?php |
/* | /* |
* Copyright 2010,2011 Alexander Sadleir | * Copyright 2010,2011 Alexander Sadleir |
Licensed under the Apache License, Version 2.0 (the "License"); | Licensed under the Apache License, Version 2.0 (the 'License'); |
you may not use this file except in compliance with the License. | you may not use this file except in compliance with the License. |
You may obtain a copy of the License at | You may obtain a copy of the License at |
http://www.apache.org/licenses/LICENSE-2.0 | http://www.apache.org/licenses/LICENSE-2.0 |
Unless required by applicable law or agreed to in writing, software | Unless required by applicable law or agreed to in writing, software |
distributed under the License is distributed on an "AS IS" BASIS, | distributed under the License is distributed on an 'AS IS' BASIS, |
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
See the License for the specific language governing permissions and | See the License for the specific language governing permissions and |
limitations under the License. | limitations under the License. |
*/ | */ |
// you have to open the session to be able to modify or remove it | // you have to open the session to be able to modify or remove it |
session_start(); | session_start(); |
if (isset($_REQUEST['geolocate']) && $_REQUEST['geolocate'] != "Enter co-ordinates or address here") { | if (isset($_REQUEST['geolocate']) && $_REQUEST['geolocate'] != 'Enter co-ordinates or address here') { |
$geocoded = false; | $geocoded = false; |
if (isset($_REQUEST['lat']) && isset($_REQUEST['lon'])) { | if (isset($_REQUEST['lat']) && isset($_REQUEST['lon'])) { |
$_SESSION['lat'] = trim(filter_var($_REQUEST['lat'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION)); | $_SESSION['lat'] = trim(filter_var($_REQUEST['lat'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION)); |
$_SESSION['lon'] = trim(filter_var($_REQUEST['lon'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION)); | $_SESSION['lon'] = trim(filter_var($_REQUEST['lon'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION)); |
} else { | } else { |
if (startsWith($geolocate, "-")) { | if (startsWith($geolocate, '-')) { |
$locateparts = explode(",", $geolocate); | $locateparts = explode(',', $geolocate); |
$_SESSION['lat'] = $locateparts[0]; | $_SESSION['lat'] = $locateparts[0]; |
$_SESSION['lon'] = $locateparts[1]; | $_SESSION['lon'] = $locateparts[1]; |
} else if (strpos($geolocate, "(") !== false) { | } else if (strpos($geolocate, '(') !== false) { |
$geoParts = explode("(", $geolocate); | $geoParts = explode('(', $geolocate); |
$locateparts = explode(",", str_replace(")", "", $geoParts[1])); | $locateparts = explode(',', str_replace(')', '', $geoParts[1])); |
$_SESSION['lat'] = $locateparts[0]; | $_SESSION['lat'] = $locateparts[0]; |
$_SESSION['lon'] = $locateparts[1]; | $_SESSION['lon'] = $locateparts[1]; |
} else { | } else { |
$contents = geocode($geolocate, true); | $contents = geocode($geolocate, true); |
print_r($contents); | print_r($contents); |
if (isset($contents[0]->centroid)) { | if (isset($contents[0]->centroid)) { |
$geocoded = true; | $geocoded = true; |
$_SESSION['lat'] = $contents[0]->centroid->coordinates[0]; | $_SESSION['lat'] = $contents[0]->centroid->coordinates[0]; |
$_SESSION['lon'] = $contents[0]->centroid->coordinates[1]; | $_SESSION['lon'] = $contents[0]->centroid->coordinates[1]; |
} else { | } else { |
$_SESSION['lat'] = ""; | $_SESSION['lat'] = ''; |
$_SESSION['lon'] = ""; | $_SESSION['lon'] = ''; |
} | } |
} | } |
} | } |
sessionUpdated(); | sessionUpdated(); |
} | } |
function sessionUpdated() { | function sessionUpdated() { |
$_SESSION['lastUpdated'] = time(); | $_SESSION['lastUpdated'] = time(); |
} | } |
// timeoutSession | // timeoutSession |
$TIMEOUT_LIMIT = 60 * 5; // 5 minutes | $TIMEOUT_LIMIT = 60 * 5; // 5 minutes |
if (isset($_SESSION['lastUpdated']) && $_SESSION['lastUpdated'] + $TIMEOUT_LIMIT < time()) { | if (isset($_SESSION['lastUpdated']) && $_SESSION['lastUpdated'] + $TIMEOUT_LIMIT < time()) { |
debug("Session timeout " . ($_SESSION['lastUpdated'] + $TIMEOUT_LIMIT) . ">" . time(), "session"); | debug('Session timeout ' . ($_SESSION['lastUpdated'] + $TIMEOUT_LIMIT) . '>' . time(), 'session'); |
session_destroy(); | session_destroy(); |
session_start(); | session_start(); |
} | } |
//debug(print_r($_SESSION, true) , "session"); | //debug(print_r($_SESSION, true) , 'session'); |
function current_time($time = "") { | function current_time($time = '') { |
if (isset($_REQUEST['time'])) return $_REQUEST['time']; | if (isset($_REQUEST['time'])) |
else if ($time != "") date("H:i:s",$time); | return $_REQUEST['time']; |
else return date("H:i:s"); | else if ($time != '') |
date('H:i:s', $time); | |
else | |
return date('H:i:s'); | |
} | } |
<?php | <?php |
/* | /* |
* Copyright 2010,2011 Alexander Sadleir | * Copyright 2010,2011 Alexander Sadleir |
Licensed under the Apache License, Version 2.0 (the "License"); | Licensed under the Apache License, Version 2.0 (the "License"); |
you may not use this file except in compliance with the License. | you may not use this file except in compliance with the License. |
You may obtain a copy of the License at | You may obtain a copy of the License at |
http://www.apache.org/licenses/LICENSE-2.0 | http://www.apache.org/licenses/LICENSE-2.0 |
Unless required by applicable law or agreed to in writing, software | Unless required by applicable law or agreed to in writing, software |
distributed under the License is distributed on an "AS IS" BASIS, | distributed under the License is distributed on an "AS IS" BASIS, |
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
See the License for the specific language governing permissions and | See the License for the specific language governing permissions and |
limitations under the License. | limitations under the License. |
*/ | */ |
// Copyright 2009 Google Inc. All Rights Reserved. | // Copyright 2009 Google Inc. All Rights Reserved. |
$GA_ACCOUNT = "MO-22173039-1"; | $GA_ACCOUNT = "MO-22173039-1"; |
$GA_PIXEL = "/lib/ga.php"; | $GA_PIXEL = "/lib/ga.php"; |
function googleAnalyticsGetImageUrl() { | function googleAnalyticsGetImageUrl() { |
global $GA_ACCOUNT, $GA_PIXEL; | global $GA_ACCOUNT, $GA_PIXEL; |
//if (stristr($_SERVER['HTTP_USER_AGENT'], 'Googlebot') return ""; | //if (stristr($_SERVER['HTTP_USER_AGENT'], 'Googlebot') return ""; |
$url = ""; | $url = ""; |
$url.= $GA_PIXEL . "?"; | $url.= $GA_PIXEL . "?"; |
$url.= "utmac=" . $GA_ACCOUNT; | $url.= "utmac=" . $GA_ACCOUNT; |
$url.= "&utmn=" . rand(0, 0x7fffffff); | $url.= "&utmn=" . rand(0, 0x7fffffff); |
$referer = (isset($_SERVER["HTTP_REFERER"]) ? $_SERVER["HTTP_REFERER"] : ""); | $referer = (isset($_SERVER["HTTP_REFERER"]) ? $_SERVER["HTTP_REFERER"] : ""); |
$query = $_SERVER["QUERY_STRING"]; | $query = $_SERVER["QUERY_STRING"]; |
$path = $_SERVER["REQUEST_URI"]; | $path = $_SERVER["REQUEST_URI"]; |
if (empty($referer)) { | if (empty($referer)) { |
$referer = "-"; | $referer = "-"; |
} | } |
$url.= "&utmr=" . urlencode($referer); | $url.= "&utmr=" . urlencode($referer); |
if (!empty($path)) { | if (!empty($path)) { |
$url.= "&utmp=" . urlencode($path); | $url.= "&utmp=" . urlencode($path); |
} | } |
$url.= "&guid=ON"; | $url.= "&guid=ON"; |
return str_replace("&", "&", $url); | return str_replace("&", "&", $url); |
} | } |
function include_header($pageTitle, $pageType, $opendiv = true, $geolocate = false, $datepicker = false) { | function include_header($pageTitle, $pageType, $opendiv = true, $geolocate = false, $datepicker = false) { |
global $basePath, $GTFSREnabled, $stopid, $routeid; | global $basePath, $GTFSREnabled, $stopid, $routeid; |
echo ' | echo ' |
<!DOCTYPE html> | <!DOCTYPE html> |
<html lang="en"> | <html lang="en"> |
<head> | <head> |
<meta charset="UTF-8"> | <meta charset="UTF-8"> |
<meta name="viewport" content="width=device-width, initial-scale=1"> | <meta name="viewport" content="width=device-width, initial-scale=1"> |
<title>' . $pageTitle . ' - Canberra Bus Timetable</title> | <title>' . $pageTitle . ' - Canberra Bus Timetable</title> |
<meta name="google-site-verification" content="-53T5Qn4TB_de1NyfR_ZZkEVdUNcNFSaYKSFkWKx-sY" /> | <meta name="google-site-verification" content="-53T5Qn4TB_de1NyfR_ZZkEVdUNcNFSaYKSFkWKx-sY" /> |
<link rel="dns-prefetch" href="//code.jquery.com"> | <link rel="dns-prefetch" href="//code.jquery.com"> |
<link rel="dns-prefetch" href="//ajax.googleapis.com"> | <link rel="dns-prefetch" href="//ajax.googleapis.com"> |
<link rel="stylesheet" href="' . $basePath . 'css/jquery-ui-1.8.12.custom.css" />'; | <link rel="stylesheet" href="' . $basePath . 'css/jquery-ui-1.8.12.custom.css" />'; |
$jqmVersion = "1.0.1"; | $jqmVersion = "1.1.0"; |
if (isDebugServer()) { | if (isDebugServer()) { |
$jqmcss = $basePath . "css/jquery.mobile-$jqmVersion.css"; | $jqmcss = $basePath . "css/jquery.mobile-$jqmVersion.min.css"; |
$jqjs = $basePath . "js/jquery-1.6.4.min.js"; | $jqjs = $basePath . "js/jquery-1.7.2.min.js"; |
$jqmjs = $basePath . "js/jquery.mobile-$jqmVersion.js"; | $jqmjs = $basePath . "js/jquery.mobile-$jqmVersion.min.js"; |
$jqmcss = $basePath . "css/jquery.mobile-b90eab4935.css"; | |
$jqmjs = $basePath . "js/jquery.mobile-b90eab4935.js"; | |
} else { | } else { |
$jqmcss = "//code.jquery.com/mobile/$jqmVersion/jquery.mobile-$jqmVersion.min.css"; | $jqmcss = "//code.jquery.com/mobile/$jqmVersion/jquery.mobile-$jqmVersion.min.css"; |
$jqjs = "//ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"; | $jqjs = "//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"; |
$jqmjs = "//code.jquery.com/mobile/$jqmVersion/jquery.mobile-$jqmVersion.min.js"; | $jqmjs = "//code.jquery.com/mobile/$jqmVersion/jquery.mobile-$jqmVersion.min.js"; |
} | } |
echo '<link rel="stylesheet" href="' . $jqmcss . '" /> | echo '<link rel="stylesheet" href="' . $jqmcss . '" /> |
<script src="' . $jqjs . '"></script> | <script src="' . $jqjs . '"></script> |
<script>$(document).bind("mobileinit", function(){ | <script>$(document).bind("mobileinit", function(){ |
$.mobile.ajaxEnabled = false; | $.mobile.ajaxEnabled = false; |
}); | }); |
</script> | </script> |
<script src="' . $jqmjs . '"></script> | <script src="' . $jqmjs . '"></script> |
<script src="' . $basePath . 'js/jquery.ui.core.min.js"></script> | <script src="' . $basePath . 'js/jquery.ui.core.min.js"></script> |
<script src="' . $basePath . 'js/jquery.ui.position.min.js"></script> | <script src="' . $basePath . 'js/jquery.ui.position.min.js"></script> |
<script src="' . $basePath . 'js/jquery.ui.widget.min.js"></script> | <script src="' . $basePath . 'js/jquery.ui.widget.min.js"></script> |
<script src="' . $basePath . 'js/jquery.ui.autocomplete.min.js"></script> | <script src="' . $basePath . 'js/jquery.ui.autocomplete.min.js"></script> |
<script> | <script> |
$(function() { | $(function() { |
$( "#geolocate" ).autocomplete({ | $( "#geolocate" ).autocomplete({ |
source: "lib/autocomplete.php", | source: "lib/autocomplete.php", |
minLength: 2 | minLength: 2 |
}); | }); |
$( "#from" ).autocomplete({ | $( "#from" ).autocomplete({ |
source: "lib/autocomplete.php", | source: "lib/autocomplete.php", |
minLength: 2 | minLength: 2 |
}); | }); |
$( "#to" ).autocomplete({ | $( "#to" ).autocomplete({ |
source: "lib/autocomplete.php", | source: "lib/autocomplete.php", |
minLength: 2 | minLength: 2 |
}); | }); |
}); | }); |
</script>'; | </script>'; |
echo '<style type="text/css">'; | echo '<style type="text/css">'; |
if (strstr($_SERVER['HTTP_USER_AGENT'], 'Android')) | if (strstr($_SERVER['HTTP_USER_AGENT'], 'Android')) |
echo '.ui-shadow,.ui-btn-up-a,.ui-btn-hover-a,.ui-btn-down-a,.ui-body-b,.ui-btn-up-b,.ui-btn-hover-b, | echo '.ui-shadow,.ui-btn-up-a,.ui-btn-hover-a,.ui-btn-down-a,.ui-body-b,.ui-btn-up-b,.ui-btn-hover-b, |
.ui-btn-down-b,.ui-bar-c,.ui-body-c,.ui-btn-up-c,.ui-btn-hover-c,.ui-btn-down-c,.ui-bar-c,.ui-body-d, | .ui-btn-down-b,.ui-bar-c,.ui-body-c,.ui-btn-up-c,.ui-btn-hover-c,.ui-btn-down-c,.ui-bar-c,.ui-body-d, |
.ui-btn-up-d,.ui-btn-hover-d,.ui-btn-down-d,.ui-bar-d,.ui-body-e,.ui-btn-up-e,.ui-btn-hover-e, | .ui-btn-up-d,.ui-btn-hover-d,.ui-btn-down-d,.ui-bar-d,.ui-body-e,.ui-btn-up-e,.ui-btn-hover-e, |
.ui-btn-down-e,.ui-bar-e,.ui-overlay-shadow,.ui-shadow,.ui-btn-active,.ui-body-a,.ui-bar-a { | .ui-btn-down-e,.ui-bar-e,.ui-overlay-shadow,.ui-shadow,.ui-btn-active,.ui-body-a,.ui-bar-a { |
text-shadow: none; | text-shadow: none; |
box-shadow: none; | box-shadow: none; |
-webkit-box-shadow: none; | -webkit-box-shadow: none; |
}'; | }'; |
echo '</style>'; | echo '</style>'; |
echo '<link rel="stylesheet" href="' . $basePath . 'css/local.css.php" />'; | echo '<link rel="stylesheet" href="' . $basePath . 'css/local.css.php" />'; |
if (isIOSDevice()) { | if (isIOSDevice()) { |
echo '<meta name="apple-mobile-web-app-capable" content="yes" /> | echo '<meta name="apple-mobile-web-app-capable" content="yes" /> |
<meta name="apple-mobile-web-app-status-bar-style" content="black" /> | <meta name="apple-mobile-web-app-status-bar-style" content="black" /> |
<link rel="apple-touch-startup-image" href="startup.png" /> | <link rel="apple-touch-startup-image" href="startup.png" /> |
<link rel="apple-touch-icon" href="apple-touch-icon.png" />'; | <link rel="apple-touch-icon" href="apple-touch-icon.png" />'; |
} | } |
if ($geolocate) { | if ($geolocate) { |
echo "<script> | echo "<script> |
function success(position) { | function success(position) { |
$('#error').val('Location now detected. Please wait for data to load.'); | $('#error').val('Location now detected. Please wait for data to load.'); |
$('#geolocate').val(position.coords.latitude+','+position.coords.longitude); | $('#geolocate').val(position.coords.latitude+','+position.coords.longitude); |
$.ajax({ async: false, | $.ajax({ async: false, |
success: function(){ | success: function(){ |
location.reload(true); | location.reload(true); |
}, | }, |
url: \"include/common.inc.php?geolocate=yes&lat=\"+position.coords.latitude+\"&lon=\"+position.coords.longitude }); | url: \"include/common.inc.php?geolocate=yes&lat=\"+position.coords.latitude+\"&lon=\"+position.coords.longitude }); |
} | } |
function error(msg) { | function error(msg) { |
$('#error').val('Error: '+msg); | $('#error').val('Error: '+msg); |
} | } |
function geolocate() { | function geolocate() { |
if (navigator.geolocation) { | if (navigator.geolocation) { |
var options = { | var options = { |
enableHighAccuracy: true, | enableHighAccuracy: true, |
timeout: 60000, | timeout: 60000, |
maximumAge: 10000 | maximumAge: 10000 |
} | } |
navigator.geolocation.getCurrentPosition(success, error, options); | navigator.geolocation.getCurrentPosition(success, error, options); |
} | } |
} | } |
$(document).ready(function() { | $(document).ready(function() { |
$('#here').click(function(event) { $('#geolocate').val(geolocate()); return false;}); | $('#here').click(function(event) { $('#geolocate').val(geolocate()); return false;}); |
$('#here').show(); | $('#here').show(); |
}); | }); |
"; | "; |
if (!isset($_SESSION['lat']) || $_SESSION['lat'] == "") | if (!isset($_SESSION['lat']) || $_SESSION['lat'] == "") |
echo "geolocate();"; | echo "geolocate();"; |
echo "</script> "; | echo "</script> "; |
} | } |
if (isAnalyticsOn()) | if (isAnalyticsOn()) |
echo ' | echo ' |
<script type="text/javascript">' . " | <script type="text/javascript">' . " |
var _gaq = _gaq || []; | var _gaq = _gaq || []; |
_gaq.push(['_setAccount', 'UA-22173039-1']); | _gaq.push(['_setAccount', 'UA-22173039-1']); |
_gaq.push(['_trackPageview']); | _gaq.push(['_trackPageview']); |
_gaq.push(['_trackPageLoadTime']); | _gaq.push(['_trackPageLoadTime']); |
</script>"; | </script>"; |
echo '</head> | echo '</head> |
<body> | <body> |
<div id="skip"> | <div id="skip"> |
<a href="#maincontent">Skip to content</a> | <a href="#maincontent">Skip to content</a> |
</div> | </div> |
'; | '; |
if ($opendiv) { | if ($opendiv) { |
echo '<div data-role="page"> | echo '<div data-role="page"> |
<div data-role="header" data-position="inline"> | <div data-role="header" data-position="inline"> |
<a href="' . (isset($_SERVER["HTTP_REFERER"]) ? $_SERVER["HTTP_REFERER"] : "javascript:history.go(-1)") . '" data-icon="arrow-l" data-rel="back" class="ui-btn-left">Back</a> | <a href="' . (isset($_SERVER["HTTP_REFERER"]) ? $_SERVER["HTTP_REFERER"] : "javascript:history.go(-1)") . '" data-icon="arrow-l" data-rel="back" class="ui-btn-left">Back</a> |
<h1>' . $pageTitle . '</h1> | <h1>' . $pageTitle . '</h1> |
<a href="' . $basePath . '/index.php" data-icon="home" class="ui-btn-right">Home</a> | <a href="' . $basePath . '/index.php" data-icon="home" class="ui-btn-right">Home</a> |
</div><!-- /header --> | </div><!-- /header --> |
<a name="maincontent" id="maincontent"></a> | <a name="maincontent" id="maincontent"></a> |
<div data-role="content"> '; | <div data-role="content"> '; |
if ($GTFSREnabled) { | if ($GTFSREnabled) { |
$overrides = getServiceOverride(); | $overrides = getServiceOverride(); |
if (isset($overrides['service_id'])) { | if (isset($overrides['service_id'])) { |
if ($overrides['service_id'] == "noservice") { | if ($overrides['service_id'] == "noservice") { |
echo '<div id="servicewarning">Buses are <strong>not running today</strong> due to industrial action/public holiday. See <a | echo '<div class="servicewarning">Buses are <strong>not running today</strong> due to industrial action/public holiday. See <a |
href="http://www.action.act.gov.au">http://www.action.act.gov.au</a> for details.</div>'; | href="http://www.action.act.gov.au">http://www.action.act.gov.au</a> for details.</div>'; |
} else { | } else { |
echo '<div id="servicewarning">Buses are running on an altered timetable today due to industrial action/public holiday. See <a href="http://www.action.act.gov.au">http://www.action.act.gov.au</a> for details.</div>'; | echo '<div class="servicewarning">Buses are running on an altered timetable today due to industrial action/public holiday. See <a href="http://www.action.act.gov.au">http://www.action.act.gov.au</a> for details.</div>'; |
} | } |
} | } |
$serviceAlerts = Array(); | $serviceAlerts = Array(); |
$globalAlerts = getServiceAlertsAsArray("agency", "0"); | $globalAlerts = getServiceAlertsAsArray("agency", "0"); |
if ($globalAlerts != nullarray) { | if ($globalAlerts != null) { |
// echo "getting alerts due to network wide"; | // echo "getting alerts due to network wide"; |
$serviceAlerts = array_merge($serviceAlerts, $globalAlerts); | $serviceAlerts = array_merge($serviceAlerts, $globalAlerts); |
} | } |
if (isset($stopid)) { | if (isset($stopid)) { |
$stopAlerts = getServiceAlertsAsArray("stop", $stopid); | $stopAlerts = getServiceAlertsAsArray("stop", $stopid); |
if ($stopAlerts != nullarray) { | if ($stopAlerts != null) { |
// echo "getting alerts due to stop $stopid"; | // echo "getting alerts due to stop $stopid"; |
$serviceAlerts = array_merge($serviceAlerts, $stopAlerts); | $serviceAlerts = array_merge($serviceAlerts, $stopAlerts); |
} | } |
} | } |
if (isset($routeid)) { | if (isset($routeid)) { |
$routeAlerts = getServiceAlertsAsArray("route", $routeid); | $routeAlerts = getServiceAlertsAsArray("route", $routeid); |
if ($routeAlerts != nullarray) { | if ($routeAlerts != null) { |
// echo "getting alerts due to route $routeid"; | // echo "getting alerts due to route $routeid"; |
$serviceAlerts = array_merge($serviceAlerts, $routeAlerts); | $serviceAlerts = array_merge($serviceAlerts, $routeAlerts); |
} | } |
} | } |
if (isset($serviceAlerts['entity']) && sizeof($serviceAlerts['entity']) > 0) { | if (isset($serviceAlerts['entity']) && sizeof($serviceAlerts['entity']) > 0) { |
foreach ($serviceAlerts['entity'] as $entity) { | foreach ($serviceAlerts['entity'] as $entity) { |
echo "<div id='servicewarning'><b>{$entity['alert']['header_text']['translation'][0]['text']}</b> <small>" | echo "<div class='servicewarning'><b>{$entity['alert']['header_text']['translation'][0]['text']}</b> <small>" |
. date("F jS Y, g:i a", $entity['alert']['active_period'][0]['start']) . " to " | . date("F jS Y, g:i a", $entity['alert']['active_period'][0]['start']) . " to " |
. date("F jS Y, g:i a", $entity['alert']['active_period'][0]['end']) . "</small> | . date("F jS Y, g:i a", $entity['alert']['active_period'][0]['end']) . "</small> |
<br>Warning: {$entity['alert']['description_text']['translation'][0]['text']} | <br>Warning: {$entity['alert']['description_text']['translation'][0]['text']} |
<br><a href='{$entity['alert']['url']['translation'][0]['text']}'>Source</a> </div>"; | <br><a href='{$entity['alert']['url']['translation'][0]['text']}'>Source</a> </div>"; |
} | } |
} | } |
} | } |
} | } |
} | } |
function include_footer() { | function include_footer() { |
global $basePath; | global $basePath; |
echo '<div id="footer"><a href="' . $basePath . 'about.php">About/Contact Us</a> <a href="' . $basePath . 'feedback.php">Feedback/Bug Report</a> <a href="' . $basePath . 'privacy.php">Privacy Policy</a>'; | echo '<div id="footer"><a href="' . $basePath . 'about.php">About/Contact Us</a> <a href="' . $basePath . 'feedback.php">Feedback/Bug Report</a> <a href="' . $basePath . 'privacy.php">Privacy Policy</a>'; |
echo '</div>'; | echo '</div>'; |
if (isAnalyticsOn()) { | if (isAnalyticsOn()) { |
echo "<script> (function() { | echo "<script> (function() { |
var ga = document.createElement('script'); ga.type = | var ga = document.createElement('script'); ga.type = |
'text/javascript'; ga.async = true; | 'text/javascript'; ga.async = true; |
ga.src = ('https:' == document.location.protocol ? | ga.src = ('https:' == document.location.protocol ? |
'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; | 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; |
var s = document.getElementsByTagName('script')[0]; | var s = document.getElementsByTagName('script')[0]; |
s.parentNode.insertBefore(ga, s); | s.parentNode.insertBefore(ga, s); |
})();</script>"; | })();</script>"; |
$googleAnalyticsImageUrl = googleAnalyticsGetImageUrl(); | $googleAnalyticsImageUrl = googleAnalyticsGetImageUrl(); |
echo '<noscript><img src="' . $googleAnalyticsImageUrl . '" /></noscript>'; | echo '<noscript><img src="' . $googleAnalyticsImageUrl . '" alt=""/></noscript>'; |
} | } |
echo "\n</div></div></body></html>"; | echo "\n</div></div></body></html>"; |
} | } |
function timeSettings() { | function timeSettings() { |
global $service_periods; | global $service_periods; |
echo '<div id="settings" data-role="collapsible" data-collapsed="true"> | echo '<div id="settings" data-role="collapsible" data-collapsed="true"> |
<h3>Change Time (' . (isset($_REQUEST['time']) ? $_REQUEST['time'] : "Current Time,") . ' ' . ucwords(service_period()) . ')...</h3> | <h3>Change Time (' . (isset($_REQUEST['time']) ? $_REQUEST['time'] : "Current Time,") . ' ' . ucwords(service_period()) . ')...</h3> |
<form action="' . basename($_SERVER['PHP_SELF']) . '" method="GET"> | <form action="' . basename($_SERVER['PHP_SELF']) . '" method="GET"> |
<input type="hidden" name="suburb" id="suburb" value="' . (isset($_REQUEST['suburb']) ? $_REQUEST['suburb'] : "") . '"/> | <input type="hidden" name="suburb" id="suburb" value="' . (isset($_REQUEST['suburb']) ? $_REQUEST['suburb'] : "") . '"/> |
<input type="hidden" name="stopid" id="stopid" value="' . (isset($_REQUEST['stopid']) ? $_REQUEST['stopid'] : "") . '"/> | <input type="hidden" name="stopid" id="stopid" value="' . (isset($_REQUEST['stopid']) ? $_REQUEST['stopid'] : "") . '"/> |
<input type="hidden" name="stopcode" id="stopcode" value="' . (isset($_REQUEST['stopcode']) ? $_REQUEST['stopcode'] : "") . '"/> | <input type="hidden" name="stopcode" id="stopcode" value="' . (isset($_REQUEST['stopcode']) ? $_REQUEST['stopcode'] : "") . '"/> |
<div class="ui-body"> | <div class="ui-body"> |
<div data-role="fieldcontain"> | <div data-role="fieldcontain"> |
<label for="time"> Time: </label> | <label for="time"> Time: </label> |
<input type="time" name="time" id="time" value="' . (isset($_REQUEST['time']) ? $_REQUEST['time'] : date("H:i")) . '"/> | <input type="time" name="time" id="time" value="' . (isset($_REQUEST['time']) ? $_REQUEST['time'] : date("H:i")) . '"/> |
<a href="#" name="currentTime" id="currentTime" onClick="var d = new Date();' . "$('#time').val(d.getHours() +':'+ (d.getMinutes().toString().length == 1 ? '0'+ d.getMinutes(): d.getMinutes()));" . '">Current Time?</a> | <a href="#" name="currentTime" id="currentTime" onClick="var d = new Date();' . "$('#time').val(d.getHours() +':'+ (d.getMinutes().toString().length == 1 ? '0'+ d.getMinutes(): d.getMinutes()));" . '">Current Time?</a> |
</div> | </div> |
<div data-role="fieldcontain"> | <div data-role="fieldcontain"> |
<label for="service_period"> Service Period: </label> | <label for="service_period"> Service Period: </label> |
<select name="service_period" id="service_period">'; | <select name="service_period" id="service_period">'; |
foreach ($service_periods as $service_period) { | foreach ($service_periods as $service_period) { |
echo "<option value=\"$service_period\"" . (service_period() === $service_period ? " SELECTED" : "") . '>' . ucwords($service_period) . '</option>'; | echo "<option value=\"$service_period\"" . (service_period() === $service_period ? " SELECTED" : "") . '>' . ucwords($service_period) . '</option>'; |
} | } |
echo '</select> | echo '</select> |
<a href="#" style="display:none" name="currentPeriod" id="currentPeriod">Current Period?</a> | <a href="#" style="display:none" name="currentPeriod" id="currentPeriod">Current Period?</a> |
</div> | </div> |
<input type="submit" value="Update"/> | <input type="submit" value="Update"/> |
</div></form> | </div></form> |
</div>'; | </div>'; |
} | } |
function placeSettings() { | function placeSettings() { |
$geoerror = false; | $geoerror = false; |
$geoerror = !isset($_SESSION['lat']) || !isset($_SESSION['lat']) || $_SESSION['lat'] == "" || $_SESSION['lon'] == ""; | $geoerror = !isset($_SESSION['lat']) || !isset($_SESSION['lat']) || $_SESSION['lat'] == "" || $_SESSION['lon'] == ""; |
echo '<div id="error">'; | echo '<div id="error">'; |
if ($geoerror) { | if ($geoerror) { |
echo 'Sorry, but your location could not currently be detected. | echo 'Sorry, but your location could not currently be detected. |
Please allow location permission, wait for your location to be detected, | Please allow location permission, wait for your location to be detected, |
or enter an address/co-ordinates in the box below.'; | or enter an address/co-ordinates in the box below.'; |
} | } |
echo '</div>'; | echo '</div>'; |
echo '<div id="settings" data-role="collapsible" data-collapsed="' . !$geoerror . '"> | echo '<div id="settings" data-role="collapsible" data-collapsed="' . !$geoerror . '"> |
<h3>Change Location...</h3> | <h3>Change Location...</h3> |
<form action="' . basename($_SERVER['PHP_SELF']) . "?" . $_SERVER['QUERY_STRING'] . '" method="post"> | <form action="' . basename($_SERVER['PHP_SELF']) . "?" . $_SERVER['QUERY_STRING'] . '" method="post"> |
<div class="ui-body"> | <div class="ui-body"> |
<div data-role="fieldcontain"> | <div data-role="fieldcontain"> |
<label for="geolocate"> Current Location: </label> | <label for="geolocate"> Current Location: </label> |
<input type="text" id="geolocate" name="geolocate" value="' . (isset($_SESSION['lat']) && isset($_SESSION['lon']) ? $_SESSION['lat'] . "," . $_SESSION['lon'] : "Enter co-ordinates or address here") . '"/> <a href="#" style="display:none" name="here" id="here">Here?</a> | <input type="text" id="geolocate" name="geolocate" value="' . (isset($_SESSION['lat']) && isset($_SESSION['lon']) ? $_SESSION['lat'] . "," . $_SESSION['lon'] : "Enter co-ordinates or address here") . '"/> <a href="#" style="display:none" name="here" id="here">Here?</a> |
</div> | </div> |
<input type="submit" value="Update"/> | <input type="submit" value="Update"/> |
</div></form> | </div></form> |
</div>'; | </div>'; |
} | } |
function trackEvent($category, $action, $label = "", $value = - 1) { | function trackEvent($category, $action, $label = "", $value = - 1) { |
if (isAnalyticsOn()) { | if (isAnalyticsOn()) { |
echo "\n<script> _gaq.push(['_trackEvent', '$category', '$action'" . ($label != "" ? ", '$label'" : "") . ($value != - 1 ? ", $value" : "") . "]);</script>"; | echo "\n<script> _gaq.push(['_trackEvent', '$category', '$action'" . ($label != "" ? ", '$label'" : "") . ($value != - 1 ? ", $value" : "") . "]);</script>"; |
} | } |
} | } |
//stop list collapsing | //stop list collapsing |
function stopCompare($stopName) { | function stopCompare($stopName) { |
return substr(trim(preg_replace("/\(Platform.*/", "", $stopName)), 0, 9); | return substr(trim(preg_replace("/\(Platform.*/", "", $stopName)), 0, 9); |
} | } |
function stopGroupTitle($stopName, $stopdesc) { | function stopGroupTitle($stopName, $stopdesc) { |
if (preg_match("/Dr |Cct |Cir |Av |St |Cr |Parade |Way |Bank /", $stopName)) { | if (preg_match("/Dr |Cct |Cir |Av |St |Cr |Parade |Way |Bank /", $stopName)) { |
$descParts = explode("<br>", $stopdesc); | $descParts = explode("<br>", $stopdesc); |
return trim(str_replace("Street: ", "", $descParts[0])); | return trim(str_replace("Street: ", "", $descParts[0])); |
} else { | } else { |
return trim(preg_replace("/\(Platform.*/", "", $stopName)); | return trim(preg_replace("/\(Platform.*/", "", $stopName)); |
} | } |
} | } |
function viaPointNames($tripid, $stop_sequence = "") { | function viaPointNames($tripid, $stop_sequence = "") { |
$viaPointNames = Array(); | $viaPointNames = Array(); |
foreach (viaPoints($tripid, $stop_sequence) as $point) { | foreach (viaPoints($tripid, $stop_sequence) as $point) { |
if (strstr($point['stop_name'], "Station") | if (strstr($point['stop_name'], "Station") |
|| strstr($point['stop_name'], "Shops") | || strstr($point['stop_name'], "Shops") |
|| strstr($point['stop_name'], "CIT") | || strstr($point['stop_name'], "CIT") |
|| strstr($point['stop_name'], "School") | || strstr($point['stop_name'], "School") |
|| strstr($point['stop_name'], "University") | || strstr($point['stop_name'], "University") |
) { | ) { |
$viaPointNames[] = $point['stop_name']; | $viaPointNames[] = $point['stop_name']; |
} | } |
} | } |
if (sizeof($viaPointNames) > 0) { | if (sizeof($viaPointNames) > 0) { |
return r_implode(", ", $viaPointNames); | return r_implode(", ", $viaPointNames); |
} else { | } else { |
return ""; | return ""; |
} | } |
} | } |
<?php | <?php |
/* | /* |
* Copyright 2010,2011 Alexander Sadleir | * Copyright 2010,2011 Alexander Sadleir |
Licensed under the Apache License, Version 2.0 (the "License"); | Licensed under the Apache License, Version 2.0 (the 'License'); |
you may not use this file except in compliance with the License. | you may not use this file except in compliance with the License. |
You may obtain a copy of the License at | You may obtain a copy of the License at |
http://www.apache.org/licenses/LICENSE-2.0 | http://www.apache.org/licenses/LICENSE-2.0 |
Unless required by applicable law or agreed to in writing, software | Unless required by applicable law or agreed to in writing, software |
distributed under the License is distributed on an "AS IS" BASIS, | distributed under the License is distributed on an 'AS IS' BASIS, |
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
See the License for the specific language governing permissions and | See the License for the specific language governing permissions and |
limitations under the License. | limitations under the License. |
*/ | */ |
$service_periods = Array( | $service_periods = Array( |
'sunday', | 'sunday', |
'saturday', | 'saturday', |
'weekday' | 'weekday' |
); | ); |
function service_period($date = "") { | function service_period($date = '') { |
if (isset($_REQUEST['service_period'])) { | if (isset($_REQUEST['service_period'])) { |
return $_REQUEST['service_period']; | return $_REQUEST['service_period']; |
} | } |
$override = getServiceOverride($date); | $override = getServiceOverride($date); |
if (isset($override['service_id'])) { | if (isset($override['service_id'])) { |
return strtolower($override['service_id']); | return strtolower($override['service_id']); |
} | } |
$date = ($date != "" ? $date : time()); | $date = ($date != '' ? $date : time()); |
$dow = date('w', $date); | $dow = date('w', $date); |
switch ($dow) { | switch ($dow) { |
case 0: | case 0: |
return 'sunday'; | return 'sunday'; |
case 6: | case 6: |
return 'saturday'; | return 'saturday'; |
default: | default: |
return 'weekday'; | return 'weekday'; |
} | } |
} | } |
function service_ids($service_period, $date = "") { | function service_ids($service_period, $date = '') { |
switch ($service_period) { | switch ($service_period) { |
case 'sunday': | case 'sunday': |
return Array("Sunday", "Sunday"); | return Array('Sunday', 'Sunday'); |
case 'saturday': | case 'saturday': |
return Array("Saturday", "Saturday"); | return Array('Saturday', 'Saturday'); |
default: | default: |
$date = ($date != "" ? $date : time()); | $date = ($date != '' ? $date : time()); |
// school holidays | // school holidays |
$ymd = date('Ymd', $date); | $ymd = date('Ymd', $date); |
$dow = date('w', $date); | $dow = date('w', $date); |
if (intval($ymd) < "20120203" && $dow != 0 && $dow != 6) { | if (intval($ymd) < '20120427' && $dow != 0 && $dow != 6) { |
return Array("Weekday-SchoolVacation", "Weekday-SchoolVacation"); | return Array('Weekday-SchoolVacation', 'Weekday-SchoolVacation'); |
} else { | } else { |
return Array("Weekday", "Weekday"); | return Array('Weekday', 'Weekday'); |
} | } |
} | } |
} | } |
function valid_service_ids() { | function valid_service_ids() { |
return array_merge(service_ids(""), service_ids('saturday'), service_ids('sunday')); | return array_merge(service_ids(''), service_ids('saturday'), service_ids('sunday')); |
} | } |
function midnight_seconds($time = "") { | function midnight_seconds($time = '') { |
// from http://www.perturb.org/display/Perlfunc__Seconds_Since_Midnight.html | // from http://www.perturb.org/display/Perlfunc__Seconds_Since_Midnight.html |
if ($time != "") { | if ($time != '') { |
return (date("G", $time) * 3600) + (date("i", $time) * 60) + date("s", $time); | return (date('G', $time) * 3600) + (date('i', $time) * 60) + date('s', $time); |
} | } |
if (isset($_SESSION['time'])) { | if (isset($_SESSION['time'])) { |
$time = strtotime($_SESSION['time']); | $time = strtotime($_SESSION['time']); |
return (date("G", $time) * 3600) + (date("i", $time) * 60) + date("s", $time); | return (date('G', $time) * 3600) + (date('i', $time) * 60) + date('s', $time); |
} | } |
return (date("G") * 3600) + (date("i") * 60) + date("s"); | return (date('G') * 3600) + (date('i') * 60) + date('s'); |
} | } |
function midnight_seconds_to_time($seconds) { | function midnight_seconds_to_time($seconds) { |
if ($seconds > 0) { | if ($seconds > 0) { |
$midnight = mktime(0, 0, 0, date("n"), date("j"), date("Y")); | $midnight = mktime(0, 0, 0, date('n'), date('j'), date('Y')); |
return date("h:ia", $midnight + $seconds); | return date('h:ia', $midnight + $seconds); |
} else { | } else { |
return ""; | return ''; |
} | } |
} | } |
if ($GTFSREnabled) { | if ($GTFSREnabled) { |
$serviceAlertCause = Array( | $serviceAlertCause = Array( |
"UNKNOWN_CAUSE" => "Unknown cause", | 'UNKNOWN_CAUSE' => 'Unknown cause', |
"OTHER_CAUSE" => "Other cause", | 'OTHER_CAUSE' => 'Other cause', |
"TECHNICAL_PROBLEM" => "Technical problem", | 'TECHNICAL_PROBLEM' => 'Technical problem', |
"STRIKE" => "Strike", | 'STRIKE' => 'Strike', |
"DEMONSTRATION" => "Demonstration", | 'DEMONSTRATION' => 'Demonstration', |
"ACCIDENT" => "Accident", | 'ACCIDENT' => 'Accident', |
"HOLIDAY" => "Holiday", | 'HOLIDAY' => 'Holiday', |
"WEATHER" => "Weather", | 'WEATHER' => 'Weather', |
"MAINTENANCE" => "Maintenance", | 'MAINTENANCE' => 'Maintenance', |
"CONSTRUCTION" => "Construction", | 'CONSTRUCTION' => 'Construction', |
"POLICE_ACTIVITY" => "Police activity", | 'POLICE_ACTIVITY' => 'Police activity', |
"MEDICAL_EMERGENCY" => "Medical emergency" | 'MEDICAL_EMERGENCY' => 'Medical emergency' |
); | ); |
$serviceAlertEffect = Array( | $serviceAlertEffect = Array( |
"NO_SERVICE" => "No service", | 'NO_SERVICE' => 'No service', |
"REDUCED_SERVICE" => "Reduced service", | 'REDUCED_SERVICE' => 'Reduced service', |
"SIGNIFICANT_DELAYS" => "Significant delays", | 'SIGNIFICANT_DELAYS' => 'Significant delays', |
"DETOUR" => "Detour", | 'DETOUR' => 'Detour', |
"ADDITIONAL_SERVICE" => "Additional service", | 'ADDITIONAL_SERVICE' => 'Additional service', |
"MODIFIED_SERVICE" => "Modified service", | 'MODIFIED_SERVICE' => 'Modified service', |
"OTHER_EFFECT" => "Other effect", | 'OTHER_EFFECT' => 'Other effect', |
"UNKNOWN_EFFECT" => "Unknown effect", | 'UNKNOWN_EFFECT' => 'Unknown effect', |
"STOP_MOVED" => "Stop moved"); | 'STOP_MOVED' => 'Stop moved'); |
set_include_path(get_include_path() . PATH_SEPARATOR . ($basePath . "lib/Protobuf-PHP/library/DrSlump/")); | set_include_path(get_include_path() . PATH_SEPARATOR . (ROOT. '/../lib/Protobuf-PHP/library/DrSlump/')); |
include_once("Protobuf.php"); | include_once('Protobuf.php'); |
include_once("Protobuf/Message.php"); | include_once('Protobuf/Message.php'); |
include_once("Protobuf/Registry.php"); | include_once('Protobuf/Registry.php'); |
include_once("Protobuf/Descriptor.php"); | include_once('Protobuf/Descriptor.php'); |
include_once("Protobuf/Field.php"); | include_once('Protobuf/Field.php'); |
include_once($basePath . "lib/Protobuf-PHP/gtfs-realtime.php"); | include_once(ROOT. '/../lib/Protobuf-PHP/gtfs-realtime.php'); |
include_once("Protobuf/CodecInterface.php"); | include_once('Protobuf/CodecInterface.php'); |
include_once("Protobuf/Codec/PhpArray.php"); | include_once('Protobuf/Codec/PhpArray.php'); |
include_once("Protobuf/Codec/Binary.php"); | include_once('Protobuf/Codec/Binary.php'); |
include_once("Protobuf/Codec/Binary/Writer.php"); | include_once('Protobuf/Codec/Binary/Writer.php'); |
include_once("Protobuf/Codec/Json.php"); | include_once('Protobuf/Codec/Json.php'); |
function getServiceAlerts($filter_class = "", $filter_id = "") { | function getServiceAlerts($filter_class = '', $filter_id = '') { |
/* | /* |
also need last modified epoch of client gtfs | also need last modified epoch of client gtfs |
- add,remove,patch,inform (null) | - add,remove,patch,inform (null) |
- stop | - stop |
- trip | - trip |
- network | - network |
- classes (WHERE=) | - classes (WHERE=) |
- route (short_name or route_id) | - route (short_name or route_id) |
- street | - street |
- stop | - stop |
- trip | - trip |
Currently support: | Currently support: |
network inform | network inform |
trip patch: stop remove | trip patch: stop remove |
street inform: route inform, trip inform, stop inform | street inform: route inform, trip inform, stop inform |
route patch: trip remove | route patch: trip remove |
*/ | */ |
$current_alerts = getCurrentAlerts(); | $current_alerts = getCurrentAlerts(); |
$informed_count = 0; | $informed_count = 0; |
if (sizeof($current_alerts) > 0) { | if (sizeof($current_alerts) > 0) { |
$fm = new transit_realtime\FeedMessage(); | $fm = new transit_realtime\FeedMessage(); |
$fh = new transit_realtime\FeedHeader(); | $fh = new transit_realtime\FeedHeader(); |
$fh->setGtfsRealtimeVersion(1); | $fh->setGtfsRealtimeVersion(1); |
$fh->setTimestamp(time()); | $fh->setTimestamp(time()); |
$fm->setHeader($fh); | $fm->setHeader($fh); |
foreach ($current_alerts as $current_alert) { | foreach ($current_alerts as $current_alert) { |
$affectsFilteredEntities = false; | $affectsFilteredEntities = false; |
$fe = new transit_realtime\FeedEntity(); | $fe = new transit_realtime\FeedEntity(); |
$fe->setId($current_alert['id']); | $fe->setId($current_alert['id']); |
$fe->setIsDeleted(false); | $fe->setIsDeleted(false); |
$alert = new transit_realtime\Alert(); | $alert = new transit_realtime\Alert(); |
$tr = new transit_realtime\TimeRange(); | $tr = new transit_realtime\TimeRange(); |
$tr->setStart($current_alert['start']); | $tr->setStart($current_alert['start']); |
$tr->setEnd($current_alert['end']); | $tr->setEnd($current_alert['end']); |
$alert->addActivePeriod($tr); | $alert->addActivePeriod($tr); |
$informedEntities = getInformedAlerts($current_alert['id'], $filter_class, $filter_id); | $informedEntities = getInformedAlerts($current_alert['id'], $filter_class, $filter_id); |
if (sizeof($informedEntities) > 0) { | if (sizeof($informedEntities) > 0) { |
$affectsFilteredEntities = true; | $affectsFilteredEntities = true; |
foreach ($informedEntities as $informedEntity) { | foreach ($informedEntities as $informedEntity) { |
$informed_count++; | $informed_count++; |
$informed = Array(); | $informed = Array(); |
$es = new transit_realtime\EntitySelector(); | $es = new transit_realtime\EntitySelector(); |
if ($informedEntity['informed_class'] == "agency") { | if ($informedEntity['informed_class'] == 'agency') { |
$es->setAgencyId($informedEntity['informed_id']); | $es->setAgencyId($informedEntity['informed_id']); |
} | } |
if ($informedEntity['informed_class'] == "stop") { | if ($informedEntity['informed_class'] == 'stop') { |
$es->setStopId($informedEntity['informed_id']); | $es->setStopId($informedEntity['informed_id']); |
} | } |
if ($informedEntity['informed_class'] == "route") { | if ($informedEntity['informed_class'] == 'route') { |
$es->setRouteId($informedEntity['informed_id']); | $es->setRouteId($informedEntity['informed_id']); |
} | } |
if ($informedEntity['informed_class'] == "trip") { | if ($informedEntity['informed_class'] == 'trip') { |
$td = new transit_realtime\TripDescriptor(); | $td = new transit_realtime\TripDescriptor(); |
$td->setTripId($informedEntity['informed_id']); | $td->setTripId($informedEntity['informed_id']); |
$es->setTrip($td); | $es->setTrip($td); |
} | } |
$alert->addInformedEntity($es); | $alert->addInformedEntity($es); |
} | } |
} | } |
if ($current_alert['cause'] != "") { | if ($current_alert['cause'] != '') { |
$alert->setCause(constant("transit_realtime\Alert\Cause::" . $current_alert['cause'])); | $alert->setCause(constant('transit_realtime\Alert\Cause::' . $current_alert['cause'])); |
} | } |
if ($current_alert['effect'] != "") { | if ($current_alert['effect'] != '') { |
$alert->setEffect(constant("transit_realtime\Alert\Effect::" . $current_alert['effect'])); | $alert->setEffect(constant('transit_realtime\Alert\Effect::' . $current_alert['effect'])); |
} | } |
if ($current_alert['url'] != "") { | if ($current_alert['url'] != '') { |
$tsUrl = new transit_realtime\TranslatedString(); | $tsUrl = new transit_realtime\TranslatedString(); |
$tUrl = new transit_realtime\TranslatedString\Translation(); | $tUrl = new transit_realtime\TranslatedString\Translation(); |
$tUrl->setText($current_alert['url']); | $tUrl->setText($current_alert['url']); |
$tUrl->setLanguage("en"); | $tUrl->setLanguage('en'); |
$tsUrl->addTranslation($tUrl); | $tsUrl->addTranslation($tUrl); |
$alert->setUrl($tsUrl); | $alert->setUrl($tsUrl); |
} | } |
if ($current_alert['header'] != "") { | if ($current_alert['header'] != '') { |
$tsHeaderText = new transit_realtime\TranslatedString(); | $tsHeaderText = new transit_realtime\TranslatedString(); |
$tHeaderText = new transit_realtime\TranslatedString\Translation(); | $tHeaderText = new transit_realtime\TranslatedString\Translation(); |
$tHeaderText->setText($current_alert['header']); | $tHeaderText->setText($current_alert['header']); |
$tHeaderText->setLanguage("en"); | $tHeaderText->setLanguage('en'); |
$tsHeaderText->addTranslation($tHeaderText); | $tsHeaderText->addTranslation($tHeaderText); |
$alert->setHeaderText($tsHeaderText); | $alert->setHeaderText($tsHeaderText); |
} | } |
if ($current_alert['description'] != "") { | if ($current_alert['description'] != '') { |
$tsDescriptionText = new transit_realtime\TranslatedString(); | $tsDescriptionText = new transit_realtime\TranslatedString(); |
$tDescriptionText = new transit_realtime\TranslatedString\Translation(); | $tDescriptionText = new transit_realtime\TranslatedString\Translation(); |
$tDescriptionText->setText(trim($current_alert['description'])); | $tDescriptionText->setText(trim($current_alert['description'])); |
$tDescriptionText->setLanguage("en"); | $tDescriptionText->setLanguage('en'); |
$tsDescriptionText->addTranslation($tDescriptionText); | $tsDescriptionText->addTranslation($tDescriptionText); |
$alert->setDescriptionText($tsDescriptionText); | $alert->setDescriptionText($tsDescriptionText); |
} | } |
$fe->setAlert($alert); | $fe->setAlert($alert); |
if ($affectsFilteredEntities) { | if ($affectsFilteredEntities) { |
$fm->addEntity($fe); | $fm->addEntity($fe); |
} | } |
} | } |
if ($informed_count > 0) { | if ($informed_count > 0) { |
return $fm; | return $fm; |
} else { | } else { |
return null; | return null; |
} | } |
} else | } else |
return null; | return null; |
} | } |
function getServiceAlertsAsArray($filter_class = "", $filter_id = "") { | function getServiceAlertsAsArray($filter_class = '', $filter_id = '') { |
$alerts = getServiceAlerts($filter_class, $filter_id); | $alerts = getServiceAlerts($filter_class, $filter_id); |
if ($alerts != null) { | if ($alerts != null) { |
$codec = new DrSlump\Protobuf\Codec\PhpArray(); | $codec = new DrSlump\Protobuf\Codec\PhpArray(); |
return $codec->encode($alerts); | return $codec->encode($alerts); |
} else { | } else { |
return nullarray; | return null; |
} | } |
} | } |
function getServiceAlertsAsBinary($filter_class = "", $filter_id = "") { | function getServiceAlertsAsBinary($filter_class = '', $filter_id = '') { |
$codec = new DrSlump\Protobuf\Codec\Binary(); | $codec = new DrSlump\Protobuf\Codec\Binary(); |
return $codec->encode(getServiceAlerts($filter_class, $filter_id)); | return $codec->encode(getServiceAlerts($filter_class, $filter_id)); |
} | } |
function getServiceAlertsAsJSON($filter_class = "", $filter_id = "") { | function getServiceAlertsAsJSON($filter_class = '', $filter_id = '') { |
$codec = new DrSlump\Protobuf\Codec\Json(); | $codec = new DrSlump\Protobuf\Codec\Json(); |
return $codec->encode(getServiceAlerts($filter_class, $filter_id)); | return $codec->encode(getServiceAlerts($filter_class, $filter_id)); |
} | } |
function getServiceAlertsByClass() { | function getServiceAlertsByClass() { |
$return = Array(); | $return = Array(); |
$alerts = getServiceAlertsAsArray("", ""); | $alerts = getServiceAlertsAsArray('', ''); |
foreach ($alerts['entities'] as $entity) { | foreach ($alerts['entities'] as $entity) { |
foreach ($entity['informed'] as $informed) { | foreach ($entity['informed'] as $informed) { |
foreach ($informed as $key => $value) { | foreach ($informed as $key => $value) { |
if (strpos("_id", $key) > 0) { | if (strpos('_id', $key) > 0) { |
$parts = explode($key); | $parts = explode($key); |
$class = $parts[0]; | $class = $parts[0]; |
$id = $value; | $id = $value; |
} | } |
} | } |
$return[$class][$id][] = $entity; | $return[$class][$id][] = $entity; |
} | } |
} | } |
} | } |
function getTripUpdates($filter_class = "", $filter_id = "") { | function getTripUpdates($filter_class = '', $filter_id = '') { |
$fm = new transit_realtime\FeedMessage(); | $fm = new transit_realtime\FeedMessage(); |
$fh = new transit_realtime\FeedHeader(); | $fh = new transit_realtime\FeedHeader(); |
$fh->setGtfsRealtimeVersion(1); | $fh->setGtfsRealtimeVersion(1); |
$fh->setTimestamp(time()); | $fh->setTimestamp(time()); |
$fm->setHeader($fh); | $fm->setHeader($fh); |
foreach (getCurrentAlerts() as $alert) { | foreach (getCurrentAlerts() as $alert) { |
$informedEntities = getInformedAlerts($alert['id'], $_REQUEST['filter_class'], $_REQUEST['filter_id']); | $informedEntities = getInformedAlerts($alert['id'], $_REQUEST['filter_class'], $_REQUEST['filter_id']); |
$stops = Array(); | $stops = Array(); |
$routestrips = Array(); | $routestrips = Array(); |
if (sizeof($informedEntities) > 0) { | if (sizeof($informedEntities) > 0) { |
if ($informedEntity['informed_class'] == "stop" && $informed["x-action"] == "remove") { | if ($informedEntity['informed_class'] == 'stop' && $informed['x-action'] == 'remove') { |
$stops[] = $informedEntity['informed_id']; | $stops[] = $informedEntity['informed_id']; |
} | } |
if (($informedEntity['informed_class'] == "route" || $informedEntity['informed_class'] == "trip") && $informed["x-action"] == "patch") { | if (($informedEntity['informed_class'] == 'route' || $informedEntity['informed_class'] == 'trip') && $informed['x-action'] == 'patch') { |
$routestrips[] = Array("id" => $informedEntity['informed_id'], | $routestrips[] = Array('id' => $informedEntity['informed_id'], |
"type" => $informedEntity['informed_class']); | 'type' => $informedEntity['informed_class']); |
} | } |
} | } |
foreach ($routestrips as $routetrip) { | foreach ($routestrips as $routetrip) { |
$fe = new transit_realtime\FeedEntity(); | $fe = new transit_realtime\FeedEntity(); |
$fe->setId($alert['id'] . $routetrip['id']); | $fe->setId($alert['id'] . $routetrip['id']); |
$fe->setIsDeleted(false); | $fe->setIsDeleted(false); |
$tu = new transit_realtime\TripUpdate(); | $tu = new transit_realtime\TripUpdate(); |
$td = new transit_realtime\TripDescriptor(); | $td = new transit_realtime\TripDescriptor(); |
if ($routetrip['type'] == "route") { | if ($routetrip['type'] == 'route') { |
$td->setRouteId($routetrip['id']); | $td->setRouteId($routetrip['id']); |
} else if ($routetrip['type'] == "trip") { | } else if ($routetrip['type'] == 'trip') { |
$td->setTripId($routetrip['id']); | $td->setTripId($routetrip['id']); |
} | } |
$tu->setTrip($td); | $tu->setTrip($td); |
foreach ($stops as $stop) { | foreach ($stops as $stop) { |
$stu = new transit_realtime\TripUpdate\StopTimeUpdate(); | $stu = new transit_realtime\TripUpdate\StopTimeUpdate(); |
$stu->setStopId($stop); | $stu->setStopId($stop); |
$stu->setScheduleRelationship(transit_realtime\TripUpdate\StopTimeUpdate\ScheduleRelationship::SKIPPED); | $stu->setScheduleRelationship(transit_realtime\TripUpdate\StopTimeUpdate\ScheduleRelationship::SKIPPED); |
$tu->addStopTimeUpdate($stu); | $tu->addStopTimeUpdate($stu); |
} | } |
$fe->setTripUpdate($tu); | $fe->setTripUpdate($tu); |
$fm->addEntity($fe); | $fm->addEntity($fe); |
} | } |
} | } |
return $fm; | return $fm; |
} | } |
function getTripUpdatesAsArray($filter_class = "", $filter_id = "") { | function getTripUpdatesAsArray($filter_class = '', $filter_id = '') { |
$codec = new DrSlump\Protobuf\Codec\PhpArray(); | $codec = new DrSlump\Protobuf\Codec\PhpArray(); |
return $codec->encode(getTripUpdates($filter_class, $filter_id)); | return $codec->encode(getTripUpdates($filter_class, $filter_id)); |
} | } |
function getTripUpdatesAsBinary($filter_class = "", $filter_id = "") { | function getTripUpdatesAsBinary($filter_class = '', $filter_id = '') { |
$codec = new DrSlump\Protobuf\Codec\Binary(); | $codec = new DrSlump\Protobuf\Codec\Binary(); |
return $codec->encode(getTripUpdates($filter_class, $filter_id)); | return $codec->encode(getTripUpdates($filter_class, $filter_id)); |
} | } |
function getTripUpdatesAsJSON($filter_class = "", $filter_id = "") { | function getTripUpdatesAsJSON($filter_class = '', $filter_id = '') { |
$codec = new DrSlump\Protobuf\Codec\Json(); | $codec = new DrSlump\Protobuf\Codec\Json(); |
return $codec->encode(getTripUpdates($filter_class, $filter_id)); | return $codec->encode(getTripUpdates($filter_class, $filter_id)); |
} | } |
} | } |
<?php | <?php |
/* | /* |
* Copyright 2010,2011 Alexander Sadleir | * Copyright 2010,2011 Alexander Sadleir |
Licensed under the Apache License, Version 2.0 (the "License"); | Licensed under the Apache License, Version 2.0 (the 'License'); |
you may not use this file except in compliance with the License. | you may not use this file except in compliance with the License. |
You may obtain a copy of the License at | You may obtain a copy of the License at |
http://www.apache.org/licenses/LICENSE-2.0 | http://www.apache.org/licenses/LICENSE-2.0 |
Unless required by applicable law or agreed to in writing, software | Unless required by applicable law or agreed to in writing, software |
distributed under the License is distributed on an "AS IS" BASIS, | distributed under the License is distributed on an 'AS IS' BASIS, |
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
See the License for the specific language governing permissions and | See the License for the specific language governing permissions and |
limitations under the License. | limitations under the License. |
*/ | */ |
date_default_timezone_set('Australia/ACT'); | date_default_timezone_set('Australia/ACT'); |
$debugOkay = Array( | $debugOkay = Array( |
"session", | 'session', |
"json", | 'json', |
"phperror", | 'phperror', |
"awsotp", | 'awsotp', |
//"squallotp", | //'squallotp', |
//"vanilleotp", | //'vanilleotp', |
"database", | 'database', |
"other" | 'other' |
); | ); |
$GTFSREnabled = true; | $GTFSREnabled = true; |
$cloudmadeAPIkey = "daa03470bb8740298d4b10e3f03d63e6"; | $cloudmadeAPIkey = 'daa03470bb8740298d4b10e3f03d63e6'; |
$googleMapsAPIkey = "ABQIAAAA95XYXN0cki3Yj_Sb71CFvBTPaLd08ONybQDjcH_VdYtHHLgZvRTw2INzI_m17_IoOUqH3RNNmlTk1Q"; | $googleMapsAPIkey = 'ABQIAAAA95XYXN0cki3Yj_Sb71CFvBTPaLd08ONybQDjcH_VdYtHHLgZvRTw2INzI_m17_IoOUqH3RNNmlTk1Q'; |
$otpAPIurl = 'http://localhost:8080/opentripplanner-api-webapp/'; | $otpAPIurl = 'http://localhost:8080/opentripplanner-api-webapp/'; |
if (isDebug("awsotp") || php_uname('n') == "maxious.xen.prgmr.com" || strstr(php_uname('n'),"actbus")) { | if (isDebug('awsotp') || php_uname('n') == 'maxious.xen.prgmr.com' || strstr(php_uname('n'),'actbus')) { |
$otpAPIurl = 'http://bus-main.lambdacomplex.org:8080/opentripplanner-api-webapp/'; | $otpAPIurl = 'http://bus-main.lambdacomplex.org:8080/opentripplanner-api-webapp/'; |
} | } |
if (isDebug("dotcloudotp") || php_uname('n') == "actbus-www") { | if (isDebug('dotcloudotp') || php_uname('n') == 'actbus-www') { |
$otpAPIurl = 'http://otp.actbus.dotcloud.com/opentripplanner-api-webapp/'; | $otpAPIurl = 'http://otp.actbus.dotcloud.com/opentripplanner-api-webapp/'; |
} | } |
if (isDebug("squallotp")) { | if (isDebug('squallotp')) { |
$otpAPIurl = 'http://10.0.1.108:5080/opentripplanner-api-webapp/'; | $otpAPIurl = 'http://10.0.1.108:5080/opentripplanner-api-webapp/'; |
} | } |
if (isDebug("vanilleotp")) { | if (isDebug('vanilleotp')) { |
$otpAPIurl = 'http://10.0.1.135:8080/opentripplanner-api-webapp/'; | $otpAPIurl = 'http://10.0.1.135:8080/opentripplanner-api-webapp/'; |
} | } |
if (isDebug("phperror")) | if (isDebug('phperror')) |
error_reporting(E_ALL ^ E_NOTICE); | error_reporting(E_ALL ^ E_NOTICE); |
$basePath = ""; | |
define('ROOT' , pathinfo(__FILE__, PATHINFO_DIRNAME)); | |
if (strstr($_SERVER['PHP_SELF'], "labs/") | if (strstr($_SERVER['PHP_SELF'], "labs/") |
|| strstr($_SERVER['PHP_SELF'], "myway/") | || strstr($_SERVER['PHP_SELF'], "myway/") |
|| strstr($_SERVER['PHP_SELF'], "lib/") | || strstr($_SERVER['PHP_SELF'], "lib/") |
|| strstr($_SERVER['PHP_SELF'], "geo/") | || strstr($_SERVER['PHP_SELF'], "geo/") |
|| strstr($_SERVER['PHP_SELF'], "include/") | || strstr($_SERVER['PHP_SELF'], "include/") |
|| strstr($_SERVER['PHP_SELF'], "rtpis/")) { | || strstr($_SERVER['PHP_SELF'], "rtpis/")) { |
$basePath = "../"; | $basePath = "../"; |
} | } |
function isDebugServer() { | function isDebugServer() { |
return php_sapi_name() == "cli" || strstr(php_uname('n'),"actbus") || isset($_SERVER['SERVER_NAME']) && ( $_SERVER['SERVER_NAME'] == "azusa" || $_SERVER['SERVER_NAME'] == "vanille" | return php_sapi_name() == 'cli' || strstr(php_uname('n'),'actbus') || isset($_SERVER['SERVER_NAME']) && ( $_SERVER['SERVER_NAME'] == 'azusa' || $_SERVER['SERVER_NAME'] == 'vanille' |
|| $_SERVER['SERVER_NAME'] == "localhost" || $_SERVER['SERVER_NAME'] == "127.0.0.1" || $_SERVER['SERVER_NAME'] == "192.168.1.8" || $_SERVER['SERVER_NAME'] == "192.168.178.24"); | || $_SERVER['SERVER_NAME'] == 'localhost' || $_SERVER['SERVER_NAME'] == '127.0.0.1' || $_SERVER['SERVER_NAME'] == '192.168.1.8' || $_SERVER['SERVER_NAME'] == '192.168.178.24'); |
} | } |
include_once ("common-geo.inc.php"); | if (isset($_SERVER['SERVER_NAME']) && $_SERVER['SERVER_NAME'] == 'maxious.xen.prgmr.com') { |
include_once ("common-net.inc.php"); | // Set the exception handler |
include_once ("common-transit.inc.php"); | require ROOT.'../lib/amon-php/amon.php'; |
if (!strstr($_SERVER['PHP_SELF'], "feedback")) { | Amon::setup_exception_handler(); |
include_once ("common-db.inc.php"); | } |
} | |
include_once ('common-geo.inc.php'); | |
include_once ("common-request.inc.php"); | include_once ('common-net.inc.php'); |
include_once ("common-session.inc.php"); | include_once ('common-transit.inc.php'); |
include_once ("common-auth.inc.php"); | if (!strstr($_SERVER['PHP_SELF'], 'feedback')) { |
include_once ("common-template.inc.php"); | include_once ('common-db.inc.php'); |
} | |
include_once ('common-request.inc.php'); | |
include_once ('common-session.inc.php'); | |
include_once ('common-auth.inc.php'); | |
include_once ('common-template.inc.php'); | |
function isAnalyticsOn() { | function isAnalyticsOn() { |
$user_agent = $_SERVER['HTTP_USER_AGENT']; | $user_agent = $_SERVER['HTTP_USER_AGENT']; |
return !isDebugServer() && !preg_match('/cloudkick/i', $user_agent) && !preg_match('/googlebot/i', $user_agent) && | return !isDebugServer() && !preg_match('/cloudkick/i', $user_agent) && !preg_match('/googlebot/i', $user_agent) && |
!preg_match('/baidu/i', $user_agent); | !preg_match('/baidu/i', $user_agent); |
} | } |
function isDebug($debugReason = "other") { | function isDebug($debugReason = 'other') { |
global $debugOkay; | global $debugOkay; |
return in_array($debugReason, $debugOkay, false) && isDebugServer(); | return in_array($debugReason, $debugOkay, false) && isDebugServer(); |
} | } |
function debug($msg, $debugReason = "other") { | function debug($msg, $debugReason = 'other') { |
if (isDebug($debugReason)) | if (isDebug($debugReason)) |
echo "\n<!-- " . date(DATE_RFC822) . "\n $msg -->\n"; | echo PHP_EOL.'<!-- ' . date(DATE_RFC822) . PHP_EOL.$msg.PHP_EOL.' -->'.PHP_EOL; |
} | } |
function isIOSDevice() { | function isIOSDevice() { |
return strstr($_SERVER['HTTP_USER_AGENT'], 'iPhone') || strstr($_SERVER['HTTP_USER_AGENT'], 'iPod') || strstr($_SERVER['HTTP_USER_AGENT'], 'iPad'); | return strstr($_SERVER['HTTP_USER_AGENT'], 'iPhone') || strstr($_SERVER['HTTP_USER_AGENT'], 'iPod') || strstr($_SERVER['HTTP_USER_AGENT'], 'iPad'); |
} | } |
function isJQueryMobileDevice() { | function isJQueryMobileDevice() { |
// http://forum.jquery.com/topic/what-is-the-best-way-to-detect-all-useragents-which-can-handle-jquery-mobile#14737000002087897 | // http://forum.jquery.com/topic/what-is-the-best-way-to-detect-all-useragents-which-can-handle-jquery-mobile#14737000002087897 |
$user_agent = $_SERVER['HTTP_USER_AGENT']; | $user_agent = $_SERVER['HTTP_USER_AGENT']; |
return preg_match('/iphone/i', $user_agent) || preg_match('/android/i', $user_agent) || preg_match('/webos/i', $user_agent) || preg_match('/ios/i', $user_agent) || preg_match('/bada/i', $user_agent) || preg_match('/maemo/i', $user_agent) || preg_match('/meego/i', $user_agent) || preg_match('/fennec/i', $user_agent) || (preg_match('/symbian/i', $user_agent) && preg_match('/s60/i', $user_agent) && $browser['majorver'] >= 5) || (preg_match('/symbian/i', $user_agent) && preg_match('/platform/i', $user_agent) && $browser['majorver'] >= 3) || (preg_match('/blackberry/i', $user_agent) && $browser['majorver'] >= 5) || (preg_match('/opera mobile/i', $user_agent) && $browser['majorver'] >= 10) || (preg_match('/opera mini/i', $user_agent) && $browser['majorver'] >= 5); | return preg_match('/iphone/i', $user_agent) || preg_match('/android/i', $user_agent) || preg_match('/webos/i', $user_agent) || preg_match('/ios/i', $user_agent) || preg_match('/bada/i', $user_agent) || preg_match('/maemo/i', $user_agent) || preg_match('/meego/i', $user_agent) || preg_match('/fennec/i', $user_agent) || (preg_match('/symbian/i', $user_agent) && preg_match('/s60/i', $user_agent) && $browser['majorver'] >= 5) || (preg_match('/symbian/i', $user_agent) && preg_match('/platform/i', $user_agent) && $browser['majorver'] >= 3) || (preg_match('/blackberry/i', $user_agent) && $browser['majorver'] >= 5) || (preg_match('/opera mobile/i', $user_agent) && $browser['majorver'] >= 10) || (preg_match('/opera mini/i', $user_agent) && $browser['majorver'] >= 5); |
} | } |
function array_flatten($a, $f = array()) { | function array_flatten($a, $f = array()) { |
if (!$a || !is_array($a)) | if (!$a || !is_array($a)) |
return ''; | return ''; |
foreach ($a as $k => $v) { | foreach ($a as $k => $v) { |
if (is_array($v)) | if (is_array($v)) |
$f = array_flatten($v, $f); | $f = array_flatten($v, $f); |
else | else |
$f[$k] = $v; | $f[$k] = $v; |
} | } |
return $f; | return $f; |
} | } |
function remove_spaces($string) { | function remove_spaces($string) { |
return str_replace(' ', '', $string); | return str_replace(' ', '', $string); |
} | } |
function object2array($object) { | function object2array($object) { |
if (is_object($object)) { | if (is_object($object)) { |
foreach ($object as $key => $value) { | foreach ($object as $key => $value) { |
$array[$key] = $value; | $array[$key] = $value; |
} | } |
} else { | } else { |
$array = $object; | $array = $object; |
} | } |
return $array; | return $array; |
} | } |
function startsWith($haystack, $needle, $case = true) { | function startsWith($haystack, $needle, $case = true) { |
if ($case) { | if ($case) { |
return (strcmp(substr($haystack, 0, strlen($needle)), $needle) === 0); | return (strcmp(substr($haystack, 0, strlen($needle)), $needle) === 0); |
} | } |
return (strcasecmp(substr($haystack, 0, strlen($needle)), $needle) === 0); | return (strcasecmp(substr($haystack, 0, strlen($needle)), $needle) === 0); |
} | } |
function endsWith($haystack, $needle, $case = true) { | function endsWith($haystack, $needle, $case = true) { |
if ($case) { | if ($case) { |
return (strcmp(substr($haystack, strlen($haystack) - strlen($needle)), $needle) === 0); | return (strcmp(substr($haystack, strlen($haystack) - strlen($needle)), $needle) === 0); |
} | } |
return (strcasecmp(substr($haystack, strlen($haystack) - strlen($needle)), $needle) === 0); | return (strcasecmp(substr($haystack, strlen($haystack) - strlen($needle)), $needle) === 0); |
} | } |
function sksort(&$array, $subkey = "id", $sort_ascending = false) { | function sksort(&$array, $subkey = 'id', $sort_ascending = false) { |
if (count($array)) | if (count($array)) |
$temp_array[key($array)] = array_shift($array); | $temp_array[key($array)] = array_shift($array); |
foreach ($array as $key => $val) { | foreach ($array as $key => $val) { |
$offset = 0; | $offset = 0; |
$found = false; | $found = false; |
foreach ($temp_array as $tmp_key => $tmp_val) { | foreach ($temp_array as $tmp_key => $tmp_val) { |
if (!$found and strtolower($val[$subkey]) > strtolower($tmp_val[$subkey])) { | if (!$found and strtolower($val[$subkey]) > strtolower($tmp_val[$subkey])) { |
$temp_array = array_merge((array) array_slice($temp_array, 0, $offset), array( | $temp_array = array_merge((array) array_slice($temp_array, 0, $offset), array( |
$key => $val | $key => $val |
), array_slice($temp_array, $offset)); | ), array_slice($temp_array, $offset)); |
$found = true; | $found = true; |
} | } |
$offset++; | $offset++; |
} | } |
if (!$found) | if (!$found) |
$temp_array = array_merge($temp_array, array( | $temp_array = array_merge($temp_array, array( |
$key => $val | $key => $val |
)); | )); |
} | } |
if ($sort_ascending) | if ($sort_ascending) |
$array = array_reverse($temp_array); | $array = array_reverse($temp_array); |
else | else |
$array = $temp_array; | $array = $temp_array; |
} | } |
function sktimesort(&$array, $subkey = "id", $sort_ascending = false) { | function sktimesort(&$array, $subkey = 'id', $sort_ascending = false) { |
if (count($array)) | if (count($array)) |
$temp_array[key($array)] = array_shift($array); | $temp_array[key($array)] = array_shift($array); |
foreach ($array as $key => $val) { | foreach ($array as $key => $val) { |
$offset = 0; | $offset = 0; |
$found = false; | $found = false; |
foreach ($temp_array as $tmp_key => $tmp_val) { | foreach ($temp_array as $tmp_key => $tmp_val) { |
if (!$found and strtotime($val[$subkey]) > strtotime($tmp_val[$subkey])) { | if (!$found and strtotime($val[$subkey]) > strtotime($tmp_val[$subkey])) { |
$temp_array = array_merge((array) array_slice($temp_array, 0, $offset), array( | $temp_array = array_merge((array) array_slice($temp_array, 0, $offset), array( |
$key => $val | $key => $val |
), array_slice($temp_array, $offset)); | ), array_slice($temp_array, $offset)); |
$found = true; | $found = true; |
} | } |
$offset++; | $offset++; |
} | } |
if (!$found) | if (!$found) |
$temp_array = array_merge($temp_array, array( | $temp_array = array_merge($temp_array, array( |
$key => $val | $key => $val |
)); | )); |
} | } |
if ($sort_ascending && isset($temp_array)) | if ($sort_ascending && isset($temp_array)) |
$array = array_reverse($temp_array); | $array = array_reverse($temp_array); |
else | else |
$array = $temp_array; | $array = $temp_array; |
} | } |
function r_implode($glue, $pieces) { | function r_implode($glue, $pieces) { |
foreach ($pieces as $r_pieces) { | foreach ($pieces as $r_pieces) { |
if (is_array($r_pieces)) { | if (is_array($r_pieces)) { |
$retVal[] = r_implode($glue, $r_pieces); | $retVal[] = r_implode($glue, $r_pieces); |
} else { | } else { |
$retVal[] = $r_pieces; | $retVal[] = $r_pieces; |
} | } |
} | } |
return implode($glue, $retVal); | return implode($glue, $retVal); |
} | } |
<?php | <?php |
/* | /* |
* Copyright 2010,2011 Alexander Sadleir | * Copyright 2010,2011 Alexander Sadleir |
Licensed under the Apache License, Version 2.0 (the "License"); | Licensed under the Apache License, Version 2.0 (the 'License'); |
you may not use this file except in compliance with the License. | you may not use this file except in compliance with the License. |
You may obtain a copy of the License at | You may obtain a copy of the License at |
http://www.apache.org/licenses/LICENSE-2.0 | http://www.apache.org/licenses/LICENSE-2.0 |
Unless required by applicable law or agreed to in writing, software | Unless required by applicable law or agreed to in writing, software |
distributed under the License is distributed on an "AS IS" BASIS, | distributed under the License is distributed on an 'AS IS' BASIS, |
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
See the License for the specific language governing permissions and | See the License for the specific language governing permissions and |
limitations under the License. | limitations under the License. |
*/ | */ |
function getRoute($routeID) { | function getRoute($routeID) { |
global $conn; | global $conn; |
$query = "Select * from routes where route_id = :routeID LIMIT 1"; | $query = 'Select * from routes where route_id = :routeID LIMIT 1'; |
debug($query, "database"); | debug($query, 'database'); |
$query = $conn->prepare($query); | $query = $conn->prepare($query); |
$query->bindParam(":routeID", $routeID); | $query->bindParam(':routeID', $routeID); |
$query->execute(); | $query->execute(); |
if (!$query) { | if (!$query) { |
databaseError($conn->errorInfo()); | databaseError($conn->errorInfo()); |
return Array(); | return Array(); |
} | } |
return $query->fetch(PDO :: FETCH_ASSOC); | return $query->fetch(PDO :: FETCH_ASSOC); |
} | } |
function getRoutesByShortName($routeShortName) { | function getRoutesByShortName($routeShortName) { |
global $conn; | global $conn; |
$query = "Select distinct route_id, route_short_name from routes where route_short_name = :routeShortName"; | $query = 'Select distinct route_id, route_short_name from routes where route_short_name = :routeShortName'; |
debug($query, "database"); | debug($query, 'database'); |
$query = $conn->prepare($query); | $query = $conn->prepare($query); |
$query->bindParam(":routeShortName", $routeShortName); | $query->bindParam(':routeShortName', $routeShortName); |
$query->execute(); | $query->execute(); |
if (!$query) { | if (!$query) { |
databaseError($conn->errorInfo()); | databaseError($conn->errorInfo()); |
return Array(); | return Array(); |
} | } |
return $query->fetchAll(); | return $query->fetchAll(); |
} | } |
function getRouteHeadsigns($routeID) { | function getRouteHeadsigns($routeID) { |
global $conn; | global $conn; |
$query = "select stops.stop_name, trip_headsign, direction_id,max(service_id) as service_id, count(*) | $query = 'select stops.stop_name, trip_headsign, direction_id,max(service_id) as service_id, count(*) |
from routes join trips on trips.route_id = routes.route_id | from routes join trips on trips.route_id = routes.route_id |
join stop_times on stop_times.trip_id = trips.trip_id join stops on | join stop_times on stop_times.trip_id = trips.trip_id join stops on |
stop_times.stop_id = stops.stop_id where trips.route_id = :routeID | stop_times.stop_id = stops.stop_id where trips.route_id = :routeID |
and stop_times.stop_sequence = 1 group by stops.stop_name, trip_headsign, direction_id having count(*) > 2"; | and stop_times.stop_sequence = 1 group by stops.stop_name, trip_headsign, direction_id having count(*) > 2'; |
debug($query, "database"); | debug($query, 'database'); |
$query = $conn->prepare($query); | $query = $conn->prepare($query); |
$query->bindParam(":routeID", $routeID); | $query->bindParam(':routeID', $routeID); |
$query->execute(); | $query->execute(); |
if (!$query) { | if (!$query) { |
databaseError($conn->errorInfo()); | databaseError($conn->errorInfo()); |
return Array(); | return Array(); |
} | } |
return $query->fetchAll(); | $results = $query->fetchAll(); |
} | if (is_array($results)) { |
return $results; | |
} else { | |
return Array($results); | |
} | |
} | |
function getRouteDescription($routeID, $directionID) { | function getRouteDescription($routeID, $directionID) { |
$trip = getRouteNextTrip($routeID, $directionID); | $trip = getRouteNextTrip($routeID, $directionID); |
$start = getTripStartingPoint($trip['trip_id']); | $start = getTripStartingPoint($trip['trip_id']); |
$end = getTripDestination($trip['trip_id']); | $end = getTripDestination($trip['trip_id']); |
return "From ".$start['stop_name']." to ".$end['stop_name']; | return 'From ' . $start['stop_name'] . ' to ' . $end['stop_name']; |
} | } |
function getRouteByFullName($routeFullName) { | function getRouteByFullName($routeFullName) { |
global $conn; | global $conn; |
$query = "Select * from routes where route_short_name||route_long_name = :routeFullName LIMIT 1"; | $query = 'Select * from routes where route_short_name||route_long_name = :routeFullName LIMIT 1'; |
debug($query, "database"); | debug($query, 'database'); |
$query = $conn->prepare($query); | $query = $conn->prepare($query); |
$query->bindParam(":routeFullName", $routeFullName); | $query->bindParam(':routeFullName', $routeFullName); |
$query->execute(); | $query->execute(); |
if (!$query) { | if (!$query) { |
databaseError($conn->errorInfo()); | databaseError($conn->errorInfo()); |
return Array(); | return Array(); |
} | } |
return $query->fetch(PDO :: FETCH_ASSOC); | return $query->fetch(PDO :: FETCH_ASSOC); |
} | } |
function getRoutes() { | function getRoutes() { |
global $conn; | global $conn; |
$query = "Select * from routes order by route_short_name;"; | $query = 'Select * from routes order by route_short_name;'; |
debug($query, "database"); | debug($query, 'database'); |
$query = $conn->prepare($query); | $query = $conn->prepare($query); |
$query->execute(); | $query->execute(); |
if (!$query) { | if (!$query) { |
databaseError($conn->errorInfo()); | databaseError($conn->errorInfo()); |
return Array(); | return Array(); |
} | } |
return $query->fetchAll(); | return $query->fetchAll(); |
} | } |
function getRoutesByNumberSeries($routeNumberSeries = "") { | function getRoutesByNumberSeries($routeNumberSeries = '') { |
global $conn; | global $conn; |
if (strlen($routeNumberSeries) == 1) { | if (strlen($routeNumberSeries) == 1) { |
return getRoute($routeNumberSeries); | return getRoute($routeNumberSeries); |
} | } |
$seriesMin = substr($routeNumberSeries, 0, -1) . "0"; | $seriesMin = substr($routeNumberSeries, 0, -1) . '0'; |
$seriesMax = substr($routeNumberSeries, 0, -1) . "9"; | $seriesMax = substr($routeNumberSeries, 0, -1) . '9'; |
$query = "Select distinct routes.route_id,routes.route_short_name,routes.route_long_name,service_id from routes join trips on trips.route_id = | $query = 'Select distinct routes.route_id,routes.route_short_name,routes.route_long_name,service_id from routes join trips on trips.route_id = |
routes.route_id join stop_times on stop_times.trip_id = trips.trip_id where to_number(route_short_name, 'FM999') between :seriesMin and :seriesMax OR route_short_name LIKE :routeNumberSeries order by route_short_name;"; | routes.route_id join stop_times on stop_times.trip_id = trips.trip_id where to_number(route_short_name, \'FM999\') between :seriesMin and :seriesMax OR route_short_name LIKE :routeNumberSeries order by route_short_name;'; |
debug($query, "database"); | debug($query, 'database'); |
$query = $conn->prepare($query); | $query = $conn->prepare($query); |
$query->bindParam(":seriesMin", $seriesMin); | $query->bindParam(':seriesMin', $seriesMin); |
$query->bindParam(":seriesMax", $seriesMax); | $query->bindParam(':seriesMax', $seriesMax); |
$routeNumberSeries = "% " . substr($routeNumberSeries, 0, -1) . "%"; | $routeNumberSeries = '% ' . substr($routeNumberSeries, 0, -1) . '%'; |
$query->bindParam(":routeNumberSeries", $routeNumberSeries); | $query->bindParam(':routeNumberSeries', $routeNumberSeries); |
$query->execute(); | $query->execute(); |
if (!$query) { | if (!$query) { |
databaseError($conn->errorInfo()); | databaseError($conn->errorInfo()); |
return Array(); | return Array(); |
} | } |
return $query->fetchAll(); | return $query->fetchAll(); |
} | } |
function getRouteNextTrip($routeID, $directionID) { | function getRouteNextTrip($routeID, $directionID) { |
global $conn; | global $conn; |
$query = "select routes.route_id,direction_id,trips.trip_id,trip_headsign,departure_time from routes join trips on trips.route_id = routes.route_id | $query = 'select routes.route_id,routes.route_url,direction_id,trips.trip_id,trip_headsign,departure_time,service_id from routes join trips on trips.route_id = routes.route_id |
join stop_times on stop_times.trip_id = trips.trip_id where arrival_time between :currentTime and :futureTime | join stop_times on stop_times.trip_id = trips.trip_id where arrival_time between :currentTime and :futureTime |
and routes.route_id = :routeID and trips.direction_id = :directionID order by | and routes.route_id = :routeID and trips.direction_id = :directionID order by |
arrival_time limit 1"; | arrival_time limit 1'; |
debug($query, "database"); | debug($query, 'database'); |
$query = $conn->prepare($query); | $query = $conn->prepare($query); |
$query->bindParam(":currentTime", current_time()); | $query->bindParam(':currentTime', current_time()); |
$futureTime = current_time(strtotime(current_time() ." +2h")); | $futureTime = current_time(strtotime(current_time() . ' +2h')); |
if (date("h",strtotime(current_time()) > 22)) $futureTime = "23:59:59"; | if (date('h', strtotime(current_time()) > 22)) |
$query->bindParam(":futureTime", $futureTime); | $futureTime = '23:59:59'; |
$query->bindParam(":routeID", $routeID); | $query->bindParam(':futureTime', $futureTime); |
$query->bindParam(":directionID", $directionID); | $query->bindParam(':routeID', $routeID); |
$query->bindParam(':directionID', $directionID); | |
$query->execute(); | $query->execute(); |
databaseError($conn->errorInfo()); | databaseError($conn->errorInfo()); |
if (!$query) { | if (!$query) { |
databaseError($conn->errorInfo()); | databaseError($conn->errorInfo()); |
return Array(); | return Array(); |
} | } |
$r = $query->fetch(PDO :: FETCH_ASSOC); | $r = $query->fetch(PDO :: FETCH_ASSOC); |
return $r; | return $r; |
} | } |
function getRouteFirstTrip($routeID,$directionID) { | function getRouteFirstTrip($routeID, $directionID) { |
global $conn; | global $conn; |
$query = "select * from routes join trips on trips.route_id = routes.route_id | $query = 'select * from routes join trips on trips.route_id = routes.route_id |
join stop_times on stop_times.trip_id = trips.trip_id where routes.route_id = :routeID | join stop_times on stop_times.trip_id = trips.trip_id where routes.route_id = :routeID |
and trips.direction_id = :directionID order by | and trips.direction_id = :directionID order by |
arrival_time DESC limit 1"; | arrival_time DESC limit 1'; |
debug($query, "database"); | debug($query, 'database'); |
$query = $conn->prepare($query); | $query = $conn->prepare($query); |
$query->bindParam(":routeID", $routeID); | $query->bindParam(':routeID', $routeID); |
$query->bindParam(":directionID", $directionID); | $query->bindParam(':directionID', $directionID); |
$query->execute(); | $query->execute(); |
if (!$query) { | if (!$query) { |
databaseError($conn->errorInfo()); | databaseError($conn->errorInfo()); |
return Array(); | return Array(); |
} | } |
$r = $query->fetch(PDO :: FETCH_ASSOC); | $r = $query->fetch(PDO :: FETCH_ASSOC); |
return $r; | return $r; |
} | } |
function getRouteAtStop($routeID, $directionID, $stop_id) { | function getRouteAtStop($routeID, $directionID, $stop_id) { |
$nextTrip = getRouteNextTrip($routeID, $directionID); | $nextTrip = getRouteNextTrip($routeID, $directionID); |
if ($nextTrip['trip_id']) { | if ($nextTrip['trip_id']) { |
foreach (getTripStopTimes($nextTrip['trip_id']) as $tripStop) { | foreach (getTripStopTimes($nextTrip['trip_id']) as $tripStop) { |
if ($tripStop['stop_id'] == $stop_id) | if ($tripStop['stop_id'] == $stop_id) |
return $tripStop; | return $tripStop; |
} | } |
} | } |
return Array(); | return Array(); |
} | } |
function getRouteTrips($routeID, $directionID = "", $service_period = "") { | function getRouteTrips($routeID, $directionID = '', $service_period = '') { |
global $conn; | global $conn; |
if ($service_period == "") | if ($service_period == '') |
$service_period = service_period(); | $service_period = service_period(); |
$service_ids = service_ids($service_period); | $service_ids = service_ids($service_period); |
$sidA = $service_ids[0]; | $sidA = $service_ids[0]; |
$sidB = $service_ids[1]; | $sidB = $service_ids[1]; |
$directionSQL = ""; | $directionSQL = ''; |
if ($directionID != "") | if ($directionID != '') |
$directionSQL = " and direction_id = :directionID "; | $directionSQL = ' and direction_id = :directionID '; |
$query = "select routes.route_id,trips.trip_id,service_id,arrival_time, stop_id, stop_sequence from routes join trips on trips.route_id = routes.route_id | $query = 'select routes.route_id,trips.trip_id,service_id,arrival_time, stop_id, stop_sequence from routes join trips on trips.route_id = routes.route_id |
join stop_times on stop_times.trip_id = trips.trip_id where (service_id=:service_periodA OR service_id=:service_periodB) | join stop_times on stop_times.trip_id = trips.trip_id where (service_id=:service_periodA OR service_id=:service_periodB) |
AND (routes.route_id = :routeID) " . $directionSQL . " and stop_sequence = '1' order by | AND (routes.route_id = :routeID) ' . $directionSQL . ' and stop_sequence = \'1\' order by |
arrival_time "; | arrival_time '; |
debug($query, "database"); | debug($query, 'database'); |
$query = $conn->prepare($query); | $query = $conn->prepare($query); |
$query->bindParam(":routeID", $routeID); | $query->bindParam(':routeID', $routeID); |
$query->bindParam(":service_periodA", $sidA); | $query->bindParam(':service_periodA', $sidA); |
$query->bindParam(":service_periodB", $sidB); | $query->bindParam(':service_periodB', $sidB); |
if ($directionSQL != "") | if ($directionSQL != '') |
$query->bindParam(":directionID", $directionID); | $query->bindParam(':directionID', $directionID); |
$query->execute(); | $query->execute(); |
if (!$query) { | if (!$query) { |
databaseError($conn->errorInfo()); | databaseError($conn->errorInfo()); |
return Array(); | return Array(); |
} | } |
return $query->fetchAll(); | return $query->fetchAll(); |
} | } |
function getRoutesByDestination($destination = "", $service_period = "") { | function getRoutesByDestination($destination = '', $service_period = '') { |
global $conn; | global $conn; |
if ($service_period == "") | if ($service_period == '') |
$service_period = service_period(); | $service_period = service_period(); |
$service_ids = service_ids($service_period); | $service_ids = service_ids($service_period); |
$sidA = $service_ids[0]; | $sidA = $service_ids[0]; |
$sidB = $service_ids[1]; | $sidB = $service_ids[1]; |
if ($destination != "") { | if ($destination != '') { |
/* $query = "SELECT DISTINCT trips.route_id,route_short_name,route_long_name, service_id | /* $query = 'SELECT DISTINCT trips.route_id,route_short_name,route_long_name, service_id |
FROM stop_times join trips on trips.trip_id = | FROM stop_times join trips on trips.trip_id = |
stop_times.trip_id join routes on trips.route_id = routes.route_id | stop_times.trip_id join routes on trips.route_id = routes.route_id |
WHERE route_long_name = :destination AND (service_id=:service_periodA OR service_id=:service_periodB) | WHERE route_long_name = :destination AND (service_id=:service_periodA OR service_id=:service_periodB) |
order by route_short_name";*/ | order by route_short_name'; */ |
$query = "select route_id, direction_id, stop_name, b.trip_id, b.stop_sequence from (select route_id, direction_id, max(stop_sequence) as stop_sequence, max(a.trip_id) as trip_id from stop_times inner join (SELECT route_id, direction_id, max(trip_id) as trip_id | $query = 'select route_id, direction_id, stop_name, b.trip_id, b.stop_sequence from (select route_id, direction_id, max(stop_sequence) as stop_sequence, max(a.trip_id) as trip_id from stop_times inner join (SELECT route_id, direction_id, max(trip_id) as trip_id |
from trips group by route_id,direction_id) as a on stop_times.trip_id = a.trip_id group by route_id, direction_id) as b inner join stop_times on b.trip_id = stop_times.trip_id inner join stops on stop_times.stop_id = stops.stop_id where stop_times.stop_sequence = b.stop_sequence and stop_name = :destination order by route_id;"; | from trips group by route_id,direction_id) as a on stop_times.trip_id = a.trip_id group by route_id, direction_id) as b inner join stop_times on b.trip_id = stop_times.trip_id inner join stops on stop_times.stop_id = stops.stop_id where stop_times.stop_sequence = b.stop_sequence and stop_name = :destination order by route_id;'; |
} else { | } else { |
$query = "select stop_name from (select route_id, direction_id, max(stop_sequence) as stop_sequence, max(a.trip_id) as trip_id from stop_times inner join (SELECT route_id, direction_id, max(trip_id) as trip_id | $query = 'select stop_name from (select route_id, direction_id, max(stop_sequence) as stop_sequence, max(a.trip_id) as trip_id from stop_times inner join (SELECT route_id, direction_id, max(trip_id) as trip_id |
from trips group by route_id,direction_id) as a on stop_times.trip_id = a.trip_id group by route_id, direction_id) as b inner join stop_times on b.trip_id = stop_times.trip_id inner join stops on stop_times.stop_id = stops.stop_id where stop_times.stop_sequence = b.stop_sequence group by stop_name order by stop_name;"; | from trips group by route_id,direction_id) as a on stop_times.trip_id = a.trip_id group by route_id, direction_id) as b inner join stop_times on b.trip_id = stop_times.trip_id inner join stops on stop_times.stop_id = stops.stop_id where stop_times.stop_sequence = b.stop_sequence group by stop_name order by stop_name;'; |
} | } |
debug($query, "database"); | debug($query, 'database'); |
$query = $conn->prepare($query); | $query = $conn->prepare($query); |
//$query->bindParam(":service_periodA", $sidA); | //$query->bindParam(':service_periodA', $sidA); |
//$query->bindParam(":service_periodB", $sidB); | //$query->bindParam(':service_periodB', $sidB); |
if ($destination != "") | if ($destination != '') |
$query->bindParam(":destination", $destination); | $query->bindParam(':destination', $destination); |
$query->execute(); | $query->execute(); |
if (!$query) { | if (!$query) { |
databaseError($conn->errorInfo()); | databaseError($conn->errorInfo()); |
return Array(); | return Array(); |
} | } |
return $query->fetchAll(); | return $query->fetchAll(); |
} | } |
function getRoutesBySuburb($suburb, $service_period = "") { | function getRoutesBySuburb($suburb, $service_period = '') { |
if ($service_period == "") | if ($service_period == '') |
$service_period = service_period(); | $service_period = service_period(); |
$service_ids = service_ids($service_period); | $service_ids = service_ids($service_period); |
$sidA = $service_ids[0]; | $sidA = $service_ids[0]; |
$sidB = $service_ids[1]; | $sidB = $service_ids[1]; |
global $conn; | global $conn; |
$query = "SELECT DISTINCT service_id,trips.route_id,route_short_name,route_long_name | $query = 'SELECT DISTINCT service_id,trips.route_id,route_short_name,route_long_name |
FROM stop_times join trips on trips.trip_id = stop_times.trip_id | FROM stop_times join trips on trips.trip_id = stop_times.trip_id |
join routes on trips.route_id = routes.route_id | join routes on trips.route_id = routes.route_id |
join stops on stops.stop_id = stop_times.stop_id | join stops on stops.stop_id = stop_times.stop_id |
WHERE stop_desc LIKE :suburb AND (service_id=:service_periodA OR service_id=:service_periodB) | WHERE stop_desc LIKE :suburb AND (service_id=:service_periodA OR service_id=:service_periodB) |
ORDER BY route_short_name"; | ORDER BY route_short_name'; |
debug($query, "database"); | debug($query, 'database'); |
$query = $conn->prepare($query); | $query = $conn->prepare($query); |
$query->bindParam(":service_periodA", $sidA); | $query->bindParam(':service_periodA', $sidA); |
$query->bindParam(":service_periodB", $sidB); | $query->bindParam(':service_periodB', $sidB); |
$suburb = "%Suburb: %" . $suburb . "%"; | $suburb = '%Suburb: %' . $suburb . '%'; |
$query->bindParam(":suburb", $suburb); | $query->bindParam(':suburb', $suburb); |
$query->execute(); | $query->execute(); |
databaseError($conn->errorInfo()); | databaseError($conn->errorInfo()); |
return $query->fetchAll(); | return $query->fetchAll(); |
} | } |
function getRoutesNearby($lat, $lng, $limit = "", $distance = 500) { | function getRoutesNearby($lat, $lng, $limit = '', $distance = 500) { |
// if ($service_period == "") | // if ($service_period == '') |
$service_period = service_period(); | $service_period = service_period(); |
$service_ids = service_ids($service_period); | $service_ids = service_ids($service_period); |
$sidA = $service_ids[0]; | $sidA = $service_ids[0]; |
$sidB = $service_ids[1]; | $sidB = $service_ids[1]; |
$limitSQL = ""; | $limitSQL = ''; |
if ($limit != "") | if ($limit != '') |
$limitSQL = " LIMIT :limit "; | $limitSQL = ' LIMIT :limit '; |
global $conn; | global $conn; |
$query = "SELECT service_id,trips.route_id,trips.direction_id,route_short_name,route_long_name,min(stops.stop_id) as stop_id, | $query = 'SELECT service_id,trips.route_id,trips.direction_id,route_short_name,route_long_name,min(stops.stop_id) as stop_id, |
min(ST_Distance(position, ST_GeographyFromText('SRID=4326;POINT($lng $lat)'), FALSE)) as distance | min(ST_Distance(position, ST_GeographyFromText(\'SRID=4326;POINT($lng $lat)\'), FALSE)) as distance |
FROM stop_times | FROM stop_times |
join trips on trips.trip_id = stop_times.trip_id | join trips on trips.trip_id = stop_times.trip_id |
join routes on trips.route_id = routes.route_id | join routes on trips.route_id = routes.route_id |
join stops on stops.stop_id = stop_times.stop_id | join stops on stops.stop_id = stop_times.stop_id |
WHERE (service_id=:service_periodA OR service_id=:service_periodB) | WHERE (service_id=:service_periodA OR service_id=:service_periodB) |
AND ST_DWithin(position, ST_GeographyFromText('SRID=4326;POINT($lng $lat)'), :distance, FALSE) | AND ST_DWithin(position, ST_GeographyFromText(\'SRID=4326;POINT($lng $lat)\'), :distance, FALSE) |
group by service_id,trips.route_id,trips.direction_id,route_short_name,route_long_name | group by service_id,trips.route_id,trips.direction_id,route_short_name,route_long_name |
order by distance $limitSQL"; | order by distance '.$limitSQL; |
debug($query, "database"); | debug($query, 'database'); |
$query = $conn->prepare($query); | $query = $conn->prepare($query); |
$query->bindParam(":service_periodA", $sidA); | $query->bindParam(':service_periodA', $sidA); |
$query->bindParam(":service_periodB", $sidB); | $query->bindParam(':service_periodB', $sidB); |
$query->bindParam(":distance", $distance); | $query->bindParam(':distance', $distance); |
if ($limit != "") | if ($limit != '') |
$query->bindParam(":limit", $limit); | $query->bindParam(':limit', $limit); |
$query->execute(); | $query->execute(); |
if (!$query) { | if (!$query) { |
databaseError($conn->errorInfo()); | databaseError($conn->errorInfo()); |
return Array(); | return Array(); |
} | } |
return $query->fetchAll(); | return $query->fetchAll(); |
} | } |
<?php | <?php |
/* | /* |
* Copyright 2010,2011 Alexander Sadleir | * Copyright 2010,2011 Alexander Sadleir |
Licensed under the Apache License, Version 2.0 (the "License"); | Licensed under the Apache License, Version 2.0 (the 'License'); |
you may not use this file except in compliance with the License. | you may not use this file except in compliance with the License. |
You may obtain a copy of the License at | You may obtain a copy of the License at |
http://www.apache.org/licenses/LICENSE-2.0 | http://www.apache.org/licenses/LICENSE-2.0 |
Unless required by applicable law or agreed to in writing, software | Unless required by applicable law or agreed to in writing, software |
distributed under the License is distributed on an "AS IS" BASIS, | distributed under the License is distributed on an 'AS IS' BASIS, |
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
See the License for the specific language governing permissions and | See the License for the specific language governing permissions and |
limitations under the License. | limitations under the License. |
*/ | */ |
function getServiceOverride($date = "") { | function getServiceOverride($date = '') { |
global $conn; | global $conn; |
$query = "Select * from calendar_dates where date = :date and exception_type = '1' LIMIT 1"; | $query = 'Select * from calendar_dates where date = :date and exception_type = \'1\' LIMIT 1'; |
// debug($query,"database"); | // debug($query,'database'); |
$query = $conn->prepare($query); // Create a prepared statement | $query = $conn->prepare($query); // Create a prepared statement |
$query->bindParam(":date", date("Ymd", ($date != "" ? $date : time()))); | $date = date('Ymd', ($date != '' ? $date : time())); |
$query->bindParam(':date', $date); | |
$query->execute(); | $query->execute(); |
if (!$query) { | if (!$query) { |
databaseError($conn->errorInfo()); | databaseError($conn->errorInfo()); |
return Array(); | return Array(); |
} | } |
return $query->fetch(PDO :: FETCH_ASSOC); | return $query->fetch(PDO :: FETCH_ASSOC); |
} | } |
function getServiceAlert($alertID) { | function getServiceAlert($alertID) { |
global $conn; | global $conn; |
$query = "SELECT id,extract('epoch' from start) as start, extract('epoch' from \"end\") as \"end\",cause,effect,header,description,url from servicealerts_alerts where id = :servicealert_id"; | $query = 'SELECT id,extract(\'epoch\' from start) as start, extract(\'epoch\' from "end") as \\\'end\\\',cause,effect,header,description,url from servicealerts_alerts where id = :servicealert_id'; |
debug($query, "database"); | debug($query, 'database'); |
$query = $conn->prepare($query); | $query = $conn->prepare($query); |
$query->bindParam(":servicealert_id", $alertID); | $query->bindParam(':servicealert_id', $alertID); |
$query->execute(); | $query->execute(); |
if (!$query) { | if (!$query) { |
databaseError($conn->errorInfo()); | databaseError($conn->errorInfo()); |
return Array(); | return Array(); |
} | } |
return $query->fetch(PDO :: FETCH_ASSOC); | return $query->fetch(PDO :: FETCH_ASSOC); |
} | } |
function updateServiceAlert($alertID, $alert) { | function updateServiceAlert($alertID, $alert) { |
global $conn; | global $conn; |
$query = 'update servicealerts_alerts set start=:start, "end"=:end, header=:header, description=:description, url=:url, cause=:cause, effect=:effect where id = :servicealert_id'; | $query = 'update servicealerts_alerts set start=:start, "end"=:end, header=:header, description=:description, url=:url, cause=:cause, effect=:effect where id = :servicealert_id'; |
debug($query, "database"); | debug($query, 'database'); |
$query = $conn->prepare($query); | $query = $conn->prepare($query); |
$query->bindValue(":servicealert_id", $alertID); | $query->bindValue(':servicealert_id', $alertID); |
$query->bindValue(":start", $alert['startdate']); | $query->bindValue(':start', $alert['startdate']); |
$query->bindValue(":end", $alert['enddate']); | $query->bindValue(':end', $alert['enddate']); |
$query->bindValue(":header", $alert['header']); | $query->bindValue(':header', $alert['header']); |
$query->bindValue(":description", $alert['description']); | $query->bindValue(':description', $alert['description']); |
$query->bindValue(":url", $alert['url']); | $query->bindValue(':url', $alert['url']); |
$query->bindValue(":cause", $alert['cause']); | $query->bindValue(':cause', $alert['cause']); |
$query->bindValue(":effect", $alert['effect']); | $query->bindValue(':effect', $alert['effect']); |
$query->execute(); | $query->execute(); |
print_r($conn->errorInfo()); | print_r($conn->errorInfo()); |
if (!$query) { | if (!$query) { |
databaseError($conn->errorInfo()); | databaseError($conn->errorInfo()); |
return Array(); | return Array(); |
} | } |
return $query->fetch(PDO :: FETCH_ASSOC); | return $query->fetch(PDO :: FETCH_ASSOC); |
} | } |
function addServiceAlert($alert) { | function addServiceAlert($alert) { |
global $conn; | global $conn; |
$query = 'INSERT INTO servicealerts_alerts (start, "end", header, description, url,cause,effect) VALUES (:start, :end, :header, :description, :url,:cause,:effect) '; | $query = 'INSERT INTO servicealerts_alerts (start, "end", header, description, url,cause,effect) VALUES (:start, :end, :header, :description, :url,:cause,:effect) '; |
debug($query, "database"); | debug($query, 'database'); |
$query = $conn->prepare($query); | $query = $conn->prepare($query); |
//print_r($alert); | //print_r($alert); |
$query->bindValue(":start", $alert['startdate']); | $query->bindValue(':start', $alert['startdate']); |
$query->bindValue(":end", $alert['enddate']); | $query->bindValue(':end', $alert['enddate']); |
$query->bindValue(":header", $alert['header']); | $query->bindValue(':header', $alert['header']); |
$query->bindValue(":description", $alert['description']); | $query->bindValue(':description', $alert['description']); |
$query->bindValue(":url", $alert['url']); | $query->bindValue(':url', $alert['url']); |
$query->bindValue(":cause", $alert['cause']); | $query->bindValue(':cause', $alert['cause']); |
$query->bindValue(":effect", $alert['effect']); | $query->bindValue(':effect', $alert['effect']); |
$query->execute(); | $query->execute(); |
print_r($conn->errorInfo()); | print_r($conn->errorInfo()); |
if (!$query) { | if (!$query) { |
databaseError($conn->errorInfo()); | databaseError($conn->errorInfo()); |
return Array(); | return Array(); |
} | } |
return $query->fetch(PDO :: FETCH_ASSOC); | return $query->fetch(PDO :: FETCH_ASSOC); |
} | } |
function getCurrentAlerts() { | function getCurrentAlerts() { |
global $conn; | global $conn; |
$query = "SELECT id,extract('epoch' from start) as start, extract('epoch' from \"end\") as \"end\",cause,effect,header,description,url from servicealerts_alerts where NOW() > start and NOW() < \"end\""; | $query = 'SELECT id,extract(\'epoch\' from start) as start, extract(\'epoch\' from "end") as "end",cause,effect,header,description,url from servicealerts_alerts where NOW() > start and NOW() < "end"'; |
// debug($query, "database"); | // debug($query, 'database'); |
$query = $conn->prepare($query); | $query = $conn->prepare($query); |
$query->execute(); | $query->execute(); |
if (!$query) { | if (!$query) { |
databaseError($conn->errorInfo()); | databaseError($conn->errorInfo()); |
return Array(); | return Array(); |
} | } |
return $query->fetchAll(); | return $query->fetchAll(); |
} | } |
function getFutureAlerts() { | function getFutureAlerts() { |
global $conn; | global $conn; |
$query = "SELECT id,extract('epoch' from start) as start, extract('epoch' from \"end\") as \"end\",cause,effect,header,description,url from servicealerts_alerts where NOW() > start or NOW() < \"end\""; | $query = 'SELECT id,extract(\'epoch\' from start) as start, extract(\'epoch\' from "end") as "end",cause,effect,header,description,url from servicealerts_alerts where NOW() < "end"'; |
// debug($query, "database"); | // debug($query, 'database'); |
$query = $conn->prepare($query); | |
$query->execute(); | |
if (!$query) { | |
databaseError($conn->errorInfo()); | |
return Array(); | |
} | |
return $query->fetchAll(); | |
} | |
function getAllAlerts() { | |
global $conn; | |
$query = 'SELECT id,extract(\'epoch\' from start) as start, extract(\'epoch\' from "end") as "end",cause,effect,header,description,url from servicealerts_alerts'; | |
// debug($query, 'database'); | |
$query = $conn->prepare($query); | $query = $conn->prepare($query); |
$query->execute(); | $query->execute(); |
if (!$query) { | if (!$query) { |
databaseError($conn->errorInfo()); | databaseError($conn->errorInfo()); |
return Array(); | return Array(); |
} | } |
return $query->fetchAll(); | return $query->fetchAll(); |
} | } |
function getInformedAlerts($id, $filter_class, $filter_id) { | function getInformedAlerts($id, $filter_class, $filter_id) { |
global $conn; | global $conn; |
//echo "$id, $filter_class, $filter_id\n"; | //echo '$id, $filter_class, $filter_id\n'; |
$query = "SELECT * from servicealerts_informed where servicealert_id = :servicealert_id"; | $query = 'SELECT * from servicealerts_informed where servicealert_id = :servicealert_id'; |
if ($filter_class != "") { | if ($filter_class != '') { |
$query .= " AND informed_class = :informed_class "; | $query .= ' AND informed_class = :informed_class '; |
} | } |
if ($filter_id != "") { | if ($filter_id != '') { |
$query .= " AND informed_id = :informed_id "; | $query .= ' AND informed_id = :informed_id '; |
} | } |
// debug($query, "database"); | // debug($query, 'database'); |
$query = $conn->prepare($query); | $query = $conn->prepare($query); |
if ($filter_class != "") { | if ($filter_class != '') { |
$query->bindParam(":informed_class", $filter_class); | $query->bindParam(':informed_class', $filter_class); |
} | } |
if ($filter_id != "") { | if ($filter_id != '') { |
$query->bindParam(":informed_id", $filter_id); | $query->bindParam(':informed_id', $filter_id); |
} | } |
$query->bindParam(":servicealert_id", $id); | $query->bindParam(':servicealert_id', $id); |
$query->execute(); | $query->execute(); |
if (!$query) { | if (!$query) { |
databaseError($conn->errorInfo()); | databaseError($conn->errorInfo()); |
return Array(); | return Array(); |
} | } |
return $query->fetchAll(); | return $query->fetchAll(); |
} | } |
function deleteInformedAlert($serviceAlertID, $class, $id) { | function deleteInformedAlert($serviceAlertID, $class, $id) { |
global $conn; | global $conn; |
$query = 'DELETE from servicealerts_informed where servicealert_id = :servicealert_id and informed_class = :informed_class AND informed_id = :informed_id'; | $query = 'DELETE from servicealerts_informed where servicealert_id = :servicealert_id and informed_class = :informed_class AND informed_id = :informed_id'; |
debug($query, "database"); | debug($query, 'database'); |
$query = $conn->prepare($query); | $query = $conn->prepare($query); |
$query->bindParam(":servicealert_id", $serviceAlertID); | $query->bindParam(':servicealert_id', $serviceAlertID); |
$query->bindParam(":informed_class", $class); | $query->bindParam(':informed_class', $class); |
$query->bindParam(":informed_id", $id); | $query->bindParam(':informed_id', $id); |
$query->execute(); | $query->execute(); |
print_r($conn->errorInfo()); | print_r($conn->errorInfo()); |
if (!$query) { | if (!$query) { |
databaseError($conn->errorInfo()); | databaseError($conn->errorInfo()); |
return Array(); | return Array(); |
} | } |
return null; | return null; |
} | } |
function addInformedAlert($serviceAlertID, $class, $id, $action) { | function addInformedAlert($serviceAlertID, $class, $id, $action) { |
global $conn; | global $conn; |
$query = 'INSERT INTO servicealerts_informed (servicealert_id , informed_class , informed_id, informed_action) | $query = 'INSERT INTO servicealerts_informed (servicealert_id , informed_class , informed_id, informed_action) |
VALUES(:servicealert_id ,:informed_class, :informed_id, :informed_action)'; | VALUES(:servicealert_id ,:informed_class, :informed_id, :informed_action)'; |
debug($query, "database"); | debug($query, 'database'); |
$query = $conn->prepare($query); | $query = $conn->prepare($query); |
$query->bindParam(":servicealert_id", $serviceAlertID); | $query->bindParam(':servicealert_id', $serviceAlertID); |
$query->bindParam(":informed_class", $class); | $query->bindParam(':informed_class', $class); |
$query->bindParam(":informed_id", $id); | $query->bindParam(':informed_id', $id); |
$query->bindParam(":informed_action", $action); | $query->bindParam(':informed_action', $action); |
$query->execute(); | $query->execute(); |
print_r($conn->errorInfo()); | print_r($conn->errorInfo()); |
if (!$query) { | if (!$query) { |
databaseError($conn->errorInfo()); | databaseError($conn->errorInfo()); |
return Array(); | return Array(); |
} | } |
return null; | return null; |
} | } |
<?php | <?php |
/* | /* |
* Copyright 2010,2011 Alexander Sadleir | * Copyright 2010,2011 Alexander Sadleir |
Licensed under the Apache License, Version 2.0 (the "License"); | Licensed under the Apache License, Version 2.0 (the 'License'); |
you may not use this file except in compliance with the License. | you may not use this file except in compliance with the License. |
You may obtain a copy of the License at | You may obtain a copy of the License at |
http://www.apache.org/licenses/LICENSE-2.0 | http://www.apache.org/licenses/LICENSE-2.0 |
Unless required by applicable law or agreed to in writing, software | Unless required by applicable law or agreed to in writing, software |
distributed under the License is distributed on an "AS IS" BASIS, | distributed under the License is distributed on an 'AS IS' BASIS, |
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
See the License for the specific language governing permissions and | See the License for the specific language governing permissions and |
limitations under the License. | limitations under the License. |
*/ | */ |
function getStop($stopID) { | function getStop($stopID) { |
global $conn; | global $conn; |
$query = "Select * from stops where stop_id = :stopID LIMIT 1"; | $query = 'Select * from stops where stop_id = :stopID LIMIT 1'; |
debug($query, "database"); | debug($query, 'database'); |
$query = $conn->prepare($query); | $query = $conn->prepare($query); |
$query->bindParam(":stopID", $stopID); | $query->bindParam(':stopID', $stopID); |
$query->execute(); | $query->execute(); |
if (!$query) { | if (!$query) { |
databaseError($conn->errorInfo()); | databaseError($conn->errorInfo()); |
return Array(); | return Array(); |
} | } |
return $query->fetch(PDO :: FETCH_ASSOC); | return $query->fetch(PDO :: FETCH_ASSOC); |
} | } |
function getStops($firstLetter = "", $startsWith = "") { | function getStops($firstLetter = '', $startsWith = '') { |
global $conn; | global $conn; |
$conditions = Array(); | $conditions = Array(); |
if ($firstLetter != "") | if ($firstLetter != '') |
$conditions[] = "substr(stop_name,1,1) = :firstLetter"; | $conditions[] = 'substr(stop_name,1,1) = :firstLetter'; |
if ($startsWith != "") | if ($startsWith != '') |
$conditions[] = "stop_name like :startsWith"; | $conditions[] = 'stop_name like :startsWith'; |
$query = "Select * from stops"; | $query = 'Select * from stops'; |
if (sizeof($conditions) > 0) { | if (sizeof($conditions) > 0) { |
if (sizeof($conditions) > 1) { | if (sizeof($conditions) > 1) { |
$query .= " Where " . implode(" AND ", $conditions) . " "; | $query .= ' Where ' . implode(' AND ', $conditions) . ' '; |
} else { | } else { |
$query .= " Where " . $conditions[0] . " "; | $query .= ' Where ' . $conditions[0] . ' '; |
} | } |
} | } |
$query .= " order by stop_name;"; | $query .= ' order by stop_name;'; |
debug($query, "database"); | debug($query, 'database'); |
$query = $conn->prepare($query); | $query = $conn->prepare($query); |
if ($firstLetter != "") | if ($firstLetter != '') |
$query->bindParam(":firstLetter", $firstLetter); | $query->bindParam(':firstLetter', $firstLetter); |
if ($startsWith != "") { | if ($startsWith != '') { |
$startsWith = $startsWith . "%"; | $startsWith = $startsWith . '%'; |
$query->bindParam(":startsWith", $startsWith); | $query->bindParam(':startsWith', $startsWith); |
} | } |
$query->execute(); | $query->execute(); |
if (!$query) { | if (!$query) { |
databaseError($conn->errorInfo()); | databaseError($conn->errorInfo()); |
return Array(); | return Array(); |
} | } |
return $query->fetchAll(); | return $query->fetchAll(); |
} | } |
function getNearbyStops($lat, $lng, $limit = "", $distance = 1000) { | function getNearbyStops($lat, $lng, $limit = '', $distance = 1000) { |
if ($lat == null || $lng == null) | if ($lat == null || $lng == null) |
return Array(); | return Array(); |
if ($limit != "") | if ($limit != '') |
$limitSQL = " LIMIT :limit "; | $limitSQL = ' LIMIT :limit '; |
global $conn; | global $conn; |
$query = "Select *, ST_Distance(position, ST_GeographyFromText('SRID=4326;POINT($lng $lat)'), FALSE) as distance | $query = 'Select *, ST_Distance(position, ST_GeographyFromText(\'SRID=4326;POINT('.$lng.' '.$lat.')\'), FALSE) as distance |
from stops WHERE ST_DWithin(position, ST_GeographyFromText('SRID=4326;POINT($lng $lat)'), :distance, FALSE) | from stops WHERE ST_DWithin(position, ST_GeographyFromText(\'SRID=4326;POINT('.$lng.' '.$lat.')\'), :distance, FALSE) |
order by distance $limitSQL;"; | order by distance '.$limitSQL; |
debug($query, "database"); | debug($query, 'database'); |
$query = $conn->prepare($query); | $query = $conn->prepare($query); |
$query->bindParam(":distance", $distance); | $query->bindParam(':distance', $distance); |
$query->bindParam(":limit", $limit); | $query->bindParam(':limit', $limit); |
$query->execute(); | $query->execute(); |
if (!$query) { | if (!$query) { |
databaseError($conn->errorInfo()); | databaseError($conn->errorInfo()); |
return Array(); | return Array(); |
} | } |
return $query->fetchAll(); | return $query->fetchAll(); |
} | } |
function getStopsByName($name) { | function getStopsByName($name) { |
global $conn; | global $conn; |
$query = "Select * from stops where stop_name LIKE :name;"; | $query = 'Select * from stops where stop_name LIKE :name;'; |
debug($query, "database"); | debug($query, 'database'); |
$query = $conn->prepare($query); | $query = $conn->prepare($query); |
$name = $name . "%"; | $name = $name . '%'; |
$query->bindParam(":name", $name); | $query->bindParam(':name', $name); |
$query->execute(); | $query->execute(); |
if (!$query) { | if (!$query) { |
databaseError($conn->errorInfo()); | databaseError($conn->errorInfo()); |
return Array(); | return Array(); |
} | } |
return $query->fetchAll(); | return $query->fetchAll(); |
} | } |
function getStopsBySuburb($suburb) { | function getStopsBySuburb($suburb) { |
global $conn; | global $conn; |
$query = "Select * from stops where stop_desc LIKE :suburb order by stop_name;"; | $query = 'Select * from stops where stop_desc LIKE :suburb order by stop_name;'; |
debug($query, "database"); | debug($query, 'database'); |
$query = $conn->prepare($query); | $query = $conn->prepare($query); |
$suburb = "%<br>Suburb: %" . $suburb . "%"; | $suburb = '%<br>Suburb: %' . $suburb . '%'; |
$query->bindParam(":suburb", $suburb); | $query->bindParam(':suburb', $suburb); |
$query->execute(); | $query->execute(); |
if (!$query) { | if (!$query) { |
databaseError($conn->errorInfo()); | databaseError($conn->errorInfo()); |
return Array(); | return Array(); |
} | } |
return $query->fetchAll(); | return $query->fetchAll(); |
} | } |
function getStopsByStopCode($stop_code, $startsWith = "") { | function getStopsByStopCode($stop_code, $startsWith = '') { |
global $conn; | global $conn; |
$query = "Select * from stops where (stop_code = :stop_code OR stop_code LIKE :stop_code2)"; | $query = 'Select * from stops where (stop_code = :stop_code OR stop_code LIKE :stop_code2)'; |
if ($startsWith != "") | if ($startsWith != '') |
$query .= " AND stop_name like :startsWith"; | $query .= ' AND stop_name like :startsWith'; |
debug($query, "database"); | debug($query, 'database'); |
$query = $conn->prepare($query); | $query = $conn->prepare($query); |
$query->bindParam(":stop_code", $stop_code); | $query->bindParam(':stop_code', $stop_code); |
$stop_code2 = $stop_code . "%"; | $stop_code2 = $stop_code . '%'; |
$query->bindParam(":stop_code2", $stop_code2); | $query->bindParam(':stop_code2', $stop_code2); |
if ($startsWith != "") { | if ($startsWith != '') { |
$startsWith = $startsWith . "%"; | $startsWith = $startsWith . '%'; |
$query->bindParam(":startsWith", $startsWith); | $query->bindParam(':startsWith', $startsWith); |
} | } |
$query->execute(); | $query->execute(); |
if (!$query) { | if (!$query) { |
databaseError($conn->errorInfo()); | databaseError($conn->errorInfo()); |
return Array(); | return Array(); |
} | } |
return $query->fetchAll(); | return $query->fetchAll(); |
} | } |
function getStopRoutes($stopID, $service_period) { | function getStopRoutes($stopID, $service_period) { |
if ($service_period == "") { | if ($service_period == '') { |
$service_period = service_period(); | $service_period = service_period(); |
} | } |
$service_ids = service_ids($service_period); | $service_ids = service_ids($service_period); |
$sidA = $service_ids[0]; | $sidA = $service_ids[0]; |
$sidB = $service_ids[1]; | $sidB = $service_ids[1]; |
global $conn; | global $conn; |
$query = "SELECT distinct service_id,trips.route_id,route_short_name,route_long_name | $query = 'SELECT distinct service_id,trips.route_id,route_short_name,route_long_name |
FROM stop_times join trips on trips.trip_id = | FROM stop_times join trips on trips.trip_id = |
stop_times.trip_id join routes on trips.route_id = routes.route_id WHERE stop_id = :stopID | stop_times.trip_id join routes on trips.route_id = routes.route_id WHERE stop_id = :stopID |
AND (service_id=:service_periodA OR service_id=:service_periodB)"; | AND (service_id=:service_periodA OR service_id=:service_periodB)'; |
debug($query, "database"); | debug($query, 'database'); |
$query = $conn->prepare($query); | $query = $conn->prepare($query); |
$query->bindParam(":service_periodA", $sidA); | $query->bindParam(':service_periodA', $sidA); |
$query->bindParam(":service_periodB", $sidB); | $query->bindParam(':service_periodB', $sidB); |
$query->bindParam(":stopID", $stopID); | $query->bindParam(':stopID', $stopID); |
$query->execute(); | $query->execute(); |
if (!$query) { | if (!$query) { |
databaseError($conn->errorInfo()); | databaseError($conn->errorInfo()); |
return Array(); | return Array(); |
} | } |
return $query->fetchAll(); | return $query->fetchAll(); |
} | } |
function getStopTrips($stopID, $service_period = "", $afterTime = "", $limit = "", $route_short_name = "") { | function getStopTrips($stopID, $service_period = '', $afterTime = '', $limit = '', $route_short_name = '') { |
if ($service_period == "") { | if ($service_period == '') { |
$service_period = service_period(); | $service_period = service_period(); |
} | } |
$service_ids = service_ids($service_period); | $service_ids = service_ids($service_period); |
$sidA = $service_ids[0]; | $sidA = $service_ids[0]; |
$sidB = $service_ids[1]; | $sidB = $service_ids[1]; |
$limitSQL = ""; | $limitSQL = ''; |
if ($limit != "") | if ($limit != '') |
$limitSQL .= " LIMIT :limit "; | $limitSQL .= ' LIMIT :limit '; |
global $conn; | global $conn; |
if ($afterTime != "") { | if ($afterTime != '') { |
$query = " SELECT stop_times.trip_id,stop_times.arrival_time,stop_times.stop_id,stop_sequence,service_id,trips.route_id,trips.direction_id,trips.trip_headsign,route_short_name,route_long_name,end_times.arrival_time as end_time | $query = ' SELECT stop_times.trip_id,stop_times.arrival_time,stop_times.stop_id,stop_sequence,service_id,trips.route_id,trips.direction_id,trips.trip_headsign,route_short_name,route_long_name,end_times.arrival_time as end_time |
FROM stop_times | FROM stop_times |
join trips on trips.trip_id = | join trips on trips.trip_id = |
stop_times.trip_id | stop_times.trip_id |
join routes on trips.route_id = routes.route_id , (SELECT trip_id,max(arrival_time) as arrival_time from stop_times | join routes on trips.route_id = routes.route_id , (SELECT trip_id,max(arrival_time) as arrival_time from stop_times |
WHERE stop_times.arrival_time IS NOT NULL group by trip_id) as end_times | WHERE stop_times.arrival_time IS NOT NULL group by trip_id) as end_times |
WHERE stop_times.stop_id = :stopID | WHERE stop_times.stop_id = :stopID |
AND stop_times.trip_id = end_times.trip_id | AND stop_times.trip_id = end_times.trip_id |
AND (service_id=:service_periodA OR service_id=:service_periodB) " . ($route_short_name != "" ? " AND route_short_name = :route_short_name " : "") . " | AND (service_id=:service_periodA OR service_id=:service_periodB) ' . ($route_short_name != '' ? ' AND route_short_name = :route_short_name ' : '') . ' |
AND end_times.arrival_time > :afterTime | AND end_times.arrival_time > :afterTime |
ORDER BY end_time $limitSQL"; | ORDER BY end_time '.$limitSQL; |
} else { | } else { |
$query = "SELECT stop_times.trip_id,arrival_time,stop_times.stop_id,stop_sequence,service_id,trips.route_id,route_short_name,route_long_name | $query = 'SELECT stop_times.trip_id,arrival_time,stop_times.stop_id,stop_sequence,service_id,trips.route_id,route_short_name,route_long_name |
FROM stop_times | FROM stop_times |
join trips on trips.trip_id = | join trips on trips.trip_id = |
stop_times.trip_id | stop_times.trip_id |
join routes on trips.route_id = routes.route_id | join routes on trips.route_id = routes.route_id |
WHERE stop_times.stop_id = :stopID | WHERE stop_times.stop_id = :stopID |
AND (service_id=:service_periodA OR service_id=:service_periodB) " . ($route_short_name != "" ? " AND route_short_name = :route_short_name " : "") . " | AND (service_id=:service_periodA OR service_id=:service_periodB) ' . ($route_short_name != '' ? ' AND route_short_name = :route_short_name ' : '') . ' |
ORDER BY arrival_time $limitSQL"; | ORDER BY arrival_time '.$limitSQL; |
} | } |
debug($query, "database"); | debug($query, 'database'); |
$query = $conn->prepare($query); | $query = $conn->prepare($query); |
$query->bindParam(":service_periodA", $sidA); | $query->bindParam(':service_periodA', $sidA); |
$query->bindParam(":service_periodB", $sidB); | $query->bindParam(':service_periodB', $sidB); |
$query->bindParam(":stopID", $stopID); | $query->bindParam(':stopID', $stopID); |
if ($limit != "") | if ($limit != '') |
$query->bindParam(":limit", $limit); | $query->bindParam(':limit', $limit); |
if ($afterTime != "") | if ($afterTime != '') |
$query->bindParam(":afterTime", $afterTime); | $query->bindParam(':afterTime', $afterTime); |
if ($route_short_name != "") | if ($route_short_name != '') |
$query->bindParam(":route_short_name", $route_short_name); | $query->bindParam(':route_short_name', $route_short_name); |
$query->execute(); | $query->execute(); |
if (!$query) { | if (!$query) { |
databaseError($conn->errorInfo()); | databaseError($conn->errorInfo()); |
return Array(); | return Array(); |
} | } |
return $query->fetchAll(); | return $query->fetchAll(); |
} | } |
function getStopTripsWithTimes($stopID, $time = "", $service_period = "", $time_range = "", $limit = "") { | function getStopTripsWithTimes($stopID, $time = '', $service_period = '', $time_range = '', $limit = '') { |
if ($service_period == "") | if ($service_period == '') |
$service_period = service_period(); | $service_period = service_period(); |
if ($time_range == "") | if ($time_range == '') |
$time_range = (24 * 60 * 60); | $time_range = (24 * 60 * 60); |
if ($time == "") | if ($time == '') |
$time = current_time(); | $time = current_time(); |
if ($limit == "") | if ($limit == '') |
$limit = 10; | $limit = 10; |
$trips = getStopTrips($stopID, $service_period, $time); | $trips = getStopTrips($stopID, $service_period, $time); |
$timedTrips = Array(); | $timedTrips = Array(); |
if ($trips && sizeof($trips) > 0) { | if ($trips && sizeof($trips) > 0) { |
foreach ($trips as $trip) { | foreach ($trips as $trip) { |
if ($trip['arrival_time'] != "") { | if ($trip['arrival_time'] != '') { |
if (strtotime($trip['arrival_time']) > strtotime($time) and strtotime($trip['arrival_time']) < (strtotime($time) + $time_range)) { | if (strtotime($trip['arrival_time']) > strtotime($time) and strtotime($trip['arrival_time']) < (strtotime($time) + $time_range)) { |
$timedTrips[] = $trip; | $timedTrips[] = $trip; |
} | } |
} else { | } else { |
$timedTrip = getTripAtStop($trip['trip_id'], $trip['stop_sequence']); | $timedTrip = getTripAtStop($trip['trip_id'], $trip['stop_sequence']); |
if ($timedTrip['arrival_time'] > $time and strtotime($timedTrip['arrival_time']) < (strtotime($time) + $time_range)) { | if ($timedTrip['arrival_time'] > $time and strtotime($timedTrip['arrival_time']) < (strtotime($time) + $time_range)) { |
$timedTrips[] = $timedTrip; | $timedTrips[] = $timedTrip; |
} | } |
} | } |
if (sizeof($timedTrips) > $limit) | if (sizeof($timedTrips) > $limit) |
break; | break; |
} | } |
sktimesort($timedTrips, "arrival_time", true); | sktimesort($timedTrips, 'arrival_time', true); |
} | } |
return $timedTrips; | return $timedTrips; |
} | } |
<?php | <?php |
/* | /* |
* Copyright 2010,2011 Alexander Sadleir | * Copyright 2010,2011 Alexander Sadleir |
Licensed under the Apache License, Version 2.0 (the "License"); | Licensed under the Apache License, Version 2.0 (the 'License'); |
you may not use this file except in compliance with the License. | you may not use this file except in compliance with the License. |
You may obtain a copy of the License at | You may obtain a copy of the License at |
http://www.apache.org/licenses/LICENSE-2.0 | http://www.apache.org/licenses/LICENSE-2.0 |
Unless required by applicable law or agreed to in writing, software | Unless required by applicable law or agreed to in writing, software |
distributed under the License is distributed on an "AS IS" BASIS, | distributed under the License is distributed on an 'AS IS' BASIS, |
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
See the License for the specific language governing permissions and | See the License for the specific language governing permissions and |
limitations under the License. | limitations under the License. |
*/ | */ |
function getTrip($tripID) { | function getTrip($tripID) { |
global $conn; | global $conn; |
$query = "Select * from trips | $query = 'Select * from trips |
join routes on trips.route_id = routes.route_id | join routes on trips.route_id = routes.route_id |
where trip_id = :tripID | where trip_id = :tripID |
LIMIT 1"; | LIMIT 1'; |
debug($query, "database"); | debug($query, 'database'); |
$query = $conn->prepare($query); | $query = $conn->prepare($query); |
$query->bindParam(":tripID", $tripID); | $query->bindParam(':tripID', $tripID); |
$query->execute(); | $query->execute(); |
if (!$query) { | if (!$query) { |
databaseError($conn->errorInfo()); | databaseError($conn->errorInfo()); |
return Array(); | return Array(); |
} | } |
return $query->fetch(PDO :: FETCH_ASSOC); | return $query->fetch(PDO :: FETCH_ASSOC); |
} | } |
function getTripStops($tripID) { | function getTripStops($tripID) { |
global $conn; | global $conn; |
$query = "SELECT stops.stop_id, stop_name, ST_AsKML(position) as positionkml, | $query = 'SELECT stops.stop_id, stop_name, ST_AsKML(position) as positionkml, |
stop_sequence, trips.trip_id | stop_sequence, trips.trip_id |
FROM stop_times | FROM stop_times |
join trips on trips.trip_id = stop_times.trip_id | join trips on trips.trip_id = stop_times.trip_id |
join stops on stops.stop_id = stop_times.stop_id | join stops on stops.stop_id = stop_times.stop_id |
WHERE trips.trip_id = :tripID ORDER BY stop_sequence"; | WHERE trips.trip_id = :tripID ORDER BY stop_sequence'; |
debug($query, "database"); | debug($query, 'database'); |
$query = $conn->prepare($query); | $query = $conn->prepare($query); |
$query->bindParam(":tripID", $tripID); | $query->bindParam(':tripID', $tripID); |
$query->execute(); | $query->execute(); |
if (!$query) { | if (!$query) { |
databaseError($conn->errorInfo()); | databaseError($conn->errorInfo()); |
return Array(); | return Array(); |
} | } |
return $query->fetchAll(); | return $query->fetchAll(); |
} | } |
function getTripHasStop($tripID, $stopID) { | function getTripHasStop($tripID, $stopID) { |
global $conn; | global $conn; |
$query = "SELECT stop_id | $query = 'SELECT stop_id |
FROM stop_times | FROM stop_times |
join trips on trips.trip_id = stop_times.trip_id | join trips on trips.trip_id = stop_times.trip_id |
WHERE trips.trip_id = :tripID and stop_times.stop_id = :stopID"; | WHERE trips.trip_id = :tripID and stop_times.stop_id = :stopID'; |
debug($query, "database"); | debug($query, 'database'); |
$query = $conn->prepare($query); | $query = $conn->prepare($query); |
$query->bindParam(":tripID", $tripID); | $query->bindParam(':tripID', $tripID); |
$query->bindParam(":stopID", $stopID); | $query->bindParam(':stopID', $stopID); |
$query->execute(); | $query->execute(); |
if (!$query) { | if (!$query) { |
databaseError($conn->errorInfo()); | databaseError($conn->errorInfo()); |
return Array(); | return Array(); |
} | } |
return ($query->fetchColumn() > 0); | return ($query->fetchColumn() > 0); |
} | } |
function getTripShape($tripID) { | function getTripShape($tripID) { |
// todo, use shapes table if shape_id specified | global $conn; |
global $conn; | $query = 'SELECT ST_AsKML(ST_MakeLine(geometry(a.shape_pt))) as the_route |
$query = "SELECT ST_AsKML(ST_MakeLine(geometry(a.shape_pt))) as the_route | |
FROM (SELECT shapes.shape_id,shape_pt from shapes | FROM (SELECT shapes.shape_id,shape_pt from shapes |
inner join trips on shapes.shape_id = trips.shape_id | inner join trips on shapes.shape_id = trips.shape_id |
WHERE trips.trip_id = :tripID ORDER BY shape_pt_sequence) as a group by a.shape_id"; | WHERE trips.trip_id = :tripID ORDER BY shape_pt_sequence) as a group by a.shape_id'; |
debug($query, "database"); | debug($query, 'database'); |
$query = $conn->prepare($query); | $query = $conn->prepare($query); |
$query->bindParam(":tripID", $tripID); | $query->bindParam(':tripID', $tripID); |
$query->execute(); | $query->execute(); |
if (!$query) { | if (!$query) { |
databaseError($conn->errorInfo()); | databaseError($conn->errorInfo()); |
return Array(); | return Array(); |
} | } |
return $query->fetchColumn(0); | return $query->fetchColumn(0); |
} | } |
function getTripStopTimes($tripID) { | function getTripStopTimes($tripID) { |
global $conn; | global $conn; |
$query = "SELECT stop_times.trip_id,trip_headsign,arrival_time,stop_times.stop_id | $query = 'SELECT stop_times.trip_id,trip_headsign,arrival_time,stop_times.stop_id |
,stop_lat,stop_lon,stop_name,stop_desc,stop_code, | ,stop_lat,stop_lon,stop_name,stop_desc,stop_code, |
stop_sequence,service_id,trips.route_id,route_short_name,route_long_name | stop_sequence,service_id,trips.route_id,route_short_name,route_long_name |
FROM stop_times | FROM stop_times |
join trips on trips.trip_id = stop_times.trip_id | join trips on trips.trip_id = stop_times.trip_id |
join routes on trips.route_id = routes.route_id | join routes on trips.route_id = routes.route_id |
join stops on stops.stop_id = stop_times.stop_id | join stops on stops.stop_id = stop_times.stop_id |
WHERE trips.trip_id = :tripID ORDER BY stop_sequence"; | WHERE trips.trip_id = :tripID ORDER BY stop_sequence'; |
debug($query, "database"); | debug($query, 'database'); |
$query = $conn->prepare($query); | $query = $conn->prepare($query); |
$query->bindParam(":tripID", $tripID); | $query->bindParam(':tripID', $tripID); |
$query->execute(); | $query->execute(); |
if (!$query) { | if (!$query) { |
databaseError($conn->errorInfo()); | databaseError($conn->errorInfo()); |
return Array(); | return Array(); |
} | } |
$stopTimes = $query->fetchAll(); | $stopTimes = $query->fetchAll(); |
return $stopTimes; | return $stopTimes; |
} | } |
function getTripAtStop($tripID, $stop_sequence) { | function getTripAtStop($tripID, $stop_sequence) { |
global $conn; | global $conn; |
foreach (getTripStopTimes($tripID) as $tripStop) { | foreach (getTripStopTimes($tripID) as $tripStop) { |
if ($tripStop['stop_sequence'] == $stop_sequence) | if ($tripStop['stop_sequence'] == $stop_sequence) |
return $tripStop; | return $tripStop; |
} | } |
return Array(); | return Array(); |
} | } |
function getTripStartTime($tripID) { | function getTripStartTime($tripID) { |
global $conn; | global $conn; |
$query = "Select * from stop_times | $query = 'Select * from stop_times |
where trip_id = :tripID | where trip_id = :tripID |
AND arrival_time IS NOT NULL | AND arrival_time IS NOT NULL |
AND stop_sequence = '1'"; | AND stop_sequence = \'1\''; |
debug($query, "database"); | debug($query, 'database'); |
$query = $conn->prepare($query); | $query = $conn->prepare($query); |
$query->bindParam(":tripID", $tripID); | $query->bindParam(':tripID', $tripID); |
$query->execute(); | $query->execute(); |
if (!$query) { | if (!$query) { |
databaseError($conn->errorInfo()); | databaseError($conn->errorInfo()); |
return Array(); | return Array(); |
} | } |
$r = $query->fetch(PDO :: FETCH_ASSOC); | $r = $query->fetch(PDO :: FETCH_ASSOC); |
return $r['arrival_time']; | return $r['arrival_time']; |
} | } |
function getTripEndTime($tripID) { | function getTripEndTime($tripID) { |
global $conn; | global $conn; |
$query = "SELECT trip_id,max(arrival_time) as arrival_time from stop_times | $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"; | WHERE stop_times.arrival_time IS NOT NULL and trip_id = :tripID group by trip_id'; |
debug($query, "database"); | debug($query, 'database'); |
$query = $conn->prepare($query); | $query = $conn->prepare($query); |
$query->bindParam(":tripID", $tripID); | $query->bindParam(':tripID', $tripID); |
$query->execute(); | $query->execute(); |
if (!$query) { | if (!$query) { |
databaseError($conn->errorInfo()); | databaseError($conn->errorInfo()); |
return Array(); | return Array(); |
} | } |
$r = $query->fetch(PDO :: FETCH_ASSOC); | $r = $query->fetch(PDO :: FETCH_ASSOC); |
return $r['arrival_time']; | return $r['arrival_time']; |
} | } |
function getTripStartingPoint($tripID) { | function getTripStartingPoint($tripID) { |
global $conn; | global $conn; |
$query = "SELECT stops.stop_id, stops.stop_name, stops.stop_desc | $query = 'SELECT stops.stop_id, stops.stop_name, stops.stop_desc |
from stop_times inner join stops on stop_times.stop_id = stops.stop_id | from stop_times inner join stops on stop_times.stop_id = stops.stop_id |
WHERE trip_id = :tripID and stop_sequence = '1' limit 1"; | WHERE trip_id = :tripID and stop_sequence = \'1\' limit 1'; |
debug($query, "database"); | debug($query, 'database'); |
$query = $conn->prepare($query); | $query = $conn->prepare($query); |
$query->bindParam(":tripID", $tripID); | $query->bindParam(':tripID', $tripID); |
$query->execute(); | $query->execute(); |
if (!$query) { | if (!$query) { |
databaseError($conn->errorInfo()); | databaseError($conn->errorInfo()); |
return Array(); | return Array(); |
} | } |
$r = $query->fetch(PDO :: FETCH_ASSOC); | $r = $query->fetch(PDO :: FETCH_ASSOC); |
return $r; | return $r; |
} | } |
function getTripDestination($tripID) { | function getTripDestination($tripID) { |
global $conn; | global $conn; |
$query = "SELECT stops.stop_id, stops.stop_name, stops.stop_desc | $query = 'SELECT stops.stop_id, stops.stop_name, stops.stop_desc |
from stop_times inner join stops on stop_times.stop_id = stops.stop_id | from stop_times inner join stops on stop_times.stop_id = stops.stop_id |
WHERE trip_id = :tripID order by stop_sequence desc limit 1"; | WHERE trip_id = :tripID order by stop_sequence desc limit 1'; |
debug($query, "database"); | debug($query, 'database'); |
$query = $conn->prepare($query); | $query = $conn->prepare($query); |
$query->bindParam(":tripID", $tripID); | $query->bindParam(':tripID', $tripID); |
$query->execute(); | $query->execute(); |
if (!$query) { | if (!$query) { |
databaseError($conn->errorInfo()); | databaseError($conn->errorInfo()); |
return Array(); | return Array(); |
} | } |
$r = $query->fetch(PDO :: FETCH_ASSOC); | $r = $query->fetch(PDO :: FETCH_ASSOC); |
return $r; | return $r; |
} | } |
function getActiveTrips($time) { | function getActiveTrips($time='') { |
global $conn; | global $conn; |
if ($time == "") | if ($time == '') { |
$time = current_time(); | $time = current_time(); |
$query = "Select distinct stop_times.trip_id, start_times.arrival_time as start_time, end_times.arrival_time as end_time from stop_times, (SELECT trip_id,arrival_time from stop_times WHERE stop_times.arrival_time IS NOT NULL | } |
AND stop_sequence = '1') as start_times, (SELECT trip_id,max(arrival_time) as arrival_time from stop_times WHERE stop_times.arrival_time IS NOT NULL group by trip_id) as end_times | $query = 'Select distinct stop_times.trip_id, start_times.arrival_time as start_time, end_times.arrival_time as end_time from stop_times, (SELECT trip_id,arrival_time from stop_times WHERE stop_times.arrival_time IS NOT NULL |
WHERE start_times.trip_id = end_times.trip_id AND stop_times.trip_id = end_times.trip_id AND :time > start_times.arrival_time AND :time < end_times.arrival_time"; | AND stop_sequence = \'1\') as start_times, (SELECT trip_id,max(arrival_time) as arrival_time from stop_times WHERE stop_times.arrival_time IS NOT NULL group by trip_id) as end_times |
debug($query, "database"); | WHERE start_times.trip_id = end_times.trip_id AND stop_times.trip_id = end_times.trip_id AND :time > start_times.arrival_time AND :time < end_times.arrival_time'; |
$query = $conn->prepare($query); | debug($query, 'database'); |
$query->bindParam(":time", $time); | $query = $conn->prepare($query); |
$query->execute(); | $query->bindParam(':time', $time); |
if (!$query) { | $query->execute(); |
databaseError($conn->errorInfo()); | if (!$query) { |
return Array(); | databaseError($conn->errorInfo()); |
} | return Array(); |
return $query->fetchAll(); | } |
} | return $query->fetchAll(); |
} | |
function viaPoints($tripID, $stop_sequence = "") { | function getTripLastStop($tripid, $time='') { |
global $conn; | global $conn; |
$query = "SELECT stops.stop_id, stop_name, arrival_time | if ($time == '') { |
$time = current_time(); | |
} | |
$query = 'Select trip_id,stops.stop_id,stop_sequence,stop_code,stop_name,stop_lat,stop_lon,arrival_time,(arrival_time - :time::time) as time_diff from stop_times inner join stops on stop_times.stop_id = stops.stop_id WHERE trip_id = :tripid and arrival_time >= :time::time order by stop_sequence limit 2'; | |
debug($query, 'database'); | |
$query = $conn->prepare($query); | |
$query->bindParam(':time', $time); | |
$query->bindParam(':tripid', $tripid); | |
$query->execute(); | |
if (!$query) { | |
databaseError($conn->errorInfo()); | |
return Array(); | |
} | |
return $query->fetchAll(); | |
} | |
function viaPoints($tripID, $stop_sequence = '') { | |
global $conn; | |
$query = 'SELECT stops.stop_id, stop_name, arrival_time | |
FROM stop_times join stops on stops.stop_id = stop_times.stop_id | FROM stop_times join stops on stops.stop_id = stop_times.stop_id |
WHERE stop_times.trip_id = :tripID | WHERE stop_times.trip_id = :tripID |
" . ($stop_sequence != "" ? " AND stop_sequence > :stop_sequence " : "") . " ORDER BY stop_sequence"; | ' . ($stop_sequence != '' ? ' AND stop_sequence > :stop_sequence ' : '') . ' ORDER BY stop_sequence'; |
debug($query, "database"); | debug($query, 'database'); |
$query = $conn->prepare($query); | $query = $conn->prepare($query); |
if ($stop_sequence != "") | if ($stop_sequence != '') |
$query->bindParam(":stop_sequence", $stop_sequence); | $query->bindParam(':stop_sequence', $stop_sequence); |
$query->bindParam(":tripID", $tripID); | $query->bindParam(':tripID', $tripID); |
$query->execute(); | $query->execute(); |
if (!$query) { | if (!$query) { |
databaseError($conn->errorInfo()); | databaseError($conn->errorInfo()); |
return Array(); | return Array(); |
} | } |
return $query->fetchAll(); | return $query->fetchAll(); |
} | } |
<?php | <?php |
/* | /* |
* Copyright 2010,2011 Alexander Sadleir | * Copyright 2010,2011 Alexander Sadleir |
Licensed under the Apache License, Version 2.0 (the "License"); | Licensed under the Apache License, Version 2.0 (the "License"); |
you may not use this file except in compliance with the License. | you may not use this file except in compliance with the License. |
You may obtain a copy of the License at | You may obtain a copy of the License at |
http://www.apache.org/licenses/LICENSE-2.0 | http://www.apache.org/licenses/LICENSE-2.0 |
Unless required by applicable law or agreed to in writing, software | Unless required by applicable law or agreed to in writing, software |
distributed under the License is distributed on an "AS IS" BASIS, | distributed under the License is distributed on an "AS IS" BASIS, |
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
See the License for the specific language governing permissions and | See the License for the specific language governing permissions and |
limitations under the License. | limitations under the License. |
*/ | */ |
include ('include/common.inc.php'); | include ('include/common.inc.php'); |
include_header("bus.lambdacomplex.org", "index", false) | include_header("bus.lambdacomplex.org", "index", false) |
?> | ?> |
<div data-role="page"> | <div data-role="page"> |
<div data-role="content"> | <div data-role="content"> |
<div id="jqm-homeheader"> | <div id="jqm-homeheader"> |
<h1>busness time</h1><br><small>Canberra Bus Timetables and Trip Planner</small> | <h1>busness time</h1><br><small>Canberra Bus Timetables and Trip Planner</small> |
</div> | </div> |
<a name="maincontent" id="maincontent"></a> | <a name="maincontent" id="maincontent"></a> |
<a href="tripPlanner.php" data-role="button" data-icon="navigation">Launch Trip Planner...</a> | <a href="tripPlanner.php" data-role="button" data-icon="navigation">Launch Trip Planner...</a> |
<ul data-role="listview" data-inset="true" data-theme="c" data-dividertheme="b"> | <ul data-role="listview" data-inset="true" data-theme="c" data-dividertheme="b"> |
<li data-role="list-divider">Timetables - Stops</li> | <li data-role="list-divider">Timetables - Stops</li> |
<li><a href="stopList.php">Stops By Name</a></li> | <li><a href="stopList.php">Stops By Name</a></li> |
<li><a href="stopList.php?bysuburbs=yes">Stops By Suburb</a></li> | <li><a href="stopList.php?bysuburbs=yes">Stops By Suburb</a></li> |
<li><a class="nearby" href="stopList.php?nearby=yes">Nearby Stops</a></li> | <li><a class="nearby" href="stopList.php?nearby=yes">Nearby Stops</a></li> |
</ul> | </ul> |
<ul data-role="listview" data-inset="true" data-theme="c" data-dividertheme="b"> | <ul data-role="listview" data-inset="true" data-theme="c" data-dividertheme="b"> |
<li data-role="list-divider">Timetables - Routes</li> | <li data-role="list-divider">Timetables - Routes</li> |
<li><a href="routeList.php">Routes By Final Destination</a></li> | <li><a href="routeList.php">Routes By Final Destination</a></li> |
<li><a href="routeList.php?bynumber=yes">Routes By Number</a></li> | <li><a href="routeList.php?bynumber=yes">Routes By Number</a></li> |
<li><a href="routeList.php?bysuburbs=yes">Routes By Suburb</a></li> | <li><a href="routeList.php?bysuburbs=yes">Routes By Suburb</a></li> |
<li><a class="nearby" href="routeList.php?nearby=yes">Nearby Routes</a></li> | <li><a class="nearby" href="routeList.php?nearby=yes">Nearby Routes</a></li> |
</ul> | </ul> |
<a href="labs/index.php" data-role="button" data-icon="beaker">Busness R&D</a> | <!--<a href="labs/index.php" data-role="button" data-icon="beaker">Busness R&D</a>--> |
<a href="myway/index.php" data-role="button">MyWay Balance and Timeliness Survey Results</a> | <a href="myway/index.php" data-role="button">MyWay Balance and Timeliness Survey Results</a> |
<?php | <?php |
include_footer(true) | include_footer(true) |
?> | ?> |
// Copyright 2006 Google Inc. | |
// | |
// Licensed under the Apache License, Version 2.0 (the "License"); | |
// you may not use this file except in compliance with the License. | |
// You may obtain a copy of the License at | |
// | |
// http://www.apache.org/licenses/LICENSE-2.0 | |
// | |
// Unless required by applicable law or agreed to in writing, software | |
// distributed under the License is distributed on an "AS IS" BASIS, | |
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
// See the License for the specific language governing permissions and | |
// limitations under the License. | |
// Known Issues: | |
// | |
// * Patterns only support repeat. | |
// * Radial gradient are not implemented. The VML version of these look very | |
// different from the canvas one. | |
// * Clipping paths are not implemented. | |
// * Coordsize. The width and height attribute have higher priority than the | |
// width and height style values which isn't correct. | |
// * Painting mode isn't implemented. | |
// * Canvas width/height should is using content-box by default. IE in | |
// Quirks mode will draw the canvas using border-box. Either change your | |
// doctype to HTML5 | |
// (http://www.whatwg.org/specs/web-apps/current-work/#the-doctype) | |
// or use Box Sizing Behavior from WebFX | |
// (http://webfx.eae.net/dhtml/boxsizing/boxsizing.html) | |
// * Non uniform scaling does not correctly scale strokes. | |
// * Filling very large shapes (above 5000 points) is buggy. | |
// * Optimize. There is always room for speed improvements. | |
// Only add this code if we do not already have a canvas implementation | |
if (!document.createElement('canvas').getContext) { | |
(function() { | |
// alias some functions to make (compiled) code shorter | |
var m = Math; | |
var mr = m.round; | |
var ms = m.sin; | |
var mc = m.cos; | |
var abs = m.abs; | |
var sqrt = m.sqrt; | |
// this is used for sub pixel precision | |
var Z = 10; | |
var Z2 = Z / 2; | |
/** | |
* This funtion is assigned to the <canvas> elements as element.getContext(). | |
* @this {HTMLElement} | |
* @return {CanvasRenderingContext2D_} | |
*/ | |
function getContext() { | |
return this.context_ || | |
(this.context_ = new CanvasRenderingContext2D_(this)); | |
} | |
var slice = Array.prototype.slice; | |
/** | |
* Binds a function to an object. The returned function will always use the | |
* passed in {@code obj} as {@code this}. | |
* | |
* Example: | |
* | |
* g = bind(f, obj, a, b) | |
* g(c, d) // will do f.call(obj, a, b, c, d) | |
* | |
* @param {Function} f The function to bind the object to | |
* @param {Object} obj The object that should act as this when the function | |
* is called | |
* @param {*} var_args Rest arguments that will be used as the initial | |
* arguments when the function is called | |
* @return {Function} A new function that has bound this | |
*/ | |
function bind(f, obj, var_args) { | |
var a = slice.call(arguments, 2); | |
return function() { | |
return f.apply(obj, a.concat(slice.call(arguments))); | |
}; | |
} | |
function encodeHtmlAttribute(s) { | |
return String(s).replace(/&/g, '&').replace(/"/g, '"'); | |
} | |
function addNamespacesAndStylesheet(doc) { | |
// create xmlns | |
if (!doc.namespaces['g_vml_']) { | |
doc.namespaces.add('g_vml_', 'urn:schemas-microsoft-com:vml', | |
'#default#VML'); | |
} | |
if (!doc.namespaces['g_o_']) { | |
doc.namespaces.add('g_o_', 'urn:schemas-microsoft-com:office:office', | |
'#default#VML'); | |
} | |
// Setup default CSS. Only add one style sheet per document | |
if (!doc.styleSheets['ex_canvas_']) { | |
var ss = doc.createStyleSheet(); | |
ss.owningElement.id = 'ex_canvas_'; | |
ss.cssText = 'canvas{display:inline-block;overflow:hidden;' + | |
// default size is 300x150 in Gecko and Opera | |
'text-align:left;width:300px;height:150px}'; | |
} | |
} | |
// Add namespaces and stylesheet at startup. | |
addNamespacesAndStylesheet(document); | |
var G_vmlCanvasManager_ = { | |
init: function(opt_doc) { | |
if (/MSIE/.test(navigator.userAgent) && !window.opera) { | |
var doc = opt_doc || document; | |
// Create a dummy element so that IE will allow canvas elements to be | |
// recognized. | |
doc.createElement('canvas'); | |
doc.attachEvent('onreadystatechange', bind(this.init_, this, doc)); | |
} | |
}, | |
init_: function(doc) { | |
// find all canvas elements | |
var els = doc.getElementsByTagName('canvas'); | |
for (var i = 0; i < els.length; i++) { | |
this.initElement(els[i]); | |
} | |
}, | |
/** | |
* Public initializes a canvas element so that it can be used as canvas | |
* element from now on. This is called automatically before the page is | |
* loaded but if you are creating elements using createElement you need to | |
* make sure this is called on the element. | |
* @param {HTMLElement} el The canvas element to initialize. | |
* @return {HTMLElement} the element that was created. | |
*/ | |
initElement: function(el) { | |
if (!el.getContext) { | |
el.getContext = getContext; | |
// Add namespaces and stylesheet to document of the element. | |
addNamespacesAndStylesheet(el.ownerDocument); | |
// Remove fallback content. There is no way to hide text nodes so we | |
// just remove all childNodes. We could hide all elements and remove | |
// text nodes but who really cares about the fallback content. | |
el.innerHTML = ''; | |
// do not use inline function because that will leak memory | |
el.attachEvent('onpropertychange', onPropertyChange); | |
el.attachEvent('onresize', onResize); | |
var attrs = el.attributes; | |
if (attrs.width && attrs.width.specified) { | |
// TODO: use runtimeStyle and coordsize | |
// el.getContext().setWidth_(attrs.width.nodeValue); | |
el.style.width = attrs.width.nodeValue + 'px'; | |
} else { | |
el.width = el.clientWidth; | |
} | |
if (attrs.height && attrs.height.specified) { | |
// TODO: use runtimeStyle and coordsize | |
// el.getContext().setHeight_(attrs.height.nodeValue); | |
el.style.height = attrs.height.nodeValue + 'px'; | |
} else { | |
el.height = el.clientHeight; | |
} | |
//el.getContext().setCoordsize_() | |
} | |
return el; | |
} | |
}; | |
function onPropertyChange(e) { | |
var el = e.srcElement; | |
switch (e.propertyName) { | |
case 'width': | |
el.getContext().clearRect(); | |
el.style.width = el.attributes.width.nodeValue + 'px'; | |
// In IE8 this does not trigger onresize. | |
el.firstChild.style.width = el.clientWidth + 'px'; | |
break; | |
case 'height': | |
el.getContext().clearRect(); | |
el.style.height = el.attributes.height.nodeValue + 'px'; | |
el.firstChild.style.height = el.clientHeight + 'px'; | |
break; | |
} | |
} | |
function onResize(e) { | |
var el = e.srcElement; | |
if (el.firstChild) { | |
el.firstChild.style.width = el.clientWidth + 'px'; | |
el.firstChild.style.height = el.clientHeight + 'px'; | |
} | |
} | |
G_vmlCanvasManager_.init(); | |
// precompute "00" to "FF" | |
var decToHex = []; | |
for (var i = 0; i < 16; i++) { | |
for (var j = 0; j < 16; j++) { | |
decToHex[i * 16 + j] = i.toString(16) + j.toString(16); | |
} | |
} | |
function createMatrixIdentity() { | |
return [ | |
[1, 0, 0], | |
[0, 1, 0], | |
[0, 0, 1] | |
]; | |
} | |
function matrixMultiply(m1, m2) { | |
var result = createMatrixIdentity(); | |
for (var x = 0; x < 3; x++) { | |
for (var y = 0; y < 3; y++) { | |
var sum = 0; | |
for (var z = 0; z < 3; z++) { | |
sum += m1[x][z] * m2[z][y]; | |
} | |
result[x][y] = sum; | |
} | |
} | |
return result; | |
} | |
function copyState(o1, o2) { | |
o2.fillStyle = o1.fillStyle; | |
o2.lineCap = o1.lineCap; | |
o2.lineJoin = o1.lineJoin; | |
o2.lineWidth = o1.lineWidth; | |
o2.miterLimit = o1.miterLimit; | |
o2.shadowBlur = o1.shadowBlur; | |
o2.shadowColor = o1.shadowColor; | |
o2.shadowOffsetX = o1.shadowOffsetX; | |
o2.shadowOffsetY = o1.shadowOffsetY; | |
o2.strokeStyle = o1.strokeStyle; | |
o2.globalAlpha = o1.globalAlpha; | |
o2.font = o1.font; | |
o2.textAlign = o1.textAlign; | |
o2.textBaseline = o1.textBaseline; | |
o2.arcScaleX_ = o1.arcScaleX_; | |
o2.arcScaleY_ = o1.arcScaleY_; | |
o2.lineScale_ = o1.lineScale_; | |
} | |
var colorData = { | |
aliceblue: '#F0F8FF', | |
antiquewhite: '#FAEBD7', | |
aquamarine: '#7FFFD4', | |
azure: '#F0FFFF', | |
beige: '#F5F5DC', | |
bisque: '#FFE4C4', | |
black: '#000000', | |
blanchedalmond: '#FFEBCD', | |
blueviolet: '#8A2BE2', | |
brown: '#A52A2A', | |
burlywood: '#DEB887', | |
cadetblue: '#5F9EA0', | |
chartreuse: '#7FFF00', | |
chocolate: '#D2691E', | |
coral: '#FF7F50', | |
cornflowerblue: '#6495ED', | |
cornsilk: '#FFF8DC', | |
crimson: '#DC143C', | |
cyan: '#00FFFF', | |
darkblue: '#00008B', | |
darkcyan: '#008B8B', | |
darkgoldenrod: '#B8860B', | |
darkgray: '#A9A9A9', | |
darkgreen: '#006400', | |
darkgrey: '#A9A9A9', | |
darkkhaki: '#BDB76B', | |
darkmagenta: '#8B008B', | |
darkolivegreen: '#556B2F', | |
darkorange: '#FF8C00', | |
darkorchid: '#9932CC', | |
darkred: '#8B0000', | |
darksalmon: '#E9967A', | |
darkseagreen: '#8FBC8F', | |
darkslateblue: '#483D8B', | |
darkslategray: '#2F4F4F', | |
darkslategrey: '#2F4F4F', | |
darkturquoise: '#00CED1', | |
darkviolet: '#9400D3', | |
deeppink: '#FF1493', | |
deepskyblue: '#00BFFF', | |
dimgray: '#696969', | |
dimgrey: '#696969', | |
dodgerblue: '#1E90FF', | |
firebrick: '#B22222', | |
floralwhite: '#FFFAF0', | |
forestgreen: '#228B22', | |
gainsboro: '#DCDCDC', | |
ghostwhite: '#F8F8FF', | |
gold: '#FFD700', | |
goldenrod: '#DAA520', | |
grey: '#808080', | |
greenyellow: '#ADFF2F', | |
honeydew: '#F0FFF0', | |
hotpink: '#FF69B4', | |
indianred: '#CD5C5C', | |
indigo: '#4B0082', | |
ivory: '#FFFFF0', | |
khaki: '#F0E68C', | |
lavender: '#E6E6FA', | |
lavenderblush: '#FFF0F5', | |
lawngreen: '#7CFC00', | |
lemonchiffon: '#FFFACD', | |
lightblue: '#ADD8E6', | |
lightcoral: '#F08080', | |
lightcyan: '#E0FFFF', | |
lightgoldenrodyellow: '#FAFAD2', | |
lightgreen: '#90EE90', | |
lightgrey: '#D3D3D3', | |
lightpink: '#FFB6C1', | |
lightsalmon: '#FFA07A', | |
lightseagreen: '#20B2AA', | |
lightskyblue: '#87CEFA', | |
lightslategray: '#778899', | |
lightslategrey: '#778899', | |
lightsteelblue: '#B0C4DE', | |
lightyellow: '#FFFFE0', | |
limegreen: '#32CD32', | |
linen: '#FAF0E6', | |
magenta: '#FF00FF', | |
mediumaquamarine: '#66CDAA', | |
mediumblue: '#0000CD', | |
mediumorchid: '#BA55D3', | |
mediumpurple: '#9370DB', | |
mediumseagreen: '#3CB371', | |
mediumslateblue: '#7B68EE', | |
mediumspringgreen: '#00FA9A', | |
mediumturquoise: '#48D1CC', | |
mediumvioletred: '#C71585', | |
midnightblue: '#191970', | |
mintcream: '#F5FFFA', | |
mistyrose: '#FFE4E1', | |
moccasin: '#FFE4B5', | |
navajowhite: '#FFDEAD', | |
oldlace: '#FDF5E6', | |
olivedrab: '#6B8E23', | |
orange: '#FFA500', | |
orangered: '#FF4500', | |
orchid: '#DA70D6', | |
palegoldenrod: '#EEE8AA', | |
palegreen: '#98FB98', | |
paleturquoise: '#AFEEEE', | |
palevioletred: '#DB7093', | |
papayawhip: '#FFEFD5', | |
peachpuff: '#FFDAB9', | |
peru: '#CD853F', | |
pink: '#FFC0CB', | |
plum: '#DDA0DD', | |
powderblue: '#B0E0E6', | |
rosybrown: '#BC8F8F', | |
royalblue: '#4169E1', | |
saddlebrown: '#8B4513', | |
salmon: '#FA8072', | |
sandybrown: '#F4A460', | |
seagreen: '#2E8B57', | |
seashell: '#FFF5EE', | |
sienna: '#A0522D', | |
skyblue: '#87CEEB', | |
slateblue: '#6A5ACD', | |
slategray: '#708090', | |
slategrey: '#708090', | |
snow: '#FFFAFA', | |
springgreen: '#00FF7F', | |
steelblue: '#4682B4', | |
tan: '#D2B48C', | |
thistle: '#D8BFD8', | |
tomato: '#FF6347', | |
turquoise: '#40E0D0', | |
violet: '#EE82EE', | |
wheat: '#F5DEB3', | |
whitesmoke: '#F5F5F5', | |
yellowgreen: '#9ACD32' | |
}; | |
function getRgbHslContent(styleString) { | |
var start = styleString.indexOf('(', 3); | |
var end = styleString.indexOf(')', start + 1); | |
var parts = styleString.substring(start + 1, end).split(','); | |
// add alpha if needed | |
if (parts.length == 4 && styleString.substr(3, 1) == 'a') { | |
alpha = Number(parts[3]); | |
} else { | |
parts[3] = 1; | |
} | |
return parts; | |
} | |
function percent(s) { | |
return parseFloat(s) / 100; | |
} | |
function clamp(v, min, max) { | |
return Math.min(max, Math.max(min, v)); | |
} | |
function hslToRgb(parts){ | |
var r, g, b; | |
h = parseFloat(parts[0]) / 360 % 360; | |
if (h < 0) | |
h++; | |
s = clamp(percent(parts[1]), 0, 1); | |
l = clamp(percent(parts[2]), 0, 1); | |
if (s == 0) { | |
r = g = b = l; // achromatic | |
} else { | |
var q = l < 0.5 ? l * (1 + s) : l + s - l * s; | |
var p = 2 * l - q; | |
r = hueToRgb(p, q, h + 1 / 3); | |
g = hueToRgb(p, q, h); | |
b = hueToRgb(p, q, h - 1 / 3); | |
} | |
return '#' + decToHex[Math.floor(r * 255)] + | |
decToHex[Math.floor(g * 255)] + | |
decToHex[Math.floor(b * 255)]; | |
} | |
function hueToRgb(m1, m2, h) { | |
if (h < 0) | |
h++; | |
if (h > 1) | |
h--; | |
if (6 * h < 1) | |
return m1 + (m2 - m1) * 6 * h; | |
else if (2 * h < 1) | |
return m2; | |
else if (3 * h < 2) | |
return m1 + (m2 - m1) * (2 / 3 - h) * 6; | |
else | |
return m1; | |
} | |
function processStyle(styleString) { | |
var str, alpha = 1; | |
styleString = String(styleString); | |
if (styleString.charAt(0) == '#') { | |
str = styleString; | |
} else if (/^rgb/.test(styleString)) { | |
var parts = getRgbHslContent(styleString); | |
var str = '#', n; | |
for (var i = 0; i < 3; i++) { | |
if (parts[i].indexOf('%') != -1) { | |
n = Math.floor(percent(parts[i]) * 255); | |
} else { | |
n = Number(parts[i]); | |
} | |
str += decToHex[clamp(n, 0, 255)]; | |
} | |
alpha = parts[3]; | |
} else if (/^hsl/.test(styleString)) { | |
var parts = getRgbHslContent(styleString); | |
str = hslToRgb(parts); | |
alpha = parts[3]; | |
} else { | |
str = colorData[styleString] || styleString; | |
} | |
return {color: str, alpha: alpha}; | |
} | |
var DEFAULT_STYLE = { | |
style: 'normal', | |
variant: 'normal', | |
weight: 'normal', | |
size: 10, | |
family: 'sans-serif' | |
}; | |
// Internal text style cache | |
var fontStyleCache = {}; | |
function processFontStyle(styleString) { | |
if (fontStyleCache[styleString]) { | |
return fontStyleCache[styleString]; | |
} | |
var el = document.createElement('div'); | |
var style = el.style; | |
try { | |
style.font = styleString; | |
} catch (ex) { | |
// Ignore failures to set to invalid font. | |
} | |
return fontStyleCache[styleString] = { | |
style: style.fontStyle || DEFAULT_STYLE.style, | |
variant: style.fontVariant || DEFAULT_STYLE.variant, | |
weight: style.fontWeight || DEFAULT_STYLE.weight, | |
size: style.fontSize || DEFAULT_STYLE.size, | |
family: style.fontFamily || DEFAULT_STYLE.family | |
}; | |
} | |
function getComputedStyle(style, element) { | |
var computedStyle = {}; | |
for (var p in style) { | |
computedStyle[p] = style[p]; | |
} | |
// Compute the size | |
var canvasFontSize = parseFloat(element.currentStyle.fontSize), | |
fontSize = parseFloat(style.size); | |
if (typeof style.size == 'number') { | |
computedStyle.size = style.size; | |
} else if (style.size.indexOf('px') != -1) { | |
computedStyle.size = fontSize; | |
} else if (style.size.indexOf('em') != -1) { | |
computedStyle.size = canvasFontSize * fontSize; | |
} else if(style.size.indexOf('%') != -1) { | |
computedStyle.size = (canvasFontSize / 100) * fontSize; | |
} else if (style.size.indexOf('pt') != -1) { | |
computedStyle.size = fontSize / .75; | |
} else { | |
computedStyle.size = canvasFontSize; | |
} | |
// Different scaling between normal text and VML text. This was found using | |
// trial and error to get the same size as non VML text. | |
computedStyle.size *= 0.981; | |
return computedStyle; | |
} | |
function buildStyle(style) { | |
return style.style + ' ' + style.variant + ' ' + style.weight + ' ' + | |
style.size + 'px ' + style.family; | |
} | |
function processLineCap(lineCap) { | |
switch (lineCap) { | |
case 'butt': | |
return 'flat'; | |
case 'round': | |
return 'round'; | |
case 'square': | |
default: | |
return 'square'; | |
} | |
} | |
/** | |
* This class implements CanvasRenderingContext2D interface as described by | |
* the WHATWG. | |
* @param {HTMLElement} surfaceElement The element that the 2D context should | |
* be associated with | |
*/ | |
function CanvasRenderingContext2D_(surfaceElement) { | |
this.m_ = createMatrixIdentity(); | |
this.mStack_ = []; | |
this.aStack_ = []; | |
this.currentPath_ = []; | |
// Canvas context properties | |
this.strokeStyle = '#000'; | |
this.fillStyle = '#000'; | |
this.lineWidth = 1; | |
this.lineJoin = 'miter'; | |
this.lineCap = 'butt'; | |
this.miterLimit = Z * 1; | |
this.globalAlpha = 1; | |
this.font = '10px sans-serif'; | |
this.textAlign = 'left'; | |
this.textBaseline = 'alphabetic'; | |
this.canvas = surfaceElement; | |
var el = surfaceElement.ownerDocument.createElement('div'); | |
el.style.width = surfaceElement.clientWidth + 'px'; | |
el.style.height = surfaceElement.clientHeight + 'px'; | |
el.style.overflow = 'hidden'; | |
el.style.position = 'absolute'; | |
surfaceElement.appendChild(el); | |
this.element_ = el; | |
this.arcScaleX_ = 1; | |
this.arcScaleY_ = 1; | |
this.lineScale_ = 1; | |
} | |
var contextPrototype = CanvasRenderingContext2D_.prototype; | |
contextPrototype.clearRect = function() { | |
if (this.textMeasureEl_) { | |
this.textMeasureEl_.removeNode(true); | |
this.textMeasureEl_ = null; | |
} | |
this.element_.innerHTML = ''; | |
}; | |
contextPrototype.beginPath = function() { | |
// TODO: Branch current matrix so that save/restore has no effect | |
// as per safari docs. | |
this.currentPath_ = []; | |
}; | |
contextPrototype.moveTo = function(aX, aY) { | |
var p = this.getCoords_(aX, aY); | |
this.currentPath_.push({type: 'moveTo', x: p.x, y: p.y}); | |
this.currentX_ = p.x; | |
this.currentY_ = p.y; | |
}; | |
contextPrototype.lineTo = function(aX, aY) { | |
var p = this.getCoords_(aX, aY); | |
this.currentPath_.push({type: 'lineTo', x: p.x, y: p.y}); | |
this.currentX_ = p.x; | |
this.currentY_ = p.y; | |
}; | |
contextPrototype.bezierCurveTo = function(aCP1x, aCP1y, | |
aCP2x, aCP2y, | |
aX, aY) { | |
var p = this.getCoords_(aX, aY); | |
var cp1 = this.getCoords_(aCP1x, aCP1y); | |
var cp2 = this.getCoords_(aCP2x, aCP2y); | |
bezierCurveTo(this, cp1, cp2, p); | |
}; | |
// Helper function that takes the already fixed cordinates. | |
function bezierCurveTo(self, cp1, cp2, p) { | |
self.currentPath_.push({ | |
type: 'bezierCurveTo', | |
cp1x: cp1.x, | |
cp1y: cp1.y, | |
cp2x: cp2.x, | |
cp2y: cp2.y, | |
x: p.x, | |
y: p.y | |
}); | |
self.currentX_ = p.x; | |
self.currentY_ = p.y; | |
} | |
contextPrototype.quadraticCurveTo = function(aCPx, aCPy, aX, aY) { | |
// the following is lifted almost directly from | |
// http://developer.mozilla.org/en/docs/Canvas_tutorial:Drawing_shapes | |
var cp = this.getCoords_(aCPx, aCPy); | |
var p = this.getCoords_(aX, aY); | |
var cp1 = { | |
x: this.currentX_ + 2.0 / 3.0 * (cp.x - this.currentX_), | |
y: this.currentY_ + 2.0 / 3.0 * (cp.y - this.currentY_) | |
}; | |
var cp2 = { | |
x: cp1.x + (p.x - this.currentX_) / 3.0, | |
y: cp1.y + (p.y - this.currentY_) / 3.0 | |
}; | |
bezierCurveTo(this, cp1, cp2, p); | |
}; | |
contextPrototype.arc = function(aX, aY, aRadius, | |
aStartAngle, aEndAngle, aClockwise) { | |
aRadius *= Z; | |
var arcType = aClockwise ? 'at' : 'wa'; | |
var xStart = aX + mc(aStartAngle) * aRadius - Z2; | |
var yStart = aY + ms(aStartAngle) * aRadius - Z2; | |
var xEnd = aX + mc(aEndAngle) * aRadius - Z2; | |
var yEnd = aY + ms(aEndAngle) * aRadius - Z2; | |
// IE won't render arches drawn counter clockwise if xStart == xEnd. | |
if (xStart == xEnd && !aClockwise) { | |
xStart += 0.125; // Offset xStart by 1/80 of a pixel. Use something | |
// that can be represented in binary | |
} | |
var p = this.getCoords_(aX, aY); | |
var pStart = this.getCoords_(xStart, yStart); | |
var pEnd = this.getCoords_(xEnd, yEnd); | |
this.currentPath_.push({type: arcType, | |
x: p.x, | |
y: p.y, | |
radius: aRadius, | |
xStart: pStart.x, | |
yStart: pStart.y, | |
xEnd: pEnd.x, | |
yEnd: pEnd.y}); | |
}; | |
contextPrototype.rect = function(aX, aY, aWidth, aHeight) { | |
this.moveTo(aX, aY); | |
this.lineTo(aX + aWidth, aY); | |
this.lineTo(aX + aWidth, aY + aHeight); | |
this.lineTo(aX, aY + aHeight); | |
this.closePath(); | |
}; | |
contextPrototype.strokeRect = function(aX, aY, aWidth, aHeight) { | |
var oldPath = this.currentPath_; | |
this.beginPath(); | |
this.moveTo(aX, aY); | |
this.lineTo(aX + aWidth, aY); | |
this.lineTo(aX + aWidth, aY + aHeight); | |
this.lineTo(aX, aY + aHeight); | |
this.closePath(); | |
this.stroke(); | |
this.currentPath_ = oldPath; | |
}; | |
contextPrototype.fillRect = function(aX, aY, aWidth, aHeight) { | |
var oldPath = this.currentPath_; | |
this.beginPath(); | |
this.moveTo(aX, aY); | |
this.lineTo(aX + aWidth, aY); | |
this.lineTo(aX + aWidth, aY + aHeight); | |
this.lineTo(aX, aY + aHeight); | |
this.closePath(); | |
this.fill(); | |
this.currentPath_ = oldPath; | |
}; | |
contextPrototype.createLinearGradient = function(aX0, aY0, aX1, aY1) { | |
var gradient = new CanvasGradient_('gradient'); | |
gradient.x0_ = aX0; | |
gradient.y0_ = aY0; | |
gradient.x1_ = aX1; | |
gradient.y1_ = aY1; | |
return gradient; | |
}; | |
contextPrototype.createRadialGradient = function(aX0, aY0, aR0, | |
aX1, aY1, aR1) { | |
var gradient = new CanvasGradient_('gradientradial'); | |
gradient.x0_ = aX0; | |
gradient.y0_ = aY0; | |
gradient.r0_ = aR0; | |
gradient.x1_ = aX1; | |
gradient.y1_ = aY1; | |
gradient.r1_ = aR1; | |
return gradient; | |
}; | |
contextPrototype.drawImage = function(image, var_args) { | |
var dx, dy, dw, dh, sx, sy, sw, sh; | |
// to find the original width we overide the width and height | |
var oldRuntimeWidth = image.runtimeStyle.width; | |
var oldRuntimeHeight = image.runtimeStyle.height; | |
image.runtimeStyle.width = 'auto'; | |
image.runtimeStyle.height = 'auto'; | |
// get the original size | |
var w = image.width; | |
var h = image.height; | |
// and remove overides | |
image.runtimeStyle.width = oldRuntimeWidth; | |
image.runtimeStyle.height = oldRuntimeHeight; | |
if (arguments.length == 3) { | |
dx = arguments[1]; | |
dy = arguments[2]; | |
sx = sy = 0; | |
sw = dw = w; | |
sh = dh = h; | |
} else if (arguments.length == 5) { | |
dx = arguments[1]; | |
dy = arguments[2]; | |
dw = arguments[3]; | |
dh = arguments[4]; | |
sx = sy = 0; | |
sw = w; | |
sh = h; | |
} else if (arguments.length == 9) { | |
sx = arguments[1]; | |
sy = arguments[2]; | |
sw = arguments[3]; | |
sh = arguments[4]; | |
dx = arguments[5]; | |
dy = arguments[6]; | |
dw = arguments[7]; | |
dh = arguments[8]; | |
} else { | |
throw Error('Invalid number of arguments'); | |
} | |
var d = this.getCoords_(dx, dy); | |
var w2 = sw / 2; | |
var h2 = sh / 2; | |
var vmlStr = []; | |
var W = 10; | |
var H = 10; | |
// For some reason that I've now forgotten, using divs didn't work | |
vmlStr.push(' <g_vml_:group', | |
' coordsize="', Z * W, ',', Z * H, '"', | |
' coordorigin="0,0"' , | |
' style="width:', W, 'px;height:', H, 'px;position:absolute;'); | |
// If filters are necessary (rotation exists), create them | |
// filters are bog-slow, so only create them if abbsolutely necessary | |
// The following check doesn't account for skews (which don't exist | |
// in the canvas spec (yet) anyway. | |
if (this.m_[0][0] != 1 || this.m_[0][1] || | |
this.m_[1][1] != 1 || this.m_[1][0]) { | |
var filter = []; | |
// Note the 12/21 reversal | |
filter.push('M11=', this.m_[0][0], ',', | |
'M12=', this.m_[1][0], ',', | |
'M21=', this.m_[0][1], ',', | |
'M22=', this.m_[1][1], ',', | |
'Dx=', mr(d.x / Z), ',', | |
'Dy=', mr(d.y / Z), ''); | |
// Bounding box calculation (need to minimize displayed area so that | |
// filters don't waste time on unused pixels. | |
var max = d; | |
var c2 = this.getCoords_(dx + dw, dy); | |
var c3 = this.getCoords_(dx, dy + dh); | |
var c4 = this.getCoords_(dx + dw, dy + dh); | |
max.x = m.max(max.x, c2.x, c3.x, c4.x); | |
max.y = m.max(max.y, c2.y, c3.y, c4.y); | |
vmlStr.push('padding:0 ', mr(max.x / Z), 'px ', mr(max.y / Z), | |
'px 0;filter:progid:DXImageTransform.Microsoft.Matrix(', | |
filter.join(''), ", sizingmethod='clip');"); | |
} else { | |
vmlStr.push('top:', mr(d.y / Z), 'px;left:', mr(d.x / Z), 'px;'); | |
} | |
vmlStr.push(' ">' , | |
'<g_vml_:image src="', image.src, '"', | |
' style="width:', Z * dw, 'px;', | |
' height:', Z * dh, 'px"', | |
' cropleft="', sx / w, '"', | |
' croptop="', sy / h, '"', | |
' cropright="', (w - sx - sw) / w, '"', | |
' cropbottom="', (h - sy - sh) / h, '"', | |
' />', | |
'</g_vml_:group>'); | |
this.element_.insertAdjacentHTML('BeforeEnd', vmlStr.join('')); | |
}; | |
contextPrototype.stroke = function(aFill) { | |
var W = 10; | |
var H = 10; | |
// Divide the shape into chunks if it's too long because IE has a limit | |
// somewhere for how long a VML shape can be. This simple division does | |
// not work with fills, only strokes, unfortunately. | |
var chunkSize = 5000; | |
var min = {x: null, y: null}; | |
var max = {x: null, y: null}; | |
for (var j = 0; j < this.currentPath_.length; j += chunkSize) { | |
var lineStr = []; | |
var lineOpen = false; | |
lineStr.push('<g_vml_:shape', | |
' filled="', !!aFill, '"', | |
' style="position:absolute;width:', W, 'px;height:', H, 'px;"', | |
' coordorigin="0,0"', | |
' coordsize="', Z * W, ',', Z * H, '"', | |
' stroked="', !aFill, '"', | |
' path="'); | |
var newSeq = false; | |
for (var i = j; i < Math.min(j + chunkSize, this.currentPath_.length); i++) { | |
if (i % chunkSize == 0 && i > 0) { // move into position for next chunk | |
lineStr.push(' m ', mr(this.currentPath_[i-1].x), ',', mr(this.currentPath_[i-1].y)); | |
} | |
var p = this.currentPath_[i]; | |
var c; | |
switch (p.type) { | |
case 'moveTo': | |
c = p; | |
lineStr.push(' m ', mr(p.x), ',', mr(p.y)); | |
break; | |
case 'lineTo': | |
lineStr.push(' l ', mr(p.x), ',', mr(p.y)); | |
break; | |
case 'close': | |
lineStr.push(' x '); | |
p = null; | |
break; | |
case 'bezierCurveTo': | |
lineStr.push(' c ', | |
mr(p.cp1x), ',', mr(p.cp1y), ',', | |
mr(p.cp2x), ',', mr(p.cp2y), ',', | |
mr(p.x), ',', mr(p.y)); | |
break; | |
case 'at': | |
case 'wa': | |
lineStr.push(' ', p.type, ' ', | |
mr(p.x - this.arcScaleX_ * p.radius), ',', | |
mr(p.y - this.arcScaleY_ * p.radius), ' ', | |
mr(p.x + this.arcScaleX_ * p.radius), ',', | |
mr(p.y + this.arcScaleY_ * p.radius), ' ', | |
mr(p.xStart), ',', mr(p.yStart), ' ', | |
mr(p.xEnd), ',', mr(p.yEnd)); | |
break; | |
} | |
// TODO: Following is broken for curves due to | |
// move to proper paths. | |
// Figure out dimensions so we can do gradient fills | |
// properly | |
if (p) { | |
if (min.x == null || p.x < min.x) { | |
min.x = p.x; | |
} | |
if (max.x == null || p.x > max.x) { | |
max.x = p.x; | |
} | |
if (min.y == null || p.y < min.y) { | |
min.y = p.y; | |
} | |
if (max.y == null || p.y > max.y) { | |
max.y = p.y; | |
} | |
} | |
} | |
lineStr.push(' ">'); | |
if (!aFill) { | |
appendStroke(this, lineStr); | |
} else { | |
appendFill(this, lineStr, min, max); | |
} | |
lineStr.push('</g_vml_:shape>'); | |
this.element_.insertAdjacentHTML('beforeEnd', lineStr.join('')); | |
} | |
}; | |
function appendStroke(ctx, lineStr) { | |
var a = processStyle(ctx.strokeStyle); | |
var color = a.color; | |
var opacity = a.alpha * ctx.globalAlpha; | |
var lineWidth = ctx.lineScale_ * ctx.lineWidth; | |
// VML cannot correctly render a line if the width is less than 1px. | |
// In that case, we dilute the color to make the line look thinner. | |
if (lineWidth < 1) { | |
opacity *= lineWidth; | |
} | |
lineStr.push( | |
'<g_vml_:stroke', | |
' opacity="', opacity, '"', | |
' joinstyle="', ctx.lineJoin, '"', | |
' miterlimit="', ctx.miterLimit, '"', | |
' endcap="', processLineCap(ctx.lineCap), '"', | |
' weight="', lineWidth, 'px"', | |
' color="', color, '" />' | |
); | |
} | |
function appendFill(ctx, lineStr, min, max) { | |
var fillStyle = ctx.fillStyle; | |
var arcScaleX = ctx.arcScaleX_; | |
var arcScaleY = ctx.arcScaleY_; | |
var width = max.x - min.x; | |
var height = max.y - min.y; | |
if (fillStyle instanceof CanvasGradient_) { | |
// TODO: Gradients transformed with the transformation matrix. | |
var angle = 0; | |
var focus = {x: 0, y: 0}; | |
// additional offset | |
var shift = 0; | |
// scale factor for offset | |
var expansion = 1; | |
if (fillStyle.type_ == 'gradient') { | |
var x0 = fillStyle.x0_ / arcScaleX; | |
var y0 = fillStyle.y0_ / arcScaleY; | |
var x1 = fillStyle.x1_ / arcScaleX; | |
var y1 = fillStyle.y1_ / arcScaleY; | |
var p0 = ctx.getCoords_(x0, y0); | |
var p1 = ctx.getCoords_(x1, y1); | |
var dx = p1.x - p0.x; | |
var dy = p1.y - p0.y; | |
angle = Math.atan2(dx, dy) * 180 / Math.PI; | |
// The angle should be a non-negative number. | |
if (angle < 0) { | |
angle += 360; | |
} | |
// Very small angles produce an unexpected result because they are | |
// converted to a scientific notation string. | |
if (angle < 1e-6) { | |
angle = 0; | |
} | |
} else { | |
var p0 = ctx.getCoords_(fillStyle.x0_, fillStyle.y0_); | |
focus = { | |
x: (p0.x - min.x) / width, | |
y: (p0.y - min.y) / height | |
}; | |
width /= arcScaleX * Z; | |
height /= arcScaleY * Z; | |
var dimension = m.max(width, height); | |
shift = 2 * fillStyle.r0_ / dimension; | |
expansion = 2 * fillStyle.r1_ / dimension - shift; | |
} | |
// We need to sort the color stops in ascending order by offset, | |
// otherwise IE won't interpret it correctly. | |
var stops = fillStyle.colors_; | |
stops.sort(function(cs1, cs2) { | |
return cs1.offset - cs2.offset; | |
}); | |
var length = stops.length; | |
var color1 = stops[0].color; | |
var color2 = stops[length - 1].color; | |
var opacity1 = stops[0].alpha * ctx.globalAlpha; | |
var opacity2 = stops[length - 1].alpha * ctx.globalAlpha; | |
var colors = []; | |
for (var i = 0; i < length; i++) { | |
var stop = stops[i]; | |
colors.push(stop.offset * expansion + shift + ' ' + stop.color); | |
} | |
// When colors attribute is used, the meanings of opacity and o:opacity2 | |
// are reversed. | |
lineStr.push('<g_vml_:fill type="', fillStyle.type_, '"', | |
' method="none" focus="100%"', | |
' color="', color1, '"', | |
' color2="', color2, '"', | |
' colors="', colors.join(','), '"', | |
' opacity="', opacity2, '"', | |
' g_o_:opacity2="', opacity1, '"', | |
' angle="', angle, '"', | |
' focusposition="', focus.x, ',', focus.y, '" />'); | |
} else if (fillStyle instanceof CanvasPattern_) { | |
if (width && height) { | |
var deltaLeft = -min.x; | |
var deltaTop = -min.y; | |
lineStr.push('<g_vml_:fill', | |
' position="', | |
deltaLeft / width * arcScaleX * arcScaleX, ',', | |
deltaTop / height * arcScaleY * arcScaleY, '"', | |
' type="tile"', | |
// TODO: Figure out the correct size to fit the scale. | |
//' size="', w, 'px ', h, 'px"', | |
' src="', fillStyle.src_, '" />'); | |
} | |
} else { | |
var a = processStyle(ctx.fillStyle); | |
var color = a.color; | |
var opacity = a.alpha * ctx.globalAlpha; | |
lineStr.push('<g_vml_:fill color="', color, '" opacity="', opacity, | |
'" />'); | |
} | |
} | |
contextPrototype.fill = function() { | |
this.stroke(true); | |
}; | |
contextPrototype.closePath = function() { | |
this.currentPath_.push({type: 'close'}); | |
}; | |
/** | |
* @private | |
*/ | |
contextPrototype.getCoords_ = function(aX, aY) { | |
var m = this.m_; | |
return { | |
x: Z * (aX * m[0][0] + aY * m[1][0] + m[2][0]) - Z2, | |
y: Z * (aX * m[0][1] + aY * m[1][1] + m[2][1]) - Z2 | |
}; | |
}; | |
contextPrototype.save = function() { | |
var o = {}; | |
copyState(this, o); | |
this.aStack_.push(o); | |
this.mStack_.push(this.m_); | |
this.m_ = matrixMultiply(createMatrixIdentity(), this.m_); | |
}; | |
contextPrototype.restore = function() { | |
if (this.aStack_.length) { | |
copyState(this.aStack_.pop(), this); | |
this.m_ = this.mStack_.pop(); | |
} | |
}; | |
function matrixIsFinite(m) { | |
return isFinite(m[0][0]) && isFinite(m[0][1]) && | |
isFinite(m[1][0]) && isFinite(m[1][1]) && | |
isFinite(m[2][0]) && isFinite(m[2][1]); | |
} | |
function setM(ctx, m, updateLineScale) { | |
if (!matrixIsFinite(m)) { | |
return; | |
} | |
ctx.m_ = m; | |
if (updateLineScale) { | |
// Get the line scale. | |
// Determinant of this.m_ means how much the area is enlarged by the | |
// transformation. So its square root can be used as a scale factor | |
// for width. | |
var det = m[0][0] * m[1][1] - m[0][1] * m[1][0]; | |
ctx.lineScale_ = sqrt(abs(det)); | |
} | |
} | |
contextPrototype.translate = function(aX, aY) { | |
var m1 = [ | |
[1, 0, 0], | |
[0, 1, 0], | |
[aX, aY, 1] | |
]; | |
setM(this, matrixMultiply(m1, this.m_), false); | |
}; | |
contextPrototype.rotate = function(aRot) { | |
var c = mc(aRot); | |
var s = ms(aRot); | |
var m1 = [ | |
[c, s, 0], | |
[-s, c, 0], | |
[0, 0, 1] | |
]; | |
setM(this, matrixMultiply(m1, this.m_), false); | |
}; | |
contextPrototype.scale = function(aX, aY) { | |
this.arcScaleX_ *= aX; | |
this.arcScaleY_ *= aY; | |
var m1 = [ | |
[aX, 0, 0], | |
[0, aY, 0], | |
[0, 0, 1] | |
]; | |
setM(this, matrixMultiply(m1, this.m_), true); | |
}; | |
contextPrototype.transform = function(m11, m12, m21, m22, dx, dy) { | |
var m1 = [ | |
[m11, m12, 0], | |
[m21, m22, 0], | |
[dx, dy, 1] | |
]; | |
setM(this, matrixMultiply(m1, this.m_), true); | |
}; | |
contextPrototype.setTransform = function(m11, m12, m21, m22, dx, dy) { | |
var m = [ | |
[m11, m12, 0], | |
[m21, m22, 0], | |
[dx, dy, 1] | |
]; | |
setM(this, m, true); | |
}; | |
/** | |
* The text drawing function. | |
* The maxWidth argument isn't taken in account, since no browser supports | |
* it yet. | |
*/ | |
contextPrototype.drawText_ = function(text, x, y, maxWidth, stroke) { | |
var m = this.m_, | |
delta = 1000, | |
left = 0, | |
right = delta, | |
offset = {x: 0, y: 0}, | |
lineStr = []; | |
var fontStyle = getComputedStyle(processFontStyle(this.font), | |
this.element_); | |
var fontStyleString = buildStyle(fontStyle); | |
var elementStyle = this.element_.currentStyle; | |
var textAlign = this.textAlign.toLowerCase(); | |
switch (textAlign) { | |
case 'left': | |
case 'center': | |
case 'right': | |
break; | |
case 'end': | |
textAlign = elementStyle.direction == 'ltr' ? 'right' : 'left'; | |
break; | |
case 'start': | |
textAlign = elementStyle.direction == 'rtl' ? 'right' : 'left'; | |
break; | |
default: | |
textAlign = 'left'; | |
} | |
// 1.75 is an arbitrary number, as there is no info about the text baseline | |
switch (this.textBaseline) { | |
case 'hanging': | |
case 'top': | |
offset.y = fontStyle.size / 1.75; | |
break; | |
case 'middle': | |
break; | |
default: | |
case null: | |
case 'alphabetic': | |
case 'ideographic': | |
case 'bottom': | |
offset.y = -fontStyle.size / 2.25; | |
break; | |
} | |
switch(textAlign) { | |
case 'right': | |
left = delta; | |
right = 0.05; | |
break; | |
case 'center': | |
left = right = delta / 2; | |
break; | |
} | |
var d = this.getCoords_(x + offset.x, y + offset.y); | |
lineStr.push('<g_vml_:line from="', -left ,' 0" to="', right ,' 0.05" ', | |
' coordsize="100 100" coordorigin="0 0"', | |
' filled="', !stroke, '" stroked="', !!stroke, | |
'" style="position:absolute;width:1px;height:1px;">'); | |
if (stroke) { | |
appendStroke(this, lineStr); | |
} else { | |
// TODO: Fix the min and max params. | |
appendFill(this, lineStr, {x: -left, y: 0}, | |
{x: right, y: fontStyle.size}); | |
} | |
var skewM = m[0][0].toFixed(3) + ',' + m[1][0].toFixed(3) + ',' + | |
m[0][1].toFixed(3) + ',' + m[1][1].toFixed(3) + ',0,0'; | |
var skewOffset = mr(d.x / Z) + ',' + mr(d.y / Z); | |
lineStr.push('<g_vml_:skew on="t" matrix="', skewM ,'" ', | |
' offset="', skewOffset, '" origin="', left ,' 0" />', | |
'<g_vml_:path textpathok="true" />', | |
'<g_vml_:textpath on="true" string="', | |
encodeHtmlAttribute(text), | |
'" style="v-text-align:', textAlign, | |
';font:', encodeHtmlAttribute(fontStyleString), | |
'" /></g_vml_:line>'); | |
this.element_.insertAdjacentHTML('beforeEnd', lineStr.join('')); | |
}; | |
contextPrototype.fillText = function(text, x, y, maxWidth) { | |
this.drawText_(text, x, y, maxWidth, false); | |
}; | |
contextPrototype.strokeText = function(text, x, y, maxWidth) { | |
this.drawText_(text, x, y, maxWidth, true); | |
}; | |
contextPrototype.measureText = function(text) { | |
if (!this.textMeasureEl_) { | |
var s = '<span style="position:absolute;' + | |
'top:-20000px;left:0;padding:0;margin:0;border:none;' + | |
'white-space:pre;"></span>'; | |
this.element_.insertAdjacentHTML('beforeEnd', s); | |
this.textMeasureEl_ = this.element_.lastChild; | |
} | |
var doc = this.element_.ownerDocument; | |
this.textMeasureEl_.innerHTML = ''; | |
this.textMeasureEl_.style.font = this.font; | |
// Don't use innerHTML or innerText because they allow markup/whitespace. | |
this.textMeasureEl_.appendChild(doc.createTextNode(text)); | |
return {width: this.textMeasureEl_.offsetWidth}; | |
}; | |
/******** STUBS ********/ | |
contextPrototype.clip = function() { | |
// TODO: Implement | |
}; | |
contextPrototype.arcTo = function() { | |
// TODO: Implement | |
}; | |
contextPrototype.createPattern = function(image, repetition) { | |
return new CanvasPattern_(image, repetition); | |
}; | |
// Gradient / Pattern Stubs | |
function CanvasGradient_(aType) { | |
this.type_ = aType; | |
this.x0_ = 0; | |
this.y0_ = 0; | |
this.r0_ = 0; | |
this.x1_ = 0; | |
this.y1_ = 0; | |
this.r1_ = 0; | |
this.colors_ = []; | |
} | |
CanvasGradient_.prototype.addColorStop = function(aOffset, aColor) { | |
aColor = processStyle(aColor); | |
this.colors_.push({offset: aOffset, | |
color: aColor.color, | |
alpha: aColor.alpha}); | |
}; | |
function CanvasPattern_(image, repetition) { | |
assertImageIsValid(image); | |
switch (repetition) { | |
case 'repeat': | |
case null: | |
case '': | |
this.repetition_ = 'repeat'; | |
break | |
case 'repeat-x': | |
case 'repeat-y': | |
case 'no-repeat': | |
this.repetition_ = repetition; | |
break; | |
default: | |
throwException('SYNTAX_ERR'); | |
} | |
this.src_ = image.src; | |
this.width_ = image.width; | |
this.height_ = image.height; | |
} | |
function throwException(s) { | |
throw new DOMException_(s); | |
} | |
function assertImageIsValid(img) { | |
if (!img || img.nodeType != 1 || img.tagName != 'IMG') { | |
throwException('TYPE_MISMATCH_ERR'); | |
} | |
if (img.readyState != 'complete') { | |
throwException('INVALID_STATE_ERR'); | |
} | |
} | |
function DOMException_(s) { | |
this.code = this[s]; | |
this.message = s +': DOM Exception ' + this.code; | |
} | |
var p = DOMException_.prototype = new Error; | |
p.INDEX_SIZE_ERR = 1; | |
p.DOMSTRING_SIZE_ERR = 2; | |
p.HIERARCHY_REQUEST_ERR = 3; | |
p.WRONG_DOCUMENT_ERR = 4; | |
p.INVALID_CHARACTER_ERR = 5; | |
p.NO_DATA_ALLOWED_ERR = 6; | |
p.NO_MODIFICATION_ALLOWED_ERR = 7; | |
p.NOT_FOUND_ERR = 8; | |
p.NOT_SUPPORTED_ERR = 9; | |
p.INUSE_ATTRIBUTE_ERR = 10; | |
p.INVALID_STATE_ERR = 11; | |
p.SYNTAX_ERR = 12; | |
p.INVALID_MODIFICATION_ERR = 13; | |
p.NAMESPACE_ERR = 14; | |
p.INVALID_ACCESS_ERR = 15; | |
p.VALIDATION_ERR = 16; | |
p.TYPE_MISMATCH_ERR = 17; | |
// set up externs | |
G_vmlCanvasManager = G_vmlCanvasManager_; | |
CanvasRenderingContext2D = CanvasRenderingContext2D_; | |
CanvasGradient = CanvasGradient_; | |
CanvasPattern = CanvasPattern_; | |
DOMException = DOMException_; | |
})(); | |
} // if | |
if(!document.createElement("canvas").getContext){(function(){var z=Math;var K=z.round;var J=z.sin;var U=z.cos;var b=z.abs;var k=z.sqrt;var D=10;var F=D/2;function T(){return this.context_||(this.context_=new W(this))}var O=Array.prototype.slice;function G(i,j,m){var Z=O.call(arguments,2);return function(){return i.apply(j,Z.concat(O.call(arguments)))}}function AD(Z){return String(Z).replace(/&/g,"&").replace(/"/g,""")}function r(i){if(!i.namespaces.g_vml_){i.namespaces.add("g_vml_","urn:schemas-microsoft-com:vml","#default#VML")}if(!i.namespaces.g_o_){i.namespaces.add("g_o_","urn:schemas-microsoft-com:office:office","#default#VML")}if(!i.styleSheets.ex_canvas_){var Z=i.createStyleSheet();Z.owningElement.id="ex_canvas_";Z.cssText="canvas{display:inline-block;overflow:hidden;text-align:left;width:300px;height:150px}"}}r(document);var E={init:function(Z){if(/MSIE/.test(navigator.userAgent)&&!window.opera){var i=Z||document;i.createElement("canvas");i.attachEvent("onreadystatechange",G(this.init_,this,i))}},init_:function(m){var j=m.getElementsByTagName("canvas");for(var Z=0;Z<j.length;Z++){this.initElement(j[Z])}},initElement:function(i){if(!i.getContext){i.getContext=T;r(i.ownerDocument);i.innerHTML="";i.attachEvent("onpropertychange",S);i.attachEvent("onresize",w);var Z=i.attributes;if(Z.width&&Z.width.specified){i.style.width=Z.width.nodeValue+"px"}else{i.width=i.clientWidth}if(Z.height&&Z.height.specified){i.style.height=Z.height.nodeValue+"px"}else{i.height=i.clientHeight}}return i}};function S(i){var Z=i.srcElement;switch(i.propertyName){case"width":Z.getContext().clearRect();Z.style.width=Z.attributes.width.nodeValue+"px";Z.firstChild.style.width=Z.clientWidth+"px";break;case"height":Z.getContext().clearRect();Z.style.height=Z.attributes.height.nodeValue+"px";Z.firstChild.style.height=Z.clientHeight+"px";break}}function w(i){var Z=i.srcElement;if(Z.firstChild){Z.firstChild.style.width=Z.clientWidth+"px";Z.firstChild.style.height=Z.clientHeight+"px"}}E.init();var I=[];for(var AC=0;AC<16;AC++){for(var AB=0;AB<16;AB++){I[AC*16+AB]=AC.toString(16)+AB.toString(16)}}function V(){return[[1,0,0],[0,1,0],[0,0,1]]}function d(m,j){var i=V();for(var Z=0;Z<3;Z++){for(var AF=0;AF<3;AF++){var p=0;for(var AE=0;AE<3;AE++){p+=m[Z][AE]*j[AE][AF]}i[Z][AF]=p}}return i}function Q(i,Z){Z.fillStyle=i.fillStyle;Z.lineCap=i.lineCap;Z.lineJoin=i.lineJoin;Z.lineWidth=i.lineWidth;Z.miterLimit=i.miterLimit;Z.shadowBlur=i.shadowBlur;Z.shadowColor=i.shadowColor;Z.shadowOffsetX=i.shadowOffsetX;Z.shadowOffsetY=i.shadowOffsetY;Z.strokeStyle=i.strokeStyle;Z.globalAlpha=i.globalAlpha;Z.font=i.font;Z.textAlign=i.textAlign;Z.textBaseline=i.textBaseline;Z.arcScaleX_=i.arcScaleX_;Z.arcScaleY_=i.arcScaleY_;Z.lineScale_=i.lineScale_}var B={aliceblue:"#F0F8FF",antiquewhite:"#FAEBD7",aquamarine:"#7FFFD4",azure:"#F0FFFF",beige:"#F5F5DC",bisque:"#FFE4C4",black:"#000000",blanchedalmond:"#FFEBCD",blueviolet:"#8A2BE2",brown:"#A52A2A",burlywood:"#DEB887",cadetblue:"#5F9EA0",chartreuse:"#7FFF00",chocolate:"#D2691E",coral:"#FF7F50",cornflowerblue:"#6495ED",cornsilk:"#FFF8DC",crimson:"#DC143C",cyan:"#00FFFF",darkblue:"#00008B",darkcyan:"#008B8B",darkgoldenrod:"#B8860B",darkgray:"#A9A9A9",darkgreen:"#006400",darkgrey:"#A9A9A9",darkkhaki:"#BDB76B",darkmagenta:"#8B008B",darkolivegreen:"#556B2F",darkorange:"#FF8C00",darkorchid:"#9932CC",darkred:"#8B0000",darksalmon:"#E9967A",darkseagreen:"#8FBC8F",darkslateblue:"#483D8B",darkslategray:"#2F4F4F",darkslategrey:"#2F4F4F",darkturquoise:"#00CED1",darkviolet:"#9400D3",deeppink:"#FF1493",deepskyblue:"#00BFFF",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1E90FF",firebrick:"#B22222",floralwhite:"#FFFAF0",forestgreen:"#228B22",gainsboro:"#DCDCDC",ghostwhite:"#F8F8FF",gold:"#FFD700",goldenrod:"#DAA520",grey:"#808080",greenyellow:"#ADFF2F",honeydew:"#F0FFF0",hotpink:"#FF69B4",indianred:"#CD5C5C",indigo:"#4B0082",ivory:"#FFFFF0",khaki:"#F0E68C",lavender:"#E6E6FA",lavenderblush:"#FFF0F5",lawngreen:"#7CFC00",lemonchiffon:"#FFFACD",lightblue:"#ADD8E6",lightcoral:"#F08080",lightcyan:"#E0FFFF",lightgoldenrodyellow:"#FAFAD2",lightgreen:"#90EE90",lightgrey:"#D3D3D3",lightpink:"#FFB6C1",lightsalmon:"#FFA07A",lightseagreen:"#20B2AA",lightskyblue:"#87CEFA",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#B0C4DE",lightyellow:"#FFFFE0",limegreen:"#32CD32",linen:"#FAF0E6",magenta:"#FF00FF",mediumaquamarine:"#66CDAA",mediumblue:"#0000CD",mediumorchid:"#BA55D3",mediumpurple:"#9370DB",mediumseagreen:"#3CB371",mediumslateblue:"#7B68EE",mediumspringgreen:"#00FA9A",mediumturquoise:"#48D1CC",mediumvioletred:"#C71585",midnightblue:"#191970",mintcream:"#F5FFFA",mistyrose:"#FFE4E1",moccasin:"#FFE4B5",navajowhite:"#FFDEAD",oldlace:"#FDF5E6",olivedrab:"#6B8E23",orange:"#FFA500",orangered:"#FF4500",orchid:"#DA70D6",palegoldenrod:"#EEE8AA",palegreen:"#98FB98",paleturquoise:"#AFEEEE",palevioletred:"#DB7093",papayawhip:"#FFEFD5",peachpuff:"#FFDAB9",peru:"#CD853F",pink:"#FFC0CB",plum:"#DDA0DD",powderblue:"#B0E0E6",rosybrown:"#BC8F8F",royalblue:"#4169E1",saddlebrown:"#8B4513",salmon:"#FA8072",sandybrown:"#F4A460",seagreen:"#2E8B57",seashell:"#FFF5EE",sienna:"#A0522D",skyblue:"#87CEEB",slateblue:"#6A5ACD",slategray:"#708090",slategrey:"#708090",snow:"#FFFAFA",springgreen:"#00FF7F",steelblue:"#4682B4",tan:"#D2B48C",thistle:"#D8BFD8",tomato:"#FF6347",turquoise:"#40E0D0",violet:"#EE82EE",wheat:"#F5DEB3",whitesmoke:"#F5F5F5",yellowgreen:"#9ACD32"};function g(i){var m=i.indexOf("(",3);var Z=i.indexOf(")",m+1);var j=i.substring(m+1,Z).split(",");if(j.length==4&&i.substr(3,1)=="a"){alpha=Number(j[3])}else{j[3]=1}return j}function C(Z){return parseFloat(Z)/100}function N(i,j,Z){return Math.min(Z,Math.max(j,i))}function c(AF){var j,i,Z;h=parseFloat(AF[0])/360%360;if(h<0){h++}s=N(C(AF[1]),0,1);l=N(C(AF[2]),0,1);if(s==0){j=i=Z=l}else{var m=l<0.5?l*(1+s):l+s-l*s;var AE=2*l-m;j=A(AE,m,h+1/3);i=A(AE,m,h);Z=A(AE,m,h-1/3)}return"#"+I[Math.floor(j*255)]+I[Math.floor(i*255)]+I[Math.floor(Z*255)]}function A(i,Z,j){if(j<0){j++}if(j>1){j--}if(6*j<1){return i+(Z-i)*6*j}else{if(2*j<1){return Z}else{if(3*j<2){return i+(Z-i)*(2/3-j)*6}else{return i}}}}function Y(Z){var AE,p=1;Z=String(Z);if(Z.charAt(0)=="#"){AE=Z}else{if(/^rgb/.test(Z)){var m=g(Z);var AE="#",AF;for(var j=0;j<3;j++){if(m[j].indexOf("%")!=-1){AF=Math.floor(C(m[j])*255)}else{AF=Number(m[j])}AE+=I[N(AF,0,255)]}p=m[3]}else{if(/^hsl/.test(Z)){var m=g(Z);AE=c(m);p=m[3]}else{AE=B[Z]||Z}}}return{color:AE,alpha:p}}var L={style:"normal",variant:"normal",weight:"normal",size:10,family:"sans-serif"};var f={};function X(Z){if(f[Z]){return f[Z]}var m=document.createElement("div");var j=m.style;try{j.font=Z}catch(i){}return f[Z]={style:j.fontStyle||L.style,variant:j.fontVariant||L.variant,weight:j.fontWeight||L.weight,size:j.fontSize||L.size,family:j.fontFamily||L.family}}function P(j,i){var Z={};for(var AF in j){Z[AF]=j[AF]}var AE=parseFloat(i.currentStyle.fontSize),m=parseFloat(j.size);if(typeof j.size=="number"){Z.size=j.size}else{if(j.size.indexOf("px")!=-1){Z.size=m}else{if(j.size.indexOf("em")!=-1){Z.size=AE*m}else{if(j.size.indexOf("%")!=-1){Z.size=(AE/100)*m}else{if(j.size.indexOf("pt")!=-1){Z.size=m/0.75}else{Z.size=AE}}}}}Z.size*=0.981;return Z}function AA(Z){return Z.style+" "+Z.variant+" "+Z.weight+" "+Z.size+"px "+Z.family}function t(Z){switch(Z){case"butt":return"flat";case"round":return"round";case"square":default:return"square"}}function W(i){this.m_=V();this.mStack_=[];this.aStack_=[];this.currentPath_=[];this.strokeStyle="#000";this.fillStyle="#000";this.lineWidth=1;this.lineJoin="miter";this.lineCap="butt";this.miterLimit=D*1;this.globalAlpha=1;this.font="10px sans-serif";this.textAlign="left";this.textBaseline="alphabetic";this.canvas=i;var Z=i.ownerDocument.createElement("div");Z.style.width=i.clientWidth+"px";Z.style.height=i.clientHeight+"px";Z.style.overflow="hidden";Z.style.position="absolute";i.appendChild(Z);this.element_=Z;this.arcScaleX_=1;this.arcScaleY_=1;this.lineScale_=1}var M=W.prototype;M.clearRect=function(){if(this.textMeasureEl_){this.textMeasureEl_.removeNode(true);this.textMeasureEl_=null}this.element_.innerHTML=""};M.beginPath=function(){this.currentPath_=[]};M.moveTo=function(i,Z){var j=this.getCoords_(i,Z);this.currentPath_.push({type:"moveTo",x:j.x,y:j.y});this.currentX_=j.x;this.currentY_=j.y};M.lineTo=function(i,Z){var j=this.getCoords_(i,Z);this.currentPath_.push({type:"lineTo",x:j.x,y:j.y});this.currentX_=j.x;this.currentY_=j.y};M.bezierCurveTo=function(j,i,AI,AH,AG,AE){var Z=this.getCoords_(AG,AE);var AF=this.getCoords_(j,i);var m=this.getCoords_(AI,AH);e(this,AF,m,Z)};function e(Z,m,j,i){Z.currentPath_.push({type:"bezierCurveTo",cp1x:m.x,cp1y:m.y,cp2x:j.x,cp2y:j.y,x:i.x,y:i.y});Z.currentX_=i.x;Z.currentY_=i.y}M.quadraticCurveTo=function(AG,j,i,Z){var AF=this.getCoords_(AG,j);var AE=this.getCoords_(i,Z);var AH={x:this.currentX_+2/3*(AF.x-this.currentX_),y:this.currentY_+2/3*(AF.y-this.currentY_)};var m={x:AH.x+(AE.x-this.currentX_)/3,y:AH.y+(AE.y-this.currentY_)/3};e(this,AH,m,AE)};M.arc=function(AJ,AH,AI,AE,i,j){AI*=D;var AN=j?"at":"wa";var AK=AJ+U(AE)*AI-F;var AM=AH+J(AE)*AI-F;var Z=AJ+U(i)*AI-F;var AL=AH+J(i)*AI-F;if(AK==Z&&!j){AK+=0.125}var m=this.getCoords_(AJ,AH);var AG=this.getCoords_(AK,AM);var AF=this.getCoords_(Z,AL);this.currentPath_.push({type:AN,x:m.x,y:m.y,radius:AI,xStart:AG.x,yStart:AG.y,xEnd:AF.x,yEnd:AF.y})};M.rect=function(j,i,Z,m){this.moveTo(j,i);this.lineTo(j+Z,i);this.lineTo(j+Z,i+m);this.lineTo(j,i+m);this.closePath()};M.strokeRect=function(j,i,Z,m){var p=this.currentPath_;this.beginPath();this.moveTo(j,i);this.lineTo(j+Z,i);this.lineTo(j+Z,i+m);this.lineTo(j,i+m);this.closePath();this.stroke();this.currentPath_=p};M.fillRect=function(j,i,Z,m){var p=this.currentPath_;this.beginPath();this.moveTo(j,i);this.lineTo(j+Z,i);this.lineTo(j+Z,i+m);this.lineTo(j,i+m);this.closePath();this.fill();this.currentPath_=p};M.createLinearGradient=function(i,m,Z,j){var p=new v("gradient");p.x0_=i;p.y0_=m;p.x1_=Z;p.y1_=j;return p};M.createRadialGradient=function(m,AE,j,i,p,Z){var AF=new v("gradientradial");AF.x0_=m;AF.y0_=AE;AF.r0_=j;AF.x1_=i;AF.y1_=p;AF.r1_=Z;return AF};M.drawImage=function(AO,j){var AH,AF,AJ,AV,AM,AK,AQ,AX;var AI=AO.runtimeStyle.width;var AN=AO.runtimeStyle.height;AO.runtimeStyle.width="auto";AO.runtimeStyle.height="auto";var AG=AO.width;var AT=AO.height;AO.runtimeStyle.width=AI;AO.runtimeStyle.height=AN;if(arguments.length==3){AH=arguments[1];AF=arguments[2];AM=AK=0;AQ=AJ=AG;AX=AV=AT}else{if(arguments.length==5){AH=arguments[1];AF=arguments[2];AJ=arguments[3];AV=arguments[4];AM=AK=0;AQ=AG;AX=AT}else{if(arguments.length==9){AM=arguments[1];AK=arguments[2];AQ=arguments[3];AX=arguments[4];AH=arguments[5];AF=arguments[6];AJ=arguments[7];AV=arguments[8]}else{throw Error("Invalid number of arguments")}}}var AW=this.getCoords_(AH,AF);var m=AQ/2;var i=AX/2;var AU=[];var Z=10;var AE=10;AU.push(" <g_vml_:group",' coordsize="',D*Z,",",D*AE,'"',' coordorigin="0,0"',' style="width:',Z,"px;height:",AE,"px;position:absolute;");if(this.m_[0][0]!=1||this.m_[0][1]||this.m_[1][1]!=1||this.m_[1][0]){var p=[];p.push("M11=",this.m_[0][0],",","M12=",this.m_[1][0],",","M21=",this.m_[0][1],",","M22=",this.m_[1][1],",","Dx=",K(AW.x/D),",","Dy=",K(AW.y/D),"");var AS=AW;var AR=this.getCoords_(AH+AJ,AF);var AP=this.getCoords_(AH,AF+AV);var AL=this.getCoords_(AH+AJ,AF+AV);AS.x=z.max(AS.x,AR.x,AP.x,AL.x);AS.y=z.max(AS.y,AR.y,AP.y,AL.y);AU.push("padding:0 ",K(AS.x/D),"px ",K(AS.y/D),"px 0;filter:progid:DXImageTransform.Microsoft.Matrix(",p.join(""),", sizingmethod='clip');")}else{AU.push("top:",K(AW.y/D),"px;left:",K(AW.x/D),"px;")}AU.push(' ">','<g_vml_:image src="',AO.src,'"',' style="width:',D*AJ,"px;"," height:",D*AV,'px"',' cropleft="',AM/AG,'"',' croptop="',AK/AT,'"',' cropright="',(AG-AM-AQ)/AG,'"',' cropbottom="',(AT-AK-AX)/AT,'"'," />","</g_vml_:group>");this.element_.insertAdjacentHTML("BeforeEnd",AU.join(""))};M.stroke=function(AM){var m=10;var AN=10;var AE=5000;var AG={x:null,y:null};var AL={x:null,y:null};for(var AH=0;AH<this.currentPath_.length;AH+=AE){var AK=[];var AF=false;AK.push("<g_vml_:shape",' filled="',!!AM,'"',' style="position:absolute;width:',m,"px;height:",AN,'px;"',' coordorigin="0,0"',' coordsize="',D*m,",",D*AN,'"',' stroked="',!AM,'"',' path="');var AO=false;for(var AI=AH;AI<Math.min(AH+AE,this.currentPath_.length);AI++){if(AI%AE==0&&AI>0){AK.push(" m ",K(this.currentPath_[AI-1].x),",",K(this.currentPath_[AI-1].y))}var Z=this.currentPath_[AI];var AJ;switch(Z.type){case"moveTo":AJ=Z;AK.push(" m ",K(Z.x),",",K(Z.y));break;case"lineTo":AK.push(" l ",K(Z.x),",",K(Z.y));break;case"close":AK.push(" x ");Z=null;break;case"bezierCurveTo":AK.push(" c ",K(Z.cp1x),",",K(Z.cp1y),",",K(Z.cp2x),",",K(Z.cp2y),",",K(Z.x),",",K(Z.y));break;case"at":case"wa":AK.push(" ",Z.type," ",K(Z.x-this.arcScaleX_*Z.radius),",",K(Z.y-this.arcScaleY_*Z.radius)," ",K(Z.x+this.arcScaleX_*Z.radius),",",K(Z.y+this.arcScaleY_*Z.radius)," ",K(Z.xStart),",",K(Z.yStart)," ",K(Z.xEnd),",",K(Z.yEnd));break}if(Z){if(AG.x==null||Z.x<AG.x){AG.x=Z.x}if(AL.x==null||Z.x>AL.x){AL.x=Z.x}if(AG.y==null||Z.y<AG.y){AG.y=Z.y}if(AL.y==null||Z.y>AL.y){AL.y=Z.y}}}AK.push(' ">');if(!AM){R(this,AK)}else{a(this,AK,AG,AL)}AK.push("</g_vml_:shape>");this.element_.insertAdjacentHTML("beforeEnd",AK.join(""))}};function R(j,AE){var i=Y(j.strokeStyle);var m=i.color;var p=i.alpha*j.globalAlpha;var Z=j.lineScale_*j.lineWidth;if(Z<1){p*=Z}AE.push("<g_vml_:stroke",' opacity="',p,'"',' joinstyle="',j.lineJoin,'"',' miterlimit="',j.miterLimit,'"',' endcap="',t(j.lineCap),'"',' weight="',Z,'px"',' color="',m,'" />')}function a(AO,AG,Ah,AP){var AH=AO.fillStyle;var AY=AO.arcScaleX_;var AX=AO.arcScaleY_;var Z=AP.x-Ah.x;var m=AP.y-Ah.y;if(AH instanceof v){var AL=0;var Ac={x:0,y:0};var AU=0;var AK=1;if(AH.type_=="gradient"){var AJ=AH.x0_/AY;var j=AH.y0_/AX;var AI=AH.x1_/AY;var Aj=AH.y1_/AX;var Ag=AO.getCoords_(AJ,j);var Af=AO.getCoords_(AI,Aj);var AE=Af.x-Ag.x;var p=Af.y-Ag.y;AL=Math.atan2(AE,p)*180/Math.PI;if(AL<0){AL+=360}if(AL<0.000001){AL=0}}else{var Ag=AO.getCoords_(AH.x0_,AH.y0_);Ac={x:(Ag.x-Ah.x)/Z,y:(Ag.y-Ah.y)/m};Z/=AY*D;m/=AX*D;var Aa=z.max(Z,m);AU=2*AH.r0_/Aa;AK=2*AH.r1_/Aa-AU}var AS=AH.colors_;AS.sort(function(Ak,i){return Ak.offset-i.offset});var AN=AS.length;var AR=AS[0].color;var AQ=AS[AN-1].color;var AW=AS[0].alpha*AO.globalAlpha;var AV=AS[AN-1].alpha*AO.globalAlpha;var Ab=[];for(var Ae=0;Ae<AN;Ae++){var AM=AS[Ae];Ab.push(AM.offset*AK+AU+" "+AM.color)}AG.push('<g_vml_:fill type="',AH.type_,'"',' method="none" focus="100%"',' color="',AR,'"',' color2="',AQ,'"',' colors="',Ab.join(","),'"',' opacity="',AV,'"',' g_o_:opacity2="',AW,'"',' angle="',AL,'"',' focusposition="',Ac.x,",",Ac.y,'" />')}else{if(AH instanceof u){if(Z&&m){var AF=-Ah.x;var AZ=-Ah.y;AG.push("<g_vml_:fill",' position="',AF/Z*AY*AY,",",AZ/m*AX*AX,'"',' type="tile"',' src="',AH.src_,'" />')}}else{var Ai=Y(AO.fillStyle);var AT=Ai.color;var Ad=Ai.alpha*AO.globalAlpha;AG.push('<g_vml_:fill color="',AT,'" opacity="',Ad,'" />')}}}M.fill=function(){this.stroke(true)};M.closePath=function(){this.currentPath_.push({type:"close"})};M.getCoords_=function(j,i){var Z=this.m_;return{x:D*(j*Z[0][0]+i*Z[1][0]+Z[2][0])-F,y:D*(j*Z[0][1]+i*Z[1][1]+Z[2][1])-F}};M.save=function(){var Z={};Q(this,Z);this.aStack_.push(Z);this.mStack_.push(this.m_);this.m_=d(V(),this.m_)};M.restore=function(){if(this.aStack_.length){Q(this.aStack_.pop(),this);this.m_=this.mStack_.pop()}};function H(Z){return isFinite(Z[0][0])&&isFinite(Z[0][1])&&isFinite(Z[1][0])&&isFinite(Z[1][1])&&isFinite(Z[2][0])&&isFinite(Z[2][1])}function y(i,Z,j){if(!H(Z)){return }i.m_=Z;if(j){var p=Z[0][0]*Z[1][1]-Z[0][1]*Z[1][0];i.lineScale_=k(b(p))}}M.translate=function(j,i){var Z=[[1,0,0],[0,1,0],[j,i,1]];y(this,d(Z,this.m_),false)};M.rotate=function(i){var m=U(i);var j=J(i);var Z=[[m,j,0],[-j,m,0],[0,0,1]];y(this,d(Z,this.m_),false)};M.scale=function(j,i){this.arcScaleX_*=j;this.arcScaleY_*=i;var Z=[[j,0,0],[0,i,0],[0,0,1]];y(this,d(Z,this.m_),true)};M.transform=function(p,m,AF,AE,i,Z){var j=[[p,m,0],[AF,AE,0],[i,Z,1]];y(this,d(j,this.m_),true)};M.setTransform=function(AE,p,AG,AF,j,i){var Z=[[AE,p,0],[AG,AF,0],[j,i,1]];y(this,Z,true)};M.drawText_=function(AK,AI,AH,AN,AG){var AM=this.m_,AQ=1000,i=0,AP=AQ,AF={x:0,y:0},AE=[];var Z=P(X(this.font),this.element_);var j=AA(Z);var AR=this.element_.currentStyle;var p=this.textAlign.toLowerCase();switch(p){case"left":case"center":case"right":break;case"end":p=AR.direction=="ltr"?"right":"left";break;case"start":p=AR.direction=="rtl"?"right":"left";break;default:p="left"}switch(this.textBaseline){case"hanging":case"top":AF.y=Z.size/1.75;break;case"middle":break;default:case null:case"alphabetic":case"ideographic":case"bottom":AF.y=-Z.size/2.25;break}switch(p){case"right":i=AQ;AP=0.05;break;case"center":i=AP=AQ/2;break}var AO=this.getCoords_(AI+AF.x,AH+AF.y);AE.push('<g_vml_:line from="',-i,' 0" to="',AP,' 0.05" ',' coordsize="100 100" coordorigin="0 0"',' filled="',!AG,'" stroked="',!!AG,'" style="position:absolute;width:1px;height:1px;">');if(AG){R(this,AE)}else{a(this,AE,{x:-i,y:0},{x:AP,y:Z.size})}var AL=AM[0][0].toFixed(3)+","+AM[1][0].toFixed(3)+","+AM[0][1].toFixed(3)+","+AM[1][1].toFixed(3)+",0,0";var AJ=K(AO.x/D)+","+K(AO.y/D);AE.push('<g_vml_:skew on="t" matrix="',AL,'" ',' offset="',AJ,'" origin="',i,' 0" />','<g_vml_:path textpathok="true" />','<g_vml_:textpath on="true" string="',AD(AK),'" style="v-text-align:',p,";font:",AD(j),'" /></g_vml_:line>');this.element_.insertAdjacentHTML("beforeEnd",AE.join(""))};M.fillText=function(j,Z,m,i){this.drawText_(j,Z,m,i,false)};M.strokeText=function(j,Z,m,i){this.drawText_(j,Z,m,i,true)};M.measureText=function(j){if(!this.textMeasureEl_){var Z='<span style="position:absolute;top:-20000px;left:0;padding:0;margin:0;border:none;white-space:pre;"></span>';this.element_.insertAdjacentHTML("beforeEnd",Z);this.textMeasureEl_=this.element_.lastChild}var i=this.element_.ownerDocument;this.textMeasureEl_.innerHTML="";this.textMeasureEl_.style.font=this.font;this.textMeasureEl_.appendChild(i.createTextNode(j));return{width:this.textMeasureEl_.offsetWidth}};M.clip=function(){};M.arcTo=function(){};M.createPattern=function(i,Z){return new u(i,Z)};function v(Z){this.type_=Z;this.x0_=0;this.y0_=0;this.r0_=0;this.x1_=0;this.y1_=0;this.r1_=0;this.colors_=[]}v.prototype.addColorStop=function(i,Z){Z=Y(Z);this.colors_.push({offset:i,color:Z.color,alpha:Z.alpha})};function u(i,Z){q(i);switch(Z){case"repeat":case null:case"":this.repetition_="repeat";break;case"repeat-x":case"repeat-y":case"no-repeat":this.repetition_=Z;break;default:n("SYNTAX_ERR")}this.src_=i.src;this.width_=i.width;this.height_=i.height}function n(Z){throw new o(Z)}function q(Z){if(!Z||Z.nodeType!=1||Z.tagName!="IMG"){n("TYPE_MISMATCH_ERR")}if(Z.readyState!="complete"){n("INVALID_STATE_ERR")}}function o(Z){this.code=this[Z];this.message=Z+": DOM Exception "+this.code}var x=o.prototype=new Error;x.INDEX_SIZE_ERR=1;x.DOMSTRING_SIZE_ERR=2;x.HIERARCHY_REQUEST_ERR=3;x.WRONG_DOCUMENT_ERR=4;x.INVALID_CHARACTER_ERR=5;x.NO_DATA_ALLOWED_ERR=6;x.NO_MODIFICATION_ALLOWED_ERR=7;x.NOT_FOUND_ERR=8;x.NOT_SUPPORTED_ERR=9;x.INUSE_ATTRIBUTE_ERR=10;x.INVALID_STATE_ERR=11;x.SYNTAX_ERR=12;x.INVALID_MODIFICATION_ERR=13;x.NAMESPACE_ERR=14;x.INVALID_ACCESS_ERR=15;x.VALIDATION_ERR=16;x.TYPE_MISMATCH_ERR=17;G_vmlCanvasManager=E;CanvasRenderingContext2D=W;CanvasGradient=v;CanvasPattern=u;DOMException=o})()}; |
/* Plugin for jQuery for working with colors. | |
* | |
* Version 1.1. | |
* | |
* Inspiration from jQuery color animation plugin by John Resig. | |
* | |
* Released under the MIT license by Ole Laursen, October 2009. | |
* | |
* Examples: | |
* | |
* $.color.parse("#fff").scale('rgb', 0.25).add('a', -0.5).toString() | |
* var c = $.color.extract($("#mydiv"), 'background-color'); | |
* console.log(c.r, c.g, c.b, c.a); | |
* $.color.make(100, 50, 25, 0.4).toString() // returns "rgba(100,50,25,0.4)" | |
* | |
* Note that .scale() and .add() return the same modified object | |
* instead of making a new one. | |
* | |
* V. 1.1: Fix error handling so e.g. parsing an empty string does | |
* produce a color rather than just crashing. | |
*/ | |
(function($) { | |
$.color = {}; | |
// construct color object with some convenient chainable helpers | |
$.color.make = function (r, g, b, a) { | |
var o = {}; | |
o.r = r || 0; | |
o.g = g || 0; | |
o.b = b || 0; | |
o.a = a != null ? a : 1; | |
o.add = function (c, d) { | |
for (var i = 0; i < c.length; ++i) | |
o[c.charAt(i)] += d; | |
return o.normalize(); | |
}; | |
o.scale = function (c, f) { | |
for (var i = 0; i < c.length; ++i) | |
o[c.charAt(i)] *= f; | |
return o.normalize(); | |
}; | |
o.toString = function () { | |
if (o.a >= 1.0) { | |
return "rgb("+[o.r, o.g, o.b].join(",")+")"; | |
} else { | |
return "rgba("+[o.r, o.g, o.b, o.a].join(",")+")"; | |
} | |
}; | |
o.normalize = function () { | |
function clamp(min, value, max) { | |
return value < min ? min: (value > max ? max: value); | |
} | |
o.r = clamp(0, parseInt(o.r), 255); | |
o.g = clamp(0, parseInt(o.g), 255); | |
o.b = clamp(0, parseInt(o.b), 255); | |
o.a = clamp(0, o.a, 1); | |
return o; | |
}; | |
o.clone = function () { | |
return $.color.make(o.r, o.b, o.g, o.a); | |
}; | |
return o.normalize(); | |
} | |
// extract CSS color property from element, going up in the DOM | |
// if it's "transparent" | |
$.color.extract = function (elem, css) { | |
var c; | |
do { | |
c = elem.css(css).toLowerCase(); | |
// keep going until we find an element that has color, or | |
// we hit the body | |
if (c != '' && c != 'transparent') | |
break; | |
elem = elem.parent(); | |
} while (!$.nodeName(elem.get(0), "body")); | |
// catch Safari's way of signalling transparent | |
if (c == "rgba(0, 0, 0, 0)") | |
c = "transparent"; | |
return $.color.parse(c); | |
} | |
// parse CSS color string (like "rgb(10, 32, 43)" or "#fff"), | |
// returns color object, if parsing failed, you get black (0, 0, | |
// 0) out | |
$.color.parse = function (str) { | |
var res, m = $.color.make; | |
// Look for rgb(num,num,num) | |
if (res = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(str)) | |
return m(parseInt(res[1], 10), parseInt(res[2], 10), parseInt(res[3], 10)); | |
// Look for rgba(num,num,num,num) | |
if (res = /rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str)) | |
return m(parseInt(res[1], 10), parseInt(res[2], 10), parseInt(res[3], 10), parseFloat(res[4])); | |
// Look for rgb(num%,num%,num%) | |
if (res = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(str)) | |
return m(parseFloat(res[1])*2.55, parseFloat(res[2])*2.55, parseFloat(res[3])*2.55); | |
// Look for rgba(num%,num%,num%,num) | |
if (res = /rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str)) | |
return m(parseFloat(res[1])*2.55, parseFloat(res[2])*2.55, parseFloat(res[3])*2.55, parseFloat(res[4])); | |
// Look for #a0b1c2 | |
if (res = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(str)) | |
return m(parseInt(res[1], 16), parseInt(res[2], 16), parseInt(res[3], 16)); | |
// Look for #fff | |
if (res = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(str)) | |
return m(parseInt(res[1]+res[1], 16), parseInt(res[2]+res[2], 16), parseInt(res[3]+res[3], 16)); | |
// Otherwise, we're most likely dealing with a named color | |
var name = $.trim(str).toLowerCase(); | |
if (name == "transparent") | |
return m(255, 255, 255, 0); | |
else { | |
// default to black | |
res = lookupColors[name] || [0, 0, 0]; | |
return m(res[0], res[1], res[2]); | |
} | |
} | |
var lookupColors = { | |
aqua:[0,255,255], | |
azure:[240,255,255], | |
beige:[245,245,220], | |
black:[0,0,0], | |
blue:[0,0,255], | |
brown:[165,42,42], | |
cyan:[0,255,255], | |
darkblue:[0,0,139], | |
darkcyan:[0,139,139], | |
darkgrey:[169,169,169], | |
darkgreen:[0,100,0], | |
darkkhaki:[189,183,107], | |
darkmagenta:[139,0,139], | |
darkolivegreen:[85,107,47], | |
darkorange:[255,140,0], | |
darkorchid:[153,50,204], | |
darkred:[139,0,0], | |
darksalmon:[233,150,122], | |
darkviolet:[148,0,211], | |
fuchsia:[255,0,255], | |
gold:[255,215,0], | |
green:[0,128,0], | |
indigo:[75,0,130], | |
khaki:[240,230,140], | |
lightblue:[173,216,230], | |
lightcyan:[224,255,255], | |
lightgreen:[144,238,144], | |
lightgrey:[211,211,211], | |
lightpink:[255,182,193], | |
lightyellow:[255,255,224], | |
lime:[0,255,0], | |
magenta:[255,0,255], | |
maroon:[128,0,0], | |
navy:[0,0,128], | |
olive:[128,128,0], | |
orange:[255,165,0], | |
pink:[255,192,203], | |
purple:[128,0,128], | |
violet:[128,0,128], | |
red:[255,0,0], | |
silver:[192,192,192], | |
white:[255,255,255], | |
yellow:[255,255,0] | |
}; | |
})(jQuery); | |
(function(b){b.color={};b.color.make=function(f,e,c,d){var h={};h.r=f||0;h.g=e||0;h.b=c||0;h.a=d!=null?d:1;h.add=function(k,j){for(var g=0;g<k.length;++g){h[k.charAt(g)]+=j}return h.normalize()};h.scale=function(k,j){for(var g=0;g<k.length;++g){h[k.charAt(g)]*=j}return h.normalize()};h.toString=function(){if(h.a>=1){return"rgb("+[h.r,h.g,h.b].join(",")+")"}else{return"rgba("+[h.r,h.g,h.b,h.a].join(",")+")"}};h.normalize=function(){function g(j,k,i){return k<j?j:(k>i?i:k)}h.r=g(0,parseInt(h.r),255);h.g=g(0,parseInt(h.g),255);h.b=g(0,parseInt(h.b),255);h.a=g(0,h.a,1);return h};h.clone=function(){return b.color.make(h.r,h.b,h.g,h.a)};return h.normalize()};b.color.extract=function(e,d){var f;do{f=e.css(d).toLowerCase();if(f!=""&&f!="transparent"){break}e=e.parent()}while(!b.nodeName(e.get(0),"body"));if(f=="rgba(0, 0, 0, 0)"){f="transparent"}return b.color.parse(f)};b.color.parse=function(f){var e,c=b.color.make;if(e=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(f)){return c(parseInt(e[1],10),parseInt(e[2],10),parseInt(e[3],10))}if(e=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(f)){return c(parseInt(e[1],10),parseInt(e[2],10),parseInt(e[3],10),parseFloat(e[4]))}if(e=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(f)){return c(parseFloat(e[1])*2.55,parseFloat(e[2])*2.55,parseFloat(e[3])*2.55)}if(e=/rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(f)){return c(parseFloat(e[1])*2.55,parseFloat(e[2])*2.55,parseFloat(e[3])*2.55,parseFloat(e[4]))}if(e=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(f)){return c(parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16))}if(e=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(f)){return c(parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16))}var d=b.trim(f).toLowerCase();if(d=="transparent"){return c(255,255,255,0)}else{e=a[d]||[0,0,0];return c(e[0],e[1],e[2])}};var a={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery); |
/* | |
Flot plugin for showing crosshairs, thin lines, when the mouse hovers | |
over the plot. | |
crosshair: { | |
mode: null or "x" or "y" or "xy" | |
color: color | |
lineWidth: number | |
} | |
Set the mode to one of "x", "y" or "xy". The "x" mode enables a | |
vertical crosshair that lets you trace the values on the x axis, "y" | |
enables a horizontal crosshair and "xy" enables them both. "color" is | |
the color of the crosshair (default is "rgba(170, 0, 0, 0.80)"), | |
"lineWidth" is the width of the drawn lines (default is 1). | |
The plugin also adds four public methods: | |
- setCrosshair(pos) | |
Set the position of the crosshair. Note that this is cleared if | |
the user moves the mouse. "pos" is in coordinates of the plot and | |
should be on the form { x: xpos, y: ypos } (you can use x2/x3/... | |
if you're using multiple axes), which is coincidentally the same | |
format as what you get from a "plothover" event. If "pos" is null, | |
the crosshair is cleared. | |
- clearCrosshair() | |
Clear the crosshair. | |
- lockCrosshair(pos) | |
Cause the crosshair to lock to the current location, no longer | |
updating if the user moves the mouse. Optionally supply a position | |
(passed on to setCrosshair()) to move it to. | |
Example usage: | |
var myFlot = $.plot( $("#graph"), ..., { crosshair: { mode: "x" } } }; | |
$("#graph").bind("plothover", function (evt, position, item) { | |
if (item) { | |
// Lock the crosshair to the data point being hovered | |
myFlot.lockCrosshair({ x: item.datapoint[0], y: item.datapoint[1] }); | |
} | |
else { | |
// Return normal crosshair operation | |
myFlot.unlockCrosshair(); | |
} | |
}); | |
- unlockCrosshair() | |
Free the crosshair to move again after locking it. | |
*/ | |
(function ($) { | |
var options = { | |
crosshair: { | |
mode: null, // one of null, "x", "y" or "xy", | |
color: "rgba(170, 0, 0, 0.80)", | |
lineWidth: 1 | |
} | |
}; | |
function init(plot) { | |
// position of crosshair in pixels | |
var crosshair = { x: -1, y: -1, locked: false }; | |
plot.setCrosshair = function setCrosshair(pos) { | |
if (!pos) | |
crosshair.x = -1; | |
else { | |
var o = plot.p2c(pos); | |
crosshair.x = Math.max(0, Math.min(o.left, plot.width())); | |
crosshair.y = Math.max(0, Math.min(o.top, plot.height())); | |
} | |
plot.triggerRedrawOverlay(); | |
}; | |
plot.clearCrosshair = plot.setCrosshair; // passes null for pos | |
plot.lockCrosshair = function lockCrosshair(pos) { | |
if (pos) | |
plot.setCrosshair(pos); | |
crosshair.locked = true; | |
} | |
plot.unlockCrosshair = function unlockCrosshair() { | |
crosshair.locked = false; | |
} | |
function onMouseOut(e) { | |
if (crosshair.locked) | |
return; | |
if (crosshair.x != -1) { | |
crosshair.x = -1; | |
plot.triggerRedrawOverlay(); | |
} | |
} | |
function onMouseMove(e) { | |
if (crosshair.locked) | |
return; | |
if (plot.getSelection && plot.getSelection()) { | |
crosshair.x = -1; // hide the crosshair while selecting | |
return; | |
} | |
var offset = plot.offset(); | |
crosshair.x = Math.max(0, Math.min(e.pageX - offset.left, plot.width())); | |
crosshair.y = Math.max(0, Math.min(e.pageY - offset.top, plot.height())); | |
plot.triggerRedrawOverlay(); | |
} | |
plot.hooks.bindEvents.push(function (plot, eventHolder) { | |
if (!plot.getOptions().crosshair.mode) | |
return; | |
eventHolder.mouseout(onMouseOut); | |
eventHolder.mousemove(onMouseMove); | |
}); | |
plot.hooks.drawOverlay.push(function (plot, ctx) { | |
var c = plot.getOptions().crosshair; | |
if (!c.mode) | |
return; | |
var plotOffset = plot.getPlotOffset(); | |
ctx.save(); | |
ctx.translate(plotOffset.left, plotOffset.top); | |
if (crosshair.x != -1) { | |
ctx.strokeStyle = c.color; | |
ctx.lineWidth = c.lineWidth; | |
ctx.lineJoin = "round"; | |
ctx.beginPath(); | |
if (c.mode.indexOf("x") != -1) { | |
ctx.moveTo(crosshair.x, 0); | |
ctx.lineTo(crosshair.x, plot.height()); | |
} | |
if (c.mode.indexOf("y") != -1) { | |
ctx.moveTo(0, crosshair.y); | |
ctx.lineTo(plot.width(), crosshair.y); | |
} | |
ctx.stroke(); | |
} | |
ctx.restore(); | |
}); | |
plot.hooks.shutdown.push(function (plot, eventHolder) { | |
eventHolder.unbind("mouseout", onMouseOut); | |
eventHolder.unbind("mousemove", onMouseMove); | |
}); | |
} | |
$.plot.plugins.push({ | |
init: init, | |
options: options, | |
name: 'crosshair', | |
version: '1.0' | |
}); | |
})(jQuery); | |
(function(b){var a={crosshair:{mode:null,color:"rgba(170, 0, 0, 0.80)",lineWidth:1}};function c(h){var j={x:-1,y:-1,locked:false};h.setCrosshair=function e(l){if(!l){j.x=-1}else{var k=h.p2c(l);j.x=Math.max(0,Math.min(k.left,h.width()));j.y=Math.max(0,Math.min(k.top,h.height()))}h.triggerRedrawOverlay()};h.clearCrosshair=h.setCrosshair;h.lockCrosshair=function f(k){if(k){h.setCrosshair(k)}j.locked=true};h.unlockCrosshair=function g(){j.locked=false};function d(k){if(j.locked){return}if(j.x!=-1){j.x=-1;h.triggerRedrawOverlay()}}function i(k){if(j.locked){return}if(h.getSelection&&h.getSelection()){j.x=-1;return}var l=h.offset();j.x=Math.max(0,Math.min(k.pageX-l.left,h.width()));j.y=Math.max(0,Math.min(k.pageY-l.top,h.height()));h.triggerRedrawOverlay()}h.hooks.bindEvents.push(function(l,k){if(!l.getOptions().crosshair.mode){return}k.mouseout(d);k.mousemove(i)});h.hooks.drawOverlay.push(function(m,k){var n=m.getOptions().crosshair;if(!n.mode){return}var l=m.getPlotOffset();k.save();k.translate(l.left,l.top);if(j.x!=-1){k.strokeStyle=n.color;k.lineWidth=n.lineWidth;k.lineJoin="round";k.beginPath();if(n.mode.indexOf("x")!=-1){k.moveTo(j.x,0);k.lineTo(j.x,m.height())}if(n.mode.indexOf("y")!=-1){k.moveTo(0,j.y);k.lineTo(m.width(),j.y)}k.stroke()}k.restore()});h.hooks.shutdown.push(function(l,k){k.unbind("mouseout",d);k.unbind("mousemove",i)})}b.plot.plugins.push({init:c,options:a,name:"crosshair",version:"1.0"})})(jQuery); |
/* | |
Flot plugin for computing bottoms for filled line and bar charts. | |
The case: you've got two series that you want to fill the area | |
between. In Flot terms, you need to use one as the fill bottom of the | |
other. You can specify the bottom of each data point as the third | |
coordinate manually, or you can use this plugin to compute it for you. | |
In order to name the other series, you need to give it an id, like this | |
var dataset = [ | |
{ data: [ ... ], id: "foo" } , // use default bottom | |
{ data: [ ... ], fillBetween: "foo" }, // use first dataset as bottom | |
]; | |
$.plot($("#placeholder"), dataset, { line: { show: true, fill: true }}); | |
As a convenience, if the id given is a number that doesn't appear as | |
an id in the series, it is interpreted as the index in the array | |
instead (so fillBetween: 0 can also mean the first series). | |
Internally, the plugin modifies the datapoints in each series. For | |
line series, extra data points might be inserted through | |
interpolation. Note that at points where the bottom line is not | |
defined (due to a null point or start/end of line), the current line | |
will show a gap too. The algorithm comes from the jquery.flot.stack.js | |
plugin, possibly some code could be shared. | |
*/ | |
(function ($) { | |
var options = { | |
series: { fillBetween: null } // or number | |
}; | |
function init(plot) { | |
function findBottomSeries(s, allseries) { | |
var i; | |
for (i = 0; i < allseries.length; ++i) { | |
if (allseries[i].id == s.fillBetween) | |
return allseries[i]; | |
} | |
if (typeof s.fillBetween == "number") { | |
i = s.fillBetween; | |
if (i < 0 || i >= allseries.length) | |
return null; | |
return allseries[i]; | |
} | |
return null; | |
} | |
function computeFillBottoms(plot, s, datapoints) { | |
if (s.fillBetween == null) | |
return; | |
var other = findBottomSeries(s, plot.getData()); | |
if (!other) | |
return; | |
var ps = datapoints.pointsize, | |
points = datapoints.points, | |
otherps = other.datapoints.pointsize, | |
otherpoints = other.datapoints.points, | |
newpoints = [], | |
px, py, intery, qx, qy, bottom, | |
withlines = s.lines.show, | |
withbottom = ps > 2 && datapoints.format[2].y, | |
withsteps = withlines && s.lines.steps, | |
fromgap = true, | |
i = 0, j = 0, l; | |
while (true) { | |
if (i >= points.length) | |
break; | |
l = newpoints.length; | |
if (points[i] == null) { | |
// copy gaps | |
for (m = 0; m < ps; ++m) | |
newpoints.push(points[i + m]); | |
i += ps; | |
} | |
else if (j >= otherpoints.length) { | |
// for lines, we can't use the rest of the points | |
if (!withlines) { | |
for (m = 0; m < ps; ++m) | |
newpoints.push(points[i + m]); | |
} | |
i += ps; | |
} | |
else if (otherpoints[j] == null) { | |
// oops, got a gap | |
for (m = 0; m < ps; ++m) | |
newpoints.push(null); | |
fromgap = true; | |
j += otherps; | |
} | |
else { | |
// cases where we actually got two points | |
px = points[i]; | |
py = points[i + 1]; | |
qx = otherpoints[j]; | |
qy = otherpoints[j + 1]; | |
bottom = 0; | |
if (px == qx) { | |
for (m = 0; m < ps; ++m) | |
newpoints.push(points[i + m]); | |
//newpoints[l + 1] += qy; | |
bottom = qy; | |
i += ps; | |
j += otherps; | |
} | |
else if (px > qx) { | |
// we got past point below, might need to | |
// insert interpolated extra point | |
if (withlines && i > 0 && points[i - ps] != null) { | |
intery = py + (points[i - ps + 1] - py) * (qx - px) / (points[i - ps] - px); | |
newpoints.push(qx); | |
newpoints.push(intery) | |
for (m = 2; m < ps; ++m) | |
newpoints.push(points[i + m]); | |
bottom = qy; | |
} | |
j += otherps; | |
} | |
else { // px < qx | |
if (fromgap && withlines) { | |
// if we come from a gap, we just skip this point | |
i += ps; | |
continue; | |
} | |
for (m = 0; m < ps; ++m) | |
newpoints.push(points[i + m]); | |
// we might be able to interpolate a point below, | |
// this can give us a better y | |
if (withlines && j > 0 && otherpoints[j - otherps] != null) | |
bottom = qy + (otherpoints[j - otherps + 1] - qy) * (px - qx) / (otherpoints[j - otherps] - qx); | |
//newpoints[l + 1] += bottom; | |
i += ps; | |
} | |
fromgap = false; | |
if (l != newpoints.length && withbottom) | |
newpoints[l + 2] = bottom; | |
} | |
// maintain the line steps invariant | |
if (withsteps && l != newpoints.length && l > 0 | |
&& newpoints[l] != null | |
&& newpoints[l] != newpoints[l - ps] | |
&& newpoints[l + 1] != newpoints[l - ps + 1]) { | |
for (m = 0; m < ps; ++m) | |
newpoints[l + ps + m] = newpoints[l + m]; | |
newpoints[l + 1] = newpoints[l - ps + 1]; | |
} | |
} | |
datapoints.points = newpoints; | |
} | |
plot.hooks.processDatapoints.push(computeFillBottoms); | |
} | |
$.plot.plugins.push({ | |
init: init, | |
options: options, | |
name: 'fillbetween', | |
version: '1.0' | |
}); | |
})(jQuery); | |
(function(b){var a={series:{fillBetween:null}};function c(f){function d(j,h){var g;for(g=0;g<h.length;++g){if(h[g].id==j.fillBetween){return h[g]}}if(typeof j.fillBetween=="number"){g=j.fillBetween;if(g<0||g>=h.length){return null}return h[g]}return null}function e(B,u,g){if(u.fillBetween==null){return}var p=d(u,B.getData());if(!p){return}var y=g.pointsize,E=g.points,h=p.datapoints.pointsize,x=p.datapoints.points,r=[],w,v,k,G,F,q,t=u.lines.show,o=y>2&&g.format[2].y,n=t&&u.lines.steps,D=true,C=0,A=0,z;while(true){if(C>=E.length){break}z=r.length;if(E[C]==null){for(m=0;m<y;++m){r.push(E[C+m])}C+=y}else{if(A>=x.length){if(!t){for(m=0;m<y;++m){r.push(E[C+m])}}C+=y}else{if(x[A]==null){for(m=0;m<y;++m){r.push(null)}D=true;A+=h}else{w=E[C];v=E[C+1];G=x[A];F=x[A+1];q=0;if(w==G){for(m=0;m<y;++m){r.push(E[C+m])}q=F;C+=y;A+=h}else{if(w>G){if(t&&C>0&&E[C-y]!=null){k=v+(E[C-y+1]-v)*(G-w)/(E[C-y]-w);r.push(G);r.push(k);for(m=2;m<y;++m){r.push(E[C+m])}q=F}A+=h}else{if(D&&t){C+=y;continue}for(m=0;m<y;++m){r.push(E[C+m])}if(t&&A>0&&x[A-h]!=null){q=F+(x[A-h+1]-F)*(w-G)/(x[A-h]-G)}C+=y}}D=false;if(z!=r.length&&o){r[z+2]=q}}}}if(n&&z!=r.length&&z>0&&r[z]!=null&&r[z]!=r[z-y]&&r[z+1]!=r[z-y+1]){for(m=0;m<y;++m){r[z+y+m]=r[z+m]}r[z+1]=r[z-y+1]}}g.points=r}f.hooks.processDatapoints.push(e)}b.plot.plugins.push({init:c,options:a,name:"fillbetween",version:"1.0"})})(jQuery); |
/* | |
Flot plugin for plotting images, e.g. useful for putting ticks on a | |
prerendered complex visualization. | |
The data syntax is [[image, x1, y1, x2, y2], ...] where (x1, y1) and | |
(x2, y2) are where you intend the two opposite corners of the image to | |
end up in the plot. Image must be a fully loaded Javascript image (you | |
can make one with new Image()). If the image is not complete, it's | |
skipped when plotting. | |
There are two helpers included for retrieving images. The easiest work | |
the way that you put in URLs instead of images in the data (like | |
["myimage.png", 0, 0, 10, 10]), then call $.plot.image.loadData(data, | |
options, callback) where data and options are the same as you pass in | |
to $.plot. This loads the images, replaces the URLs in the data with | |
the corresponding images and calls "callback" when all images are | |
loaded (or failed loading). In the callback, you can then call $.plot | |
with the data set. See the included example. | |
A more low-level helper, $.plot.image.load(urls, callback) is also | |
included. Given a list of URLs, it calls callback with an object | |
mapping from URL to Image object when all images are loaded or have | |
failed loading. | |
Options for the plugin are | |
series: { | |
images: { | |
show: boolean | |
anchor: "corner" or "center" | |
alpha: [0,1] | |
} | |
} | |
which can be specified for a specific series | |
$.plot($("#placeholder"), [{ data: [ ... ], images: { ... } ]) | |
Note that because the data format is different from usual data points, | |
you can't use images with anything else in a specific data series. | |
Setting "anchor" to "center" causes the pixels in the image to be | |
anchored at the corner pixel centers inside of at the pixel corners, | |
effectively letting half a pixel stick out to each side in the plot. | |
A possible future direction could be support for tiling for large | |
images (like Google Maps). | |
*/ | |
(function ($) { | |
var options = { | |
series: { | |
images: { | |
show: false, | |
alpha: 1, | |
anchor: "corner" // or "center" | |
} | |
} | |
}; | |
$.plot.image = {}; | |
$.plot.image.loadDataImages = function (series, options, callback) { | |
var urls = [], points = []; | |
var defaultShow = options.series.images.show; | |
$.each(series, function (i, s) { | |
if (!(defaultShow || s.images.show)) | |
return; | |
if (s.data) | |
s = s.data; | |
$.each(s, function (i, p) { | |
if (typeof p[0] == "string") { | |
urls.push(p[0]); | |
points.push(p); | |
} | |
}); | |
}); | |
$.plot.image.load(urls, function (loadedImages) { | |
$.each(points, function (i, p) { | |
var url = p[0]; | |
if (loadedImages[url]) | |
p[0] = loadedImages[url]; | |
}); | |
callback(); | |
}); | |
} | |
$.plot.image.load = function (urls, callback) { | |
var missing = urls.length, loaded = {}; | |
if (missing == 0) | |
callback({}); | |
$.each(urls, function (i, url) { | |
var handler = function () { | |
--missing; | |
loaded[url] = this; | |
if (missing == 0) | |
callback(loaded); | |
}; | |
$('<img />').load(handler).error(handler).attr('src', url); | |
}); | |
} | |
function drawSeries(plot, ctx, series) { | |
var plotOffset = plot.getPlotOffset(); | |
if (!series.images || !series.images.show) | |
return; | |
var points = series.datapoints.points, | |
ps = series.datapoints.pointsize; | |
for (var i = 0; i < points.length; i += ps) { | |
var img = points[i], | |
x1 = points[i + 1], y1 = points[i + 2], | |
x2 = points[i + 3], y2 = points[i + 4], | |
xaxis = series.xaxis, yaxis = series.yaxis, | |
tmp; | |
// actually we should check img.complete, but it | |
// appears to be a somewhat unreliable indicator in | |
// IE6 (false even after load event) | |
if (!img || img.width <= 0 || img.height <= 0) | |
continue; | |
if (x1 > x2) { | |
tmp = x2; | |
x2 = x1; | |
x1 = tmp; | |
} | |
if (y1 > y2) { | |
tmp = y2; | |
y2 = y1; | |
y1 = tmp; | |
} | |
// if the anchor is at the center of the pixel, expand the | |
// image by 1/2 pixel in each direction | |
if (series.images.anchor == "center") { | |
tmp = 0.5 * (x2-x1) / (img.width - 1); | |
x1 -= tmp; | |
x2 += tmp; | |
tmp = 0.5 * (y2-y1) / (img.height - 1); | |
y1 -= tmp; | |
y2 += tmp; | |
} | |
// clip | |
if (x1 == x2 || y1 == y2 || | |
x1 >= xaxis.max || x2 <= xaxis.min || | |
y1 >= yaxis.max || y2 <= yaxis.min) | |
continue; | |
var sx1 = 0, sy1 = 0, sx2 = img.width, sy2 = img.height; | |
if (x1 < xaxis.min) { | |
sx1 += (sx2 - sx1) * (xaxis.min - x1) / (x2 - x1); | |
x1 = xaxis.min; | |
} | |
if (x2 > xaxis.max) { | |
sx2 += (sx2 - sx1) * (xaxis.max - x2) / (x2 - x1); | |
x2 = xaxis.max; | |
} | |
if (y1 < yaxis.min) { | |
sy2 += (sy1 - sy2) * (yaxis.min - y1) / (y2 - y1); | |
y1 = yaxis.min; | |
} | |
if (y2 > yaxis.max) { | |
sy1 += (sy1 - sy2) * (yaxis.max - y2) / (y2 - y1); | |
y2 = yaxis.max; | |
} | |
x1 = xaxis.p2c(x1); | |
x2 = xaxis.p2c(x2); | |
y1 = yaxis.p2c(y1); | |
y2 = yaxis.p2c(y2); | |
// the transformation may have swapped us | |
if (x1 > x2) { | |
tmp = x2; | |
x2 = x1; | |
x1 = tmp; | |
} | |
if (y1 > y2) { | |
tmp = y2; | |
y2 = y1; | |
y1 = tmp; | |
} | |
tmp = ctx.globalAlpha; | |
ctx.globalAlpha *= series.images.alpha; | |
ctx.drawImage(img, | |
sx1, sy1, sx2 - sx1, sy2 - sy1, | |
x1 + plotOffset.left, y1 + plotOffset.top, | |
x2 - x1, y2 - y1); | |
ctx.globalAlpha = tmp; | |
} | |
} | |
function processRawData(plot, series, data, datapoints) { | |
if (!series.images.show) | |
return; | |
// format is Image, x1, y1, x2, y2 (opposite corners) | |
datapoints.format = [ | |
{ required: true }, | |
{ x: true, number: true, required: true }, | |
{ y: true, number: true, required: true }, | |
{ x: true, number: true, required: true }, | |
{ y: true, number: true, required: true } | |
]; | |
} | |
function init(plot) { | |
plot.hooks.processRawData.push(processRawData); | |
plot.hooks.drawSeries.push(drawSeries); | |
} | |
$.plot.plugins.push({ | |
init: init, | |
options: options, | |
name: 'image', | |
version: '1.1' | |
}); | |
})(jQuery); | |
(function(c){var a={series:{images:{show:false,alpha:1,anchor:"corner"}}};c.plot.image={};c.plot.image.loadDataImages=function(g,f,k){var j=[],h=[];var i=f.series.images.show;c.each(g,function(l,m){if(!(i||m.images.show)){return}if(m.data){m=m.data}c.each(m,function(n,o){if(typeof o[0]=="string"){j.push(o[0]);h.push(o)}})});c.plot.image.load(j,function(l){c.each(h,function(n,o){var m=o[0];if(l[m]){o[0]=l[m]}});k()})};c.plot.image.load=function(h,i){var g=h.length,f={};if(g==0){i({})}c.each(h,function(k,j){var l=function(){--g;f[j]=this;if(g==0){i(f)}};c("<img />").load(l).error(l).attr("src",j)})};function d(q,o,l){var m=q.getPlotOffset();if(!l.images||!l.images.show){return}var r=l.datapoints.points,n=l.datapoints.pointsize;for(var t=0;t<r.length;t+=n){var y=r[t],w=r[t+1],g=r[t+2],v=r[t+3],f=r[t+4],h=l.xaxis,u=l.yaxis,x;if(!y||y.width<=0||y.height<=0){continue}if(w>v){x=v;v=w;w=x}if(g>f){x=f;f=g;g=x}if(l.images.anchor=="center"){x=0.5*(v-w)/(y.width-1);w-=x;v+=x;x=0.5*(f-g)/(y.height-1);g-=x;f+=x}if(w==v||g==f||w>=h.max||v<=h.min||g>=u.max||f<=u.min){continue}var k=0,s=0,j=y.width,p=y.height;if(w<h.min){k+=(j-k)*(h.min-w)/(v-w);w=h.min}if(v>h.max){j+=(j-k)*(h.max-v)/(v-w);v=h.max}if(g<u.min){p+=(s-p)*(u.min-g)/(f-g);g=u.min}if(f>u.max){s+=(s-p)*(u.max-f)/(f-g);f=u.max}w=h.p2c(w);v=h.p2c(v);g=u.p2c(g);f=u.p2c(f);if(w>v){x=v;v=w;w=x}if(g>f){x=f;f=g;g=x}x=o.globalAlpha;o.globalAlpha*=l.images.alpha;o.drawImage(y,k,s,j-k,p-s,w+m.left,g+m.top,v-w,f-g);o.globalAlpha=x}}function b(i,f,g,h){if(!f.images.show){return}h.format=[{required:true},{x:true,number:true,required:true},{y:true,number:true,required:true},{x:true,number:true,required:true},{y:true,number:true,required:true}]}function e(f){f.hooks.processRawData.push(b);f.hooks.drawSeries.push(d)}c.plot.plugins.push({init:e,options:a,name:"image",version:"1.1"})})(jQuery); |
/*! Javascript plotting library for jQuery, v. 0.7. | |
* | |
* Released under the MIT license by IOLA, December 2007. | |
* | |
*/ | |
// first an inline dependency, jquery.colorhelpers.js, we inline it here | |
// for convenience | |
/* Plugin for jQuery for working with colors. | |
* | |
* Version 1.1. | |
* | |
* Inspiration from jQuery color animation plugin by John Resig. | |
* | |
* Released under the MIT license by Ole Laursen, October 2009. | |
* | |
* Examples: | |
* | |
* $.color.parse("#fff").scale('rgb', 0.25).add('a', -0.5).toString() | |
* var c = $.color.extract($("#mydiv"), 'background-color'); | |
* console.log(c.r, c.g, c.b, c.a); | |
* $.color.make(100, 50, 25, 0.4).toString() // returns "rgba(100,50,25,0.4)" | |
* | |
* Note that .scale() and .add() return the same modified object | |
* instead of making a new one. | |
* | |
* V. 1.1: Fix error handling so e.g. parsing an empty string does | |
* produce a color rather than just crashing. | |
*/ | |
(function(B){B.color={};B.color.make=function(F,E,C,D){var G={};G.r=F||0;G.g=E||0;G.b=C||0;G.a=D!=null?D:1;G.add=function(J,I){for(var H=0;H<J.length;++H){G[J.charAt(H)]+=I}return G.normalize()};G.scale=function(J,I){for(var H=0;H<J.length;++H){G[J.charAt(H)]*=I}return G.normalize()};G.toString=function(){if(G.a>=1){return"rgb("+[G.r,G.g,G.b].join(",")+")"}else{return"rgba("+[G.r,G.g,G.b,G.a].join(",")+")"}};G.normalize=function(){function H(J,K,I){return K<J?J:(K>I?I:K)}G.r=H(0,parseInt(G.r),255);G.g=H(0,parseInt(G.g),255);G.b=H(0,parseInt(G.b),255);G.a=H(0,G.a,1);return G};G.clone=function(){return B.color.make(G.r,G.b,G.g,G.a)};return G.normalize()};B.color.extract=function(D,C){var E;do{E=D.css(C).toLowerCase();if(E!=""&&E!="transparent"){break}D=D.parent()}while(!B.nodeName(D.get(0),"body"));if(E=="rgba(0, 0, 0, 0)"){E="transparent"}return B.color.parse(E)};B.color.parse=function(F){var E,C=B.color.make;if(E=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(F)){return C(parseInt(E[1],10),parseInt(E[2],10),parseInt(E[3],10))}if(E=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(F)){return C(parseInt(E[1],10),parseInt(E[2],10),parseInt(E[3],10),parseFloat(E[4]))}if(E=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(F)){return C(parseFloat(E[1])*2.55,parseFloat(E[2])*2.55,parseFloat(E[3])*2.55)}if(E=/rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(F)){return C(parseFloat(E[1])*2.55,parseFloat(E[2])*2.55,parseFloat(E[3])*2.55,parseFloat(E[4]))}if(E=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(F)){return C(parseInt(E[1],16),parseInt(E[2],16),parseInt(E[3],16))}if(E=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(F)){return C(parseInt(E[1]+E[1],16),parseInt(E[2]+E[2],16),parseInt(E[3]+E[3],16))}var D=B.trim(F).toLowerCase();if(D=="transparent"){return C(255,255,255,0)}else{E=A[D]||[0,0,0];return C(E[0],E[1],E[2])}};var A={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery); | |
// the actual Flot code | |
(function($) { | |
function Plot(placeholder, data_, options_, plugins) { | |
// data is on the form: | |
// [ series1, series2 ... ] | |
// where series is either just the data as [ [x1, y1], [x2, y2], ... ] | |
// or { data: [ [x1, y1], [x2, y2], ... ], label: "some label", ... } | |
var series = [], | |
options = { | |
// the color theme used for graphs | |
colors: ["#edc240", "#afd8f8", "#cb4b4b", "#4da74d", "#9440ed"], | |
legend: { | |
show: true, | |
noColumns: 1, // number of colums in legend table | |
labelFormatter: null, // fn: string -> string | |
labelBoxBorderColor: "#ccc", // border color for the little label boxes | |
container: null, // container (as jQuery object) to put legend in, null means default on top of graph | |
position: "ne", // position of default legend container within plot | |
margin: 5, // distance from grid edge to default legend container within plot | |
backgroundColor: null, // null means auto-detect | |
backgroundOpacity: 0.85 // set to 0 to avoid background | |
}, | |
xaxis: { | |
show: null, // null = auto-detect, true = always, false = never | |
position: "bottom", // or "top" | |
mode: null, // null or "time" | |
color: null, // base color, labels, ticks | |
tickColor: null, // possibly different color of ticks, e.g. "rgba(0,0,0,0.15)" | |
transform: null, // null or f: number -> number to transform axis | |
inverseTransform: null, // if transform is set, this should be the inverse function | |
min: null, // min. value to show, null means set automatically | |
max: null, // max. value to show, null means set automatically | |
autoscaleMargin: null, // margin in % to add if auto-setting min/max | |
ticks: null, // either [1, 3] or [[1, "a"], 3] or (fn: axis info -> ticks) or app. number of ticks for auto-ticks | |
tickFormatter: null, // fn: number -> string | |
labelWidth: null, // size of tick labels in pixels | |
labelHeight: null, | |
reserveSpace: null, // whether to reserve space even if axis isn't shown | |
tickLength: null, // size in pixels of ticks, or "full" for whole line | |
alignTicksWithAxis: null, // axis number or null for no sync | |
// mode specific options | |
tickDecimals: null, // no. of decimals, null means auto | |
tickSize: null, // number or [number, "unit"] | |
minTickSize: null, // number or [number, "unit"] | |
monthNames: null, // list of names of months | |
timeformat: null, // format string to use | |
twelveHourClock: false // 12 or 24 time in time mode | |
}, | |
yaxis: { | |
autoscaleMargin: 0.02, | |
position: "left" // or "right" | |
}, | |
xaxes: [], | |
yaxes: [], | |
series: { | |
points: { | |
show: false, | |
radius: 3, | |
lineWidth: 2, // in pixels | |
fill: true, | |
fillColor: "#ffffff", | |
symbol: "circle" // or callback | |
}, | |
lines: { | |
// we don't put in show: false so we can see | |
// whether lines were actively disabled | |
lineWidth: 2, // in pixels | |
fill: false, | |
fillColor: null, | |
steps: false | |
}, | |
bars: { | |
show: false, | |
lineWidth: 2, // in pixels | |
barWidth: 1, // in units of the x axis | |
fill: true, | |
fillColor: null, | |
align: "left", // or "center" | |
horizontal: false | |
}, | |
shadowSize: 3 | |
}, | |
grid: { | |
show: true, | |
aboveData: false, | |
color: "#545454", // primary color used for outline and labels | |
backgroundColor: null, // null for transparent, else color | |
borderColor: null, // set if different from the grid color | |
tickColor: null, // color for the ticks, e.g. "rgba(0,0,0,0.15)" | |
labelMargin: 5, // in pixels | |
axisMargin: 8, // in pixels | |
borderWidth: 2, // in pixels | |
minBorderMargin: null, // in pixels, null means taken from points radius | |
markings: null, // array of ranges or fn: axes -> array of ranges | |
markingsColor: "#f4f4f4", | |
markingsLineWidth: 2, | |
// interactive stuff | |
clickable: false, | |
hoverable: false, | |
autoHighlight: true, // highlight in case mouse is near | |
mouseActiveRadius: 10 // how far the mouse can be away to activate an item | |
}, | |
hooks: {} | |
}, | |
canvas = null, // the canvas for the plot itself | |
overlay = null, // canvas for interactive stuff on top of plot | |
eventHolder = null, // jQuery object that events should be bound to | |
ctx = null, octx = null, | |
xaxes = [], yaxes = [], | |
plotOffset = { left: 0, right: 0, top: 0, bottom: 0}, | |
canvasWidth = 0, canvasHeight = 0, | |
plotWidth = 0, plotHeight = 0, | |
hooks = { | |
processOptions: [], | |
processRawData: [], | |
processDatapoints: [], | |
drawSeries: [], | |
draw: [], | |
bindEvents: [], | |
drawOverlay: [], | |
shutdown: [] | |
}, | |
plot = this; | |
// public functions | |
plot.setData = setData; | |
plot.setupGrid = setupGrid; | |
plot.draw = draw; | |
plot.getPlaceholder = function() { return placeholder; }; | |
plot.getCanvas = function() { return canvas; }; | |
plot.getPlotOffset = function() { return plotOffset; }; | |
plot.width = function () { return plotWidth; }; | |
plot.height = function () { return plotHeight; }; | |
plot.offset = function () { | |
var o = eventHolder.offset(); | |
o.left += plotOffset.left; | |
o.top += plotOffset.top; | |
return o; | |
}; | |
plot.getData = function () { return series; }; | |
plot.getAxes = function () { | |
var res = {}, i; | |
$.each(xaxes.concat(yaxes), function (_, axis) { | |
if (axis) | |
res[axis.direction + (axis.n != 1 ? axis.n : "") + "axis"] = axis; | |
}); | |
return res; | |
}; | |
plot.getXAxes = function () { return xaxes; }; | |
plot.getYAxes = function () { return yaxes; }; | |
plot.c2p = canvasToAxisCoords; | |
plot.p2c = axisToCanvasCoords; | |
plot.getOptions = function () { return options; }; | |
plot.highlight = highlight; | |
plot.unhighlight = unhighlight; | |
plot.triggerRedrawOverlay = triggerRedrawOverlay; | |
plot.pointOffset = function(point) { | |
return { | |
left: parseInt(xaxes[axisNumber(point, "x") - 1].p2c(+point.x) + plotOffset.left), | |
top: parseInt(yaxes[axisNumber(point, "y") - 1].p2c(+point.y) + plotOffset.top) | |
}; | |
}; | |
plot.shutdown = shutdown; | |
plot.resize = function () { | |
getCanvasDimensions(); | |
resizeCanvas(canvas); | |
resizeCanvas(overlay); | |
}; | |
// public attributes | |
plot.hooks = hooks; | |
// initialize | |
initPlugins(plot); | |
parseOptions(options_); | |
setupCanvases(); | |
setData(data_); | |
setupGrid(); | |
draw(); | |
bindEvents(); | |
function executeHooks(hook, args) { | |
args = [plot].concat(args); | |
for (var i = 0; i < hook.length; ++i) | |
hook[i].apply(this, args); | |
} | |
function initPlugins() { | |
for (var i = 0; i < plugins.length; ++i) { | |
var p = plugins[i]; | |
p.init(plot); | |
if (p.options) | |
$.extend(true, options, p.options); | |
} | |
} | |
function parseOptions(opts) { | |
var i; | |
$.extend(true, options, opts); | |
if (options.xaxis.color == null) | |
options.xaxis.color = options.grid.color; | |
if (options.yaxis.color == null) | |
options.yaxis.color = options.grid.color; | |
if (options.xaxis.tickColor == null) // backwards-compatibility | |
options.xaxis.tickColor = options.grid.tickColor; | |
if (options.yaxis.tickColor == null) // backwards-compatibility | |
options.yaxis.tickColor = options.grid.tickColor; | |
if (options.grid.borderColor == null) | |
options.grid.borderColor = options.grid.color; | |
if (options.grid.tickColor == null) | |
options.grid.tickColor = $.color.parse(options.grid.color).scale('a', 0.22).toString(); | |
// fill in defaults in axes, copy at least always the | |
// first as the rest of the code assumes it'll be there | |
for (i = 0; i < Math.max(1, options.xaxes.length); ++i) | |
options.xaxes[i] = $.extend(true, {}, options.xaxis, options.xaxes[i]); | |
for (i = 0; i < Math.max(1, options.yaxes.length); ++i) | |
options.yaxes[i] = $.extend(true, {}, options.yaxis, options.yaxes[i]); | |
// backwards compatibility, to be removed in future | |
if (options.xaxis.noTicks && options.xaxis.ticks == null) | |
options.xaxis.ticks = options.xaxis.noTicks; | |
if (options.yaxis.noTicks && options.yaxis.ticks == null) | |
options.yaxis.ticks = options.yaxis.noTicks; | |
if (options.x2axis) { | |
options.xaxes[1] = $.extend(true, {}, options.xaxis, options.x2axis); | |
options.xaxes[1].position = "top"; | |
} | |
if (options.y2axis) { | |
options.yaxes[1] = $.extend(true, {}, options.yaxis, options.y2axis); | |
options.yaxes[1].position = "right"; | |
} | |
if (options.grid.coloredAreas) | |
options.grid.markings = options.grid.coloredAreas; | |
if (options.grid.coloredAreasColor) | |
options.grid.markingsColor = options.grid.coloredAreasColor; | |
if (options.lines) | |
$.extend(true, options.series.lines, options.lines); | |
if (options.points) | |
$.extend(true, options.series.points, options.points); | |
if (options.bars) | |
$.extend(true, options.series.bars, options.bars); | |
if (options.shadowSize != null) | |
options.series.shadowSize = options.shadowSize; | |
// save options on axes for future reference | |
for (i = 0; i < options.xaxes.length; ++i) | |
getOrCreateAxis(xaxes, i + 1).options = options.xaxes[i]; | |
for (i = 0; i < options.yaxes.length; ++i) | |
getOrCreateAxis(yaxes, i + 1).options = options.yaxes[i]; | |
// add hooks from options | |
for (var n in hooks) | |
if (options.hooks[n] && options.hooks[n].length) | |
hooks[n] = hooks[n].concat(options.hooks[n]); | |
executeHooks(hooks.processOptions, [options]); | |
} | |
function setData(d) { | |
series = parseData(d); | |
fillInSeriesOptions(); | |
processData(); | |
} | |
function parseData(d) { | |
var res = []; | |
for (var i = 0; i < d.length; ++i) { | |
var s = $.extend(true, {}, options.series); | |
if (d[i].data != null) { | |
s.data = d[i].data; // move the data instead of deep-copy | |
delete d[i].data; | |
$.extend(true, s, d[i]); | |
d[i].data = s.data; | |
} | |
else | |
s.data = d[i]; | |
res.push(s); | |
} | |
return res; | |
} | |
function axisNumber(obj, coord) { | |
var a = obj[coord + "axis"]; | |
if (typeof a == "object") // if we got a real axis, extract number | |
a = a.n; | |
if (typeof a != "number") | |
a = 1; // default to first axis | |
return a; | |
} | |
function allAxes() { | |
// return flat array without annoying null entries | |
return $.grep(xaxes.concat(yaxes), function (a) { return a; }); | |
} | |
function canvasToAxisCoords(pos) { | |
// return an object with x/y corresponding to all used axes | |
var res = {}, i, axis; | |
for (i = 0; i < xaxes.length; ++i) { | |
axis = xaxes[i]; | |
if (axis && axis.used) | |
res["x" + axis.n] = axis.c2p(pos.left); | |
} | |
for (i = 0; i < yaxes.length; ++i) { | |
axis = yaxes[i]; | |
if (axis && axis.used) | |
res["y" + axis.n] = axis.c2p(pos.top); | |
} | |
if (res.x1 !== undefined) | |
res.x = res.x1; | |
if (res.y1 !== undefined) | |
res.y = res.y1; | |
return res; | |
} | |
function axisToCanvasCoords(pos) { | |
// get canvas coords from the first pair of x/y found in pos | |
var res = {}, i, axis, key; | |
for (i = 0; i < xaxes.length; ++i) { | |
axis = xaxes[i]; | |
if (axis && axis.used) { | |
key = "x" + axis.n; | |
if (pos[key] == null && axis.n == 1) | |
key = "x"; | |
if (pos[key] != null) { | |
res.left = axis.p2c(pos[key]); | |
break; | |
} | |
} | |
} | |
for (i = 0; i < yaxes.length; ++i) { | |
axis = yaxes[i]; | |
if (axis && axis.used) { | |
key = "y" + axis.n; | |
if (pos[key] == null && axis.n == 1) | |
key = "y"; | |
if (pos[key] != null) { | |
res.top = axis.p2c(pos[key]); | |
break; | |
} | |
} | |
} | |
return res; | |
} | |
function getOrCreateAxis(axes, number) { | |
if (!axes[number - 1]) | |
axes[number - 1] = { | |
n: number, // save the number for future reference | |
direction: axes == xaxes ? "x" : "y", | |
options: $.extend(true, {}, axes == xaxes ? options.xaxis : options.yaxis) | |
}; | |
return axes[number - 1]; | |
} | |
function fillInSeriesOptions() { | |
var i; | |
// collect what we already got of colors | |
var neededColors = series.length, | |
usedColors = [], | |
assignedColors = []; | |
for (i = 0; i < series.length; ++i) { | |
var sc = series[i].color; | |
if (sc != null) { | |
--neededColors; | |
if (typeof sc == "number") | |
assignedColors.push(sc); | |
else | |
usedColors.push($.color.parse(series[i].color)); | |
} | |
} | |
// we might need to generate more colors if higher indices | |
// are assigned | |
for (i = 0; i < assignedColors.length; ++i) { | |
neededColors = Math.max(neededColors, assignedColors[i] + 1); | |
} | |
// produce colors as needed | |
var colors = [], variation = 0; | |
i = 0; | |
while (colors.length < neededColors) { | |
var c; | |
if (options.colors.length == i) // check degenerate case | |
c = $.color.make(100, 100, 100); | |
else | |
c = $.color.parse(options.colors[i]); | |
// vary color if needed | |
var sign = variation % 2 == 1 ? -1 : 1; | |
c.scale('rgb', 1 + sign * Math.ceil(variation / 2) * 0.2) | |
// FIXME: if we're getting to close to something else, | |
// we should probably skip this one | |
colors.push(c); | |
++i; | |
if (i >= options.colors.length) { | |
i = 0; | |
++variation; | |
} | |
} | |
// fill in the options | |
var colori = 0, s; | |
for (i = 0; i < series.length; ++i) { | |
s = series[i]; | |
// assign colors | |
if (s.color == null) { | |
s.color = colors[colori].toString(); | |
++colori; | |
} | |
else if (typeof s.color == "number") | |
s.color = colors[s.color].toString(); | |
// turn on lines automatically in case nothing is set | |
if (s.lines.show == null) { | |
var v, show = true; | |
for (v in s) | |
if (s[v] && s[v].show) { | |
show = false; | |
break; | |
} | |
if (show) | |
s.lines.show = true; | |
} | |
// setup axes | |
s.xaxis = getOrCreateAxis(xaxes, axisNumber(s, "x")); | |
s.yaxis = getOrCreateAxis(yaxes, axisNumber(s, "y")); | |
} | |
} | |
function processData() { | |
var topSentry = Number.POSITIVE_INFINITY, | |
bottomSentry = Number.NEGATIVE_INFINITY, | |
fakeInfinity = Number.MAX_VALUE, | |
i, j, k, m, length, | |
s, points, ps, x, y, axis, val, f, p; | |
function updateAxis(axis, min, max) { | |
if (min < axis.datamin && min != -fakeInfinity) | |
axis.datamin = min; | |
if (max > axis.datamax && max != fakeInfinity) | |
axis.datamax = max; | |
} | |
$.each(allAxes(), function (_, axis) { | |
// init axis | |
axis.datamin = topSentry; | |
axis.datamax = bottomSentry; | |
axis.used = false; | |
}); | |
for (i = 0; i < series.length; ++i) { | |
s = series[i]; | |
s.datapoints = { points: [] }; | |
executeHooks(hooks.processRawData, [ s, s.data, s.datapoints ]); | |
} | |
// first pass: clean and copy data | |
for (i = 0; i < series.length; ++i) { | |
s = series[i]; | |
var data = s.data, format = s.datapoints.format; | |
if (!format) { | |
format = []; | |
// find out how to copy | |
format.push({ x: true, number: true, required: true }); | |
format.push({ y: true, number: true, required: true }); | |
if (s.bars.show || (s.lines.show && s.lines.fill)) { | |
format.push({ y: true, number: true, required: false, defaultValue: 0 }); | |
if (s.bars.horizontal) { | |
delete format[format.length - 1].y; | |
format[format.length - 1].x = true; | |
} | |
} | |
s.datapoints.format = format; | |
} | |
if (s.datapoints.pointsize != null) | |
continue; // already filled in | |
s.datapoints.pointsize = format.length; | |
ps = s.datapoints.pointsize; | |
points = s.datapoints.points; | |
insertSteps = s.lines.show && s.lines.steps; | |
s.xaxis.used = s.yaxis.used = true; | |
for (j = k = 0; j < data.length; ++j, k += ps) { | |
p = data[j]; | |
var nullify = p == null; | |
if (!nullify) { | |
for (m = 0; m < ps; ++m) { | |
val = p[m]; | |
f = format[m]; | |
if (f) { | |
if (f.number && val != null) { | |
val = +val; // convert to number | |
if (isNaN(val)) | |
val = null; | |
else if (val == Infinity) | |
val = fakeInfinity; | |
else if (val == -Infinity) | |
val = -fakeInfinity; | |
} | |
if (val == null) { | |
if (f.required) | |
nullify = true; | |
if (f.defaultValue != null) | |
val = f.defaultValue; | |
} | |
} | |
points[k + m] = val; | |
} | |
} | |
if (nullify) { | |
for (m = 0; m < ps; ++m) { | |
val = points[k + m]; | |
if (val != null) { | |
f = format[m]; | |
// extract min/max info | |
if (f.x) | |
updateAxis(s.xaxis, val, val); | |
if (f.y) | |
updateAxis(s.yaxis, val, val); | |
} | |
points[k + m] = null; | |
} | |
} | |
else { | |
// a little bit of line specific stuff that | |
// perhaps shouldn't be here, but lacking | |
// better means... | |
if (insertSteps && k > 0 | |
&& points[k - ps] != null | |
&& points[k - ps] != points[k] | |
&& points[k - ps + 1] != points[k + 1]) { | |
// copy the point to make room for a middle point | |
for (m = 0; m < ps; ++m) | |
points[k + ps + m] = points[k + m]; | |
// middle point has same y | |
points[k + 1] = points[k - ps + 1]; | |
// we've added a point, better reflect that | |
k += ps; | |
} | |
} | |
} | |
} | |
// give the hooks a chance to run | |
for (i = 0; i < series.length; ++i) { | |
s = series[i]; | |
executeHooks(hooks.processDatapoints, [ s, s.datapoints]); | |
} | |
// second pass: find datamax/datamin for auto-scaling | |
for (i = 0; i < series.length; ++i) { | |
s = series[i]; | |
points = s.datapoints.points, | |
ps = s.datapoints.pointsize; | |
var xmin = topSentry, ymin = topSentry, | |
xmax = bottomSentry, ymax = bottomSentry; | |
for (j = 0; j < points.length; j += ps) { | |
if (points[j] == null) | |
continue; | |
for (m = 0; m < ps; ++m) { | |
val = points[j + m]; | |
f = format[m]; | |
if (!f || val == fakeInfinity || val == -fakeInfinity) | |
continue; | |
if (f.x) { | |
if (val < xmin) | |
xmin = val; | |
if (val > xmax) | |
xmax = val; | |
} | |
if (f.y) { | |
if (val < ymin) | |
ymin = val; | |
if (val > ymax) | |
ymax = val; | |
} | |
} | |
} | |
if (s.bars.show) { | |
// make sure we got room for the bar on the dancing floor | |
var delta = s.bars.align == "left" ? 0 : -s.bars.barWidth/2; | |
if (s.bars.horizontal) { | |
ymin += delta; | |
ymax += delta + s.bars.barWidth; | |
} | |
else { | |
xmin += delta; | |
xmax += delta + s.bars.barWidth; | |
} | |
} | |
updateAxis(s.xaxis, xmin, xmax); | |
updateAxis(s.yaxis, ymin, ymax); | |
} | |
$.each(allAxes(), function (_, axis) { | |
if (axis.datamin == topSentry) | |
axis.datamin = null; | |
if (axis.datamax == bottomSentry) | |
axis.datamax = null; | |
}); | |
} | |
function makeCanvas(skipPositioning, cls) { | |
var c = document.createElement('canvas'); | |
c.className = cls; | |
c.width = canvasWidth; | |
c.height = canvasHeight; | |
if (!skipPositioning) | |
$(c).css({ position: 'absolute', left: 0, top: 0 }); | |
$(c).appendTo(placeholder); | |
if (!c.getContext) // excanvas hack | |
c = window.G_vmlCanvasManager.initElement(c); | |
// used for resetting in case we get replotted | |
c.getContext("2d").save(); | |
return c; | |
} | |
function getCanvasDimensions() { | |
canvasWidth = placeholder.width(); | |
canvasHeight = placeholder.height(); | |
if (canvasWidth <= 0 || canvasHeight <= 0) | |
throw "Invalid dimensions for plot, width = " + canvasWidth + ", height = " + canvasHeight; | |
} | |
function resizeCanvas(c) { | |
// resizing should reset the state (excanvas seems to be | |
// buggy though) | |
if (c.width != canvasWidth) | |
c.width = canvasWidth; | |
if (c.height != canvasHeight) | |
c.height = canvasHeight; | |
// so try to get back to the initial state (even if it's | |
// gone now, this should be safe according to the spec) | |
var cctx = c.getContext("2d"); | |
cctx.restore(); | |
// and save again | |
cctx.save(); | |
} | |
function setupCanvases() { | |
var reused, | |
existingCanvas = placeholder.children("canvas.base"), | |
existingOverlay = placeholder.children("canvas.overlay"); | |
if (existingCanvas.length == 0 || existingOverlay == 0) { | |
// init everything | |
placeholder.html(""); // make sure placeholder is clear | |
placeholder.css({ padding: 0 }); // padding messes up the positioning | |
if (placeholder.css("position") == 'static') | |
placeholder.css("position", "relative"); // for positioning labels and overlay | |
getCanvasDimensions(); | |
canvas = makeCanvas(true, "base"); | |
overlay = makeCanvas(false, "overlay"); // overlay canvas for interactive features | |
reused = false; | |
} | |
else { | |
// reuse existing elements | |
canvas = existingCanvas.get(0); | |
overlay = existingOverlay.get(0); | |
reused = true; | |
} | |
ctx = canvas.getContext("2d"); | |
octx = overlay.getContext("2d"); | |
// we include the canvas in the event holder too, because IE 7 | |
// sometimes has trouble with the stacking order | |
eventHolder = $([overlay, canvas]); | |
if (reused) { | |
// run shutdown in the old plot object | |
placeholder.data("plot").shutdown(); | |
// reset reused canvases | |
plot.resize(); | |
// make sure overlay pixels are cleared (canvas is cleared when we redraw) | |
octx.clearRect(0, 0, canvasWidth, canvasHeight); | |
// then whack any remaining obvious garbage left | |
eventHolder.unbind(); | |
placeholder.children().not([canvas, overlay]).remove(); | |
} | |
// save in case we get replotted | |
placeholder.data("plot", plot); | |
} | |
function bindEvents() { | |
// bind events | |
if (options.grid.hoverable) { | |
eventHolder.mousemove(onMouseMove); | |
eventHolder.mouseleave(onMouseLeave); | |
} | |
if (options.grid.clickable) | |
eventHolder.click(onClick); | |
executeHooks(hooks.bindEvents, [eventHolder]); | |
} | |
function shutdown() { | |
if (redrawTimeout) | |
clearTimeout(redrawTimeout); | |
eventHolder.unbind("mousemove", onMouseMove); | |
eventHolder.unbind("mouseleave", onMouseLeave); | |
eventHolder.unbind("click", onClick); | |
executeHooks(hooks.shutdown, [eventHolder]); | |
} | |
function setTransformationHelpers(axis) { | |
// set helper functions on the axis, assumes plot area | |
// has been computed already | |
function identity(x) { return x; } | |
var s, m, t = axis.options.transform || identity, | |
it = axis.options.inverseTransform; | |
// precompute how much the axis is scaling a point | |
// in canvas space | |
if (axis.direction == "x") { | |
s = axis.scale = plotWidth / Math.abs(t(axis.max) - t(axis.min)); | |
m = Math.min(t(axis.max), t(axis.min)); | |
} | |
else { | |
s = axis.scale = plotHeight / Math.abs(t(axis.max) - t(axis.min)); | |
s = -s; | |
m = Math.max(t(axis.max), t(axis.min)); | |
} | |
// data point to canvas coordinate | |
if (t == identity) // slight optimization | |
axis.p2c = function (p) { return (p - m) * s; }; | |
else | |
axis.p2c = function (p) { return (t(p) - m) * s; }; | |
// canvas coordinate to data point | |
if (!it) | |
axis.c2p = function (c) { return m + c / s; }; | |
else | |
axis.c2p = function (c) { return it(m + c / s); }; | |
} | |
function measureTickLabels(axis) { | |
var opts = axis.options, i, ticks = axis.ticks || [], labels = [], | |
l, w = opts.labelWidth, h = opts.labelHeight, dummyDiv; | |
function makeDummyDiv(labels, width) { | |
return $('<div style="position:absolute;top:-10000px;' + width + 'font-size:smaller">' + | |
'<div class="' + axis.direction + 'Axis ' + axis.direction + axis.n + 'Axis">' | |
+ labels.join("") + '</div></div>') | |
.appendTo(placeholder); | |
} | |
if (axis.direction == "x") { | |
// to avoid measuring the widths of the labels (it's slow), we | |
// construct fixed-size boxes and put the labels inside | |
// them, we don't need the exact figures and the | |
// fixed-size box content is easy to center | |
if (w == null) | |
w = Math.floor(canvasWidth / (ticks.length > 0 ? ticks.length : 1)); | |
// measure x label heights | |
if (h == null) { | |
labels = []; | |
for (i = 0; i < ticks.length; ++i) { | |
l = ticks[i].label; | |
if (l) | |
labels.push('<div class="tickLabel" style="float:left;width:' + w + 'px">' + l + '</div>'); | |
} | |
if (labels.length > 0) { | |
// stick them all in the same div and measure | |
// collective height | |
labels.push('<div style="clear:left"></div>'); | |
dummyDiv = makeDummyDiv(labels, "width:10000px;"); | |
h = dummyDiv.height(); | |
dummyDiv.remove(); | |
} | |
} | |
} | |
else if (w == null || h == null) { | |
// calculate y label dimensions | |
for (i = 0; i < ticks.length; ++i) { | |
l = ticks[i].label; | |
if (l) | |
labels.push('<div class="tickLabel">' + l + '</div>'); | |
} | |
if (labels.length > 0) { | |
dummyDiv = makeDummyDiv(labels, ""); | |
if (w == null) | |
w = dummyDiv.children().width(); | |
if (h == null) | |
h = dummyDiv.find("div.tickLabel").height(); | |
dummyDiv.remove(); | |
} | |
} | |
if (w == null) | |
w = 0; | |
if (h == null) | |
h = 0; | |
axis.labelWidth = w; | |
axis.labelHeight = h; | |
} | |
function allocateAxisBoxFirstPhase(axis) { | |
// find the bounding box of the axis by looking at label | |
// widths/heights and ticks, make room by diminishing the | |
// plotOffset | |
var lw = axis.labelWidth, | |
lh = axis.labelHeight, | |
pos = axis.options.position, | |
tickLength = axis.options.tickLength, | |
axismargin = options.grid.axisMargin, | |
padding = options.grid.labelMargin, | |
all = axis.direction == "x" ? xaxes : yaxes, | |
index; | |
// determine axis margin | |
var samePosition = $.grep(all, function (a) { | |
return a && a.options.position == pos && a.reserveSpace; | |
}); | |
if ($.inArray(axis, samePosition) == samePosition.length - 1) | |
axismargin = 0; // outermost | |
// determine tick length - if we're innermost, we can use "full" | |
if (tickLength == null) | |
tickLength = "full"; | |
var sameDirection = $.grep(all, function (a) { | |
return a && a.reserveSpace; | |
}); | |
var innermost = $.inArray(axis, sameDirection) == 0; | |
if (!innermost && tickLength == "full") | |
tickLength = 5; | |
if (!isNaN(+tickLength)) | |
padding += +tickLength; | |
// compute box | |
if (axis.direction == "x") { | |
lh += padding; | |
if (pos == "bottom") { | |
plotOffset.bottom += lh + axismargin; | |
axis.box = { top: canvasHeight - plotOffset.bottom, height: lh }; | |
} | |
else { | |
axis.box = { top: plotOffset.top + axismargin, height: lh }; | |
plotOffset.top += lh + axismargin; | |
} | |
} | |
else { | |
lw += padding; | |
if (pos == "left") { | |
axis.box = { left: plotOffset.left + axismargin, width: lw }; | |
plotOffset.left += lw + axismargin; | |
} | |
else { | |
plotOffset.right += lw + axismargin; | |
axis.box = { left: canvasWidth - plotOffset.right, width: lw }; | |
} | |
} | |
// save for future reference | |
axis.position = pos; | |
axis.tickLength = tickLength; | |
axis.box.padding = padding; | |
axis.innermost = innermost; | |
} | |
function allocateAxisBoxSecondPhase(axis) { | |
// set remaining bounding box coordinates | |
if (axis.direction == "x") { | |
axis.box.left = plotOffset.left; | |
axis.box.width = plotWidth; | |
} | |
else { | |
axis.box.top = plotOffset.top; | |
axis.box.height = plotHeight; | |
} | |
} | |
function setupGrid() { | |
var i, axes = allAxes(); | |
// first calculate the plot and axis box dimensions | |
$.each(axes, function (_, axis) { | |
axis.show = axis.options.show; | |
if (axis.show == null) | |
axis.show = axis.used; // by default an axis is visible if it's got data | |
axis.reserveSpace = axis.show || axis.options.reserveSpace; | |
setRange(axis); | |
}); | |
allocatedAxes = $.grep(axes, function (axis) { return axis.reserveSpace; }); | |
plotOffset.left = plotOffset.right = plotOffset.top = plotOffset.bottom = 0; | |
if (options.grid.show) { | |
$.each(allocatedAxes, function (_, axis) { | |
// make the ticks | |
setupTickGeneration(axis); | |
setTicks(axis); | |
snapRangeToTicks(axis, axis.ticks); | |
// find labelWidth/Height for axis | |
measureTickLabels(axis); | |
}); | |
// with all dimensions in house, we can compute the | |
// axis boxes, start from the outside (reverse order) | |
for (i = allocatedAxes.length - 1; i >= 0; --i) | |
allocateAxisBoxFirstPhase(allocatedAxes[i]); | |
// make sure we've got enough space for things that | |
// might stick out | |
var minMargin = options.grid.minBorderMargin; | |
if (minMargin == null) { | |
minMargin = 0; | |
for (i = 0; i < series.length; ++i) | |
minMargin = Math.max(minMargin, series[i].points.radius + series[i].points.lineWidth/2); | |
} | |
for (var a in plotOffset) { | |
plotOffset[a] += options.grid.borderWidth; | |
plotOffset[a] = Math.max(minMargin, plotOffset[a]); | |
} | |
} | |
plotWidth = canvasWidth - plotOffset.left - plotOffset.right; | |
plotHeight = canvasHeight - plotOffset.bottom - plotOffset.top; | |
// now we got the proper plotWidth/Height, we can compute the scaling | |
$.each(axes, function (_, axis) { | |
setTransformationHelpers(axis); | |
}); | |
if (options.grid.show) { | |
$.each(allocatedAxes, function (_, axis) { | |
allocateAxisBoxSecondPhase(axis); | |
}); | |
insertAxisLabels(); | |
} | |
insertLegend(); | |
} | |
function setRange(axis) { | |
var opts = axis.options, | |
min = +(opts.min != null ? opts.min : axis.datamin), | |
max = +(opts.max != null ? opts.max : axis.datamax), | |
delta = max - min; | |
if (delta == 0.0) { | |
// degenerate case | |
var widen = max == 0 ? 1 : 0.01; | |
if (opts.min == null) | |
min -= widen; | |
// always widen max if we couldn't widen min to ensure we | |
// don't fall into min == max which doesn't work | |
if (opts.max == null || opts.min != null) | |
max += widen; | |
} | |
else { | |
// consider autoscaling | |
var margin = opts.autoscaleMargin; | |
if (margin != null) { | |
if (opts.min == null) { | |
min -= delta * margin; | |
// make sure we don't go below zero if all values | |
// are positive | |
if (min < 0 && axis.datamin != null && axis.datamin >= 0) | |
min = 0; | |
} | |
if (opts.max == null) { | |
max += delta * margin; | |
if (max > 0 && axis.datamax != null && axis.datamax <= 0) | |
max = 0; | |
} | |
} | |
} | |
axis.min = min; | |
axis.max = max; | |
} | |
function setupTickGeneration(axis) { | |
var opts = axis.options; | |
// estimate number of ticks | |
var noTicks; | |
if (typeof opts.ticks == "number" && opts.ticks > 0) | |
noTicks = opts.ticks; | |
else | |
// heuristic based on the model a*sqrt(x) fitted to | |
// some data points that seemed reasonable | |
noTicks = 0.3 * Math.sqrt(axis.direction == "x" ? canvasWidth : canvasHeight); | |
var delta = (axis.max - axis.min) / noTicks, | |
size, generator, unit, formatter, i, magn, norm; | |
if (opts.mode == "time") { | |
// pretty handling of time | |
// map of app. size of time units in milliseconds | |
var timeUnitSize = { | |
"second": 1000, | |
"minute": 60 * 1000, | |
"hour": 60 * 60 * 1000, | |
"day": 24 * 60 * 60 * 1000, | |
"month": 30 * 24 * 60 * 60 * 1000, | |
"year": 365.2425 * 24 * 60 * 60 * 1000 | |
}; | |
// the allowed tick sizes, after 1 year we use | |
// an integer algorithm | |
var spec = [ | |
[1, "second"], [2, "second"], [5, "second"], [10, "second"], | |
[30, "second"], | |
[1, "minute"], [2, "minute"], [5, "minute"], [10, "minute"], | |
[30, "minute"], | |
[1, "hour"], [2, "hour"], [4, "hour"], | |
[8, "hour"], [12, "hour"], | |
[1, "day"], [2, "day"], [3, "day"], | |
[0.25, "month"], [0.5, "month"], [1, "month"], | |
[2, "month"], [3, "month"], [6, "month"], | |
[1, "year"] | |
]; | |
var minSize = 0; | |
if (opts.minTickSize != null) { | |
if (typeof opts.tickSize == "number") | |
minSize = opts.tickSize; | |
else | |
minSize = opts.minTickSize[0] * timeUnitSize[opts.minTickSize[1]]; | |
} | |
for (var i = 0; i < spec.length - 1; ++i) | |
if (delta < (spec[i][0] * timeUnitSize[spec[i][1]] | |
+ spec[i + 1][0] * timeUnitSize[spec[i + 1][1]]) / 2 | |
&& spec[i][0] * timeUnitSize[spec[i][1]] >= minSize) | |
break; | |
size = spec[i][0]; | |
unit = spec[i][1]; | |
// special-case the possibility of several years | |
if (unit == "year") { | |
magn = Math.pow(10, Math.floor(Math.log(delta / timeUnitSize.year) / Math.LN10)); | |
norm = (delta / timeUnitSize.year) / magn; | |
if (norm < 1.5) | |
size = 1; | |
else if (norm < 3) | |
size = 2; | |
else if (norm < 7.5) | |
size = 5; | |
else | |
size = 10; | |
size *= magn; | |
} | |
axis.tickSize = opts.tickSize || [size, unit]; | |
generator = function(axis) { | |
var ticks = [], | |
tickSize = axis.tickSize[0], unit = axis.tickSize[1], | |
d = new Date(axis.min); | |
var step = tickSize * timeUnitSize[unit]; | |
if (unit == "second") | |
d.setUTCSeconds(floorInBase(d.getUTCSeconds(), tickSize)); | |
if (unit == "minute") | |
d.setUTCMinutes(floorInBase(d.getUTCMinutes(), tickSize)); | |
if (unit == "hour") | |
d.setUTCHours(floorInBase(d.getUTCHours(), tickSize)); | |
if (unit == "month") | |
d.setUTCMonth(floorInBase(d.getUTCMonth(), tickSize)); | |
if (unit == "year") | |
d.setUTCFullYear(floorInBase(d.getUTCFullYear(), tickSize)); | |
// reset smaller components | |
d.setUTCMilliseconds(0); | |
if (step >= timeUnitSize.minute) | |
d.setUTCSeconds(0); | |
if (step >= timeUnitSize.hour) | |
d.setUTCMinutes(0); | |
if (step >= timeUnitSize.day) | |
d.setUTCHours(0); | |
if (step >= timeUnitSize.day * 4) | |
d.setUTCDate(1); | |
if (step >= timeUnitSize.year) | |
d.setUTCMonth(0); | |
var carry = 0, v = Number.NaN, prev; | |
do { | |
prev = v; | |
v = d.getTime(); | |
ticks.push(v); | |
if (unit == "month") { | |
if (tickSize < 1) { | |
// a bit complicated - we'll divide the month | |
// up but we need to take care of fractions | |
// so we don't end up in the middle of a day | |
d.setUTCDate(1); | |
var start = d.getTime(); | |
d.setUTCMonth(d.getUTCMonth() + 1); | |
var end = d.getTime(); | |
d.setTime(v + carry * timeUnitSize.hour + (end - start) * tickSize); | |
carry = d.getUTCHours(); | |
d.setUTCHours(0); | |
} | |
else | |
d.setUTCMonth(d.getUTCMonth() + tickSize); | |
} | |
else if (unit == "year") { | |
d.setUTCFullYear(d.getUTCFullYear() + tickSize); | |
} | |
else | |
d.setTime(v + step); | |
} while (v < axis.max && v != prev); | |
return ticks; | |
}; | |
formatter = function (v, axis) { | |
var d = new Date(v); | |
// first check global format | |
if (opts.timeformat != null) | |
return $.plot.formatDate(d, opts.timeformat, opts.monthNames); | |
var t = axis.tickSize[0] * timeUnitSize[axis.tickSize[1]]; | |
var span = axis.max - axis.min; | |
var suffix = (opts.twelveHourClock) ? " %p" : ""; | |
if (t < timeUnitSize.minute) | |
fmt = "%h:%M:%S" + suffix; | |
else if (t < timeUnitSize.day) { | |
if (span < 2 * timeUnitSize.day) | |
fmt = "%h:%M" + suffix; | |
else | |
fmt = "%b %d %h:%M" + suffix; | |
} | |
else if (t < timeUnitSize.month) | |
fmt = "%b %d"; | |
else if (t < timeUnitSize.year) { | |
if (span < timeUnitSize.year) | |
fmt = "%b"; | |
else | |
fmt = "%b %y"; | |
} | |
else | |
fmt = "%y"; | |
return $.plot.formatDate(d, fmt, opts.monthNames); | |
}; | |
} | |
else { | |
// pretty rounding of base-10 numbers | |
var maxDec = opts.tickDecimals; | |
var dec = -Math.floor(Math.log(delta) / Math.LN10); | |
if (maxDec != null && dec > maxDec) | |
dec = maxDec; | |
magn = Math.pow(10, -dec); | |
norm = delta / magn; // norm is between 1.0 and 10.0 | |
if (norm < 1.5) | |
size = 1; | |
else if (norm < 3) { | |
size = 2; | |
// special case for 2.5, requires an extra decimal | |
if (norm > 2.25 && (maxDec == null || dec + 1 <= maxDec)) { | |
size = 2.5; | |
++dec; | |
} | |
} | |
else if (norm < 7.5) | |
size = 5; | |
else | |
size = 10; | |
size *= magn; | |
if (opts.minTickSize != null && size < opts.minTickSize) | |
size = opts.minTickSize; | |
axis.tickDecimals = Math.max(0, maxDec != null ? maxDec : dec); | |
axis.tickSize = opts.tickSize || size; | |
generator = function (axis) { | |
var ticks = []; | |
// spew out all possible ticks | |
var start = floorInBase(axis.min, axis.tickSize), | |
i = 0, v = Number.NaN, prev; | |
do { | |
prev = v; | |
v = start + i * axis.tickSize; | |
ticks.push(v); | |
++i; | |
} while (v < axis.max && v != prev); | |
return ticks; | |
}; | |
formatter = function (v, axis) { | |
return v.toFixed(axis.tickDecimals); | |
}; | |
} | |
if (opts.alignTicksWithAxis != null) { | |
var otherAxis = (axis.direction == "x" ? xaxes : yaxes)[opts.alignTicksWithAxis - 1]; | |
if (otherAxis && otherAxis.used && otherAxis != axis) { | |
// consider snapping min/max to outermost nice ticks | |
var niceTicks = generator(axis); | |
if (niceTicks.length > 0) { | |
if (opts.min == null) | |
axis.min = Math.min(axis.min, niceTicks[0]); | |
if (opts.max == null && niceTicks.length > 1) | |
axis.max = Math.max(axis.max, niceTicks[niceTicks.length - 1]); | |
} | |
generator = function (axis) { | |
// copy ticks, scaled to this axis | |
var ticks = [], v, i; | |
for (i = 0; i < otherAxis.ticks.length; ++i) { | |
v = (otherAxis.ticks[i].v - otherAxis.min) / (otherAxis.max - otherAxis.min); | |
v = axis.min + v * (axis.max - axis.min); | |
ticks.push(v); | |
} | |
return ticks; | |
}; | |
// we might need an extra decimal since forced | |
// ticks don't necessarily fit naturally | |
if (axis.mode != "time" && opts.tickDecimals == null) { | |
var extraDec = Math.max(0, -Math.floor(Math.log(delta) / Math.LN10) + 1), | |
ts = generator(axis); | |
// only proceed if the tick interval rounded | |
// with an extra decimal doesn't give us a | |
// zero at end | |
if (!(ts.length > 1 && /\..*0$/.test((ts[1] - ts[0]).toFixed(extraDec)))) | |
axis.tickDecimals = extraDec; | |
} | |
} | |
} | |
axis.tickGenerator = generator; | |
if ($.isFunction(opts.tickFormatter)) | |
axis.tickFormatter = function (v, axis) { return "" + opts.tickFormatter(v, axis); }; | |
else | |
axis.tickFormatter = formatter; | |
} | |
function setTicks(axis) { | |
var oticks = axis.options.ticks, ticks = []; | |
if (oticks == null || (typeof oticks == "number" && oticks > 0)) | |
ticks = axis.tickGenerator(axis); | |
else if (oticks) { | |
if ($.isFunction(oticks)) | |
// generate the ticks | |
ticks = oticks({ min: axis.min, max: axis.max }); | |
else | |
ticks = oticks; | |
} | |
// clean up/labelify the supplied ticks, copy them over | |
var i, v; | |
axis.ticks = []; | |
for (i = 0; i < ticks.length; ++i) { | |
var label = null; | |
var t = ticks[i]; | |
if (typeof t == "object") { | |
v = +t[0]; | |
if (t.length > 1) | |
label = t[1]; | |
} | |
else | |
v = +t; | |
if (label == null) | |
label = axis.tickFormatter(v, axis); | |
if (!isNaN(v)) | |
axis.ticks.push({ v: v, label: label }); | |
} | |
} | |
function snapRangeToTicks(axis, ticks) { | |
if (axis.options.autoscaleMargin && ticks.length > 0) { | |
// snap to ticks | |
if (axis.options.min == null) | |
axis.min = Math.min(axis.min, ticks[0].v); | |
if (axis.options.max == null && ticks.length > 1) | |
axis.max = Math.max(axis.max, ticks[ticks.length - 1].v); | |
} | |
} | |
function draw() { | |
ctx.clearRect(0, 0, canvasWidth, canvasHeight); | |
var grid = options.grid; | |
// draw background, if any | |
if (grid.show && grid.backgroundColor) | |
drawBackground(); | |
if (grid.show && !grid.aboveData) | |
drawGrid(); | |
for (var i = 0; i < series.length; ++i) { | |
executeHooks(hooks.drawSeries, [ctx, series[i]]); | |
drawSeries(series[i]); | |
} | |
executeHooks(hooks.draw, [ctx]); | |
if (grid.show && grid.aboveData) | |
drawGrid(); | |
} | |
function extractRange(ranges, coord) { | |
var axis, from, to, key, axes = allAxes(); | |
for (i = 0; i < axes.length; ++i) { | |
axis = axes[i]; | |
if (axis.direction == coord) { | |
key = coord + axis.n + "axis"; | |
if (!ranges[key] && axis.n == 1) | |
key = coord + "axis"; // support x1axis as xaxis | |
if (ranges[key]) { | |
from = ranges[key].from; | |
to = ranges[key].to; | |
break; | |
} | |
} | |
} | |
// backwards-compat stuff - to be removed in future | |
if (!ranges[key]) { | |
axis = coord == "x" ? xaxes[0] : yaxes[0]; | |
from = ranges[coord + "1"]; | |
to = ranges[coord + "2"]; | |
} | |
// auto-reverse as an added bonus | |
if (from != null && to != null && from > to) { | |
var tmp = from; | |
from = to; | |
to = tmp; | |
} | |
return { from: from, to: to, axis: axis }; | |
} | |
function drawBackground() { | |
ctx.save(); | |
ctx.translate(plotOffset.left, plotOffset.top); | |
ctx.fillStyle = getColorOrGradient(options.grid.backgroundColor, plotHeight, 0, "rgba(255, 255, 255, 0)"); | |
ctx.fillRect(0, 0, plotWidth, plotHeight); | |
ctx.restore(); | |
} | |
function drawGrid() { | |
var i; | |
ctx.save(); | |
ctx.translate(plotOffset.left, plotOffset.top); | |
// draw markings | |
var markings = options.grid.markings; | |
if (markings) { | |
if ($.isFunction(markings)) { | |
var axes = plot.getAxes(); | |
// xmin etc. is backwards compatibility, to be | |
// removed in the future | |
axes.xmin = axes.xaxis.min; | |
axes.xmax = axes.xaxis.max; | |
axes.ymin = axes.yaxis.min; | |
axes.ymax = axes.yaxis.max; | |
markings = markings(axes); | |
} | |
for (i = 0; i < markings.length; ++i) { | |
var m = markings[i], | |
xrange = extractRange(m, "x"), | |
yrange = extractRange(m, "y"); | |
// fill in missing | |
if (xrange.from == null) | |
xrange.from = xrange.axis.min; | |
if (xrange.to == null) | |
xrange.to = xrange.axis.max; | |
if (yrange.from == null) | |
yrange.from = yrange.axis.min; | |
if (yrange.to == null) | |
yrange.to = yrange.axis.max; | |
// clip | |
if (xrange.to < xrange.axis.min || xrange.from > xrange.axis.max || | |
yrange.to < yrange.axis.min || yrange.from > yrange.axis.max) | |
continue; | |
xrange.from = Math.max(xrange.from, xrange.axis.min); | |
xrange.to = Math.min(xrange.to, xrange.axis.max); | |
yrange.from = Math.max(yrange.from, yrange.axis.min); | |
yrange.to = Math.min(yrange.to, yrange.axis.max); | |
if (xrange.from == xrange.to && yrange.from == yrange.to) | |
continue; | |
// then draw | |
xrange.from = xrange.axis.p2c(xrange.from); | |
xrange.to = xrange.axis.p2c(xrange.to); | |
yrange.from = yrange.axis.p2c(yrange.from); | |
yrange.to = yrange.axis.p2c(yrange.to); | |
if (xrange.from == xrange.to || yrange.from == yrange.to) { | |
// draw line | |
ctx.beginPath(); | |
ctx.strokeStyle = m.color || options.grid.markingsColor; | |
ctx.lineWidth = m.lineWidth || options.grid.markingsLineWidth; | |
ctx.moveTo(xrange.from, yrange.from); | |
ctx.lineTo(xrange.to, yrange.to); | |
ctx.stroke(); | |
} | |
else { | |
// fill area | |
ctx.fillStyle = m.color || options.grid.markingsColor; | |
ctx.fillRect(xrange.from, yrange.to, | |
xrange.to - xrange.from, | |
yrange.from - yrange.to); | |
} | |
} | |
} | |
// draw the ticks | |
var axes = allAxes(), bw = options.grid.borderWidth; | |
for (var j = 0; j < axes.length; ++j) { | |
var axis = axes[j], box = axis.box, | |
t = axis.tickLength, x, y, xoff, yoff; | |
if (!axis.show || axis.ticks.length == 0) | |
continue | |
ctx.strokeStyle = axis.options.tickColor || $.color.parse(axis.options.color).scale('a', 0.22).toString(); | |
ctx.lineWidth = 1; | |
// find the edges | |
if (axis.direction == "x") { | |
x = 0; | |
if (t == "full") | |
y = (axis.position == "top" ? 0 : plotHeight); | |
else | |
y = box.top - plotOffset.top + (axis.position == "top" ? box.height : 0); | |
} | |
else { | |
y = 0; | |
if (t == "full") | |
x = (axis.position == "left" ? 0 : plotWidth); | |
else | |
x = box.left - plotOffset.left + (axis.position == "left" ? box.width : 0); | |
} | |
// draw tick bar | |
if (!axis.innermost) { | |
ctx.beginPath(); | |
xoff = yoff = 0; | |
if (axis.direction == "x") | |
xoff = plotWidth; | |
else | |
yoff = plotHeight; | |
if (ctx.lineWidth == 1) { | |
x = Math.floor(x) + 0.5; | |
y = Math.floor(y) + 0.5; | |
} | |
ctx.moveTo(x, y); | |
ctx.lineTo(x + xoff, y + yoff); | |
ctx.stroke(); | |
} | |
// draw ticks | |
ctx.beginPath(); | |
for (i = 0; i < axis.ticks.length; ++i) { | |
var v = axis.ticks[i].v; | |
xoff = yoff = 0; | |
if (v < axis.min || v > axis.max | |
// skip those lying on the axes if we got a border | |
|| (t == "full" && bw > 0 | |
&& (v == axis.min || v == axis.max))) | |
continue; | |
if (axis.direction == "x") { | |
x = axis.p2c(v); | |
yoff = t == "full" ? -plotHeight : t; | |
if (axis.position == "top") | |
yoff = -yoff; | |
} | |
else { | |
y = axis.p2c(v); | |
xoff = t == "full" ? -plotWidth : t; | |
if (axis.position == "left") | |
xoff = -xoff; | |
} | |
if (ctx.lineWidth == 1) { | |
if (axis.direction == "x") | |
x = Math.floor(x) + 0.5; | |
else | |
y = Math.floor(y) + 0.5; | |
} | |
ctx.moveTo(x, y); | |
ctx.lineTo(x + xoff, y + yoff); | |
} | |
ctx.stroke(); | |
} | |
// draw border | |
if (bw) { | |
ctx.lineWidth = bw; | |
ctx.strokeStyle = options.grid.borderColor; | |
ctx.strokeRect(-bw/2, -bw/2, plotWidth + bw, plotHeight + bw); | |
} | |
ctx.restore(); | |
} | |
function insertAxisLabels() { | |
placeholder.find(".tickLabels").remove(); | |
var html = ['<div class="tickLabels" style="font-size:smaller">']; | |
var axes = allAxes(); | |
for (var j = 0; j < axes.length; ++j) { | |
var axis = axes[j], box = axis.box; | |
if (!axis.show) | |
continue; | |
//debug: html.push('<div style="position:absolute;opacity:0.10;background-color:red;left:' + box.left + 'px;top:' + box.top + 'px;width:' + box.width + 'px;height:' + box.height + 'px"></div>') | |
html.push('<div class="' + axis.direction + 'Axis ' + axis.direction + axis.n + 'Axis" style="color:' + axis.options.color + '">'); | |
for (var i = 0; i < axis.ticks.length; ++i) { | |
var tick = axis.ticks[i]; | |
if (!tick.label || tick.v < axis.min || tick.v > axis.max) | |
continue; | |
var pos = {}, align; | |
if (axis.direction == "x") { | |
align = "center"; | |
pos.left = Math.round(plotOffset.left + axis.p2c(tick.v) - axis.labelWidth/2); | |
if (axis.position == "bottom") | |
pos.top = box.top + box.padding; | |
else | |
pos.bottom = canvasHeight - (box.top + box.height - box.padding); | |
} | |
else { | |
pos.top = Math.round(plotOffset.top + axis.p2c(tick.v) - axis.labelHeight/2); | |
if (axis.position == "left") { | |
pos.right = canvasWidth - (box.left + box.width - box.padding) | |
align = "right"; | |
} | |
else { | |
pos.left = box.left + box.padding; | |
align = "left"; | |
} | |
} | |
pos.width = axis.labelWidth; | |
var style = ["position:absolute", "text-align:" + align ]; | |
for (var a in pos) | |
style.push(a + ":" + pos[a] + "px") | |
html.push('<div class="tickLabel" style="' + style.join(';') + '">' + tick.label + '</div>'); | |
} | |
html.push('</div>'); | |
} | |
html.push('</div>'); | |
placeholder.append(html.join("")); | |
} | |
function drawSeries(series) { | |
if (series.lines.show) | |
drawSeriesLines(series); | |
if (series.bars.show) | |
drawSeriesBars(series); | |
if (series.points.show) | |
drawSeriesPoints(series); | |
} | |
function drawSeriesLines(series) { | |
function plotLine(datapoints, xoffset, yoffset, axisx, axisy) { | |
var points = datapoints.points, | |
ps = datapoints.pointsize, | |
prevx = null, prevy = null; | |
ctx.beginPath(); | |
for (var i = ps; i < points.length; i += ps) { | |
var x1 = points[i - ps], y1 = points[i - ps + 1], | |
x2 = points[i], y2 = points[i + 1]; | |
if (x1 == null || x2 == null) | |
continue; | |
// clip with ymin | |
if (y1 <= y2 && y1 < axisy.min) { | |
if (y2 < axisy.min) | |
continue; // line segment is outside | |
// compute new intersection point | |
x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; | |
y1 = axisy.min; | |
} | |
else if (y2 <= y1 && y2 < axisy.min) { | |
if (y1 < axisy.min) | |
continue; | |
x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; | |
y2 = axisy.min; | |
} | |
// clip with ymax | |
if (y1 >= y2 && y1 > axisy.max) { | |
if (y2 > axisy.max) | |
continue; | |
x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; | |
y1 = axisy.max; | |
} | |
else if (y2 >= y1 && y2 > axisy.max) { | |
if (y1 > axisy.max) | |
continue; | |
x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; | |
y2 = axisy.max; | |
} | |
// clip with xmin | |
if (x1 <= x2 && x1 < axisx.min) { | |
if (x2 < axisx.min) | |
continue; | |
y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; | |
x1 = axisx.min; | |
} | |
else if (x2 <= x1 && x2 < axisx.min) { | |
if (x1 < axisx.min) | |
continue; | |
y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; | |
x2 = axisx.min; | |
} | |
// clip with xmax | |
if (x1 >= x2 && x1 > axisx.max) { | |
if (x2 > axisx.max) | |
continue; | |
y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; | |
x1 = axisx.max; | |
} | |
else if (x2 >= x1 && x2 > axisx.max) { | |
if (x1 > axisx.max) | |
continue; | |
y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; | |
x2 = axisx.max; | |
} | |
if (x1 != prevx || y1 != prevy) | |
ctx.moveTo(axisx.p2c(x1) + xoffset, axisy.p2c(y1) + yoffset); | |
prevx = x2; | |
prevy = y2; | |
ctx.lineTo(axisx.p2c(x2) + xoffset, axisy.p2c(y2) + yoffset); | |
} | |
ctx.stroke(); | |
} | |
function plotLineArea(datapoints, axisx, axisy) { | |
var points = datapoints.points, | |
ps = datapoints.pointsize, | |
bottom = Math.min(Math.max(0, axisy.min), axisy.max), | |
i = 0, top, areaOpen = false, | |
ypos = 1, segmentStart = 0, segmentEnd = 0; | |
// we process each segment in two turns, first forward | |
// direction to sketch out top, then once we hit the | |
// end we go backwards to sketch the bottom | |
while (true) { | |
if (ps > 0 && i > points.length + ps) | |
break; | |
i += ps; // ps is negative if going backwards | |
var x1 = points[i - ps], | |
y1 = points[i - ps + ypos], | |
x2 = points[i], y2 = points[i + ypos]; | |
if (areaOpen) { | |
if (ps > 0 && x1 != null && x2 == null) { | |
// at turning point | |
segmentEnd = i; | |
ps = -ps; | |
ypos = 2; | |
continue; | |
} | |
if (ps < 0 && i == segmentStart + ps) { | |
// done with the reverse sweep | |
ctx.fill(); | |
areaOpen = false; | |
ps = -ps; | |
ypos = 1; | |
i = segmentStart = segmentEnd + ps; | |
continue; | |
} | |
} | |
if (x1 == null || x2 == null) | |
continue; | |
// clip x values | |
// clip with xmin | |
if (x1 <= x2 && x1 < axisx.min) { | |
if (x2 < axisx.min) | |
continue; | |
y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; | |
x1 = axisx.min; | |
} | |
else if (x2 <= x1 && x2 < axisx.min) { | |
if (x1 < axisx.min) | |
continue; | |
y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; | |
x2 = axisx.min; | |
} | |
// clip with xmax | |
if (x1 >= x2 && x1 > axisx.max) { | |
if (x2 > axisx.max) | |
continue; | |
y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; | |
x1 = axisx.max; | |
} | |
else if (x2 >= x1 && x2 > axisx.max) { | |
if (x1 > axisx.max) | |
continue; | |
y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; | |
x2 = axisx.max; | |
} | |
if (!areaOpen) { | |
// open area | |
ctx.beginPath(); | |
ctx.moveTo(axisx.p2c(x1), axisy.p2c(bottom)); | |
areaOpen = true; | |
} | |
// now first check the case where both is outside | |
if (y1 >= axisy.max && y2 >= axisy.max) { | |
ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.max)); | |
ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.max)); | |
continue; | |
} | |
else if (y1 <= axisy.min && y2 <= axisy.min) { | |
ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.min)); | |
ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.min)); | |
continue; | |
} | |
// else it's a bit more complicated, there might | |
// be a flat maxed out rectangle first, then a | |
// triangular cutout or reverse; to find these | |
// keep track of the current x values | |
var x1old = x1, x2old = x2; | |
// clip the y values, without shortcutting, we | |
// go through all cases in turn | |
// clip with ymin | |
if (y1 <= y2 && y1 < axisy.min && y2 >= axisy.min) { | |
x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; | |
y1 = axisy.min; | |
} | |
else if (y2 <= y1 && y2 < axisy.min && y1 >= axisy.min) { | |
x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; | |
y2 = axisy.min; | |
} | |
// clip with ymax | |
if (y1 >= y2 && y1 > axisy.max && y2 <= axisy.max) { | |
x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; | |
y1 = axisy.max; | |
} | |
else if (y2 >= y1 && y2 > axisy.max && y1 <= axisy.max) { | |
x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; | |
y2 = axisy.max; | |
} | |
// if the x value was changed we got a rectangle | |
// to fill | |
if (x1 != x1old) { | |
ctx.lineTo(axisx.p2c(x1old), axisy.p2c(y1)); | |
// it goes to (x1, y1), but we fill that below | |
} | |
// fill triangular section, this sometimes result | |
// in redundant points if (x1, y1) hasn't changed | |
// from previous line to, but we just ignore that | |
ctx.lineTo(axisx.p2c(x1), axisy.p2c(y1)); | |
ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2)); | |
// fill the other rectangle if it's there | |
if (x2 != x2old) { | |
ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2)); | |
ctx.lineTo(axisx.p2c(x2old), axisy.p2c(y2)); | |
} | |
} | |
} | |
ctx.save(); | |
ctx.translate(plotOffset.left, plotOffset.top); | |
ctx.lineJoin = "round"; | |
var lw = series.lines.lineWidth, | |
sw = series.shadowSize; | |
// FIXME: consider another form of shadow when filling is turned on | |
if (lw > 0 && sw > 0) { | |
// draw shadow as a thick and thin line with transparency | |
ctx.lineWidth = sw; | |
ctx.strokeStyle = "rgba(0,0,0,0.1)"; | |
// position shadow at angle from the mid of line | |
var angle = Math.PI/18; | |
plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/2), Math.cos(angle) * (lw/2 + sw/2), series.xaxis, series.yaxis); | |
ctx.lineWidth = sw/2; | |
plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/4), Math.cos(angle) * (lw/2 + sw/4), series.xaxis, series.yaxis); | |
} | |
ctx.lineWidth = lw; | |
ctx.strokeStyle = series.color; | |
var fillStyle = getFillStyle(series.lines, series.color, 0, plotHeight); | |
if (fillStyle) { | |
ctx.fillStyle = fillStyle; | |
plotLineArea(series.datapoints, series.xaxis, series.yaxis); | |
} | |
if (lw > 0) | |
plotLine(series.datapoints, 0, 0, series.xaxis, series.yaxis); | |
ctx.restore(); | |
} | |
function drawSeriesPoints(series) { | |
function plotPoints(datapoints, radius, fillStyle, offset, shadow, axisx, axisy, symbol) { | |
var points = datapoints.points, ps = datapoints.pointsize; | |
for (var i = 0; i < points.length; i += ps) { | |
var x = points[i], y = points[i + 1]; | |
if (x == null || x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max) | |
continue; | |
ctx.beginPath(); | |
x = axisx.p2c(x); | |
y = axisy.p2c(y) + offset; | |
if (symbol == "circle") | |
ctx.arc(x, y, radius, 0, shadow ? Math.PI : Math.PI * 2, false); | |
else | |
symbol(ctx, x, y, radius, shadow); | |
ctx.closePath(); | |
if (fillStyle) { | |
ctx.fillStyle = fillStyle; | |
ctx.fill(); | |
} | |
ctx.stroke(); | |
} | |
} | |
ctx.save(); | |
ctx.translate(plotOffset.left, plotOffset.top); | |
var lw = series.points.lineWidth, | |
sw = series.shadowSize, | |
radius = series.points.radius, | |
symbol = series.points.symbol; | |
if (lw > 0 && sw > 0) { | |
// draw shadow in two steps | |
var w = sw / 2; | |
ctx.lineWidth = w; | |
ctx.strokeStyle = "rgba(0,0,0,0.1)"; | |
plotPoints(series.datapoints, radius, null, w + w/2, true, | |
series.xaxis, series.yaxis, symbol); | |
ctx.strokeStyle = "rgba(0,0,0,0.2)"; | |
plotPoints(series.datapoints, radius, null, w/2, true, | |
series.xaxis, series.yaxis, symbol); | |
} | |
ctx.lineWidth = lw; | |
ctx.strokeStyle = series.color; | |
plotPoints(series.datapoints, radius, | |
getFillStyle(series.points, series.color), 0, false, | |
series.xaxis, series.yaxis, symbol); | |
ctx.restore(); | |
} | |
function drawBar(x, y, b, barLeft, barRight, offset, fillStyleCallback, axisx, axisy, c, horizontal, lineWidth) { | |
var left, right, bottom, top, | |
drawLeft, drawRight, drawTop, drawBottom, | |
tmp; | |
// in horizontal mode, we start the bar from the left | |
// instead of from the bottom so it appears to be | |
// horizontal rather than vertical | |
if (horizontal) { | |
drawBottom = drawRight = drawTop = true; | |
drawLeft = false; | |
left = b; | |
right = x; | |
top = y + barLeft; | |
bottom = y + barRight; | |
// account for negative bars | |
if (right < left) { | |
tmp = right; | |
right = left; | |
left = tmp; | |
drawLeft = true; | |
drawRight = false; | |
} | |
} | |
else { | |
drawLeft = drawRight = drawTop = true; | |
drawBottom = false; | |
left = x + barLeft; | |
right = x + barRight; | |
bottom = b; | |
top = y; | |
// account for negative bars | |
if (top < bottom) { | |
tmp = top; | |
top = bottom; | |
bottom = tmp; | |
drawBottom = true; | |
drawTop = false; | |
} | |
} | |
// clip | |
if (right < axisx.min || left > axisx.max || | |
top < axisy.min || bottom > axisy.max) | |
return; | |
if (left < axisx.min) { | |
left = axisx.min; | |
drawLeft = false; | |
} | |
if (right > axisx.max) { | |
right = axisx.max; | |
drawRight = false; | |
} | |
if (bottom < axisy.min) { | |
bottom = axisy.min; | |
drawBottom = false; | |
} | |
if (top > axisy.max) { | |
top = axisy.max; | |
drawTop = false; | |
} | |
left = axisx.p2c(left); | |
bottom = axisy.p2c(bottom); | |
right = axisx.p2c(right); | |
top = axisy.p2c(top); | |
// fill the bar | |
if (fillStyleCallback) { | |
c.beginPath(); | |
c.moveTo(left, bottom); | |
c.lineTo(left, top); | |
c.lineTo(right, top); | |
c.lineTo(right, bottom); | |
c.fillStyle = fillStyleCallback(bottom, top); | |
c.fill(); | |
} | |
// draw outline | |
if (lineWidth > 0 && (drawLeft || drawRight || drawTop || drawBottom)) { | |
c.beginPath(); | |
// FIXME: inline moveTo is buggy with excanvas | |
c.moveTo(left, bottom + offset); | |
if (drawLeft) | |
c.lineTo(left, top + offset); | |
else | |
c.moveTo(left, top + offset); | |
if (drawTop) | |
c.lineTo(right, top + offset); | |
else | |
c.moveTo(right, top + offset); | |
if (drawRight) | |
c.lineTo(right, bottom + offset); | |
else | |
c.moveTo(right, bottom + offset); | |
if (drawBottom) | |
c.lineTo(left, bottom + offset); | |
else | |
c.moveTo(left, bottom + offset); | |
c.stroke(); | |
} | |
} | |
function drawSeriesBars(series) { | |
function plotBars(datapoints, barLeft, barRight, offset, fillStyleCallback, axisx, axisy) { | |
var points = datapoints.points, ps = datapoints.pointsize; | |
for (var i = 0; i < points.length; i += ps) { | |
if (points[i] == null) | |
continue; | |
drawBar(points[i], points[i + 1], points[i + 2], barLeft, barRight, offset, fillStyleCallback, axisx, axisy, ctx, series.bars.horizontal, series.bars.lineWidth); | |
} | |
} | |
ctx.save(); | |
ctx.translate(plotOffset.left, plotOffset.top); | |
// FIXME: figure out a way to add shadows (for instance along the right edge) | |
ctx.lineWidth = series.bars.lineWidth; | |
ctx.strokeStyle = series.color; | |
var barLeft = series.bars.align == "left" ? 0 : -series.bars.barWidth/2; | |
var fillStyleCallback = series.bars.fill ? function (bottom, top) { return getFillStyle(series.bars, series.color, bottom, top); } : null; | |
plotBars(series.datapoints, barLeft, barLeft + series.bars.barWidth, 0, fillStyleCallback, series.xaxis, series.yaxis); | |
ctx.restore(); | |
} | |
function getFillStyle(filloptions, seriesColor, bottom, top) { | |
var fill = filloptions.fill; | |
if (!fill) | |
return null; | |
if (filloptions.fillColor) | |
return getColorOrGradient(filloptions.fillColor, bottom, top, seriesColor); | |
var c = $.color.parse(seriesColor); | |
c.a = typeof fill == "number" ? fill : 0.4; | |
c.normalize(); | |
return c.toString(); | |
} | |
function insertLegend() { | |
placeholder.find(".legend").remove(); | |
if (!options.legend.show) | |
return; | |
var fragments = [], rowStarted = false, | |
lf = options.legend.labelFormatter, s, label; | |
for (var i = 0; i < series.length; ++i) { | |
s = series[i]; | |
label = s.label; | |
if (!label) | |
continue; | |
if (i % options.legend.noColumns == 0) { | |
if (rowStarted) | |
fragments.push('</tr>'); | |
fragments.push('<tr>'); | |
rowStarted = true; | |
} | |
if (lf) | |
label = lf(label, s); | |
fragments.push( | |
'<td class="legendColorBox"><div style="border:1px solid ' + options.legend.labelBoxBorderColor + ';padding:1px"><div style="width:4px;height:0;border:5px solid ' + s.color + ';overflow:hidden"></div></div></td>' + | |
'<td class="legendLabel">' + label + '</td>'); | |
} | |
if (rowStarted) | |
fragments.push('</tr>'); | |
if (fragments.length == 0) | |
return; | |
var table = '<table style="font-size:smaller;color:' + options.grid.color + '">' + fragments.join("") + '</table>'; | |
if (options.legend.container != null) | |
$(options.legend.container).html(table); | |
else { | |
var pos = "", | |
p = options.legend.position, | |
m = options.legend.margin; | |
if (m[0] == null) | |
m = [m, m]; | |
if (p.charAt(0) == "n") | |
pos += 'top:' + (m[1] + plotOffset.top) + 'px;'; | |
else if (p.charAt(0) == "s") | |
pos += 'bottom:' + (m[1] + plotOffset.bottom) + 'px;'; | |
if (p.charAt(1) == "e") | |
pos += 'right:' + (m[0] + plotOffset.right) + 'px;'; | |
else if (p.charAt(1) == "w") | |
pos += 'left:' + (m[0] + plotOffset.left) + 'px;'; | |
var legend = $('<div class="legend">' + table.replace('style="', 'style="position:absolute;' + pos +';') + '</div>').appendTo(placeholder); | |
if (options.legend.backgroundOpacity != 0.0) { | |
// put in the transparent background | |
// separately to avoid blended labels and | |
// label boxes | |
var c = options.legend.backgroundColor; | |
if (c == null) { | |
c = options.grid.backgroundColor; | |
if (c && typeof c == "string") | |
c = $.color.parse(c); | |
else | |
c = $.color.extract(legend, 'background-color'); | |
c.a = 1; | |
c = c.toString(); | |
} | |
var div = legend.children(); | |
$('<div style="position:absolute;width:' + div.width() + 'px;height:' + div.height() + 'px;' + pos +'background-color:' + c + ';"> </div>').prependTo(legend).css('opacity', options.legend.backgroundOpacity); | |
} | |
} | |
} | |
// interactive features | |
var highlights = [], | |
redrawTimeout = null; | |
// returns the data item the mouse is over, or null if none is found | |
function findNearbyItem(mouseX, mouseY, seriesFilter) { | |
var maxDistance = options.grid.mouseActiveRadius, | |
smallestDistance = maxDistance * maxDistance + 1, | |
item = null, foundPoint = false, i, j; | |
for (i = series.length - 1; i >= 0; --i) { | |
if (!seriesFilter(series[i])) | |
continue; | |
var s = series[i], | |
axisx = s.xaxis, | |
axisy = s.yaxis, | |
points = s.datapoints.points, | |
ps = s.datapoints.pointsize, | |
mx = axisx.c2p(mouseX), // precompute some stuff to make the loop faster | |
my = axisy.c2p(mouseY), | |
maxx = maxDistance / axisx.scale, | |
maxy = maxDistance / axisy.scale; | |
// with inverse transforms, we can't use the maxx/maxy | |
// optimization, sadly | |
if (axisx.options.inverseTransform) | |
maxx = Number.MAX_VALUE; | |
if (axisy.options.inverseTransform) | |
maxy = Number.MAX_VALUE; | |
if (s.lines.show || s.points.show) { | |
for (j = 0; j < points.length; j += ps) { | |
var x = points[j], y = points[j + 1]; | |
if (x == null) | |
continue; | |
// For points and lines, the cursor must be within a | |
// certain distance to the data point | |
if (x - mx > maxx || x - mx < -maxx || | |
y - my > maxy || y - my < -maxy) | |
continue; | |
// We have to calculate distances in pixels, not in | |
// data units, because the scales of the axes may be different | |
var dx = Math.abs(axisx.p2c(x) - mouseX), | |
dy = Math.abs(axisy.p2c(y) - mouseY), | |
dist = dx * dx + dy * dy; // we save the sqrt | |
// use <= to ensure last point takes precedence | |
// (last generally means on top of) | |
if (dist < smallestDistance) { | |
smallestDistance = dist; | |
item = [i, j / ps]; | |
} | |
} | |
} | |
if (s.bars.show && !item) { // no other point can be nearby | |
var barLeft = s.bars.align == "left" ? 0 : -s.bars.barWidth/2, | |
barRight = barLeft + s.bars.barWidth; | |
for (j = 0; j < points.length; j += ps) { | |
var x = points[j], y = points[j + 1], b = points[j + 2]; | |
if (x == null) | |
continue; | |
// for a bar graph, the cursor must be inside the bar | |
if (series[i].bars.horizontal ? | |
(mx <= Math.max(b, x) && mx >= Math.min(b, x) && | |
my >= y + barLeft && my <= y + barRight) : | |
(mx >= x + barLeft && mx <= x + barRight && | |
my >= Math.min(b, y) && my <= Math.max(b, y))) | |
item = [i, j / ps]; | |
} | |
} | |
} | |
if (item) { | |
i = item[0]; | |
j = item[1]; | |
ps = series[i].datapoints.pointsize; | |
return { datapoint: series[i].datapoints.points.slice(j * ps, (j + 1) * ps), | |
dataIndex: j, | |
series: series[i], | |
seriesIndex: i }; | |
} | |
return null; | |
} | |
function onMouseMove(e) { | |
if (options.grid.hoverable) | |
triggerClickHoverEvent("plothover", e, | |
function (s) { return s["hoverable"] != false; }); | |
} | |
function onMouseLeave(e) { | |
if (options.grid.hoverable) | |
triggerClickHoverEvent("plothover", e, | |
function (s) { return false; }); | |
} | |
function onClick(e) { | |
triggerClickHoverEvent("plotclick", e, | |
function (s) { return s["clickable"] != false; }); | |
} | |
// trigger click or hover event (they send the same parameters | |
// so we share their code) | |
function triggerClickHoverEvent(eventname, event, seriesFilter) { | |
var offset = eventHolder.offset(), | |
canvasX = event.pageX - offset.left - plotOffset.left, | |
canvasY = event.pageY - offset.top - plotOffset.top, | |
pos = canvasToAxisCoords({ left: canvasX, top: canvasY }); | |
pos.pageX = event.pageX; | |
pos.pageY = event.pageY; | |
var item = findNearbyItem(canvasX, canvasY, seriesFilter); | |
if (item) { | |
// fill in mouse pos for any listeners out there | |
item.pageX = parseInt(item.series.xaxis.p2c(item.datapoint[0]) + offset.left + plotOffset.left); | |
item.pageY = parseInt(item.series.yaxis.p2c(item.datapoint[1]) + offset.top + plotOffset.top); | |
} | |
if (options.grid.autoHighlight) { | |
// clear auto-highlights | |
for (var i = 0; i < highlights.length; ++i) { | |
var h = highlights[i]; | |
if (h.auto == eventname && | |
!(item && h.series == item.series && | |
h.point[0] == item.datapoint[0] && | |
h.point[1] == item.datapoint[1])) | |
unhighlight(h.series, h.point); | |
} | |
if (item) | |
highlight(item.series, item.datapoint, eventname); | |
} | |
placeholder.trigger(eventname, [ pos, item ]); | |
} | |
function triggerRedrawOverlay() { | |
if (!redrawTimeout) | |
redrawTimeout = setTimeout(drawOverlay, 30); | |
} | |
function drawOverlay() { | |
redrawTimeout = null; | |
// draw highlights | |
octx.save(); | |
octx.clearRect(0, 0, canvasWidth, canvasHeight); | |
octx.translate(plotOffset.left, plotOffset.top); | |
var i, hi; | |
for (i = 0; i < highlights.length; ++i) { | |
hi = highlights[i]; | |
if (hi.series.bars.show) | |
drawBarHighlight(hi.series, hi.point); | |
else | |
drawPointHighlight(hi.series, hi.point); | |
} | |
octx.restore(); | |
executeHooks(hooks.drawOverlay, [octx]); | |
} | |
function highlight(s, point, auto) { | |
if (typeof s == "number") | |
s = series[s]; | |
if (typeof point == "number") { | |
var ps = s.datapoints.pointsize; | |
point = s.datapoints.points.slice(ps * point, ps * (point + 1)); | |
} | |
var i = indexOfHighlight(s, point); | |
if (i == -1) { | |
highlights.push({ series: s, point: point, auto: auto }); | |
triggerRedrawOverlay(); | |
} | |
else if (!auto) | |
highlights[i].auto = false; | |
} | |
function unhighlight(s, point) { | |
if (s == null && point == null) { | |
highlights = []; | |
triggerRedrawOverlay(); | |
} | |
if (typeof s == "number") | |
s = series[s]; | |
if (typeof point == "number") | |
point = s.data[point]; | |
var i = indexOfHighlight(s, point); | |
if (i != -1) { | |
highlights.splice(i, 1); | |
triggerRedrawOverlay(); | |
} | |
} | |
function indexOfHighlight(s, p) { | |
for (var i = 0; i < highlights.length; ++i) { | |
var h = highlights[i]; | |
if (h.series == s && h.point[0] == p[0] | |
&& h.point[1] == p[1]) | |
return i; | |
} | |
return -1; | |
} | |
function drawPointHighlight(series, point) { | |
var x = point[0], y = point[1], | |
axisx = series.xaxis, axisy = series.yaxis; | |
if (x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max) | |
return; | |
var pointRadius = series.points.radius + series.points.lineWidth / 2; | |
octx.lineWidth = pointRadius; | |
octx.strokeStyle = $.color.parse(series.color).scale('a', 0.5).toString(); | |
var radius = 1.5 * pointRadius, | |
x = axisx.p2c(x), | |
y = axisy.p2c(y); | |
octx.beginPath(); | |
if (series.points.symbol == "circle") | |
octx.arc(x, y, radius, 0, 2 * Math.PI, false); | |
else | |
series.points.symbol(octx, x, y, radius, false); | |
octx.closePath(); | |
octx.stroke(); | |
} | |
function drawBarHighlight(series, point) { | |
octx.lineWidth = series.bars.lineWidth; | |
octx.strokeStyle = $.color.parse(series.color).scale('a', 0.5).toString(); | |
var fillStyle = $.color.parse(series.color).scale('a', 0.5).toString(); | |
var barLeft = series.bars.align == "left" ? 0 : -series.bars.barWidth/2; | |
drawBar(point[0], point[1], point[2] || 0, barLeft, barLeft + series.bars.barWidth, | |
0, function () { return fillStyle; }, series.xaxis, series.yaxis, octx, series.bars.horizontal, series.bars.lineWidth); | |
} | |
function getColorOrGradient(spec, bottom, top, defaultColor) { | |
if (typeof spec == "string") | |
return spec; | |
else { | |
// assume this is a gradient spec; IE currently only | |
// supports a simple vertical gradient properly, so that's | |
// what we support too | |
var gradient = ctx.createLinearGradient(0, top, 0, bottom); | |
for (var i = 0, l = spec.colors.length; i < l; ++i) { | |
var c = spec.colors[i]; | |
if (typeof c != "string") { | |
var co = $.color.parse(defaultColor); | |
if (c.brightness != null) | |
co = co.scale('rgb', c.brightness) | |
if (c.opacity != null) | |
co.a *= c.opacity; | |
c = co.toString(); | |
} | |
gradient.addColorStop(i / (l - 1), c); | |
} | |
return gradient; | |
} | |
} | |
} | |
$.plot = function(placeholder, data, options) { | |
//var t0 = new Date(); | |
var plot = new Plot($(placeholder), data, options, $.plot.plugins); | |
//(window.console ? console.log : alert)("time used (msecs): " + ((new Date()).getTime() - t0.getTime())); | |
return plot; | |
}; | |
$.plot.version = "0.7"; | |
$.plot.plugins = []; | |
// returns a string with the date d formatted according to fmt | |
$.plot.formatDate = function(d, fmt, monthNames) { | |
var leftPad = function(n) { | |
n = "" + n; | |
return n.length == 1 ? "0" + n : n; | |
}; | |
var r = []; | |
var escape = false, padNext = false; | |
var hours = d.getUTCHours(); | |
var isAM = hours < 12; | |
if (monthNames == null) | |
monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; | |
if (fmt.search(/%p|%P/) != -1) { | |
if (hours > 12) { | |
hours = hours - 12; | |
} else if (hours == 0) { | |
hours = 12; | |
} | |
} | |
for (var i = 0; i < fmt.length; ++i) { | |
var c = fmt.charAt(i); | |
if (escape) { | |
switch (c) { | |
case 'h': c = "" + hours; break; | |
case 'H': c = leftPad(hours); break; | |
case 'M': c = leftPad(d.getUTCMinutes()); break; | |
case 'S': c = leftPad(d.getUTCSeconds()); break; | |
case 'd': c = "" + d.getUTCDate(); break; | |
case 'm': c = "" + (d.getUTCMonth() + 1); break; | |
case 'y': c = "" + d.getUTCFullYear(); break; | |
case 'b': c = "" + monthNames[d.getUTCMonth()]; break; | |
case 'p': c = (isAM) ? ("" + "am") : ("" + "pm"); break; | |
case 'P': c = (isAM) ? ("" + "AM") : ("" + "PM"); break; | |
case '0': c = ""; padNext = true; break; | |
} | |
if (c && padNext) { | |
c = leftPad(c); | |
padNext = false; | |
} | |
r.push(c); | |
if (!padNext) | |
escape = false; | |
} | |
else { | |
if (c == "%") | |
escape = true; | |
else | |
r.push(c); | |
} | |
} | |
return r.join(""); | |
}; | |
// round to nearby lower multiple of base | |
function floorInBase(n, base) { | |
return base * Math.floor(n / base); | |
} | |
})(jQuery); | |
/* Javascript plotting library for jQuery, v. 0.7. | |
* | |
* Released under the MIT license by IOLA, December 2007. | |
* | |
*/ | |
(function(b){b.color={};b.color.make=function(d,e,g,f){var c={};c.r=d||0;c.g=e||0;c.b=g||0;c.a=f!=null?f:1;c.add=function(h,j){for(var k=0;k<h.length;++k){c[h.charAt(k)]+=j}return c.normalize()};c.scale=function(h,j){for(var k=0;k<h.length;++k){c[h.charAt(k)]*=j}return c.normalize()};c.toString=function(){if(c.a>=1){return"rgb("+[c.r,c.g,c.b].join(",")+")"}else{return"rgba("+[c.r,c.g,c.b,c.a].join(",")+")"}};c.normalize=function(){function h(k,j,l){return j<k?k:(j>l?l:j)}c.r=h(0,parseInt(c.r),255);c.g=h(0,parseInt(c.g),255);c.b=h(0,parseInt(c.b),255);c.a=h(0,c.a,1);return c};c.clone=function(){return b.color.make(c.r,c.b,c.g,c.a)};return c.normalize()};b.color.extract=function(d,e){var c;do{c=d.css(e).toLowerCase();if(c!=""&&c!="transparent"){break}d=d.parent()}while(!b.nodeName(d.get(0),"body"));if(c=="rgba(0, 0, 0, 0)"){c="transparent"}return b.color.parse(c)};b.color.parse=function(c){var d,f=b.color.make;if(d=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(c)){return f(parseInt(d[1],10),parseInt(d[2],10),parseInt(d[3],10))}if(d=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(c)){return f(parseInt(d[1],10),parseInt(d[2],10),parseInt(d[3],10),parseFloat(d[4]))}if(d=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(c)){return f(parseFloat(d[1])*2.55,parseFloat(d[2])*2.55,parseFloat(d[3])*2.55)}if(d=/rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(c)){return f(parseFloat(d[1])*2.55,parseFloat(d[2])*2.55,parseFloat(d[3])*2.55,parseFloat(d[4]))}if(d=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(c)){return f(parseInt(d[1],16),parseInt(d[2],16),parseInt(d[3],16))}if(d=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(c)){return f(parseInt(d[1]+d[1],16),parseInt(d[2]+d[2],16),parseInt(d[3]+d[3],16))}var e=b.trim(c).toLowerCase();if(e=="transparent"){return f(255,255,255,0)}else{d=a[e]||[0,0,0];return f(d[0],d[1],d[2])}};var a={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery);(function(c){function b(av,ai,J,af){var Q=[],O={colors:["#edc240","#afd8f8","#cb4b4b","#4da74d","#9440ed"],legend:{show:true,noColumns:1,labelFormatter:null,labelBoxBorderColor:"#ccc",container:null,position:"ne",margin:5,backgroundColor:null,backgroundOpacity:0.85},xaxis:{show:null,position:"bottom",mode:null,color:null,tickColor:null,transform:null,inverseTransform:null,min:null,max:null,autoscaleMargin:null,ticks:null,tickFormatter:null,labelWidth:null,labelHeight:null,reserveSpace:null,tickLength:null,alignTicksWithAxis:null,tickDecimals:null,tickSize:null,minTickSize:null,monthNames:null,timeformat:null,twelveHourClock:false},yaxis:{autoscaleMargin:0.02,position:"left"},xaxes:[],yaxes:[],series:{points:{show:false,radius:3,lineWidth:2,fill:true,fillColor:"#ffffff",symbol:"circle"},lines:{lineWidth:2,fill:false,fillColor:null,steps:false},bars:{show:false,lineWidth:2,barWidth:1,fill:true,fillColor:null,align:"left",horizontal:false},shadowSize:3},grid:{show:true,aboveData:false,color:"#545454",backgroundColor:null,borderColor:null,tickColor:null,labelMargin:5,axisMargin:8,borderWidth:2,minBorderMargin:null,markings:null,markingsColor:"#f4f4f4",markingsLineWidth:2,clickable:false,hoverable:false,autoHighlight:true,mouseActiveRadius:10},hooks:{}},az=null,ad=null,y=null,H=null,A=null,p=[],aw=[],q={left:0,right:0,top:0,bottom:0},G=0,I=0,h=0,w=0,ak={processOptions:[],processRawData:[],processDatapoints:[],drawSeries:[],draw:[],bindEvents:[],drawOverlay:[],shutdown:[]},aq=this;aq.setData=aj;aq.setupGrid=t;aq.draw=W;aq.getPlaceholder=function(){return av};aq.getCanvas=function(){return az};aq.getPlotOffset=function(){return q};aq.width=function(){return h};aq.height=function(){return w};aq.offset=function(){var aB=y.offset();aB.left+=q.left;aB.top+=q.top;return aB};aq.getData=function(){return Q};aq.getAxes=function(){var aC={},aB;c.each(p.concat(aw),function(aD,aE){if(aE){aC[aE.direction+(aE.n!=1?aE.n:"")+"axis"]=aE}});return aC};aq.getXAxes=function(){return p};aq.getYAxes=function(){return aw};aq.c2p=C;aq.p2c=ar;aq.getOptions=function(){return O};aq.highlight=x;aq.unhighlight=T;aq.triggerRedrawOverlay=f;aq.pointOffset=function(aB){return{left:parseInt(p[aA(aB,"x")-1].p2c(+aB.x)+q.left),top:parseInt(aw[aA(aB,"y")-1].p2c(+aB.y)+q.top)}};aq.shutdown=ag;aq.resize=function(){B();g(az);g(ad)};aq.hooks=ak;F(aq);Z(J);X();aj(ai);t();W();ah();function an(aD,aB){aB=[aq].concat(aB);for(var aC=0;aC<aD.length;++aC){aD[aC].apply(this,aB)}}function F(){for(var aB=0;aB<af.length;++aB){var aC=af[aB];aC.init(aq);if(aC.options){c.extend(true,O,aC.options)}}}function Z(aC){var aB;c.extend(true,O,aC);if(O.xaxis.color==null){O.xaxis.color=O.grid.color}if(O.yaxis.color==null){O.yaxis.color=O.grid.color}if(O.xaxis.tickColor==null){O.xaxis.tickColor=O.grid.tickColor}if(O.yaxis.tickColor==null){O.yaxis.tickColor=O.grid.tickColor}if(O.grid.borderColor==null){O.grid.borderColor=O.grid.color}if(O.grid.tickColor==null){O.grid.tickColor=c.color.parse(O.grid.color).scale("a",0.22).toString()}for(aB=0;aB<Math.max(1,O.xaxes.length);++aB){O.xaxes[aB]=c.extend(true,{},O.xaxis,O.xaxes[aB])}for(aB=0;aB<Math.max(1,O.yaxes.length);++aB){O.yaxes[aB]=c.extend(true,{},O.yaxis,O.yaxes[aB])}if(O.xaxis.noTicks&&O.xaxis.ticks==null){O.xaxis.ticks=O.xaxis.noTicks}if(O.yaxis.noTicks&&O.yaxis.ticks==null){O.yaxis.ticks=O.yaxis.noTicks}if(O.x2axis){O.xaxes[1]=c.extend(true,{},O.xaxis,O.x2axis);O.xaxes[1].position="top"}if(O.y2axis){O.yaxes[1]=c.extend(true,{},O.yaxis,O.y2axis);O.yaxes[1].position="right"}if(O.grid.coloredAreas){O.grid.markings=O.grid.coloredAreas}if(O.grid.coloredAreasColor){O.grid.markingsColor=O.grid.coloredAreasColor}if(O.lines){c.extend(true,O.series.lines,O.lines)}if(O.points){c.extend(true,O.series.points,O.points)}if(O.bars){c.extend(true,O.series.bars,O.bars)}if(O.shadowSize!=null){O.series.shadowSize=O.shadowSize}for(aB=0;aB<O.xaxes.length;++aB){V(p,aB+1).options=O.xaxes[aB]}for(aB=0;aB<O.yaxes.length;++aB){V(aw,aB+1).options=O.yaxes[aB]}for(var aD in ak){if(O.hooks[aD]&&O.hooks[aD].length){ak[aD]=ak[aD].concat(O.hooks[aD])}}an(ak.processOptions,[O])}function aj(aB){Q=Y(aB);ax();z()}function Y(aE){var aC=[];for(var aB=0;aB<aE.length;++aB){var aD=c.extend(true,{},O.series);if(aE[aB].data!=null){aD.data=aE[aB].data;delete aE[aB].data;c.extend(true,aD,aE[aB]);aE[aB].data=aD.data}else{aD.data=aE[aB]}aC.push(aD)}return aC}function aA(aC,aD){var aB=aC[aD+"axis"];if(typeof aB=="object"){aB=aB.n}if(typeof aB!="number"){aB=1}return aB}function m(){return c.grep(p.concat(aw),function(aB){return aB})}function C(aE){var aC={},aB,aD;for(aB=0;aB<p.length;++aB){aD=p[aB];if(aD&&aD.used){aC["x"+aD.n]=aD.c2p(aE.left)}}for(aB=0;aB<aw.length;++aB){aD=aw[aB];if(aD&&aD.used){aC["y"+aD.n]=aD.c2p(aE.top)}}if(aC.x1!==undefined){aC.x=aC.x1}if(aC.y1!==undefined){aC.y=aC.y1}return aC}function ar(aF){var aD={},aC,aE,aB;for(aC=0;aC<p.length;++aC){aE=p[aC];if(aE&&aE.used){aB="x"+aE.n;if(aF[aB]==null&&aE.n==1){aB="x"}if(aF[aB]!=null){aD.left=aE.p2c(aF[aB]);break}}}for(aC=0;aC<aw.length;++aC){aE=aw[aC];if(aE&&aE.used){aB="y"+aE.n;if(aF[aB]==null&&aE.n==1){aB="y"}if(aF[aB]!=null){aD.top=aE.p2c(aF[aB]);break}}}return aD}function V(aC,aB){if(!aC[aB-1]){aC[aB-1]={n:aB,direction:aC==p?"x":"y",options:c.extend(true,{},aC==p?O.xaxis:O.yaxis)}}return aC[aB-1]}function ax(){var aG;var aM=Q.length,aB=[],aE=[];for(aG=0;aG<Q.length;++aG){var aJ=Q[aG].color;if(aJ!=null){--aM;if(typeof aJ=="number"){aE.push(aJ)}else{aB.push(c.color.parse(Q[aG].color))}}}for(aG=0;aG<aE.length;++aG){aM=Math.max(aM,aE[aG]+1)}var aC=[],aF=0;aG=0;while(aC.length<aM){var aI;if(O.colors.length==aG){aI=c.color.make(100,100,100)}else{aI=c.color.parse(O.colors[aG])}var aD=aF%2==1?-1:1;aI.scale("rgb",1+aD*Math.ceil(aF/2)*0.2);aC.push(aI);++aG;if(aG>=O.colors.length){aG=0;++aF}}var aH=0,aN;for(aG=0;aG<Q.length;++aG){aN=Q[aG];if(aN.color==null){aN.color=aC[aH].toString();++aH}else{if(typeof aN.color=="number"){aN.color=aC[aN.color].toString()}}if(aN.lines.show==null){var aL,aK=true;for(aL in aN){if(aN[aL]&&aN[aL].show){aK=false;break}}if(aK){aN.lines.show=true}}aN.xaxis=V(p,aA(aN,"x"));aN.yaxis=V(aw,aA(aN,"y"))}}function z(){var aO=Number.POSITIVE_INFINITY,aI=Number.NEGATIVE_INFINITY,aB=Number.MAX_VALUE,aU,aS,aR,aN,aD,aJ,aT,aP,aH,aG,aC,a0,aX,aL;function aF(a3,a2,a1){if(a2<a3.datamin&&a2!=-aB){a3.datamin=a2}if(a1>a3.datamax&&a1!=aB){a3.datamax=a1}}c.each(m(),function(a1,a2){a2.datamin=aO;a2.datamax=aI;a2.used=false});for(aU=0;aU<Q.length;++aU){aJ=Q[aU];aJ.datapoints={points:[]};an(ak.processRawData,[aJ,aJ.data,aJ.datapoints])}for(aU=0;aU<Q.length;++aU){aJ=Q[aU];var aZ=aJ.data,aW=aJ.datapoints.format;if(!aW){aW=[];aW.push({x:true,number:true,required:true});aW.push({y:true,number:true,required:true});if(aJ.bars.show||(aJ.lines.show&&aJ.lines.fill)){aW.push({y:true,number:true,required:false,defaultValue:0});if(aJ.bars.horizontal){delete aW[aW.length-1].y;aW[aW.length-1].x=true}}aJ.datapoints.format=aW}if(aJ.datapoints.pointsize!=null){continue}aJ.datapoints.pointsize=aW.length;aP=aJ.datapoints.pointsize;aT=aJ.datapoints.points;insertSteps=aJ.lines.show&&aJ.lines.steps;aJ.xaxis.used=aJ.yaxis.used=true;for(aS=aR=0;aS<aZ.length;++aS,aR+=aP){aL=aZ[aS];var aE=aL==null;if(!aE){for(aN=0;aN<aP;++aN){a0=aL[aN];aX=aW[aN];if(aX){if(aX.number&&a0!=null){a0=+a0;if(isNaN(a0)){a0=null}else{if(a0==Infinity){a0=aB}else{if(a0==-Infinity){a0=-aB}}}}if(a0==null){if(aX.required){aE=true}if(aX.defaultValue!=null){a0=aX.defaultValue}}}aT[aR+aN]=a0}}if(aE){for(aN=0;aN<aP;++aN){a0=aT[aR+aN];if(a0!=null){aX=aW[aN];if(aX.x){aF(aJ.xaxis,a0,a0)}if(aX.y){aF(aJ.yaxis,a0,a0)}}aT[aR+aN]=null}}else{if(insertSteps&&aR>0&&aT[aR-aP]!=null&&aT[aR-aP]!=aT[aR]&&aT[aR-aP+1]!=aT[aR+1]){for(aN=0;aN<aP;++aN){aT[aR+aP+aN]=aT[aR+aN]}aT[aR+1]=aT[aR-aP+1];aR+=aP}}}}for(aU=0;aU<Q.length;++aU){aJ=Q[aU];an(ak.processDatapoints,[aJ,aJ.datapoints])}for(aU=0;aU<Q.length;++aU){aJ=Q[aU];aT=aJ.datapoints.points,aP=aJ.datapoints.pointsize;var aK=aO,aQ=aO,aM=aI,aV=aI;for(aS=0;aS<aT.length;aS+=aP){if(aT[aS]==null){continue}for(aN=0;aN<aP;++aN){a0=aT[aS+aN];aX=aW[aN];if(!aX||a0==aB||a0==-aB){continue}if(aX.x){if(a0<aK){aK=a0}if(a0>aM){aM=a0}}if(aX.y){if(a0<aQ){aQ=a0}if(a0>aV){aV=a0}}}}if(aJ.bars.show){var aY=aJ.bars.align=="left"?0:-aJ.bars.barWidth/2;if(aJ.bars.horizontal){aQ+=aY;aV+=aY+aJ.bars.barWidth}else{aK+=aY;aM+=aY+aJ.bars.barWidth}}aF(aJ.xaxis,aK,aM);aF(aJ.yaxis,aQ,aV)}c.each(m(),function(a1,a2){if(a2.datamin==aO){a2.datamin=null}if(a2.datamax==aI){a2.datamax=null}})}function j(aB,aC){var aD=document.createElement("canvas");aD.className=aC;aD.width=G;aD.height=I;if(!aB){c(aD).css({position:"absolute",left:0,top:0})}c(aD).appendTo(av);if(!aD.getContext){aD=window.G_vmlCanvasManager.initElement(aD)}aD.getContext("2d").save();return aD}function B(){G=av.width();I=av.height();if(G<=0||I<=0){throw"Invalid dimensions for plot, width = "+G+", height = "+I}}function g(aC){if(aC.width!=G){aC.width=G}if(aC.height!=I){aC.height=I}var aB=aC.getContext("2d");aB.restore();aB.save()}function X(){var aC,aB=av.children("canvas.base"),aD=av.children("canvas.overlay");if(aB.length==0||aD==0){av.html("");av.css({padding:0});if(av.css("position")=="static"){av.css("position","relative")}B();az=j(true,"base");ad=j(false,"overlay");aC=false}else{az=aB.get(0);ad=aD.get(0);aC=true}H=az.getContext("2d");A=ad.getContext("2d");y=c([ad,az]);if(aC){av.data("plot").shutdown();aq.resize();A.clearRect(0,0,G,I);y.unbind();av.children().not([az,ad]).remove()}av.data("plot",aq)}function ah(){if(O.grid.hoverable){y.mousemove(aa);y.mouseleave(l)}if(O.grid.clickable){y.click(R)}an(ak.bindEvents,[y])}function ag(){if(M){clearTimeout(M)}y.unbind("mousemove",aa);y.unbind("mouseleave",l);y.unbind("click",R);an(ak.shutdown,[y])}function r(aG){function aC(aH){return aH}var aF,aB,aD=aG.options.transform||aC,aE=aG.options.inverseTransform;if(aG.direction=="x"){aF=aG.scale=h/Math.abs(aD(aG.max)-aD(aG.min));aB=Math.min(aD(aG.max),aD(aG.min))}else{aF=aG.scale=w/Math.abs(aD(aG.max)-aD(aG.min));aF=-aF;aB=Math.max(aD(aG.max),aD(aG.min))}if(aD==aC){aG.p2c=function(aH){return(aH-aB)*aF}}else{aG.p2c=function(aH){return(aD(aH)-aB)*aF}}if(!aE){aG.c2p=function(aH){return aB+aH/aF}}else{aG.c2p=function(aH){return aE(aB+aH/aF)}}}function L(aD){var aB=aD.options,aF,aJ=aD.ticks||[],aI=[],aE,aK=aB.labelWidth,aG=aB.labelHeight,aC;function aH(aM,aL){return c('<div style="position:absolute;top:-10000px;'+aL+'font-size:smaller"><div class="'+aD.direction+"Axis "+aD.direction+aD.n+'Axis">'+aM.join("")+"</div></div>").appendTo(av)}if(aD.direction=="x"){if(aK==null){aK=Math.floor(G/(aJ.length>0?aJ.length:1))}if(aG==null){aI=[];for(aF=0;aF<aJ.length;++aF){aE=aJ[aF].label;if(aE){aI.push('<div class="tickLabel" style="float:left;width:'+aK+'px">'+aE+"</div>")}}if(aI.length>0){aI.push('<div style="clear:left"></div>');aC=aH(aI,"width:10000px;");aG=aC.height();aC.remove()}}}else{if(aK==null||aG==null){for(aF=0;aF<aJ.length;++aF){aE=aJ[aF].label;if(aE){aI.push('<div class="tickLabel">'+aE+"</div>")}}if(aI.length>0){aC=aH(aI,"");if(aK==null){aK=aC.children().width()}if(aG==null){aG=aC.find("div.tickLabel").height()}aC.remove()}}}if(aK==null){aK=0}if(aG==null){aG=0}aD.labelWidth=aK;aD.labelHeight=aG}function au(aD){var aC=aD.labelWidth,aL=aD.labelHeight,aH=aD.options.position,aF=aD.options.tickLength,aG=O.grid.axisMargin,aJ=O.grid.labelMargin,aK=aD.direction=="x"?p:aw,aE;var aB=c.grep(aK,function(aN){return aN&&aN.options.position==aH&&aN.reserveSpace});if(c.inArray(aD,aB)==aB.length-1){aG=0}if(aF==null){aF="full"}var aI=c.grep(aK,function(aN){return aN&&aN.reserveSpace});var aM=c.inArray(aD,aI)==0;if(!aM&&aF=="full"){aF=5}if(!isNaN(+aF)){aJ+=+aF}if(aD.direction=="x"){aL+=aJ;if(aH=="bottom"){q.bottom+=aL+aG;aD.box={top:I-q.bottom,height:aL}}else{aD.box={top:q.top+aG,height:aL};q.top+=aL+aG}}else{aC+=aJ;if(aH=="left"){aD.box={left:q.left+aG,width:aC};q.left+=aC+aG}else{q.right+=aC+aG;aD.box={left:G-q.right,width:aC}}}aD.position=aH;aD.tickLength=aF;aD.box.padding=aJ;aD.innermost=aM}function U(aB){if(aB.direction=="x"){aB.box.left=q.left;aB.box.width=h}else{aB.box.top=q.top;aB.box.height=w}}function t(){var aC,aE=m();c.each(aE,function(aF,aG){aG.show=aG.options.show;if(aG.show==null){aG.show=aG.used}aG.reserveSpace=aG.show||aG.options.reserveSpace;n(aG)});allocatedAxes=c.grep(aE,function(aF){return aF.reserveSpace});q.left=q.right=q.top=q.bottom=0;if(O.grid.show){c.each(allocatedAxes,function(aF,aG){S(aG);P(aG);ap(aG,aG.ticks);L(aG)});for(aC=allocatedAxes.length-1;aC>=0;--aC){au(allocatedAxes[aC])}var aD=O.grid.minBorderMargin;if(aD==null){aD=0;for(aC=0;aC<Q.length;++aC){aD=Math.max(aD,Q[aC].points.radius+Q[aC].points.lineWidth/2)}}for(var aB in q){q[aB]+=O.grid.borderWidth;q[aB]=Math.max(aD,q[aB])}}h=G-q.left-q.right;w=I-q.bottom-q.top;c.each(aE,function(aF,aG){r(aG)});if(O.grid.show){c.each(allocatedAxes,function(aF,aG){U(aG)});k()}o()}function n(aE){var aF=aE.options,aD=+(aF.min!=null?aF.min:aE.datamin),aB=+(aF.max!=null?aF.max:aE.datamax),aH=aB-aD;if(aH==0){var aC=aB==0?1:0.01;if(aF.min==null){aD-=aC}if(aF.max==null||aF.min!=null){aB+=aC}}else{var aG=aF.autoscaleMargin;if(aG!=null){if(aF.min==null){aD-=aH*aG;if(aD<0&&aE.datamin!=null&&aE.datamin>=0){aD=0}}if(aF.max==null){aB+=aH*aG;if(aB>0&&aE.datamax!=null&&aE.datamax<=0){aB=0}}}}aE.min=aD;aE.max=aB}function S(aG){var aM=aG.options;var aH;if(typeof aM.ticks=="number"&&aM.ticks>0){aH=aM.ticks}else{aH=0.3*Math.sqrt(aG.direction=="x"?G:I)}var aT=(aG.max-aG.min)/aH,aO,aB,aN,aR,aS,aQ,aI;if(aM.mode=="time"){var aJ={second:1000,minute:60*1000,hour:60*60*1000,day:24*60*60*1000,month:30*24*60*60*1000,year:365.2425*24*60*60*1000};var aK=[[1,"second"],[2,"second"],[5,"second"],[10,"second"],[30,"second"],[1,"minute"],[2,"minute"],[5,"minute"],[10,"minute"],[30,"minute"],[1,"hour"],[2,"hour"],[4,"hour"],[8,"hour"],[12,"hour"],[1,"day"],[2,"day"],[3,"day"],[0.25,"month"],[0.5,"month"],[1,"month"],[2,"month"],[3,"month"],[6,"month"],[1,"year"]];var aC=0;if(aM.minTickSize!=null){if(typeof aM.tickSize=="number"){aC=aM.tickSize}else{aC=aM.minTickSize[0]*aJ[aM.minTickSize[1]]}}for(var aS=0;aS<aK.length-1;++aS){if(aT<(aK[aS][0]*aJ[aK[aS][1]]+aK[aS+1][0]*aJ[aK[aS+1][1]])/2&&aK[aS][0]*aJ[aK[aS][1]]>=aC){break}}aO=aK[aS][0];aN=aK[aS][1];if(aN=="year"){aQ=Math.pow(10,Math.floor(Math.log(aT/aJ.year)/Math.LN10));aI=(aT/aJ.year)/aQ;if(aI<1.5){aO=1}else{if(aI<3){aO=2}else{if(aI<7.5){aO=5}else{aO=10}}}aO*=aQ}aG.tickSize=aM.tickSize||[aO,aN];aB=function(aX){var a2=[],a0=aX.tickSize[0],a3=aX.tickSize[1],a1=new Date(aX.min);var aW=a0*aJ[a3];if(a3=="second"){a1.setUTCSeconds(a(a1.getUTCSeconds(),a0))}if(a3=="minute"){a1.setUTCMinutes(a(a1.getUTCMinutes(),a0))}if(a3=="hour"){a1.setUTCHours(a(a1.getUTCHours(),a0))}if(a3=="month"){a1.setUTCMonth(a(a1.getUTCMonth(),a0))}if(a3=="year"){a1.setUTCFullYear(a(a1.getUTCFullYear(),a0))}a1.setUTCMilliseconds(0);if(aW>=aJ.minute){a1.setUTCSeconds(0)}if(aW>=aJ.hour){a1.setUTCMinutes(0)}if(aW>=aJ.day){a1.setUTCHours(0)}if(aW>=aJ.day*4){a1.setUTCDate(1)}if(aW>=aJ.year){a1.setUTCMonth(0)}var a5=0,a4=Number.NaN,aY;do{aY=a4;a4=a1.getTime();a2.push(a4);if(a3=="month"){if(a0<1){a1.setUTCDate(1);var aV=a1.getTime();a1.setUTCMonth(a1.getUTCMonth()+1);var aZ=a1.getTime();a1.setTime(a4+a5*aJ.hour+(aZ-aV)*a0);a5=a1.getUTCHours();a1.setUTCHours(0)}else{a1.setUTCMonth(a1.getUTCMonth()+a0)}}else{if(a3=="year"){a1.setUTCFullYear(a1.getUTCFullYear()+a0)}else{a1.setTime(a4+aW)}}}while(a4<aX.max&&a4!=aY);return a2};aR=function(aV,aY){var a0=new Date(aV);if(aM.timeformat!=null){return c.plot.formatDate(a0,aM.timeformat,aM.monthNames)}var aW=aY.tickSize[0]*aJ[aY.tickSize[1]];var aX=aY.max-aY.min;var aZ=(aM.twelveHourClock)?" %p":"";if(aW<aJ.minute){fmt="%h:%M:%S"+aZ}else{if(aW<aJ.day){if(aX<2*aJ.day){fmt="%h:%M"+aZ}else{fmt="%b %d %h:%M"+aZ}}else{if(aW<aJ.month){fmt="%b %d"}else{if(aW<aJ.year){if(aX<aJ.year){fmt="%b"}else{fmt="%b %y"}}else{fmt="%y"}}}}return c.plot.formatDate(a0,fmt,aM.monthNames)}}else{var aU=aM.tickDecimals;var aP=-Math.floor(Math.log(aT)/Math.LN10);if(aU!=null&&aP>aU){aP=aU}aQ=Math.pow(10,-aP);aI=aT/aQ;if(aI<1.5){aO=1}else{if(aI<3){aO=2;if(aI>2.25&&(aU==null||aP+1<=aU)){aO=2.5;++aP}}else{if(aI<7.5){aO=5}else{aO=10}}}aO*=aQ;if(aM.minTickSize!=null&&aO<aM.minTickSize){aO=aM.minTickSize}aG.tickDecimals=Math.max(0,aU!=null?aU:aP);aG.tickSize=aM.tickSize||aO;aB=function(aX){var aZ=[];var a0=a(aX.min,aX.tickSize),aW=0,aV=Number.NaN,aY;do{aY=aV;aV=a0+aW*aX.tickSize;aZ.push(aV);++aW}while(aV<aX.max&&aV!=aY);return aZ};aR=function(aV,aW){return aV.toFixed(aW.tickDecimals)}}if(aM.alignTicksWithAxis!=null){var aF=(aG.direction=="x"?p:aw)[aM.alignTicksWithAxis-1];if(aF&&aF.used&&aF!=aG){var aL=aB(aG);if(aL.length>0){if(aM.min==null){aG.min=Math.min(aG.min,aL[0])}if(aM.max==null&&aL.length>1){aG.max=Math.max(aG.max,aL[aL.length-1])}}aB=function(aX){var aY=[],aV,aW;for(aW=0;aW<aF.ticks.length;++aW){aV=(aF.ticks[aW].v-aF.min)/(aF.max-aF.min);aV=aX.min+aV*(aX.max-aX.min);aY.push(aV)}return aY};if(aG.mode!="time"&&aM.tickDecimals==null){var aE=Math.max(0,-Math.floor(Math.log(aT)/Math.LN10)+1),aD=aB(aG);if(!(aD.length>1&&/\..*0$/.test((aD[1]-aD[0]).toFixed(aE)))){aG.tickDecimals=aE}}}}aG.tickGenerator=aB;if(c.isFunction(aM.tickFormatter)){aG.tickFormatter=function(aV,aW){return""+aM.tickFormatter(aV,aW)}}else{aG.tickFormatter=aR}}function P(aF){var aH=aF.options.ticks,aG=[];if(aH==null||(typeof aH=="number"&&aH>0)){aG=aF.tickGenerator(aF)}else{if(aH){if(c.isFunction(aH)){aG=aH({min:aF.min,max:aF.max})}else{aG=aH}}}var aE,aB;aF.ticks=[];for(aE=0;aE<aG.length;++aE){var aC=null;var aD=aG[aE];if(typeof aD=="object"){aB=+aD[0];if(aD.length>1){aC=aD[1]}}else{aB=+aD}if(aC==null){aC=aF.tickFormatter(aB,aF)}if(!isNaN(aB)){aF.ticks.push({v:aB,label:aC})}}}function ap(aB,aC){if(aB.options.autoscaleMargin&&aC.length>0){if(aB.options.min==null){aB.min=Math.min(aB.min,aC[0].v)}if(aB.options.max==null&&aC.length>1){aB.max=Math.max(aB.max,aC[aC.length-1].v)}}}function W(){H.clearRect(0,0,G,I);var aC=O.grid;if(aC.show&&aC.backgroundColor){N()}if(aC.show&&!aC.aboveData){ac()}for(var aB=0;aB<Q.length;++aB){an(ak.drawSeries,[H,Q[aB]]);d(Q[aB])}an(ak.draw,[H]);if(aC.show&&aC.aboveData){ac()}}function D(aB,aI){var aE,aH,aG,aD,aF=m();for(i=0;i<aF.length;++i){aE=aF[i];if(aE.direction==aI){aD=aI+aE.n+"axis";if(!aB[aD]&&aE.n==1){aD=aI+"axis"}if(aB[aD]){aH=aB[aD].from;aG=aB[aD].to;break}}}if(!aB[aD]){aE=aI=="x"?p[0]:aw[0];aH=aB[aI+"1"];aG=aB[aI+"2"]}if(aH!=null&&aG!=null&&aH>aG){var aC=aH;aH=aG;aG=aC}return{from:aH,to:aG,axis:aE}}function N(){H.save();H.translate(q.left,q.top);H.fillStyle=am(O.grid.backgroundColor,w,0,"rgba(255, 255, 255, 0)");H.fillRect(0,0,h,w);H.restore()}function ac(){var aF;H.save();H.translate(q.left,q.top);var aH=O.grid.markings;if(aH){if(c.isFunction(aH)){var aK=aq.getAxes();aK.xmin=aK.xaxis.min;aK.xmax=aK.xaxis.max;aK.ymin=aK.yaxis.min;aK.ymax=aK.yaxis.max;aH=aH(aK)}for(aF=0;aF<aH.length;++aF){var aD=aH[aF],aC=D(aD,"x"),aI=D(aD,"y");if(aC.from==null){aC.from=aC.axis.min}if(aC.to==null){aC.to=aC.axis.max}if(aI.from==null){aI.from=aI.axis.min}if(aI.to==null){aI.to=aI.axis.max}if(aC.to<aC.axis.min||aC.from>aC.axis.max||aI.to<aI.axis.min||aI.from>aI.axis.max){continue}aC.from=Math.max(aC.from,aC.axis.min);aC.to=Math.min(aC.to,aC.axis.max);aI.from=Math.max(aI.from,aI.axis.min);aI.to=Math.min(aI.to,aI.axis.max);if(aC.from==aC.to&&aI.from==aI.to){continue}aC.from=aC.axis.p2c(aC.from);aC.to=aC.axis.p2c(aC.to);aI.from=aI.axis.p2c(aI.from);aI.to=aI.axis.p2c(aI.to);if(aC.from==aC.to||aI.from==aI.to){H.beginPath();H.strokeStyle=aD.color||O.grid.markingsColor;H.lineWidth=aD.lineWidth||O.grid.markingsLineWidth;H.moveTo(aC.from,aI.from);H.lineTo(aC.to,aI.to);H.stroke()}else{H.fillStyle=aD.color||O.grid.markingsColor;H.fillRect(aC.from,aI.to,aC.to-aC.from,aI.from-aI.to)}}}var aK=m(),aM=O.grid.borderWidth;for(var aE=0;aE<aK.length;++aE){var aB=aK[aE],aG=aB.box,aQ=aB.tickLength,aN,aL,aP,aJ;if(!aB.show||aB.ticks.length==0){continue}H.strokeStyle=aB.options.tickColor||c.color.parse(aB.options.color).scale("a",0.22).toString();H.lineWidth=1;if(aB.direction=="x"){aN=0;if(aQ=="full"){aL=(aB.position=="top"?0:w)}else{aL=aG.top-q.top+(aB.position=="top"?aG.height:0)}}else{aL=0;if(aQ=="full"){aN=(aB.position=="left"?0:h)}else{aN=aG.left-q.left+(aB.position=="left"?aG.width:0)}}if(!aB.innermost){H.beginPath();aP=aJ=0;if(aB.direction=="x"){aP=h}else{aJ=w}if(H.lineWidth==1){aN=Math.floor(aN)+0.5;aL=Math.floor(aL)+0.5}H.moveTo(aN,aL);H.lineTo(aN+aP,aL+aJ);H.stroke()}H.beginPath();for(aF=0;aF<aB.ticks.length;++aF){var aO=aB.ticks[aF].v;aP=aJ=0;if(aO<aB.min||aO>aB.max||(aQ=="full"&&aM>0&&(aO==aB.min||aO==aB.max))){continue}if(aB.direction=="x"){aN=aB.p2c(aO);aJ=aQ=="full"?-w:aQ;if(aB.position=="top"){aJ=-aJ}}else{aL=aB.p2c(aO);aP=aQ=="full"?-h:aQ;if(aB.position=="left"){aP=-aP}}if(H.lineWidth==1){if(aB.direction=="x"){aN=Math.floor(aN)+0.5}else{aL=Math.floor(aL)+0.5}}H.moveTo(aN,aL);H.lineTo(aN+aP,aL+aJ)}H.stroke()}if(aM){H.lineWidth=aM;H.strokeStyle=O.grid.borderColor;H.strokeRect(-aM/2,-aM/2,h+aM,w+aM)}H.restore()}function k(){av.find(".tickLabels").remove();var aG=['<div class="tickLabels" style="font-size:smaller">'];var aJ=m();for(var aD=0;aD<aJ.length;++aD){var aC=aJ[aD],aF=aC.box;if(!aC.show){continue}aG.push('<div class="'+aC.direction+"Axis "+aC.direction+aC.n+'Axis" style="color:'+aC.options.color+'">');for(var aE=0;aE<aC.ticks.length;++aE){var aH=aC.ticks[aE];if(!aH.label||aH.v<aC.min||aH.v>aC.max){continue}var aK={},aI;if(aC.direction=="x"){aI="center";aK.left=Math.round(q.left+aC.p2c(aH.v)-aC.labelWidth/2);if(aC.position=="bottom"){aK.top=aF.top+aF.padding}else{aK.bottom=I-(aF.top+aF.height-aF.padding)}}else{aK.top=Math.round(q.top+aC.p2c(aH.v)-aC.labelHeight/2);if(aC.position=="left"){aK.right=G-(aF.left+aF.width-aF.padding);aI="right"}else{aK.left=aF.left+aF.padding;aI="left"}}aK.width=aC.labelWidth;var aB=["position:absolute","text-align:"+aI];for(var aL in aK){aB.push(aL+":"+aK[aL]+"px")}aG.push('<div class="tickLabel" style="'+aB.join(";")+'">'+aH.label+"</div>")}aG.push("</div>")}aG.push("</div>");av.append(aG.join(""))}function d(aB){if(aB.lines.show){at(aB)}if(aB.bars.show){e(aB)}if(aB.points.show){ao(aB)}}function at(aE){function aD(aP,aQ,aI,aU,aT){var aV=aP.points,aJ=aP.pointsize,aN=null,aM=null;H.beginPath();for(var aO=aJ;aO<aV.length;aO+=aJ){var aL=aV[aO-aJ],aS=aV[aO-aJ+1],aK=aV[aO],aR=aV[aO+1];if(aL==null||aK==null){continue}if(aS<=aR&&aS<aT.min){if(aR<aT.min){continue}aL=(aT.min-aS)/(aR-aS)*(aK-aL)+aL;aS=aT.min}else{if(aR<=aS&&aR<aT.min){if(aS<aT.min){continue}aK=(aT.min-aS)/(aR-aS)*(aK-aL)+aL;aR=aT.min}}if(aS>=aR&&aS>aT.max){if(aR>aT.max){continue}aL=(aT.max-aS)/(aR-aS)*(aK-aL)+aL;aS=aT.max}else{if(aR>=aS&&aR>aT.max){if(aS>aT.max){continue}aK=(aT.max-aS)/(aR-aS)*(aK-aL)+aL;aR=aT.max}}if(aL<=aK&&aL<aU.min){if(aK<aU.min){continue}aS=(aU.min-aL)/(aK-aL)*(aR-aS)+aS;aL=aU.min}else{if(aK<=aL&&aK<aU.min){if(aL<aU.min){continue}aR=(aU.min-aL)/(aK-aL)*(aR-aS)+aS;aK=aU.min}}if(aL>=aK&&aL>aU.max){if(aK>aU.max){continue}aS=(aU.max-aL)/(aK-aL)*(aR-aS)+aS;aL=aU.max}else{if(aK>=aL&&aK>aU.max){if(aL>aU.max){continue}aR=(aU.max-aL)/(aK-aL)*(aR-aS)+aS;aK=aU.max}}if(aL!=aN||aS!=aM){H.moveTo(aU.p2c(aL)+aQ,aT.p2c(aS)+aI)}aN=aK;aM=aR;H.lineTo(aU.p2c(aK)+aQ,aT.p2c(aR)+aI)}H.stroke()}function aF(aI,aQ,aP){var aW=aI.points,aV=aI.pointsize,aN=Math.min(Math.max(0,aP.min),aP.max),aX=0,aU,aT=false,aM=1,aL=0,aR=0;while(true){if(aV>0&&aX>aW.length+aV){break}aX+=aV;var aZ=aW[aX-aV],aK=aW[aX-aV+aM],aY=aW[aX],aJ=aW[aX+aM];if(aT){if(aV>0&&aZ!=null&&aY==null){aR=aX;aV=-aV;aM=2;continue}if(aV<0&&aX==aL+aV){H.fill();aT=false;aV=-aV;aM=1;aX=aL=aR+aV;continue}}if(aZ==null||aY==null){continue}if(aZ<=aY&&aZ<aQ.min){if(aY<aQ.min){continue}aK=(aQ.min-aZ)/(aY-aZ)*(aJ-aK)+aK;aZ=aQ.min}else{if(aY<=aZ&&aY<aQ.min){if(aZ<aQ.min){continue}aJ=(aQ.min-aZ)/(aY-aZ)*(aJ-aK)+aK;aY=aQ.min}}if(aZ>=aY&&aZ>aQ.max){if(aY>aQ.max){continue}aK=(aQ.max-aZ)/(aY-aZ)*(aJ-aK)+aK;aZ=aQ.max}else{if(aY>=aZ&&aY>aQ.max){if(aZ>aQ.max){continue}aJ=(aQ.max-aZ)/(aY-aZ)*(aJ-aK)+aK;aY=aQ.max}}if(!aT){H.beginPath();H.moveTo(aQ.p2c(aZ),aP.p2c(aN));aT=true}if(aK>=aP.max&&aJ>=aP.max){H.lineTo(aQ.p2c(aZ),aP.p2c(aP.max));H.lineTo(aQ.p2c(aY),aP.p2c(aP.max));continue}else{if(aK<=aP.min&&aJ<=aP.min){H.lineTo(aQ.p2c(aZ),aP.p2c(aP.min));H.lineTo(aQ.p2c(aY),aP.p2c(aP.min));continue}}var aO=aZ,aS=aY;if(aK<=aJ&&aK<aP.min&&aJ>=aP.min){aZ=(aP.min-aK)/(aJ-aK)*(aY-aZ)+aZ;aK=aP.min}else{if(aJ<=aK&&aJ<aP.min&&aK>=aP.min){aY=(aP.min-aK)/(aJ-aK)*(aY-aZ)+aZ;aJ=aP.min}}if(aK>=aJ&&aK>aP.max&&aJ<=aP.max){aZ=(aP.max-aK)/(aJ-aK)*(aY-aZ)+aZ;aK=aP.max}else{if(aJ>=aK&&aJ>aP.max&&aK<=aP.max){aY=(aP.max-aK)/(aJ-aK)*(aY-aZ)+aZ;aJ=aP.max}}if(aZ!=aO){H.lineTo(aQ.p2c(aO),aP.p2c(aK))}H.lineTo(aQ.p2c(aZ),aP.p2c(aK));H.lineTo(aQ.p2c(aY),aP.p2c(aJ));if(aY!=aS){H.lineTo(aQ.p2c(aY),aP.p2c(aJ));H.lineTo(aQ.p2c(aS),aP.p2c(aJ))}}}H.save();H.translate(q.left,q.top);H.lineJoin="round";var aG=aE.lines.lineWidth,aB=aE.shadowSize;if(aG>0&&aB>0){H.lineWidth=aB;H.strokeStyle="rgba(0,0,0,0.1)";var aH=Math.PI/18;aD(aE.datapoints,Math.sin(aH)*(aG/2+aB/2),Math.cos(aH)*(aG/2+aB/2),aE.xaxis,aE.yaxis);H.lineWidth=aB/2;aD(aE.datapoints,Math.sin(aH)*(aG/2+aB/4),Math.cos(aH)*(aG/2+aB/4),aE.xaxis,aE.yaxis)}H.lineWidth=aG;H.strokeStyle=aE.color;var aC=ae(aE.lines,aE.color,0,w);if(aC){H.fillStyle=aC;aF(aE.datapoints,aE.xaxis,aE.yaxis)}if(aG>0){aD(aE.datapoints,0,0,aE.xaxis,aE.yaxis)}H.restore()}function ao(aE){function aH(aN,aM,aU,aK,aS,aT,aQ,aJ){var aR=aN.points,aI=aN.pointsize;for(var aL=0;aL<aR.length;aL+=aI){var aP=aR[aL],aO=aR[aL+1];if(aP==null||aP<aT.min||aP>aT.max||aO<aQ.min||aO>aQ.max){continue}H.beginPath();aP=aT.p2c(aP);aO=aQ.p2c(aO)+aK;if(aJ=="circle"){H.arc(aP,aO,aM,0,aS?Math.PI:Math.PI*2,false)}else{aJ(H,aP,aO,aM,aS)}H.closePath();if(aU){H.fillStyle=aU;H.fill()}H.stroke()}}H.save();H.translate(q.left,q.top);var aG=aE.points.lineWidth,aC=aE.shadowSize,aB=aE.points.radius,aF=aE.points.symbol;if(aG>0&&aC>0){var aD=aC/2;H.lineWidth=aD;H.strokeStyle="rgba(0,0,0,0.1)";aH(aE.datapoints,aB,null,aD+aD/2,true,aE.xaxis,aE.yaxis,aF);H.strokeStyle="rgba(0,0,0,0.2)";aH(aE.datapoints,aB,null,aD/2,true,aE.xaxis,aE.yaxis,aF)}H.lineWidth=aG;H.strokeStyle=aE.color;aH(aE.datapoints,aB,ae(aE.points,aE.color),0,false,aE.xaxis,aE.yaxis,aF);H.restore()}function E(aN,aM,aV,aI,aQ,aF,aD,aL,aK,aU,aR,aC){var aE,aT,aJ,aP,aG,aB,aO,aH,aS;if(aR){aH=aB=aO=true;aG=false;aE=aV;aT=aN;aP=aM+aI;aJ=aM+aQ;if(aT<aE){aS=aT;aT=aE;aE=aS;aG=true;aB=false}}else{aG=aB=aO=true;aH=false;aE=aN+aI;aT=aN+aQ;aJ=aV;aP=aM;if(aP<aJ){aS=aP;aP=aJ;aJ=aS;aH=true;aO=false}}if(aT<aL.min||aE>aL.max||aP<aK.min||aJ>aK.max){return}if(aE<aL.min){aE=aL.min;aG=false}if(aT>aL.max){aT=aL.max;aB=false}if(aJ<aK.min){aJ=aK.min;aH=false}if(aP>aK.max){aP=aK.max;aO=false}aE=aL.p2c(aE);aJ=aK.p2c(aJ);aT=aL.p2c(aT);aP=aK.p2c(aP);if(aD){aU.beginPath();aU.moveTo(aE,aJ);aU.lineTo(aE,aP);aU.lineTo(aT,aP);aU.lineTo(aT,aJ);aU.fillStyle=aD(aJ,aP);aU.fill()}if(aC>0&&(aG||aB||aO||aH)){aU.beginPath();aU.moveTo(aE,aJ+aF);if(aG){aU.lineTo(aE,aP+aF)}else{aU.moveTo(aE,aP+aF)}if(aO){aU.lineTo(aT,aP+aF)}else{aU.moveTo(aT,aP+aF)}if(aB){aU.lineTo(aT,aJ+aF)}else{aU.moveTo(aT,aJ+aF)}if(aH){aU.lineTo(aE,aJ+aF)}else{aU.moveTo(aE,aJ+aF)}aU.stroke()}}function e(aD){function aC(aJ,aI,aL,aG,aK,aN,aM){var aO=aJ.points,aF=aJ.pointsize;for(var aH=0;aH<aO.length;aH+=aF){if(aO[aH]==null){continue}E(aO[aH],aO[aH+1],aO[aH+2],aI,aL,aG,aK,aN,aM,H,aD.bars.horizontal,aD.bars.lineWidth)}}H.save();H.translate(q.left,q.top);H.lineWidth=aD.bars.lineWidth;H.strokeStyle=aD.color;var aB=aD.bars.align=="left"?0:-aD.bars.barWidth/2;var aE=aD.bars.fill?function(aF,aG){return ae(aD.bars,aD.color,aF,aG)}:null;aC(aD.datapoints,aB,aB+aD.bars.barWidth,0,aE,aD.xaxis,aD.yaxis);H.restore()}function ae(aD,aB,aC,aF){var aE=aD.fill;if(!aE){return null}if(aD.fillColor){return am(aD.fillColor,aC,aF,aB)}var aG=c.color.parse(aB);aG.a=typeof aE=="number"?aE:0.4;aG.normalize();return aG.toString()}function o(){av.find(".legend").remove();if(!O.legend.show){return}var aH=[],aF=false,aN=O.legend.labelFormatter,aM,aJ;for(var aE=0;aE<Q.length;++aE){aM=Q[aE];aJ=aM.label;if(!aJ){continue}if(aE%O.legend.noColumns==0){if(aF){aH.push("</tr>")}aH.push("<tr>");aF=true}if(aN){aJ=aN(aJ,aM)}aH.push('<td class="legendColorBox"><div style="border:1px solid '+O.legend.labelBoxBorderColor+';padding:1px"><div style="width:4px;height:0;border:5px solid '+aM.color+';overflow:hidden"></div></div></td><td class="legendLabel">'+aJ+"</td>")}if(aF){aH.push("</tr>")}if(aH.length==0){return}var aL='<table style="font-size:smaller;color:'+O.grid.color+'">'+aH.join("")+"</table>";if(O.legend.container!=null){c(O.legend.container).html(aL)}else{var aI="",aC=O.legend.position,aD=O.legend.margin;if(aD[0]==null){aD=[aD,aD]}if(aC.charAt(0)=="n"){aI+="top:"+(aD[1]+q.top)+"px;"}else{if(aC.charAt(0)=="s"){aI+="bottom:"+(aD[1]+q.bottom)+"px;"}}if(aC.charAt(1)=="e"){aI+="right:"+(aD[0]+q.right)+"px;"}else{if(aC.charAt(1)=="w"){aI+="left:"+(aD[0]+q.left)+"px;"}}var aK=c('<div class="legend">'+aL.replace('style="','style="position:absolute;'+aI+";")+"</div>").appendTo(av);if(O.legend.backgroundOpacity!=0){var aG=O.legend.backgroundColor;if(aG==null){aG=O.grid.backgroundColor;if(aG&&typeof aG=="string"){aG=c.color.parse(aG)}else{aG=c.color.extract(aK,"background-color")}aG.a=1;aG=aG.toString()}var aB=aK.children();c('<div style="position:absolute;width:'+aB.width()+"px;height:"+aB.height()+"px;"+aI+"background-color:"+aG+';"> </div>').prependTo(aK).css("opacity",O.legend.backgroundOpacity)}}}var ab=[],M=null;function K(aI,aG,aD){var aO=O.grid.mouseActiveRadius,a0=aO*aO+1,aY=null,aR=false,aW,aU;for(aW=Q.length-1;aW>=0;--aW){if(!aD(Q[aW])){continue}var aP=Q[aW],aH=aP.xaxis,aF=aP.yaxis,aV=aP.datapoints.points,aT=aP.datapoints.pointsize,aQ=aH.c2p(aI),aN=aF.c2p(aG),aC=aO/aH.scale,aB=aO/aF.scale;if(aH.options.inverseTransform){aC=Number.MAX_VALUE}if(aF.options.inverseTransform){aB=Number.MAX_VALUE}if(aP.lines.show||aP.points.show){for(aU=0;aU<aV.length;aU+=aT){var aK=aV[aU],aJ=aV[aU+1];if(aK==null){continue}if(aK-aQ>aC||aK-aQ<-aC||aJ-aN>aB||aJ-aN<-aB){continue}var aM=Math.abs(aH.p2c(aK)-aI),aL=Math.abs(aF.p2c(aJ)-aG),aS=aM*aM+aL*aL;if(aS<a0){a0=aS;aY=[aW,aU/aT]}}}if(aP.bars.show&&!aY){var aE=aP.bars.align=="left"?0:-aP.bars.barWidth/2,aX=aE+aP.bars.barWidth;for(aU=0;aU<aV.length;aU+=aT){var aK=aV[aU],aJ=aV[aU+1],aZ=aV[aU+2];if(aK==null){continue}if(Q[aW].bars.horizontal?(aQ<=Math.max(aZ,aK)&&aQ>=Math.min(aZ,aK)&&aN>=aJ+aE&&aN<=aJ+aX):(aQ>=aK+aE&&aQ<=aK+aX&&aN>=Math.min(aZ,aJ)&&aN<=Math.max(aZ,aJ))){aY=[aW,aU/aT]}}}}if(aY){aW=aY[0];aU=aY[1];aT=Q[aW].datapoints.pointsize;return{datapoint:Q[aW].datapoints.points.slice(aU*aT,(aU+1)*aT),dataIndex:aU,series:Q[aW],seriesIndex:aW}}return null}function aa(aB){if(O.grid.hoverable){u("plothover",aB,function(aC){return aC.hoverable!=false})}}function l(aB){if(O.grid.hoverable){u("plothover",aB,function(aC){return false})}}function R(aB){u("plotclick",aB,function(aC){return aC.clickable!=false})}function u(aC,aB,aD){var aE=y.offset(),aH=aB.pageX-aE.left-q.left,aF=aB.pageY-aE.top-q.top,aJ=C({left:aH,top:aF});aJ.pageX=aB.pageX;aJ.pageY=aB.pageY;var aK=K(aH,aF,aD);if(aK){aK.pageX=parseInt(aK.series.xaxis.p2c(aK.datapoint[0])+aE.left+q.left);aK.pageY=parseInt(aK.series.yaxis.p2c(aK.datapoint[1])+aE.top+q.top)}if(O.grid.autoHighlight){for(var aG=0;aG<ab.length;++aG){var aI=ab[aG];if(aI.auto==aC&&!(aK&&aI.series==aK.series&&aI.point[0]==aK.datapoint[0]&&aI.point[1]==aK.datapoint[1])){T(aI.series,aI.point)}}if(aK){x(aK.series,aK.datapoint,aC)}}av.trigger(aC,[aJ,aK])}function f(){if(!M){M=setTimeout(s,30)}}function s(){M=null;A.save();A.clearRect(0,0,G,I);A.translate(q.left,q.top);var aC,aB;for(aC=0;aC<ab.length;++aC){aB=ab[aC];if(aB.series.bars.show){v(aB.series,aB.point)}else{ay(aB.series,aB.point)}}A.restore();an(ak.drawOverlay,[A])}function x(aD,aB,aF){if(typeof aD=="number"){aD=Q[aD]}if(typeof aB=="number"){var aE=aD.datapoints.pointsize;aB=aD.datapoints.points.slice(aE*aB,aE*(aB+1))}var aC=al(aD,aB);if(aC==-1){ab.push({series:aD,point:aB,auto:aF});f()}else{if(!aF){ab[aC].auto=false}}}function T(aD,aB){if(aD==null&&aB==null){ab=[];f()}if(typeof aD=="number"){aD=Q[aD]}if(typeof aB=="number"){aB=aD.data[aB]}var aC=al(aD,aB);if(aC!=-1){ab.splice(aC,1);f()}}function al(aD,aE){for(var aB=0;aB<ab.length;++aB){var aC=ab[aB];if(aC.series==aD&&aC.point[0]==aE[0]&&aC.point[1]==aE[1]){return aB}}return -1}function ay(aE,aD){var aC=aD[0],aI=aD[1],aH=aE.xaxis,aG=aE.yaxis;if(aC<aH.min||aC>aH.max||aI<aG.min||aI>aG.max){return}var aF=aE.points.radius+aE.points.lineWidth/2;A.lineWidth=aF;A.strokeStyle=c.color.parse(aE.color).scale("a",0.5).toString();var aB=1.5*aF,aC=aH.p2c(aC),aI=aG.p2c(aI);A.beginPath();if(aE.points.symbol=="circle"){A.arc(aC,aI,aB,0,2*Math.PI,false)}else{aE.points.symbol(A,aC,aI,aB,false)}A.closePath();A.stroke()}function v(aE,aB){A.lineWidth=aE.bars.lineWidth;A.strokeStyle=c.color.parse(aE.color).scale("a",0.5).toString();var aD=c.color.parse(aE.color).scale("a",0.5).toString();var aC=aE.bars.align=="left"?0:-aE.bars.barWidth/2;E(aB[0],aB[1],aB[2]||0,aC,aC+aE.bars.barWidth,0,function(){return aD},aE.xaxis,aE.yaxis,A,aE.bars.horizontal,aE.bars.lineWidth)}function am(aJ,aB,aH,aC){if(typeof aJ=="string"){return aJ}else{var aI=H.createLinearGradient(0,aH,0,aB);for(var aE=0,aD=aJ.colors.length;aE<aD;++aE){var aF=aJ.colors[aE];if(typeof aF!="string"){var aG=c.color.parse(aC);if(aF.brightness!=null){aG=aG.scale("rgb",aF.brightness)}if(aF.opacity!=null){aG.a*=aF.opacity}aF=aG.toString()}aI.addColorStop(aE/(aD-1),aF)}return aI}}}c.plot=function(g,e,d){var f=new b(c(g),e,d,c.plot.plugins);return f};c.plot.version="0.7";c.plot.plugins=[];c.plot.formatDate=function(l,f,h){var o=function(d){d=""+d;return d.length==1?"0"+d:d};var e=[];var p=false,j=false;var n=l.getUTCHours();var k=n<12;if(h==null){h=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]}if(f.search(/%p|%P/)!=-1){if(n>12){n=n-12}else{if(n==0){n=12}}}for(var g=0;g<f.length;++g){var m=f.charAt(g);if(p){switch(m){case"h":m=""+n;break;case"H":m=o(n);break;case"M":m=o(l.getUTCMinutes());break;case"S":m=o(l.getUTCSeconds());break;case"d":m=""+l.getUTCDate();break;case"m":m=""+(l.getUTCMonth()+1);break;case"y":m=""+l.getUTCFullYear();break;case"b":m=""+h[l.getUTCMonth()];break;case"p":m=(k)?("am"):("pm");break;case"P":m=(k)?("AM"):("PM");break;case"0":m="";j=true;break}if(m&&j){m=o(m);j=false}e.push(m);if(!j){p=false}}else{if(m=="%"){p=true}else{e.push(m)}}}return e.join("")};function a(e,d){return d*Math.floor(e/d)}})(jQuery); |
/* | |
Flot plugin for adding panning and zooming capabilities to a plot. | |
The default behaviour is double click and scrollwheel up/down to zoom | |
in, drag to pan. The plugin defines plot.zoom({ center }), | |
plot.zoomOut() and plot.pan(offset) so you easily can add custom | |
controls. It also fires a "plotpan" and "plotzoom" event when | |
something happens, useful for synchronizing plots. | |
Options: | |
zoom: { | |
interactive: false | |
trigger: "dblclick" // or "click" for single click | |
amount: 1.5 // 2 = 200% (zoom in), 0.5 = 50% (zoom out) | |
} | |
pan: { | |
interactive: false | |
cursor: "move" // CSS mouse cursor value used when dragging, e.g. "pointer" | |
frameRate: 20 | |
} | |
xaxis, yaxis, x2axis, y2axis: { | |
zoomRange: null // or [number, number] (min range, max range) or false | |
panRange: null // or [number, number] (min, max) or false | |
} | |
"interactive" enables the built-in drag/click behaviour. If you enable | |
interactive for pan, then you'll have a basic plot that supports | |
moving around; the same for zoom. | |
"amount" specifies the default amount to zoom in (so 1.5 = 150%) | |
relative to the current viewport. | |
"cursor" is a standard CSS mouse cursor string used for visual | |
feedback to the user when dragging. | |
"frameRate" specifies the maximum number of times per second the plot | |
will update itself while the user is panning around on it (set to null | |
to disable intermediate pans, the plot will then not update until the | |
mouse button is released). | |
"zoomRange" is the interval in which zooming can happen, e.g. with | |
zoomRange: [1, 100] the zoom will never scale the axis so that the | |
difference between min and max is smaller than 1 or larger than 100. | |
You can set either end to null to ignore, e.g. [1, null]. If you set | |
zoomRange to false, zooming on that axis will be disabled. | |
"panRange" confines the panning to stay within a range, e.g. with | |
panRange: [-10, 20] panning stops at -10 in one end and at 20 in the | |
other. Either can be null, e.g. [-10, null]. If you set | |
panRange to false, panning on that axis will be disabled. | |
Example API usage: | |
plot = $.plot(...); | |
// zoom default amount in on the pixel (10, 20) | |
plot.zoom({ center: { left: 10, top: 20 } }); | |
// zoom out again | |
plot.zoomOut({ center: { left: 10, top: 20 } }); | |
// zoom 200% in on the pixel (10, 20) | |
plot.zoom({ amount: 2, center: { left: 10, top: 20 } }); | |
// pan 100 pixels to the left and 20 down | |
plot.pan({ left: -100, top: 20 }) | |
Here, "center" specifies where the center of the zooming should | |
happen. Note that this is defined in pixel space, not the space of the | |
data points (you can use the p2c helpers on the axes in Flot to help | |
you convert between these). | |
"amount" is the amount to zoom the viewport relative to the current | |
range, so 1 is 100% (i.e. no change), 1.5 is 150% (zoom in), 0.7 is | |
70% (zoom out). You can set the default in the options. | |
*/ | |
// First two dependencies, jquery.event.drag.js and | |
// jquery.mousewheel.js, we put them inline here to save people the | |
// effort of downloading them. | |
/* | |
jquery.event.drag.js ~ v1.5 ~ Copyright (c) 2008, Three Dub Media (http://threedubmedia.com) | |
Licensed under the MIT License ~ http://threedubmedia.googlecode.com/files/MIT-LICENSE.txt | |
*/ | |
(function(E){E.fn.drag=function(L,K,J){if(K){this.bind("dragstart",L)}if(J){this.bind("dragend",J)}return !L?this.trigger("drag"):this.bind("drag",K?K:L)};var A=E.event,B=A.special,F=B.drag={not:":input",distance:0,which:1,dragging:false,setup:function(J){J=E.extend({distance:F.distance,which:F.which,not:F.not},J||{});J.distance=I(J.distance);A.add(this,"mousedown",H,J);if(this.attachEvent){this.attachEvent("ondragstart",D)}},teardown:function(){A.remove(this,"mousedown",H);if(this===F.dragging){F.dragging=F.proxy=false}G(this,true);if(this.detachEvent){this.detachEvent("ondragstart",D)}}};B.dragstart=B.dragend={setup:function(){},teardown:function(){}};function H(L){var K=this,J,M=L.data||{};if(M.elem){K=L.dragTarget=M.elem;L.dragProxy=F.proxy||K;L.cursorOffsetX=M.pageX-M.left;L.cursorOffsetY=M.pageY-M.top;L.offsetX=L.pageX-L.cursorOffsetX;L.offsetY=L.pageY-L.cursorOffsetY}else{if(F.dragging||(M.which>0&&L.which!=M.which)||E(L.target).is(M.not)){return }}switch(L.type){case"mousedown":E.extend(M,E(K).offset(),{elem:K,target:L.target,pageX:L.pageX,pageY:L.pageY});A.add(document,"mousemove mouseup",H,M);G(K,false);F.dragging=null;return false;case !F.dragging&&"mousemove":if(I(L.pageX-M.pageX)+I(L.pageY-M.pageY)<M.distance){break}L.target=M.target;J=C(L,"dragstart",K);if(J!==false){F.dragging=K;F.proxy=L.dragProxy=E(J||K)[0]}case"mousemove":if(F.dragging){J=C(L,"drag",K);if(B.drop){B.drop.allowed=(J!==false);B.drop.handler(L)}if(J!==false){break}L.type="mouseup"}case"mouseup":A.remove(document,"mousemove mouseup",H);if(F.dragging){if(B.drop){B.drop.handler(L)}C(L,"dragend",K)}G(K,true);F.dragging=F.proxy=M.elem=false;break}return true}function C(M,K,L){M.type=K;var J=E.event.handle.call(L,M);return J===false?false:J||M.result}function I(J){return Math.pow(J,2)}function D(){return(F.dragging===false)}function G(K,J){if(!K){return }K.unselectable=J?"off":"on";K.onselectstart=function(){return J};if(K.style){K.style.MozUserSelect=J?"":"none"}}})(jQuery); | |
/* jquery.mousewheel.min.js | |
* Copyright (c) 2009 Brandon Aaron (http://brandonaaron.net) | |
* Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) | |
* and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses. | |
* Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers. | |
* Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix. | |
* | |
* Version: 3.0.2 | |
* | |
* Requires: 1.2.2+ | |
*/ | |
(function(c){var a=["DOMMouseScroll","mousewheel"];c.event.special.mousewheel={setup:function(){if(this.addEventListener){for(var d=a.length;d;){this.addEventListener(a[--d],b,false)}}else{this.onmousewheel=b}},teardown:function(){if(this.removeEventListener){for(var d=a.length;d;){this.removeEventListener(a[--d],b,false)}}else{this.onmousewheel=null}}};c.fn.extend({mousewheel:function(d){return d?this.bind("mousewheel",d):this.trigger("mousewheel")},unmousewheel:function(d){return this.unbind("mousewheel",d)}});function b(f){var d=[].slice.call(arguments,1),g=0,e=true;f=c.event.fix(f||window.event);f.type="mousewheel";if(f.wheelDelta){g=f.wheelDelta/120}if(f.detail){g=-f.detail/3}d.unshift(f,g);return c.event.handle.apply(this,d)}})(jQuery); | |
(function ($) { | |
var options = { | |
xaxis: { | |
zoomRange: null, // or [number, number] (min range, max range) | |
panRange: null // or [number, number] (min, max) | |
}, | |
zoom: { | |
interactive: false, | |
trigger: "dblclick", // or "click" for single click | |
amount: 1.5 // how much to zoom relative to current position, 2 = 200% (zoom in), 0.5 = 50% (zoom out) | |
}, | |
pan: { | |
interactive: false, | |
cursor: "move", | |
frameRate: 20 | |
} | |
}; | |
function init(plot) { | |
function onZoomClick(e, zoomOut) { | |
var c = plot.offset(); | |
c.left = e.pageX - c.left; | |
c.top = e.pageY - c.top; | |
if (zoomOut) | |
plot.zoomOut({ center: c }); | |
else | |
plot.zoom({ center: c }); | |
} | |
function onMouseWheel(e, delta) { | |
onZoomClick(e, delta < 0); | |
return false; | |
} | |
var prevCursor = 'default', prevPageX = 0, prevPageY = 0, | |
panTimeout = null; | |
function onDragStart(e) { | |
if (e.which != 1) // only accept left-click | |
return false; | |
var c = plot.getPlaceholder().css('cursor'); | |
if (c) | |
prevCursor = c; | |
plot.getPlaceholder().css('cursor', plot.getOptions().pan.cursor); | |
prevPageX = e.pageX; | |
prevPageY = e.pageY; | |
} | |
function onDrag(e) { | |
var frameRate = plot.getOptions().pan.frameRate; | |
if (panTimeout || !frameRate) | |
return; | |
panTimeout = setTimeout(function () { | |
plot.pan({ left: prevPageX - e.pageX, | |
top: prevPageY - e.pageY }); | |
prevPageX = e.pageX; | |
prevPageY = e.pageY; | |
panTimeout = null; | |
}, 1 / frameRate * 1000); | |
} | |
function onDragEnd(e) { | |
if (panTimeout) { | |
clearTimeout(panTimeout); | |
panTimeout = null; | |
} | |
plot.getPlaceholder().css('cursor', prevCursor); | |
plot.pan({ left: prevPageX - e.pageX, | |
top: prevPageY - e.pageY }); | |
} | |
function bindEvents(plot, eventHolder) { | |
var o = plot.getOptions(); | |
if (o.zoom.interactive) { | |
eventHolder[o.zoom.trigger](onZoomClick); | |
eventHolder.mousewheel(onMouseWheel); | |
} | |
if (o.pan.interactive) { | |
eventHolder.bind("dragstart", { distance: 10 }, onDragStart); | |
eventHolder.bind("drag", onDrag); | |
eventHolder.bind("dragend", onDragEnd); | |
} | |
} | |
plot.zoomOut = function (args) { | |
if (!args) | |
args = {}; | |
if (!args.amount) | |
args.amount = plot.getOptions().zoom.amount | |
args.amount = 1 / args.amount; | |
plot.zoom(args); | |
} | |
plot.zoom = function (args) { | |
if (!args) | |
args = {}; | |
var c = args.center, | |
amount = args.amount || plot.getOptions().zoom.amount, | |
w = plot.width(), h = plot.height(); | |
if (!c) | |
c = { left: w / 2, top: h / 2 }; | |
var xf = c.left / w, | |
yf = c.top / h, | |
minmax = { | |
x: { | |
min: c.left - xf * w / amount, | |
max: c.left + (1 - xf) * w / amount | |
}, | |
y: { | |
min: c.top - yf * h / amount, | |
max: c.top + (1 - yf) * h / amount | |
} | |
}; | |
$.each(plot.getAxes(), function(_, axis) { | |
var opts = axis.options, | |
min = minmax[axis.direction].min, | |
max = minmax[axis.direction].max, | |
zr = opts.zoomRange; | |
if (zr === false) // no zooming on this axis | |
return; | |
min = axis.c2p(min); | |
max = axis.c2p(max); | |
if (min > max) { | |
// make sure min < max | |
var tmp = min; | |
min = max; | |
max = tmp; | |
} | |
var range = max - min; | |
if (zr && | |
((zr[0] != null && range < zr[0]) || | |
(zr[1] != null && range > zr[1]))) | |
return; | |
opts.min = min; | |
opts.max = max; | |
}); | |
plot.setupGrid(); | |
plot.draw(); | |
if (!args.preventEvent) | |
plot.getPlaceholder().trigger("plotzoom", [ plot ]); | |
} | |
plot.pan = function (args) { | |
var delta = { | |
x: +args.left, | |
y: +args.top | |
}; | |
if (isNaN(delta.x)) | |
delta.x = 0; | |
if (isNaN(delta.y)) | |
delta.y = 0; | |
$.each(plot.getAxes(), function (_, axis) { | |
var opts = axis.options, | |
min, max, d = delta[axis.direction]; | |
min = axis.c2p(axis.p2c(axis.min) + d), | |
max = axis.c2p(axis.p2c(axis.max) + d); | |
var pr = opts.panRange; | |
if (pr === false) // no panning on this axis | |
return; | |
if (pr) { | |
// check whether we hit the wall | |
if (pr[0] != null && pr[0] > min) { | |
d = pr[0] - min; | |
min += d; | |
max += d; | |
} | |
if (pr[1] != null && pr[1] < max) { | |
d = pr[1] - max; | |
min += d; | |
max += d; | |
} | |
} | |
opts.min = min; | |
opts.max = max; | |
}); | |
plot.setupGrid(); | |
plot.draw(); | |
if (!args.preventEvent) | |
plot.getPlaceholder().trigger("plotpan", [ plot ]); | |
} | |
function shutdown(plot, eventHolder) { | |
eventHolder.unbind(plot.getOptions().zoom.trigger, onZoomClick); | |
eventHolder.unbind("mousewheel", onMouseWheel); | |
eventHolder.unbind("dragstart", onDragStart); | |
eventHolder.unbind("drag", onDrag); | |
eventHolder.unbind("dragend", onDragEnd); | |
if (panTimeout) | |
clearTimeout(panTimeout); | |
} | |
plot.hooks.bindEvents.push(bindEvents); | |
plot.hooks.shutdown.push(shutdown); | |
} | |
$.plot.plugins.push({ | |
init: init, | |
options: options, | |
name: 'navigate', | |
version: '1.3' | |
}); | |
})(jQuery); | |
(function(i){i.fn.drag=function(j,k,l){if(k){this.bind("dragstart",j)}if(l){this.bind("dragend",l)}return !j?this.trigger("drag"):this.bind("drag",k?k:j)};var d=i.event,c=d.special,h=c.drag={not:":input",distance:0,which:1,dragging:false,setup:function(j){j=i.extend({distance:h.distance,which:h.which,not:h.not},j||{});j.distance=e(j.distance);d.add(this,"mousedown",f,j);if(this.attachEvent){this.attachEvent("ondragstart",a)}},teardown:function(){d.remove(this,"mousedown",f);if(this===h.dragging){h.dragging=h.proxy=false}g(this,true);if(this.detachEvent){this.detachEvent("ondragstart",a)}}};c.dragstart=c.dragend={setup:function(){},teardown:function(){}};function f(j){var k=this,l,m=j.data||{};if(m.elem){k=j.dragTarget=m.elem;j.dragProxy=h.proxy||k;j.cursorOffsetX=m.pageX-m.left;j.cursorOffsetY=m.pageY-m.top;j.offsetX=j.pageX-j.cursorOffsetX;j.offsetY=j.pageY-j.cursorOffsetY}else{if(h.dragging||(m.which>0&&j.which!=m.which)||i(j.target).is(m.not)){return}}switch(j.type){case"mousedown":i.extend(m,i(k).offset(),{elem:k,target:j.target,pageX:j.pageX,pageY:j.pageY});d.add(document,"mousemove mouseup",f,m);g(k,false);h.dragging=null;return false;case !h.dragging&&"mousemove":if(e(j.pageX-m.pageX)+e(j.pageY-m.pageY)<m.distance){break}j.target=m.target;l=b(j,"dragstart",k);if(l!==false){h.dragging=k;h.proxy=j.dragProxy=i(l||k)[0]}case"mousemove":if(h.dragging){l=b(j,"drag",k);if(c.drop){c.drop.allowed=(l!==false);c.drop.handler(j)}if(l!==false){break}j.type="mouseup"}case"mouseup":d.remove(document,"mousemove mouseup",f);if(h.dragging){if(c.drop){c.drop.handler(j)}b(j,"dragend",k)}g(k,true);h.dragging=h.proxy=m.elem=false;break}return true}function b(m,k,j){m.type=k;var l=i.event.handle.call(j,m);return l===false?false:l||m.result}function e(j){return Math.pow(j,2)}function a(){return(h.dragging===false)}function g(j,k){if(!j){return}j.unselectable=k?"off":"on";j.onselectstart=function(){return k};if(j.style){j.style.MozUserSelect=k?"":"none"}}})(jQuery);(function(f){var e=["DOMMouseScroll","mousewheel"];f.event.special.mousewheel={setup:function(){if(this.addEventListener){for(var a=e.length;a;){this.addEventListener(e[--a],d,false)}}else{this.onmousewheel=d}},teardown:function(){if(this.removeEventListener){for(var a=e.length;a;){this.removeEventListener(e[--a],d,false)}}else{this.onmousewheel=null}}};f.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}});function d(b){var h=[].slice.call(arguments,1),a=0,c=true;b=f.event.fix(b||window.event);b.type="mousewheel";if(b.wheelDelta){a=b.wheelDelta/120}if(b.detail){a=-b.detail/3}h.unshift(b,a);return f.event.handle.apply(this,h)}})(jQuery);(function(b){var a={xaxis:{zoomRange:null,panRange:null},zoom:{interactive:false,trigger:"dblclick",amount:1.5},pan:{interactive:false,cursor:"move",frameRate:20}};function c(o){function m(q,p){var r=o.offset();r.left=q.pageX-r.left;r.top=q.pageY-r.top;if(p){o.zoomOut({center:r})}else{o.zoom({center:r})}}function d(p,q){m(p,q<0);return false}var i="default",g=0,e=0,n=null;function f(p){if(p.which!=1){return false}var q=o.getPlaceholder().css("cursor");if(q){i=q}o.getPlaceholder().css("cursor",o.getOptions().pan.cursor);g=p.pageX;e=p.pageY}function j(q){var p=o.getOptions().pan.frameRate;if(n||!p){return}n=setTimeout(function(){o.pan({left:g-q.pageX,top:e-q.pageY});g=q.pageX;e=q.pageY;n=null},1/p*1000)}function h(p){if(n){clearTimeout(n);n=null}o.getPlaceholder().css("cursor",i);o.pan({left:g-p.pageX,top:e-p.pageY})}function l(q,p){var r=q.getOptions();if(r.zoom.interactive){p[r.zoom.trigger](m);p.mousewheel(d)}if(r.pan.interactive){p.bind("dragstart",{distance:10},f);p.bind("drag",j);p.bind("dragend",h)}}o.zoomOut=function(p){if(!p){p={}}if(!p.amount){p.amount=o.getOptions().zoom.amount}p.amount=1/p.amount;o.zoom(p)};o.zoom=function(q){if(!q){q={}}var x=q.center,r=q.amount||o.getOptions().zoom.amount,p=o.width(),t=o.height();if(!x){x={left:p/2,top:t/2}}var s=x.left/p,v=x.top/t,u={x:{min:x.left-s*p/r,max:x.left+(1-s)*p/r},y:{min:x.top-v*t/r,max:x.top+(1-v)*t/r}};b.each(o.getAxes(),function(z,C){var D=C.options,B=u[C.direction].min,w=u[C.direction].max,E=D.zoomRange;if(E===false){return}B=C.c2p(B);w=C.c2p(w);if(B>w){var A=B;B=w;w=A}var y=w-B;if(E&&((E[0]!=null&&y<E[0])||(E[1]!=null&&y>E[1]))){return}D.min=B;D.max=w});o.setupGrid();o.draw();if(!q.preventEvent){o.getPlaceholder().trigger("plotzoom",[o])}};o.pan=function(p){var q={x:+p.left,y:+p.top};if(isNaN(q.x)){q.x=0}if(isNaN(q.y)){q.y=0}b.each(o.getAxes(),function(s,u){var v=u.options,t,r,w=q[u.direction];t=u.c2p(u.p2c(u.min)+w),r=u.c2p(u.p2c(u.max)+w);var x=v.panRange;if(x===false){return}if(x){if(x[0]!=null&&x[0]>t){w=x[0]-t;t+=w;r+=w}if(x[1]!=null&&x[1]<r){w=x[1]-r;t+=w;r+=w}}v.min=t;v.max=r});o.setupGrid();o.draw();if(!p.preventEvent){o.getPlaceholder().trigger("plotpan",[o])}};function k(q,p){p.unbind(q.getOptions().zoom.trigger,m);p.unbind("mousewheel",d);p.unbind("dragstart",f);p.unbind("drag",j);p.unbind("dragend",h);if(n){clearTimeout(n)}}o.hooks.bindEvents.push(l);o.hooks.shutdown.push(k)}b.plot.plugins.push({init:c,options:a,name:"navigate",version:"1.3"})})(jQuery); |
/* | |
Flot plugin for rendering pie charts. The plugin assumes the data is | |
coming is as a single data value for each series, and each of those | |
values is a positive value or zero (negative numbers don't make | |
any sense and will cause strange effects). The data values do | |
NOT need to be passed in as percentage values because it | |
internally calculates the total and percentages. | |
* Created by Brian Medendorp, June 2009 | |
* Updated November 2009 with contributions from: btburnett3, Anthony Aragues and Xavi Ivars | |
* Changes: | |
2009-10-22: lineJoin set to round | |
2009-10-23: IE full circle fix, donut | |
2009-11-11: Added basic hover from btburnett3 - does not work in IE, and center is off in Chrome and Opera | |
2009-11-17: Added IE hover capability submitted by Anthony Aragues | |
2009-11-18: Added bug fix submitted by Xavi Ivars (issues with arrays when other JS libraries are included as well) | |
Available options are: | |
series: { | |
pie: { | |
show: true/false | |
radius: 0-1 for percentage of fullsize, or a specified pixel length, or 'auto' | |
innerRadius: 0-1 for percentage of fullsize or a specified pixel length, for creating a donut effect | |
startAngle: 0-2 factor of PI used for starting angle (in radians) i.e 3/2 starts at the top, 0 and 2 have the same result | |
tilt: 0-1 for percentage to tilt the pie, where 1 is no tilt, and 0 is completely flat (nothing will show) | |
offset: { | |
top: integer value to move the pie up or down | |
left: integer value to move the pie left or right, or 'auto' | |
}, | |
stroke: { | |
color: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#FFF') | |
width: integer pixel width of the stroke | |
}, | |
label: { | |
show: true/false, or 'auto' | |
formatter: a user-defined function that modifies the text/style of the label text | |
radius: 0-1 for percentage of fullsize, or a specified pixel length | |
background: { | |
color: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#000') | |
opacity: 0-1 | |
}, | |
threshold: 0-1 for the percentage value at which to hide labels (if they're too small) | |
}, | |
combine: { | |
threshold: 0-1 for the percentage value at which to combine slices (if they're too small) | |
color: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#CCC'), if null, the plugin will automatically use the color of the first slice to be combined | |
label: any text value of what the combined slice should be labeled | |
} | |
highlight: { | |
opacity: 0-1 | |
} | |
} | |
} | |
More detail and specific examples can be found in the included HTML file. | |
*/ | |
(function ($) | |
{ | |
function init(plot) // this is the "body" of the plugin | |
{ | |
var canvas = null; | |
var target = null; | |
var maxRadius = null; | |
var centerLeft = null; | |
var centerTop = null; | |
var total = 0; | |
var redraw = true; | |
var redrawAttempts = 10; | |
var shrink = 0.95; | |
var legendWidth = 0; | |
var processed = false; | |
var raw = false; | |
// interactive variables | |
var highlights = []; | |
// add hook to determine if pie plugin in enabled, and then perform necessary operations | |
plot.hooks.processOptions.push(checkPieEnabled); | |
plot.hooks.bindEvents.push(bindEvents); | |
// check to see if the pie plugin is enabled | |
function checkPieEnabled(plot, options) | |
{ | |
if (options.series.pie.show) | |
{ | |
//disable grid | |
options.grid.show = false; | |
// set labels.show | |
if (options.series.pie.label.show=='auto') | |
if (options.legend.show) | |
options.series.pie.label.show = false; | |
else | |
options.series.pie.label.show = true; | |
// set radius | |
if (options.series.pie.radius=='auto') | |
if (options.series.pie.label.show) | |
options.series.pie.radius = 3/4; | |
else | |
options.series.pie.radius = 1; | |
// ensure sane tilt | |
if (options.series.pie.tilt>1) | |
options.series.pie.tilt=1; | |
if (options.series.pie.tilt<0) | |
options.series.pie.tilt=0; | |
// add processData hook to do transformations on the data | |
plot.hooks.processDatapoints.push(processDatapoints); | |
plot.hooks.drawOverlay.push(drawOverlay); | |
// add draw hook | |
plot.hooks.draw.push(draw); | |
} | |
} | |
// bind hoverable events | |
function bindEvents(plot, eventHolder) | |
{ | |
var options = plot.getOptions(); | |
if (options.series.pie.show && options.grid.hoverable) | |
eventHolder.unbind('mousemove').mousemove(onMouseMove); | |
if (options.series.pie.show && options.grid.clickable) | |
eventHolder.unbind('click').click(onClick); | |
} | |
// debugging function that prints out an object | |
function alertObject(obj) | |
{ | |
var msg = ''; | |
function traverse(obj, depth) | |
{ | |
if (!depth) | |
depth = 0; | |
for (var i = 0; i < obj.length; ++i) | |
{ | |
for (var j=0; j<depth; j++) | |
msg += '\t'; | |
if( typeof obj[i] == "object") | |
{ // its an object | |
msg += ''+i+':\n'; | |
traverse(obj[i], depth+1); | |
} | |
else | |
{ // its a value | |
msg += ''+i+': '+obj[i]+'\n'; | |
} | |
} | |
} | |
traverse(obj); | |
alert(msg); | |
} | |
function calcTotal(data) | |
{ | |
for (var i = 0; i < data.length; ++i) | |
{ | |
var item = parseFloat(data[i].data[0][1]); | |
if (item) | |
total += item; | |
} | |
} | |
function processDatapoints(plot, series, data, datapoints) | |
{ | |
if (!processed) | |
{ | |
processed = true; | |
canvas = plot.getCanvas(); | |
target = $(canvas).parent(); | |
options = plot.getOptions(); | |
plot.setData(combine(plot.getData())); | |
} | |
} | |
function setupPie() | |
{ | |
legendWidth = target.children().filter('.legend').children().width(); | |
// calculate maximum radius and center point | |
maxRadius = Math.min(canvas.width,(canvas.height/options.series.pie.tilt))/2; | |
centerTop = (canvas.height/2)+options.series.pie.offset.top; | |
centerLeft = (canvas.width/2); | |
if (options.series.pie.offset.left=='auto') | |
if (options.legend.position.match('w')) | |
centerLeft += legendWidth/2; | |
else | |
centerLeft -= legendWidth/2; | |
else | |
centerLeft += options.series.pie.offset.left; | |
if (centerLeft<maxRadius) | |
centerLeft = maxRadius; | |
else if (centerLeft>canvas.width-maxRadius) | |
centerLeft = canvas.width-maxRadius; | |
} | |
function fixData(data) | |
{ | |
for (var i = 0; i < data.length; ++i) | |
{ | |
if (typeof(data[i].data)=='number') | |
data[i].data = [[1,data[i].data]]; | |
else if (typeof(data[i].data)=='undefined' || typeof(data[i].data[0])=='undefined') | |
{ | |
if (typeof(data[i].data)!='undefined' && typeof(data[i].data.label)!='undefined') | |
data[i].label = data[i].data.label; // fix weirdness coming from flot | |
data[i].data = [[1,0]]; | |
} | |
} | |
return data; | |
} | |
function combine(data) | |
{ | |
data = fixData(data); | |
calcTotal(data); | |
var combined = 0; | |
var numCombined = 0; | |
var color = options.series.pie.combine.color; | |
var newdata = []; | |
for (var i = 0; i < data.length; ++i) | |
{ | |
// make sure its a number | |
data[i].data[0][1] = parseFloat(data[i].data[0][1]); | |
if (!data[i].data[0][1]) | |
data[i].data[0][1] = 0; | |
if (data[i].data[0][1]/total<=options.series.pie.combine.threshold) | |
{ | |
combined += data[i].data[0][1]; | |
numCombined++; | |
if (!color) | |
color = data[i].color; | |
} | |
else | |
{ | |
newdata.push({ | |
data: [[1,data[i].data[0][1]]], | |
color: data[i].color, | |
label: data[i].label, | |
angle: (data[i].data[0][1]*(Math.PI*2))/total, | |
percent: (data[i].data[0][1]/total*100) | |
}); | |
} | |
} | |
if (numCombined>0) | |
newdata.push({ | |
data: [[1,combined]], | |
color: color, | |
label: options.series.pie.combine.label, | |
angle: (combined*(Math.PI*2))/total, | |
percent: (combined/total*100) | |
}); | |
return newdata; | |
} | |
function draw(plot, newCtx) | |
{ | |
if (!target) return; // if no series were passed | |
ctx = newCtx; | |
setupPie(); | |
var slices = plot.getData(); | |
var attempts = 0; | |
while (redraw && attempts<redrawAttempts) | |
{ | |
redraw = false; | |
if (attempts>0) | |
maxRadius *= shrink; | |
attempts += 1; | |
clear(); | |
if (options.series.pie.tilt<=0.8) | |
drawShadow(); | |
drawPie(); | |
} | |
if (attempts >= redrawAttempts) { | |
clear(); | |
target.prepend('<div class="error">Could not draw pie with labels contained inside canvas</div>'); | |
} | |
if ( plot.setSeries && plot.insertLegend ) | |
{ | |
plot.setSeries(slices); | |
plot.insertLegend(); | |
} | |
// we're actually done at this point, just defining internal functions at this point | |
function clear() | |
{ | |
ctx.clearRect(0,0,canvas.width,canvas.height); | |
target.children().filter('.pieLabel, .pieLabelBackground').remove(); | |
} | |
function drawShadow() | |
{ | |
var shadowLeft = 5; | |
var shadowTop = 15; | |
var edge = 10; | |
var alpha = 0.02; | |
// set radius | |
if (options.series.pie.radius>1) | |
var radius = options.series.pie.radius; | |
else | |
var radius = maxRadius * options.series.pie.radius; | |
if (radius>=(canvas.width/2)-shadowLeft || radius*options.series.pie.tilt>=(canvas.height/2)-shadowTop || radius<=edge) | |
return; // shadow would be outside canvas, so don't draw it | |
ctx.save(); | |
ctx.translate(shadowLeft,shadowTop); | |
ctx.globalAlpha = alpha; | |
ctx.fillStyle = '#000'; | |
// center and rotate to starting position | |
ctx.translate(centerLeft,centerTop); | |
ctx.scale(1, options.series.pie.tilt); | |
//radius -= edge; | |
for (var i=1; i<=edge; i++) | |
{ | |
ctx.beginPath(); | |
ctx.arc(0,0,radius,0,Math.PI*2,false); | |
ctx.fill(); | |
radius -= i; | |
} | |
ctx.restore(); | |
} | |
function drawPie() | |
{ | |
startAngle = Math.PI*options.series.pie.startAngle; | |
// set radius | |
if (options.series.pie.radius>1) | |
var radius = options.series.pie.radius; | |
else | |
var radius = maxRadius * options.series.pie.radius; | |
// center and rotate to starting position | |
ctx.save(); | |
ctx.translate(centerLeft,centerTop); | |
ctx.scale(1, options.series.pie.tilt); | |
//ctx.rotate(startAngle); // start at top; -- This doesn't work properly in Opera | |
// draw slices | |
ctx.save(); | |
var currentAngle = startAngle; | |
for (var i = 0; i < slices.length; ++i) | |
{ | |
slices[i].startAngle = currentAngle; | |
drawSlice(slices[i].angle, slices[i].color, true); | |
} | |
ctx.restore(); | |
// draw slice outlines | |
ctx.save(); | |
ctx.lineWidth = options.series.pie.stroke.width; | |
currentAngle = startAngle; | |
for (var i = 0; i < slices.length; ++i) | |
drawSlice(slices[i].angle, options.series.pie.stroke.color, false); | |
ctx.restore(); | |
// draw donut hole | |
drawDonutHole(ctx); | |
// draw labels | |
if (options.series.pie.label.show) | |
drawLabels(); | |
// restore to original state | |
ctx.restore(); | |
function drawSlice(angle, color, fill) | |
{ | |
if (angle<=0) | |
return; | |
if (fill) | |
ctx.fillStyle = color; | |
else | |
{ | |
ctx.strokeStyle = color; | |
ctx.lineJoin = 'round'; | |
} | |
ctx.beginPath(); | |
if (Math.abs(angle - Math.PI*2) > 0.000000001) | |
ctx.moveTo(0,0); // Center of the pie | |
else if ($.browser.msie) | |
angle -= 0.0001; | |
//ctx.arc(0,0,radius,0,angle,false); // This doesn't work properly in Opera | |
ctx.arc(0,0,radius,currentAngle,currentAngle+angle,false); | |
ctx.closePath(); | |
//ctx.rotate(angle); // This doesn't work properly in Opera | |
currentAngle += angle; | |
if (fill) | |
ctx.fill(); | |
else | |
ctx.stroke(); | |
} | |
function drawLabels() | |
{ | |
var currentAngle = startAngle; | |
// set radius | |
if (options.series.pie.label.radius>1) | |
var radius = options.series.pie.label.radius; | |
else | |
var radius = maxRadius * options.series.pie.label.radius; | |
for (var i = 0; i < slices.length; ++i) | |
{ | |
if (slices[i].percent >= options.series.pie.label.threshold*100) | |
drawLabel(slices[i], currentAngle, i); | |
currentAngle += slices[i].angle; | |
} | |
function drawLabel(slice, startAngle, index) | |
{ | |
if (slice.data[0][1]==0) | |
return; | |
// format label text | |
var lf = options.legend.labelFormatter, text, plf = options.series.pie.label.formatter; | |
if (lf) | |
text = lf(slice.label, slice); | |
else | |
text = slice.label; | |
if (plf) | |
text = plf(text, slice); | |
var halfAngle = ((startAngle+slice.angle) + startAngle)/2; | |
var x = centerLeft + Math.round(Math.cos(halfAngle) * radius); | |
var y = centerTop + Math.round(Math.sin(halfAngle) * radius) * options.series.pie.tilt; | |
var html = '<span class="pieLabel" id="pieLabel'+index+'" style="position:absolute;top:' + y + 'px;left:' + x + 'px;">' + text + "</span>"; | |
target.append(html); | |
var label = target.children('#pieLabel'+index); | |
var labelTop = (y - label.height()/2); | |
var labelLeft = (x - label.width()/2); | |
label.css('top', labelTop); | |
label.css('left', labelLeft); | |
// check to make sure that the label is not outside the canvas | |
if (0-labelTop>0 || 0-labelLeft>0 || canvas.height-(labelTop+label.height())<0 || canvas.width-(labelLeft+label.width())<0) | |
redraw = true; | |
if (options.series.pie.label.background.opacity != 0) { | |
// put in the transparent background separately to avoid blended labels and label boxes | |
var c = options.series.pie.label.background.color; | |
if (c == null) { | |
c = slice.color; | |
} | |
var pos = 'top:'+labelTop+'px;left:'+labelLeft+'px;'; | |
$('<div class="pieLabelBackground" style="position:absolute;width:' + label.width() + 'px;height:' + label.height() + 'px;' + pos +'background-color:' + c + ';"> </div>').insertBefore(label).css('opacity', options.series.pie.label.background.opacity); | |
} | |
} // end individual label function | |
} // end drawLabels function | |
} // end drawPie function | |
} // end draw function | |
// Placed here because it needs to be accessed from multiple locations | |
function drawDonutHole(layer) | |
{ | |
// draw donut hole | |
if(options.series.pie.innerRadius > 0) | |
{ | |
// subtract the center | |
layer.save(); | |
innerRadius = options.series.pie.innerRadius > 1 ? options.series.pie.innerRadius : maxRadius * options.series.pie.innerRadius; | |
layer.globalCompositeOperation = 'destination-out'; // this does not work with excanvas, but it will fall back to using the stroke color | |
layer.beginPath(); | |
layer.fillStyle = options.series.pie.stroke.color; | |
layer.arc(0,0,innerRadius,0,Math.PI*2,false); | |
layer.fill(); | |
layer.closePath(); | |
layer.restore(); | |
// add inner stroke | |
layer.save(); | |
layer.beginPath(); | |
layer.strokeStyle = options.series.pie.stroke.color; | |
layer.arc(0,0,innerRadius,0,Math.PI*2,false); | |
layer.stroke(); | |
layer.closePath(); | |
layer.restore(); | |
// TODO: add extra shadow inside hole (with a mask) if the pie is tilted. | |
} | |
} | |
//-- Additional Interactive related functions -- | |
function isPointInPoly(poly, pt) | |
{ | |
for(var c = false, i = -1, l = poly.length, j = l - 1; ++i < l; j = i) | |
((poly[i][1] <= pt[1] && pt[1] < poly[j][1]) || (poly[j][1] <= pt[1] && pt[1]< poly[i][1])) | |
&& (pt[0] < (poly[j][0] - poly[i][0]) * (pt[1] - poly[i][1]) / (poly[j][1] - poly[i][1]) + poly[i][0]) | |
&& (c = !c); | |
return c; | |
} | |
function findNearbySlice(mouseX, mouseY) | |
{ | |
var slices = plot.getData(), | |
options = plot.getOptions(), | |
radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius; | |
for (var i = 0; i < slices.length; ++i) | |
{ | |
var s = slices[i]; | |
if(s.pie.show) | |
{ | |
ctx.save(); | |
ctx.beginPath(); | |
ctx.moveTo(0,0); // Center of the pie | |
//ctx.scale(1, options.series.pie.tilt); // this actually seems to break everything when here. | |
ctx.arc(0,0,radius,s.startAngle,s.startAngle+s.angle,false); | |
ctx.closePath(); | |
x = mouseX-centerLeft; | |
y = mouseY-centerTop; | |
if(ctx.isPointInPath) | |
{ | |
if (ctx.isPointInPath(mouseX-centerLeft, mouseY-centerTop)) | |
{ | |
//alert('found slice!'); | |
ctx.restore(); | |
return {datapoint: [s.percent, s.data], dataIndex: 0, series: s, seriesIndex: i}; | |
} | |
} | |
else | |
{ | |
// excanvas for IE doesn;t support isPointInPath, this is a workaround. | |
p1X = (radius * Math.cos(s.startAngle)); | |
p1Y = (radius * Math.sin(s.startAngle)); | |
p2X = (radius * Math.cos(s.startAngle+(s.angle/4))); | |
p2Y = (radius * Math.sin(s.startAngle+(s.angle/4))); | |
p3X = (radius * Math.cos(s.startAngle+(s.angle/2))); | |
p3Y = (radius * Math.sin(s.startAngle+(s.angle/2))); | |
p4X = (radius * Math.cos(s.startAngle+(s.angle/1.5))); | |
p4Y = (radius * Math.sin(s.startAngle+(s.angle/1.5))); | |
p5X = (radius * Math.cos(s.startAngle+s.angle)); | |
p5Y = (radius * Math.sin(s.startAngle+s.angle)); | |
arrPoly = [[0,0],[p1X,p1Y],[p2X,p2Y],[p3X,p3Y],[p4X,p4Y],[p5X,p5Y]]; | |
arrPoint = [x,y]; | |
// TODO: perhaps do some mathmatical trickery here with the Y-coordinate to compensate for pie tilt? | |
if(isPointInPoly(arrPoly, arrPoint)) | |
{ | |
ctx.restore(); | |
return {datapoint: [s.percent, s.data], dataIndex: 0, series: s, seriesIndex: i}; | |
} | |
} | |
ctx.restore(); | |
} | |
} | |
return null; | |
} | |
function onMouseMove(e) | |
{ | |
triggerClickHoverEvent('plothover', e); | |
} | |
function onClick(e) | |
{ | |
triggerClickHoverEvent('plotclick', e); | |
} | |
// trigger click or hover event (they send the same parameters so we share their code) | |
function triggerClickHoverEvent(eventname, e) | |
{ | |
var offset = plot.offset(), | |
canvasX = parseInt(e.pageX - offset.left), | |
canvasY = parseInt(e.pageY - offset.top), | |
item = findNearbySlice(canvasX, canvasY); | |
if (options.grid.autoHighlight) | |
{ | |
// clear auto-highlights | |
for (var i = 0; i < highlights.length; ++i) | |
{ | |
var h = highlights[i]; | |
if (h.auto == eventname && !(item && h.series == item.series)) | |
unhighlight(h.series); | |
} | |
} | |
// highlight the slice | |
if (item) | |
highlight(item.series, eventname); | |
// trigger any hover bind events | |
var pos = { pageX: e.pageX, pageY: e.pageY }; | |
target.trigger(eventname, [ pos, item ]); | |
} | |
function highlight(s, auto) | |
{ | |
if (typeof s == "number") | |
s = series[s]; | |
var i = indexOfHighlight(s); | |
if (i == -1) | |
{ | |
highlights.push({ series: s, auto: auto }); | |
plot.triggerRedrawOverlay(); | |
} | |
else if (!auto) | |
highlights[i].auto = false; | |
} | |
function unhighlight(s) | |
{ | |
if (s == null) | |
{ | |
highlights = []; | |
plot.triggerRedrawOverlay(); | |
} | |
if (typeof s == "number") | |
s = series[s]; | |
var i = indexOfHighlight(s); | |
if (i != -1) | |
{ | |
highlights.splice(i, 1); | |
plot.triggerRedrawOverlay(); | |
} | |
} | |
function indexOfHighlight(s) | |
{ | |
for (var i = 0; i < highlights.length; ++i) | |
{ | |
var h = highlights[i]; | |
if (h.series == s) | |
return i; | |
} | |
return -1; | |
} | |
function drawOverlay(plot, octx) | |
{ | |
//alert(options.series.pie.radius); | |
var options = plot.getOptions(); | |
//alert(options.series.pie.radius); | |
var radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius; | |
octx.save(); | |
octx.translate(centerLeft, centerTop); | |
octx.scale(1, options.series.pie.tilt); | |
for (i = 0; i < highlights.length; ++i) | |
drawHighlight(highlights[i].series); | |
drawDonutHole(octx); | |
octx.restore(); | |
function drawHighlight(series) | |
{ | |
if (series.angle < 0) return; | |
//octx.fillStyle = parseColor(options.series.pie.highlight.color).scale(null, null, null, options.series.pie.highlight.opacity).toString(); | |
octx.fillStyle = "rgba(255, 255, 255, "+options.series.pie.highlight.opacity+")"; // this is temporary until we have access to parseColor | |
octx.beginPath(); | |
if (Math.abs(series.angle - Math.PI*2) > 0.000000001) | |
octx.moveTo(0,0); // Center of the pie | |
octx.arc(0,0,radius,series.startAngle,series.startAngle+series.angle,false); | |
octx.closePath(); | |
octx.fill(); | |
} | |
} | |
} // end init (plugin body) | |
// define pie specific options and their default values | |
var options = { | |
series: { | |
pie: { | |
show: false, | |
radius: 'auto', // actual radius of the visible pie (based on full calculated radius if <=1, or hard pixel value) | |
innerRadius:0, /* for donut */ | |
startAngle: 3/2, | |
tilt: 1, | |
offset: { | |
top: 0, | |
left: 'auto' | |
}, | |
stroke: { | |
color: '#FFF', | |
width: 1 | |
}, | |
label: { | |
show: 'auto', | |
formatter: function(label, slice){ | |
return '<div style="font-size:x-small;text-align:center;padding:2px;color:'+slice.color+';">'+label+'<br/>'+Math.round(slice.percent)+'%</div>'; | |
}, // formatter function | |
radius: 1, // radius at which to place the labels (based on full calculated radius if <=1, or hard pixel value) | |
background: { | |
color: null, | |
opacity: 0 | |
}, | |
threshold: 0 // percentage at which to hide the label (i.e. the slice is too narrow) | |
}, | |
combine: { | |
threshold: -1, // percentage at which to combine little slices into one larger slice | |
color: null, // color to give the new slice (auto-generated if null) | |
label: 'Other' // label to give the new slice | |
}, | |
highlight: { | |
//color: '#FFF', // will add this functionality once parseColor is available | |
opacity: 0.5 | |
} | |
} | |
} | |
}; | |
$.plot.plugins.push({ | |
init: init, | |
options: options, | |
name: "pie", | |
version: "1.0" | |
}); | |
})(jQuery); | |
(function(b){function c(D){var h=null;var L=null;var n=null;var B=null;var p=null;var M=0;var F=true;var o=10;var w=0.95;var A=0;var d=false;var z=false;var j=[];D.hooks.processOptions.push(g);D.hooks.bindEvents.push(e);function g(O,N){if(N.series.pie.show){N.grid.show=false;if(N.series.pie.label.show=="auto"){if(N.legend.show){N.series.pie.label.show=false}else{N.series.pie.label.show=true}}if(N.series.pie.radius=="auto"){if(N.series.pie.label.show){N.series.pie.radius=3/4}else{N.series.pie.radius=1}}if(N.series.pie.tilt>1){N.series.pie.tilt=1}if(N.series.pie.tilt<0){N.series.pie.tilt=0}O.hooks.processDatapoints.push(E);O.hooks.drawOverlay.push(H);O.hooks.draw.push(r)}}function e(P,N){var O=P.getOptions();if(O.series.pie.show&&O.grid.hoverable){N.unbind("mousemove").mousemove(t)}if(O.series.pie.show&&O.grid.clickable){N.unbind("click").click(l)}}function G(O){var P="";function N(S,T){if(!T){T=0}for(var R=0;R<S.length;++R){for(var Q=0;Q<T;Q++){P+="\t"}if(typeof S[R]=="object"){P+=""+R+":\n";N(S[R],T+1)}else{P+=""+R+": "+S[R]+"\n"}}}N(O);alert(P)}function q(P){for(var N=0;N<P.length;++N){var O=parseFloat(P[N].data[0][1]);if(O){M+=O}}}function E(Q,N,O,P){if(!d){d=true;h=Q.getCanvas();L=b(h).parent();a=Q.getOptions();Q.setData(K(Q.getData()))}}function I(){A=L.children().filter(".legend").children().width();n=Math.min(h.width,(h.height/a.series.pie.tilt))/2;p=(h.height/2)+a.series.pie.offset.top;B=(h.width/2);if(a.series.pie.offset.left=="auto"){if(a.legend.position.match("w")){B+=A/2}else{B-=A/2}}else{B+=a.series.pie.offset.left}if(B<n){B=n}else{if(B>h.width-n){B=h.width-n}}}function v(O){for(var N=0;N<O.length;++N){if(typeof(O[N].data)=="number"){O[N].data=[[1,O[N].data]]}else{if(typeof(O[N].data)=="undefined"||typeof(O[N].data[0])=="undefined"){if(typeof(O[N].data)!="undefined"&&typeof(O[N].data.label)!="undefined"){O[N].label=O[N].data.label}O[N].data=[[1,0]]}}}return O}function K(Q){Q=v(Q);q(Q);var P=0;var S=0;var N=a.series.pie.combine.color;var R=[];for(var O=0;O<Q.length;++O){Q[O].data[0][1]=parseFloat(Q[O].data[0][1]);if(!Q[O].data[0][1]){Q[O].data[0][1]=0}if(Q[O].data[0][1]/M<=a.series.pie.combine.threshold){P+=Q[O].data[0][1];S++;if(!N){N=Q[O].color}}else{R.push({data:[[1,Q[O].data[0][1]]],color:Q[O].color,label:Q[O].label,angle:(Q[O].data[0][1]*(Math.PI*2))/M,percent:(Q[O].data[0][1]/M*100)})}}if(S>0){R.push({data:[[1,P]],color:N,label:a.series.pie.combine.label,angle:(P*(Math.PI*2))/M,percent:(P/M*100)})}return R}function r(S,Q){if(!L){return}ctx=Q;I();var T=S.getData();var P=0;while(F&&P<o){F=false;if(P>0){n*=w}P+=1;N();if(a.series.pie.tilt<=0.8){O()}R()}if(P>=o){N();L.prepend('<div class="error">Could not draw pie with labels contained inside canvas</div>')}if(S.setSeries&&S.insertLegend){S.setSeries(T);S.insertLegend()}function N(){ctx.clearRect(0,0,h.width,h.height);L.children().filter(".pieLabel, .pieLabelBackground").remove()}function O(){var Z=5;var Y=15;var W=10;var X=0.02;if(a.series.pie.radius>1){var U=a.series.pie.radius}else{var U=n*a.series.pie.radius}if(U>=(h.width/2)-Z||U*a.series.pie.tilt>=(h.height/2)-Y||U<=W){return}ctx.save();ctx.translate(Z,Y);ctx.globalAlpha=X;ctx.fillStyle="#000";ctx.translate(B,p);ctx.scale(1,a.series.pie.tilt);for(var V=1;V<=W;V++){ctx.beginPath();ctx.arc(0,0,U,0,Math.PI*2,false);ctx.fill();U-=V}ctx.restore()}function R(){startAngle=Math.PI*a.series.pie.startAngle;if(a.series.pie.radius>1){var U=a.series.pie.radius}else{var U=n*a.series.pie.radius}ctx.save();ctx.translate(B,p);ctx.scale(1,a.series.pie.tilt);ctx.save();var Y=startAngle;for(var W=0;W<T.length;++W){T[W].startAngle=Y;X(T[W].angle,T[W].color,true)}ctx.restore();ctx.save();ctx.lineWidth=a.series.pie.stroke.width;Y=startAngle;for(var W=0;W<T.length;++W){X(T[W].angle,a.series.pie.stroke.color,false)}ctx.restore();J(ctx);if(a.series.pie.label.show){V()}ctx.restore();function X(ab,Z,aa){if(ab<=0){return}if(aa){ctx.fillStyle=Z}else{ctx.strokeStyle=Z;ctx.lineJoin="round"}ctx.beginPath();if(Math.abs(ab-Math.PI*2)>1e-9){ctx.moveTo(0,0)}else{if(b.browser.msie){ab-=0.0001}}ctx.arc(0,0,U,Y,Y+ab,false);ctx.closePath();Y+=ab;if(aa){ctx.fill()}else{ctx.stroke()}}function V(){var ac=startAngle;if(a.series.pie.label.radius>1){var Z=a.series.pie.label.radius}else{var Z=n*a.series.pie.label.radius}for(var ab=0;ab<T.length;++ab){if(T[ab].percent>=a.series.pie.label.threshold*100){aa(T[ab],ac,ab)}ac+=T[ab].angle}function aa(ap,ai,ag){if(ap.data[0][1]==0){return}var ar=a.legend.labelFormatter,aq,ae=a.series.pie.label.formatter;if(ar){aq=ar(ap.label,ap)}else{aq=ap.label}if(ae){aq=ae(aq,ap)}var aj=((ai+ap.angle)+ai)/2;var ao=B+Math.round(Math.cos(aj)*Z);var am=p+Math.round(Math.sin(aj)*Z)*a.series.pie.tilt;var af='<span class="pieLabel" id="pieLabel'+ag+'" style="position:absolute;top:'+am+"px;left:"+ao+'px;">'+aq+"</span>";L.append(af);var an=L.children("#pieLabel"+ag);var ad=(am-an.height()/2);var ah=(ao-an.width()/2);an.css("top",ad);an.css("left",ah);if(0-ad>0||0-ah>0||h.height-(ad+an.height())<0||h.width-(ah+an.width())<0){F=true}if(a.series.pie.label.background.opacity!=0){var ak=a.series.pie.label.background.color;if(ak==null){ak=ap.color}var al="top:"+ad+"px;left:"+ah+"px;";b('<div class="pieLabelBackground" style="position:absolute;width:'+an.width()+"px;height:"+an.height()+"px;"+al+"background-color:"+ak+';"> </div>').insertBefore(an).css("opacity",a.series.pie.label.background.opacity)}}}}}function J(N){if(a.series.pie.innerRadius>0){N.save();innerRadius=a.series.pie.innerRadius>1?a.series.pie.innerRadius:n*a.series.pie.innerRadius;N.globalCompositeOperation="destination-out";N.beginPath();N.fillStyle=a.series.pie.stroke.color;N.arc(0,0,innerRadius,0,Math.PI*2,false);N.fill();N.closePath();N.restore();N.save();N.beginPath();N.strokeStyle=a.series.pie.stroke.color;N.arc(0,0,innerRadius,0,Math.PI*2,false);N.stroke();N.closePath();N.restore()}}function s(Q,R){for(var S=false,P=-1,N=Q.length,O=N-1;++P<N;O=P){((Q[P][1]<=R[1]&&R[1]<Q[O][1])||(Q[O][1]<=R[1]&&R[1]<Q[P][1]))&&(R[0]<(Q[O][0]-Q[P][0])*(R[1]-Q[P][1])/(Q[O][1]-Q[P][1])+Q[P][0])&&(S=!S)}return S}function u(R,P){var T=D.getData(),O=D.getOptions(),N=O.series.pie.radius>1?O.series.pie.radius:n*O.series.pie.radius;for(var Q=0;Q<T.length;++Q){var S=T[Q];if(S.pie.show){ctx.save();ctx.beginPath();ctx.moveTo(0,0);ctx.arc(0,0,N,S.startAngle,S.startAngle+S.angle,false);ctx.closePath();x=R-B;y=P-p;if(ctx.isPointInPath){if(ctx.isPointInPath(R-B,P-p)){ctx.restore();return{datapoint:[S.percent,S.data],dataIndex:0,series:S,seriesIndex:Q}}}else{p1X=(N*Math.cos(S.startAngle));p1Y=(N*Math.sin(S.startAngle));p2X=(N*Math.cos(S.startAngle+(S.angle/4)));p2Y=(N*Math.sin(S.startAngle+(S.angle/4)));p3X=(N*Math.cos(S.startAngle+(S.angle/2)));p3Y=(N*Math.sin(S.startAngle+(S.angle/2)));p4X=(N*Math.cos(S.startAngle+(S.angle/1.5)));p4Y=(N*Math.sin(S.startAngle+(S.angle/1.5)));p5X=(N*Math.cos(S.startAngle+S.angle));p5Y=(N*Math.sin(S.startAngle+S.angle));arrPoly=[[0,0],[p1X,p1Y],[p2X,p2Y],[p3X,p3Y],[p4X,p4Y],[p5X,p5Y]];arrPoint=[x,y];if(s(arrPoly,arrPoint)){ctx.restore();return{datapoint:[S.percent,S.data],dataIndex:0,series:S,seriesIndex:Q}}}ctx.restore()}}return null}function t(N){m("plothover",N)}function l(N){m("plotclick",N)}function m(N,T){var O=D.offset(),R=parseInt(T.pageX-O.left),P=parseInt(T.pageY-O.top),V=u(R,P);if(a.grid.autoHighlight){for(var Q=0;Q<j.length;++Q){var S=j[Q];if(S.auto==N&&!(V&&S.series==V.series)){f(S.series)}}}if(V){k(V.series,N)}var U={pageX:T.pageX,pageY:T.pageY};L.trigger(N,[U,V])}function k(O,P){if(typeof O=="number"){O=series[O]}var N=C(O);if(N==-1){j.push({series:O,auto:P});D.triggerRedrawOverlay()}else{if(!P){j[N].auto=false}}}function f(O){if(O==null){j=[];D.triggerRedrawOverlay()}if(typeof O=="number"){O=series[O]}var N=C(O);if(N!=-1){j.splice(N,1);D.triggerRedrawOverlay()}}function C(P){for(var N=0;N<j.length;++N){var O=j[N];if(O.series==P){return N}}return -1}function H(Q,R){var P=Q.getOptions();var N=P.series.pie.radius>1?P.series.pie.radius:n*P.series.pie.radius;R.save();R.translate(B,p);R.scale(1,P.series.pie.tilt);for(i=0;i<j.length;++i){O(j[i].series)}J(R);R.restore();function O(S){if(S.angle<0){return}R.fillStyle="rgba(255, 255, 255, "+P.series.pie.highlight.opacity+")";R.beginPath();if(Math.abs(S.angle-Math.PI*2)>1e-9){R.moveTo(0,0)}R.arc(0,0,N,S.startAngle,S.startAngle+S.angle,false);R.closePath();R.fill()}}}var a={series:{pie:{show:false,radius:"auto",innerRadius:0,startAngle:3/2,tilt:1,offset:{top:0,left:"auto"},stroke:{color:"#FFF",width:1},label:{show:"auto",formatter:function(d,e){return'<div style="font-size:x-small;text-align:center;padding:2px;color:'+e.color+';">'+d+"<br/>"+Math.round(e.percent)+"%</div>"},radius:1,background:{color:null,opacity:0},threshold:0},combine:{threshold:-1,color:null,label:"Other"},highlight:{opacity:0.5}}}};b.plot.plugins.push({init:c,options:a,name:"pie",version:"1.0"})})(jQuery); |
/* | |
Flot plugin for automatically redrawing plots when the placeholder | |
size changes, e.g. on window resizes. | |
It works by listening for changes on the placeholder div (through the | |
jQuery resize event plugin) - if the size changes, it will redraw the | |
plot. | |
There are no options. If you need to disable the plugin for some | |
plots, you can just fix the size of their placeholders. | |
*/ | |
/* Inline dependency: | |
* jQuery resize event - v1.1 - 3/14/2010 | |
* http://benalman.com/projects/jquery-resize-plugin/ | |
* | |
* Copyright (c) 2010 "Cowboy" Ben Alman | |
* Dual licensed under the MIT and GPL licenses. | |
* http://benalman.com/about/license/ | |
*/ | |
(function($,h,c){var a=$([]),e=$.resize=$.extend($.resize,{}),i,k="setTimeout",j="resize",d=j+"-special-event",b="delay",f="throttleWindow";e[b]=250;e[f]=true;$.event.special[j]={setup:function(){if(!e[f]&&this[k]){return false}var l=$(this);a=a.add(l);$.data(this,d,{w:l.width(),h:l.height()});if(a.length===1){g()}},teardown:function(){if(!e[f]&&this[k]){return false}var l=$(this);a=a.not(l);l.removeData(d);if(!a.length){clearTimeout(i)}},add:function(l){if(!e[f]&&this[k]){return false}var n;function m(s,o,p){var q=$(this),r=$.data(this,d);r.w=o!==c?o:q.width();r.h=p!==c?p:q.height();n.apply(this,arguments)}if($.isFunction(l)){n=l;return m}else{n=l.handler;l.handler=m}}};function g(){i=h[k](function(){a.each(function(){var n=$(this),m=n.width(),l=n.height(),o=$.data(this,d);if(m!==o.w||l!==o.h){n.trigger(j,[o.w=m,o.h=l])}});g()},e[b])}})(jQuery,this); | |
(function ($) { | |
var options = { }; // no options | |
function init(plot) { | |
function onResize() { | |
var placeholder = plot.getPlaceholder(); | |
// somebody might have hidden us and we can't plot | |
// when we don't have the dimensions | |
if (placeholder.width() == 0 || placeholder.height() == 0) | |
return; | |
plot.resize(); | |
plot.setupGrid(); | |
plot.draw(); | |
} | |
function bindEvents(plot, eventHolder) { | |
plot.getPlaceholder().resize(onResize); | |
} | |
function shutdown(plot, eventHolder) { | |
plot.getPlaceholder().unbind("resize", onResize); | |
} | |
plot.hooks.bindEvents.push(bindEvents); | |
plot.hooks.shutdown.push(shutdown); | |
} | |
$.plot.plugins.push({ | |
init: init, | |
options: options, | |
name: 'resize', | |
version: '1.0' | |
}); | |
})(jQuery); | |
(function(n,p,u){var w=n([]),s=n.resize=n.extend(n.resize,{}),o,l="setTimeout",m="resize",t=m+"-special-event",v="delay",r="throttleWindow";s[v]=250;s[r]=true;n.event.special[m]={setup:function(){if(!s[r]&&this[l]){return false}var a=n(this);w=w.add(a);n.data(this,t,{w:a.width(),h:a.height()});if(w.length===1){q()}},teardown:function(){if(!s[r]&&this[l]){return false}var a=n(this);w=w.not(a);a.removeData(t);if(!w.length){clearTimeout(o)}},add:function(b){if(!s[r]&&this[l]){return false}var c;function a(d,h,g){var f=n(this),e=n.data(this,t);e.w=h!==u?h:f.width();e.h=g!==u?g:f.height();c.apply(this,arguments)}if(n.isFunction(b)){c=b;return a}else{c=b.handler;b.handler=a}}};function q(){o=p[l](function(){w.each(function(){var d=n(this),a=d.width(),b=d.height(),c=n.data(this,t);if(a!==c.w||b!==c.h){d.trigger(m,[c.w=a,c.h=b])}});q()},s[v])}})(jQuery,this);(function(b){var a={};function c(f){function e(){var h=f.getPlaceholder();if(h.width()==0||h.height()==0){return}f.resize();f.setupGrid();f.draw()}function g(i,h){i.getPlaceholder().resize(e)}function d(i,h){i.getPlaceholder().unbind("resize",e)}f.hooks.bindEvents.push(g);f.hooks.shutdown.push(d)}b.plot.plugins.push({init:c,options:a,name:"resize",version:"1.0"})})(jQuery); |
/* | |
Flot plugin for selecting regions. | |
The plugin defines the following options: | |
selection: { | |
mode: null or "x" or "y" or "xy", | |
color: color | |
} | |
Selection support is enabled by setting the mode to one of "x", "y" or | |
"xy". In "x" mode, the user will only be able to specify the x range, | |
similarly for "y" mode. For "xy", the selection becomes a rectangle | |
where both ranges can be specified. "color" is color of the selection | |
(if you need to change the color later on, you can get to it with | |
plot.getOptions().selection.color). | |
When selection support is enabled, a "plotselected" event will be | |
emitted on the DOM element you passed into the plot function. The | |
event handler gets a parameter with the ranges selected on the axes, | |
like this: | |
placeholder.bind("plotselected", function(event, ranges) { | |
alert("You selected " + ranges.xaxis.from + " to " + ranges.xaxis.to) | |
// similar for yaxis - with multiple axes, the extra ones are in | |
// x2axis, x3axis, ... | |
}); | |
The "plotselected" event is only fired when the user has finished | |
making the selection. A "plotselecting" event is fired during the | |
process with the same parameters as the "plotselected" event, in case | |
you want to know what's happening while it's happening, | |
A "plotunselected" event with no arguments is emitted when the user | |
clicks the mouse to remove the selection. | |
The plugin allso adds the following methods to the plot object: | |
- setSelection(ranges, preventEvent) | |
Set the selection rectangle. The passed in ranges is on the same | |
form as returned in the "plotselected" event. If the selection mode | |
is "x", you should put in either an xaxis range, if the mode is "y" | |
you need to put in an yaxis range and both xaxis and yaxis if the | |
selection mode is "xy", like this: | |
setSelection({ xaxis: { from: 0, to: 10 }, yaxis: { from: 40, to: 60 } }); | |
setSelection will trigger the "plotselected" event when called. If | |
you don't want that to happen, e.g. if you're inside a | |
"plotselected" handler, pass true as the second parameter. If you | |
are using multiple axes, you can specify the ranges on any of those, | |
e.g. as x2axis/x3axis/... instead of xaxis, the plugin picks the | |
first one it sees. | |
- clearSelection(preventEvent) | |
Clear the selection rectangle. Pass in true to avoid getting a | |
"plotunselected" event. | |
- getSelection() | |
Returns the current selection in the same format as the | |
"plotselected" event. If there's currently no selection, the | |
function returns null. | |
*/ | |
(function ($) { | |
function init(plot) { | |
var selection = { | |
first: { x: -1, y: -1}, second: { x: -1, y: -1}, | |
show: false, | |
active: false | |
}; | |
// FIXME: The drag handling implemented here should be | |
// abstracted out, there's some similar code from a library in | |
// the navigation plugin, this should be massaged a bit to fit | |
// the Flot cases here better and reused. Doing this would | |
// make this plugin much slimmer. | |
var savedhandlers = {}; | |
var mouseUpHandler = null; | |
function onMouseMove(e) { | |
if (selection.active) { | |
updateSelection(e); | |
plot.getPlaceholder().trigger("plotselecting", [ getSelection() ]); | |
} | |
} | |
function onMouseDown(e) { | |
if (e.which != 1) // only accept left-click | |
return; | |
// cancel out any text selections | |
document.body.focus(); | |
// prevent text selection and drag in old-school browsers | |
if (document.onselectstart !== undefined && savedhandlers.onselectstart == null) { | |
savedhandlers.onselectstart = document.onselectstart; | |
document.onselectstart = function () { return false; }; | |
} | |
if (document.ondrag !== undefined && savedhandlers.ondrag == null) { | |
savedhandlers.ondrag = document.ondrag; | |
document.ondrag = function () { return false; }; | |
} | |
setSelectionPos(selection.first, e); | |
selection.active = true; | |
// this is a bit silly, but we have to use a closure to be | |
// able to whack the same handler again | |
mouseUpHandler = function (e) { onMouseUp(e); }; | |
$(document).one("mouseup", mouseUpHandler); | |
} | |
function onMouseUp(e) { | |
mouseUpHandler = null; | |
// revert drag stuff for old-school browsers | |
if (document.onselectstart !== undefined) | |
document.onselectstart = savedhandlers.onselectstart; | |
if (document.ondrag !== undefined) | |
document.ondrag = savedhandlers.ondrag; | |
// no more dragging | |
selection.active = false; | |
updateSelection(e); | |
if (selectionIsSane()) | |
triggerSelectedEvent(); | |
else { | |
// this counts as a clear | |
plot.getPlaceholder().trigger("plotunselected", [ ]); | |
plot.getPlaceholder().trigger("plotselecting", [ null ]); | |
} | |
return false; | |
} | |
function getSelection() { | |
if (!selectionIsSane()) | |
return null; | |
var r = {}, c1 = selection.first, c2 = selection.second; | |
$.each(plot.getAxes(), function (name, axis) { | |
if (axis.used) { | |
var p1 = axis.c2p(c1[axis.direction]), p2 = axis.c2p(c2[axis.direction]); | |
r[name] = { from: Math.min(p1, p2), to: Math.max(p1, p2) }; | |
} | |
}); | |
return r; | |
} | |
function triggerSelectedEvent() { | |
var r = getSelection(); | |
plot.getPlaceholder().trigger("plotselected", [ r ]); | |
// backwards-compat stuff, to be removed in future | |
if (r.xaxis && r.yaxis) | |
plot.getPlaceholder().trigger("selected", [ { x1: r.xaxis.from, y1: r.yaxis.from, x2: r.xaxis.to, y2: r.yaxis.to } ]); | |
} | |
function clamp(min, value, max) { | |
return value < min ? min: (value > max ? max: value); | |
} | |
function setSelectionPos(pos, e) { | |
var o = plot.getOptions(); | |
var offset = plot.getPlaceholder().offset(); | |
var plotOffset = plot.getPlotOffset(); | |
pos.x = clamp(0, e.pageX - offset.left - plotOffset.left, plot.width()); | |
pos.y = clamp(0, e.pageY - offset.top - plotOffset.top, plot.height()); | |
if (o.selection.mode == "y") | |
pos.x = pos == selection.first ? 0 : plot.width(); | |
if (o.selection.mode == "x") | |
pos.y = pos == selection.first ? 0 : plot.height(); | |
} | |
function updateSelection(pos) { | |
if (pos.pageX == null) | |
return; | |
setSelectionPos(selection.second, pos); | |
if (selectionIsSane()) { | |
selection.show = true; | |
plot.triggerRedrawOverlay(); | |
} | |
else | |
clearSelection(true); | |
} | |
function clearSelection(preventEvent) { | |
if (selection.show) { | |
selection.show = false; | |
plot.triggerRedrawOverlay(); | |
if (!preventEvent) | |
plot.getPlaceholder().trigger("plotunselected", [ ]); | |
} | |
} | |
// function taken from markings support in Flot | |
function extractRange(ranges, coord) { | |
var axis, from, to, key, axes = plot.getAxes(); | |
for (var k in axes) { | |
axis = axes[k]; | |
if (axis.direction == coord) { | |
key = coord + axis.n + "axis"; | |
if (!ranges[key] && axis.n == 1) | |
key = coord + "axis"; // support x1axis as xaxis | |
if (ranges[key]) { | |
from = ranges[key].from; | |
to = ranges[key].to; | |
break; | |
} | |
} | |
} | |
// backwards-compat stuff - to be removed in future | |
if (!ranges[key]) { | |
axis = coord == "x" ? plot.getXAxes()[0] : plot.getYAxes()[0]; | |
from = ranges[coord + "1"]; | |
to = ranges[coord + "2"]; | |
} | |
// auto-reverse as an added bonus | |
if (from != null && to != null && from > to) { | |
var tmp = from; | |
from = to; | |
to = tmp; | |
} | |
return { from: from, to: to, axis: axis }; | |
} | |
function setSelection(ranges, preventEvent) { | |
var axis, range, o = plot.getOptions(); | |
if (o.selection.mode == "y") { | |
selection.first.x = 0; | |
selection.second.x = plot.width(); | |
} | |
else { | |
range = extractRange(ranges, "x"); | |
selection.first.x = range.axis.p2c(range.from); | |
selection.second.x = range.axis.p2c(range.to); | |
} | |
if (o.selection.mode == "x") { | |
selection.first.y = 0; | |
selection.second.y = plot.height(); | |
} | |
else { | |
range = extractRange(ranges, "y"); | |
selection.first.y = range.axis.p2c(range.from); | |
selection.second.y = range.axis.p2c(range.to); | |
} | |
selection.show = true; | |
plot.triggerRedrawOverlay(); | |
if (!preventEvent && selectionIsSane()) | |
triggerSelectedEvent(); | |
} | |
function selectionIsSane() { | |
var minSize = 5; | |
return Math.abs(selection.second.x - selection.first.x) >= minSize && | |
Math.abs(selection.second.y - selection.first.y) >= minSize; | |
} | |
plot.clearSelection = clearSelection; | |
plot.setSelection = setSelection; | |
plot.getSelection = getSelection; | |
plot.hooks.bindEvents.push(function(plot, eventHolder) { | |
var o = plot.getOptions(); | |
if (o.selection.mode != null) { | |
eventHolder.mousemove(onMouseMove); | |
eventHolder.mousedown(onMouseDown); | |
} | |
}); | |
plot.hooks.drawOverlay.push(function (plot, ctx) { | |
// draw selection | |
if (selection.show && selectionIsSane()) { | |
var plotOffset = plot.getPlotOffset(); | |
var o = plot.getOptions(); | |
ctx.save(); | |
ctx.translate(plotOffset.left, plotOffset.top); | |
var c = $.color.parse(o.selection.color); | |
ctx.strokeStyle = c.scale('a', 0.8).toString(); | |
ctx.lineWidth = 1; | |
ctx.lineJoin = "round"; | |
ctx.fillStyle = c.scale('a', 0.4).toString(); | |
var x = Math.min(selection.first.x, selection.second.x), | |
y = Math.min(selection.first.y, selection.second.y), | |
w = Math.abs(selection.second.x - selection.first.x), | |
h = Math.abs(selection.second.y - selection.first.y); | |
ctx.fillRect(x, y, w, h); | |
ctx.strokeRect(x, y, w, h); | |
ctx.restore(); | |
} | |
}); | |
plot.hooks.shutdown.push(function (plot, eventHolder) { | |
eventHolder.unbind("mousemove", onMouseMove); | |
eventHolder.unbind("mousedown", onMouseDown); | |
if (mouseUpHandler) | |
$(document).unbind("mouseup", mouseUpHandler); | |
}); | |
} | |
$.plot.plugins.push({ | |
init: init, | |
options: { | |
selection: { | |
mode: null, // one of null, "x", "y" or "xy" | |
color: "#e8cfac" | |
} | |
}, | |
name: 'selection', | |
version: '1.1' | |
}); | |
})(jQuery); | |
(function(a){function b(k){var p={first:{x:-1,y:-1},second:{x:-1,y:-1},show:false,active:false};var m={};var r=null;function e(s){if(p.active){l(s);k.getPlaceholder().trigger("plotselecting",[g()])}}function n(s){if(s.which!=1){return}document.body.focus();if(document.onselectstart!==undefined&&m.onselectstart==null){m.onselectstart=document.onselectstart;document.onselectstart=function(){return false}}if(document.ondrag!==undefined&&m.ondrag==null){m.ondrag=document.ondrag;document.ondrag=function(){return false}}d(p.first,s);p.active=true;r=function(t){j(t)};a(document).one("mouseup",r)}function j(s){r=null;if(document.onselectstart!==undefined){document.onselectstart=m.onselectstart}if(document.ondrag!==undefined){document.ondrag=m.ondrag}p.active=false;l(s);if(f()){i()}else{k.getPlaceholder().trigger("plotunselected",[]);k.getPlaceholder().trigger("plotselecting",[null])}return false}function g(){if(!f()){return null}var u={},t=p.first,s=p.second;a.each(k.getAxes(),function(v,w){if(w.used){var y=w.c2p(t[w.direction]),x=w.c2p(s[w.direction]);u[v]={from:Math.min(y,x),to:Math.max(y,x)}}});return u}function i(){var s=g();k.getPlaceholder().trigger("plotselected",[s]);if(s.xaxis&&s.yaxis){k.getPlaceholder().trigger("selected",[{x1:s.xaxis.from,y1:s.yaxis.from,x2:s.xaxis.to,y2:s.yaxis.to}])}}function h(t,u,s){return u<t?t:(u>s?s:u)}function d(w,t){var v=k.getOptions();var u=k.getPlaceholder().offset();var s=k.getPlotOffset();w.x=h(0,t.pageX-u.left-s.left,k.width());w.y=h(0,t.pageY-u.top-s.top,k.height());if(v.selection.mode=="y"){w.x=w==p.first?0:k.width()}if(v.selection.mode=="x"){w.y=w==p.first?0:k.height()}}function l(s){if(s.pageX==null){return}d(p.second,s);if(f()){p.show=true;k.triggerRedrawOverlay()}else{q(true)}}function q(s){if(p.show){p.show=false;k.triggerRedrawOverlay();if(!s){k.getPlaceholder().trigger("plotunselected",[])}}}function c(s,w){var t,y,z,A,x=k.getAxes();for(var u in x){t=x[u];if(t.direction==w){A=w+t.n+"axis";if(!s[A]&&t.n==1){A=w+"axis"}if(s[A]){y=s[A].from;z=s[A].to;break}}}if(!s[A]){t=w=="x"?k.getXAxes()[0]:k.getYAxes()[0];y=s[w+"1"];z=s[w+"2"]}if(y!=null&&z!=null&&y>z){var v=y;y=z;z=v}return{from:y,to:z,axis:t}}function o(t,s){var v,u,w=k.getOptions();if(w.selection.mode=="y"){p.first.x=0;p.second.x=k.width()}else{u=c(t,"x");p.first.x=u.axis.p2c(u.from);p.second.x=u.axis.p2c(u.to)}if(w.selection.mode=="x"){p.first.y=0;p.second.y=k.height()}else{u=c(t,"y");p.first.y=u.axis.p2c(u.from);p.second.y=u.axis.p2c(u.to)}p.show=true;k.triggerRedrawOverlay();if(!s&&f()){i()}}function f(){var s=5;return Math.abs(p.second.x-p.first.x)>=s&&Math.abs(p.second.y-p.first.y)>=s}k.clearSelection=q;k.setSelection=o;k.getSelection=g;k.hooks.bindEvents.push(function(t,s){var u=t.getOptions();if(u.selection.mode!=null){s.mousemove(e);s.mousedown(n)}});k.hooks.drawOverlay.push(function(v,D){if(p.show&&f()){var t=v.getPlotOffset();var s=v.getOptions();D.save();D.translate(t.left,t.top);var z=a.color.parse(s.selection.color);D.strokeStyle=z.scale("a",0.8).toString();D.lineWidth=1;D.lineJoin="round";D.fillStyle=z.scale("a",0.4).toString();var B=Math.min(p.first.x,p.second.x),A=Math.min(p.first.y,p.second.y),C=Math.abs(p.second.x-p.first.x),u=Math.abs(p.second.y-p.first.y);D.fillRect(B,A,C,u);D.strokeRect(B,A,C,u);D.restore()}});k.hooks.shutdown.push(function(t,s){s.unbind("mousemove",e);s.unbind("mousedown",n);if(r){a(document).unbind("mouseup",r)}})}a.plot.plugins.push({init:b,options:{selection:{mode:null,color:"#e8cfac"}},name:"selection",version:"1.1"})})(jQuery); |
/* | |
Flot plugin for stacking data sets, i.e. putting them on top of each | |
other, for accumulative graphs. | |
The plugin assumes the data is sorted on x (or y if stacking | |
horizontally). For line charts, it is assumed that if a line has an | |
undefined gap (from a null point), then the line above it should have | |
the same gap - insert zeros instead of "null" if you want another | |
behaviour. This also holds for the start and end of the chart. Note | |
that stacking a mix of positive and negative values in most instances | |
doesn't make sense (so it looks weird). | |
Two or more series are stacked when their "stack" attribute is set to | |
the same key (which can be any number or string or just "true"). To | |
specify the default stack, you can set | |
series: { | |
stack: null or true or key (number/string) | |
} | |
or specify it for a specific series | |
$.plot($("#placeholder"), [{ data: [ ... ], stack: true }]) | |
The stacking order is determined by the order of the data series in | |
the array (later series end up on top of the previous). | |
Internally, the plugin modifies the datapoints in each series, adding | |
an offset to the y value. For line series, extra data points are | |
inserted through interpolation. If there's a second y value, it's also | |
adjusted (e.g for bar charts or filled areas). | |
*/ | |
(function ($) { | |
var options = { | |
series: { stack: null } // or number/string | |
}; | |
function init(plot) { | |
function findMatchingSeries(s, allseries) { | |
var res = null | |
for (var i = 0; i < allseries.length; ++i) { | |
if (s == allseries[i]) | |
break; | |
if (allseries[i].stack == s.stack) | |
res = allseries[i]; | |
} | |
return res; | |
} | |
function stackData(plot, s, datapoints) { | |
if (s.stack == null) | |
return; | |
var other = findMatchingSeries(s, plot.getData()); | |
if (!other) | |
return; | |
var ps = datapoints.pointsize, | |
points = datapoints.points, | |
otherps = other.datapoints.pointsize, | |
otherpoints = other.datapoints.points, | |
newpoints = [], | |
px, py, intery, qx, qy, bottom, | |
withlines = s.lines.show, | |
horizontal = s.bars.horizontal, | |
withbottom = ps > 2 && (horizontal ? datapoints.format[2].x : datapoints.format[2].y), | |
withsteps = withlines && s.lines.steps, | |
fromgap = true, | |
keyOffset = horizontal ? 1 : 0, | |
accumulateOffset = horizontal ? 0 : 1, | |
i = 0, j = 0, l; | |
while (true) { | |
if (i >= points.length) | |
break; | |
l = newpoints.length; | |
if (points[i] == null) { | |
// copy gaps | |
for (m = 0; m < ps; ++m) | |
newpoints.push(points[i + m]); | |
i += ps; | |
} | |
else if (j >= otherpoints.length) { | |
// for lines, we can't use the rest of the points | |
if (!withlines) { | |
for (m = 0; m < ps; ++m) | |
newpoints.push(points[i + m]); | |
} | |
i += ps; | |
} | |
else if (otherpoints[j] == null) { | |
// oops, got a gap | |
for (m = 0; m < ps; ++m) | |
newpoints.push(null); | |
fromgap = true; | |
j += otherps; | |
} | |
else { | |
// cases where we actually got two points | |
px = points[i + keyOffset]; | |
py = points[i + accumulateOffset]; | |
qx = otherpoints[j + keyOffset]; | |
qy = otherpoints[j + accumulateOffset]; | |
bottom = 0; | |
if (px == qx) { | |
for (m = 0; m < ps; ++m) | |
newpoints.push(points[i + m]); | |
newpoints[l + accumulateOffset] += qy; | |
bottom = qy; | |
i += ps; | |
j += otherps; | |
} | |
else if (px > qx) { | |
// we got past point below, might need to | |
// insert interpolated extra point | |
if (withlines && i > 0 && points[i - ps] != null) { | |
intery = py + (points[i - ps + accumulateOffset] - py) * (qx - px) / (points[i - ps + keyOffset] - px); | |
newpoints.push(qx); | |
newpoints.push(intery + qy); | |
for (m = 2; m < ps; ++m) | |
newpoints.push(points[i + m]); | |
bottom = qy; | |
} | |
j += otherps; | |
} | |
else { // px < qx | |
if (fromgap && withlines) { | |
// if we come from a gap, we just skip this point | |
i += ps; | |
continue; | |
} | |
for (m = 0; m < ps; ++m) | |
newpoints.push(points[i + m]); | |
// we might be able to interpolate a point below, | |
// this can give us a better y | |
if (withlines && j > 0 && otherpoints[j - otherps] != null) | |
bottom = qy + (otherpoints[j - otherps + accumulateOffset] - qy) * (px - qx) / (otherpoints[j - otherps + keyOffset] - qx); | |
newpoints[l + accumulateOffset] += bottom; | |
i += ps; | |
} | |
fromgap = false; | |
if (l != newpoints.length && withbottom) | |
newpoints[l + 2] += bottom; | |
} | |
// maintain the line steps invariant | |
if (withsteps && l != newpoints.length && l > 0 | |
&& newpoints[l] != null | |
&& newpoints[l] != newpoints[l - ps] | |
&& newpoints[l + 1] != newpoints[l - ps + 1]) { | |
for (m = 0; m < ps; ++m) | |
newpoints[l + ps + m] = newpoints[l + m]; | |
newpoints[l + 1] = newpoints[l - ps + 1]; | |
} | |
} | |
datapoints.points = newpoints; | |
} | |
plot.hooks.processDatapoints.push(stackData); | |
} | |
$.plot.plugins.push({ | |
init: init, | |
options: options, | |
name: 'stack', | |
version: '1.2' | |
}); | |
})(jQuery); | |
(function(b){var a={series:{stack:null}};function c(f){function d(k,j){var h=null;for(var g=0;g<j.length;++g){if(k==j[g]){break}if(j[g].stack==k.stack){h=j[g]}}return h}function e(C,v,g){if(v.stack==null){return}var p=d(v,C.getData());if(!p){return}var z=g.pointsize,F=g.points,h=p.datapoints.pointsize,y=p.datapoints.points,t=[],x,w,k,J,I,r,u=v.lines.show,G=v.bars.horizontal,o=z>2&&(G?g.format[2].x:g.format[2].y),n=u&&v.lines.steps,E=true,q=G?1:0,H=G?0:1,D=0,B=0,A;while(true){if(D>=F.length){break}A=t.length;if(F[D]==null){for(m=0;m<z;++m){t.push(F[D+m])}D+=z}else{if(B>=y.length){if(!u){for(m=0;m<z;++m){t.push(F[D+m])}}D+=z}else{if(y[B]==null){for(m=0;m<z;++m){t.push(null)}E=true;B+=h}else{x=F[D+q];w=F[D+H];J=y[B+q];I=y[B+H];r=0;if(x==J){for(m=0;m<z;++m){t.push(F[D+m])}t[A+H]+=I;r=I;D+=z;B+=h}else{if(x>J){if(u&&D>0&&F[D-z]!=null){k=w+(F[D-z+H]-w)*(J-x)/(F[D-z+q]-x);t.push(J);t.push(k+I);for(m=2;m<z;++m){t.push(F[D+m])}r=I}B+=h}else{if(E&&u){D+=z;continue}for(m=0;m<z;++m){t.push(F[D+m])}if(u&&B>0&&y[B-h]!=null){r=I+(y[B-h+H]-I)*(x-J)/(y[B-h+q]-J)}t[A+H]+=r;D+=z}}E=false;if(A!=t.length&&o){t[A+2]+=r}}}}if(n&&A!=t.length&&A>0&&t[A]!=null&&t[A]!=t[A-z]&&t[A+1]!=t[A-z+1]){for(m=0;m<z;++m){t[A+z+m]=t[A+m]}t[A+1]=t[A-z+1]}}g.points=t}f.hooks.processDatapoints.push(e)}b.plot.plugins.push({init:c,options:a,name:"stack",version:"1.2"})})(jQuery); |
/* | |
Flot plugin that adds some extra symbols for plotting points. | |
The symbols are accessed as strings through the standard symbol | |
choice: | |
series: { | |
points: { | |
symbol: "square" // or "diamond", "triangle", "cross" | |
} | |
} | |
*/ | |
(function ($) { | |
function processRawData(plot, series, datapoints) { | |
// we normalize the area of each symbol so it is approximately the | |
// same as a circle of the given radius | |
var handlers = { | |
square: function (ctx, x, y, radius, shadow) { | |
// pi * r^2 = (2s)^2 => s = r * sqrt(pi)/2 | |
var size = radius * Math.sqrt(Math.PI) / 2; | |
ctx.rect(x - size, y - size, size + size, size + size); | |
}, | |
diamond: function (ctx, x, y, radius, shadow) { | |
// pi * r^2 = 2s^2 => s = r * sqrt(pi/2) | |
var size = radius * Math.sqrt(Math.PI / 2); | |
ctx.moveTo(x - size, y); | |
ctx.lineTo(x, y - size); | |
ctx.lineTo(x + size, y); | |
ctx.lineTo(x, y + size); | |
ctx.lineTo(x - size, y); | |
}, | |
triangle: function (ctx, x, y, radius, shadow) { | |
// pi * r^2 = 1/2 * s^2 * sin (pi / 3) => s = r * sqrt(2 * pi / sin(pi / 3)) | |
var size = radius * Math.sqrt(2 * Math.PI / Math.sin(Math.PI / 3)); | |
var height = size * Math.sin(Math.PI / 3); | |
ctx.moveTo(x - size/2, y + height/2); | |
ctx.lineTo(x + size/2, y + height/2); | |
if (!shadow) { | |
ctx.lineTo(x, y - height/2); | |
ctx.lineTo(x - size/2, y + height/2); | |
} | |
}, | |
cross: function (ctx, x, y, radius, shadow) { | |
// pi * r^2 = (2s)^2 => s = r * sqrt(pi)/2 | |
var size = radius * Math.sqrt(Math.PI) / 2; | |
ctx.moveTo(x - size, y - size); | |
ctx.lineTo(x + size, y + size); | |
ctx.moveTo(x - size, y + size); | |
ctx.lineTo(x + size, y - size); | |
} | |
} | |
var s = series.points.symbol; | |
if (handlers[s]) | |
series.points.symbol = handlers[s]; | |
} | |
function init(plot) { | |
plot.hooks.processDatapoints.push(processRawData); | |
} | |
$.plot.plugins.push({ | |
init: init, | |
name: 'symbols', | |
version: '1.0' | |
}); | |
})(jQuery); | |
(function(b){function a(h,e,g){var d={square:function(k,j,n,i,m){var l=i*Math.sqrt(Math.PI)/2;k.rect(j-l,n-l,l+l,l+l)},diamond:function(k,j,n,i,m){var l=i*Math.sqrt(Math.PI/2);k.moveTo(j-l,n);k.lineTo(j,n-l);k.lineTo(j+l,n);k.lineTo(j,n+l);k.lineTo(j-l,n)},triangle:function(l,k,o,j,n){var m=j*Math.sqrt(2*Math.PI/Math.sin(Math.PI/3));var i=m*Math.sin(Math.PI/3);l.moveTo(k-m/2,o+i/2);l.lineTo(k+m/2,o+i/2);if(!n){l.lineTo(k,o-i/2);l.lineTo(k-m/2,o+i/2)}},cross:function(k,j,n,i,m){var l=i*Math.sqrt(Math.PI)/2;k.moveTo(j-l,n-l);k.lineTo(j+l,n+l);k.moveTo(j-l,n+l);k.lineTo(j+l,n-l)}};var f=e.points.symbol;if(d[f]){e.points.symbol=d[f]}}function c(d){d.hooks.processDatapoints.push(a)}b.plot.plugins.push({init:c,name:"symbols",version:"1.0"})})(jQuery); |
/* | |
Flot plugin for thresholding data. Controlled through the option | |
"threshold" in either the global series options | |
series: { | |
threshold: { | |
below: number | |
color: colorspec | |
} | |
} | |
or in a specific series | |
$.plot($("#placeholder"), [{ data: [ ... ], threshold: { ... }}]) | |
The data points below "below" are drawn with the specified color. This | |
makes it easy to mark points below 0, e.g. for budget data. | |
Internally, the plugin works by splitting the data into two series, | |
above and below the threshold. The extra series below the threshold | |
will have its label cleared and the special "originSeries" attribute | |
set to the original series. You may need to check for this in hover | |
events. | |
*/ | |
(function ($) { | |
var options = { | |
series: { threshold: null } // or { below: number, color: color spec} | |
}; | |
function init(plot) { | |
function thresholdData(plot, s, datapoints) { | |
if (!s.threshold) | |
return; | |
var ps = datapoints.pointsize, i, x, y, p, prevp, | |
thresholded = $.extend({}, s); // note: shallow copy | |
thresholded.datapoints = { points: [], pointsize: ps }; | |
thresholded.label = null; | |
thresholded.color = s.threshold.color; | |
thresholded.threshold = null; | |
thresholded.originSeries = s; | |
thresholded.data = []; | |
var below = s.threshold.below, | |
origpoints = datapoints.points, | |
addCrossingPoints = s.lines.show; | |
threspoints = []; | |
newpoints = []; | |
for (i = 0; i < origpoints.length; i += ps) { | |
x = origpoints[i] | |
y = origpoints[i + 1]; | |
prevp = p; | |
if (y < below) | |
p = threspoints; | |
else | |
p = newpoints; | |
if (addCrossingPoints && prevp != p && x != null | |
&& i > 0 && origpoints[i - ps] != null) { | |
var interx = (x - origpoints[i - ps]) / (y - origpoints[i - ps + 1]) * (below - y) + x; | |
prevp.push(interx); | |
prevp.push(below); | |
for (m = 2; m < ps; ++m) | |
prevp.push(origpoints[i + m]); | |
p.push(null); // start new segment | |
p.push(null); | |
for (m = 2; m < ps; ++m) | |
p.push(origpoints[i + m]); | |
p.push(interx); | |
p.push(below); | |
for (m = 2; m < ps; ++m) | |
p.push(origpoints[i + m]); | |
} | |
p.push(x); | |
p.push(y); | |
} | |
datapoints.points = newpoints; | |
thresholded.datapoints.points = threspoints; | |
if (thresholded.datapoints.points.length > 0) | |
plot.getData().push(thresholded); | |
// FIXME: there are probably some edge cases left in bars | |
} | |
plot.hooks.processDatapoints.push(thresholdData); | |
} | |
$.plot.plugins.push({ | |
init: init, | |
options: options, | |
name: 'threshold', | |
version: '1.0' | |
}); | |
})(jQuery); | |
(function(B){var A={series:{threshold:null}};function C(D){function E(L,S,M){if(!S.threshold){return }var F=M.pointsize,I,O,N,G,K,H=B.extend({},S);H.datapoints={points:[],pointsize:F};H.label=null;H.color=S.threshold.color;H.threshold=null;H.originSeries=S;H.data=[];var P=S.threshold.below,Q=M.points,R=S.lines.show;threspoints=[];newpoints=[];for(I=0;I<Q.length;I+=F){O=Q[I];N=Q[I+1];K=G;if(N<P){G=threspoints}else{G=newpoints}if(R&&K!=G&&O!=null&&I>0&&Q[I-F]!=null){var J=(O-Q[I-F])/(N-Q[I-F+1])*(P-N)+O;K.push(J);K.push(P);for(m=2;m<F;++m){K.push(Q[I+m])}G.push(null);G.push(null);for(m=2;m<F;++m){G.push(Q[I+m])}G.push(J);G.push(P);for(m=2;m<F;++m){G.push(Q[I+m])}}G.push(O);G.push(N)}M.points=newpoints;H.datapoints.points=threspoints;if(H.datapoints.points.length>0){L.getData().push(H)}}D.hooks.processDatapoints.push(E)}B.plot.plugins.push({init:C,options:A,name:"threshold",version:"1.0"})})(jQuery); |
/*! jQuery v1.6.4 http://jquery.com/ | http://jquery.org/license */ | |
(function(a,b){function cu(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cr(a){if(!cg[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ch||(ch=c.createElement("iframe"),ch.frameBorder=ch.width=ch.height=0),b.appendChild(ch);if(!ci||!ch.createElement)ci=(ch.contentWindow||ch.contentDocument).document,ci.write((c.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>"),ci.close();d=ci.createElement(a),ci.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ch)}cg[a]=e}return cg[a]}function cq(a,b){var c={};f.each(cm.concat.apply([],cm.slice(0,b)),function(){c[this]=a});return c}function cp(){cn=b}function co(){setTimeout(cp,0);return cn=f.now()}function cf(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ce(){try{return new a.XMLHttpRequest}catch(b){}}function b$(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function bZ(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function bY(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bA.test(a)?d(a,e):bY(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)bY(a+"["+e+"]",b[e],c,d);else d(a,b)}function bX(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function bW(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bP,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bW(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bW(a,c,d,e,"*",g));return l}function bV(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bL),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function by(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?bt:bu;if(d>0){c!=="border"&&f.each(e,function(){c||(d-=parseFloat(f.css(a,"padding"+this))||0),c==="margin"?d+=parseFloat(f.css(a,c+this))||0:d-=parseFloat(f.css(a,"border"+this+"Width"))||0});return d+"px"}d=bv(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0,c&&f.each(e,function(){d+=parseFloat(f.css(a,"padding"+this))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+this+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+this))||0)});return d+"px"}function bl(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bd,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bk(a){f.nodeName(a,"input")?bj(a):"getElementsByTagName"in a&&f.grep(a.getElementsByTagName("input"),bj)}function bj(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bi(a){return"getElementsByTagName"in a?a.getElementsByTagName("*"):"querySelectorAll"in a?a.querySelectorAll("*"):[]}function bh(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bg(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c=f.expando,d=f.data(a),e=f.data(b,d);if(d=d[c]){var g=d.events;e=e[c]=f.extend({},d);if(g){delete e.handle,e.events={};for(var h in g)for(var i=0,j=g[h].length;i<j;i++)f.event.add(b,h+(g[h][i].namespace?".":"")+g[h][i].namespace,g[h][i],g[h][i].data)}}}}function bf(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function V(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(Q.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function U(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function M(a,b){return(a&&a!=="*"?a+".":"")+b.replace(y,"`").replace(z,"&")}function L(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;i<s.length;i++)g=s[i],g.origType.replace(w,"")===a.type?q.push(g.selector):s.splice(i--,1);e=f(a.target).closest(q,a.currentTarget);for(j=0,k=e.length;j<k;j++){m=e[j];for(i=0;i<s.length;i++){g=s[i];if(m.selector===g.selector&&(!n||n.test(g.namespace))&&!m.elem.disabled){h=m.elem,d=null;if(g.preType==="mouseenter"||g.preType==="mouseleave")a.type=g.preType,d=f(a.relatedTarget).closest(g.selector)[0],d&&f.contains(h,d)&&(d=h);(!d||d!==h)&&p.push({elem:h,handleObj:g,level:m.level})}}}for(j=0,k=p.length;j<k;j++){e=p[j];if(c&&e.level>c)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function J(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function D(){return!0}function C(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(j,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function K(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(K,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=/-([a-z]|[0-9])/ig,x=/^-ms-/,y=function(a,b){return(b+"").toUpperCase()},z=d.userAgent,A,B,C,D=Object.prototype.toString,E=Object.prototype.hasOwnProperty,F=Array.prototype.push,G=Array.prototype.slice,H=String.prototype.trim,I=Array.prototype.indexOf,J={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6.4",length:0,size:function(){return this.length},toArray:function(){return G.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?F.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),B.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(G.apply(this,arguments),"slice",G.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:F,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;B.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!B){B=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",C,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",C),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&K()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):J[D.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!E.call(a,"constructor")&&!E.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||E.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(x,"ms-").replace(w,y)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:H?function(a){return a==null?"":H.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?F.call(c,a):e.merge(c,a)}return c},inArray:function(a,b){if(!b)return-1;if(I)return I.call(b,a);for(var c=0,d=b.length;c<d;c++)if(b[c]===a)return c;return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=G.call(arguments,2),g=function(){return a.apply(c,f.concat(G.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=s.exec(a)||t.exec(a)||u.exec(a)||a.indexOf("compatible")<0&&v.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){J["[object "+b+"]"]=b.toLowerCase()}),A=e.uaMatch(z),A.browser&&(e.browser[A.browser]=!0,e.browser.version=A.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?C=function(){c.removeEventListener("DOMContentLoaded",C,!1),e.ready()}:c.attachEvent&&(C=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",C),e.ready())});return e}(),g="done fail isResolved isRejected promise then always pipe".split(" "),h=[].slice;f.extend({_Deferred:function(){var a=[],b,c,d,e={done:function(){if(!d){var c=arguments,g,h,i,j,k;b&&(k=b,b=0);for(g=0,h=c.length;g<h;g++)i=c[g],j=f.type(i),j==="array"?e.done.apply(e,i):j==="function"&&a.push(i);k&&e.resolveWith(k[0],k[1])}return this},resolveWith:function(e,f){if(!d&&!b&&!c){f=f||[],c=1;try{while(a[0])a.shift().apply(e,f)}finally{b=[e,f],c=0}}return this},resolve:function(){e.resolveWith(this,arguments);return this},isResolved:function(){return!!c||!!b},cancel:function(){d=1,a=[];return this}};return e},Deferred:function(a){var b=f._Deferred(),c=f._Deferred(),d;f.extend(b,{then:function(a,c){b.done(a).fail(c);return this},always:function(){return b.done.apply(b,arguments).fail.apply(this,arguments)},fail:c.done,rejectWith:c.resolveWith,reject:c.resolve,isRejected:c.isResolved,pipe:function(a,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[c,"reject"]},function(a,c){var e=c[0],g=c[1],h;f.isFunction(e)?b[a](function(){h=e.apply(this,arguments),h&&f.isFunction(h.promise)?h.promise().then(d.resolve,d.reject):d[g+"With"](this===b?d:this,[h])}):b[a](d[g])})}).promise()},promise:function(a){if(a==null){if(d)return d;d=a={}}var c=g.length;while(c--)a[g[c]]=b[g[c]];return a}}),b.done(c.cancel).fail(b.cancel),delete b.cancel,a&&a.call(b,b);return b},when:function(a){function i(a){return function(c){b[a]=arguments.length>1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;c<d;c++)b[c]&&f.isFunction(b[c].promise)?b[c].promise().then(i(c),g.reject):--e;e||g.resolveWith(g,b)}else g!==a&&g.resolveWith(g,d?[a]:[]);return g.promise()}}),f.support=function(){var a=c.createElement("div"),b=c.documentElement,d,e,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;a.setAttribute("className","t"),a.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=a.getElementsByTagName("input")[0],k={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,k.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,k.optDisabled=!h.disabled;try{delete a.test}catch(v){k.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function(){k.noCloneEvent=!1}),a.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),k.radioValue=i.value==="t",i.setAttribute("checked","checked"),a.appendChild(i),l=c.createDocumentFragment(),l.appendChild(a.firstChild),k.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",m=c.getElementsByTagName("body")[0],o=c.createElement(m?"div":"body"),p={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},m&&f.extend(p,{position:"absolute",left:"-1000px",top:"-1000px"});for(t in p)o.style[t]=p[t];o.appendChild(a),n=m||b,n.insertBefore(o,n.firstChild),k.appendChecked=i.checked,k.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,k.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="<div style='width:4px;'></div>",k.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",q=a.getElementsByTagName("td"),u=q[0].offsetHeight===0,q[0].style.display="",q[1].style.display="none",k.reliableHiddenOffsets=u&&q[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",a.appendChild(j),k.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0),o.innerHTML="",n.removeChild(o);if(a.attachEvent)for(t in{submit:1,change:1,focusin:1})s="on"+t,u=s in a,u||(a.setAttribute(s,"return;"),u=typeof a[s]=="function"),k[t+"Bubbles"]=u;o=l=g=h=m=j=a=i=null;return k}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i=f.expando,j=typeof c=="string",k=a.nodeType,l=k?f.cache:a,m=k?a[f.expando]:a[f.expando]&&f.expando;if((!m||e&&m&&l[m]&&!l[m][i])&&j&&d===b)return;m||(k?a[f.expando]=m=++f.uuid:m=f.expando),l[m]||(l[m]={},k||(l[m].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?l[m][i]=f.extend(l[m][i],c):l[m]=f.extend(l[m],c);g=l[m],e&&(g[i]||(g[i]={}),g=g[i]),d!==b&&(g[f.camelCase(c)]=d);if(c==="events"&&!g[c])return g[i]&&g[i].events;j?(h=g[c],h==null&&(h=g[f.camelCase(c)])):h=g;return h}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e=f.expando,g=a.nodeType,h=g?f.cache:a,i=g?a[f.expando]:f.expando;if(!h[i])return;if(b){d=c?h[i][e]:h[i];if(d){d[b]||(b=f.camelCase(b)),delete d[b];if(!l(d))return}}if(c){delete h[i][e];if(!l(h[i]))return}var j=h[i][e];f.support.deleteExpando||!h.setInterval?delete h[i]:h[i]=null,j?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=j):g&&(f.support.deleteExpando?delete a[f.expando]:a.removeAttribute?a.removeAttribute(f.expando):a[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h<i;h++)g=e[h].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),k(this[0],g,d[g]))}}return d}if(typeof a=="object")return this.each(function(){f.data(this,a)});var j=a.split(".");j[1]=j[1]?"."+j[1]:"";if(c===b){d=this.triggerHandler("getData"+j[1]+"!",[j[0]]),d===b&&this.length&&(d=f.data(this[0],a),d=k(this[0],a,d));return d===b&&j[1]?this.data(j[0]):d}return this.each(function(){var b=f(this),d=[j[0],c];b.triggerHandler("setData"+j[1]+"!",d),f.data(this,a,c),b.triggerHandler("changeData"+j[1]+"!",d)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,c){a&&(c=(c||"fx")+"mark",f.data(a,c,(f.data(a,c,b,!0)||0)+1,!0))},_unmark:function(a,c,d){a!==!0&&(d=c,c=a,a=!1);if(c){d=d||"fx";var e=d+"mark",g=a?0:(f.data(c,e,b,!0)||1)-1;g?f.data(c,e,g,!0):(f.removeData(c,e,!0),m(c,d,"mark"))}},queue:function(a,c,d){if(a){c=(c||"fx")+"queue";var e=f.data(a,c,b,!0);d&&(!e||f.isArray(d)?e=f.data(a,c,f.makeArray(d),!0):e.push(d));return e||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e;d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),d.call(a,function(){f.dequeue(a,b)})),c.length||(f.removeData(a,b+"queue",!0),m(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(){var c=this;setTimeout(function(){f.dequeue(c,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f._Deferred(),!0))h++,l.done(m);m();return d.promise()}});var n=/[\n\t\r]/g,o=/\s+/,p=/\r/g,q=/^(?:button|input)$/i,r=/^(?:button|input|object|select|textarea)$/i,s=/^a(?:rea)?$/i,t=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,u,v;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(o);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(o);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(n," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(o);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ";for(var c=0,d=this.length;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(n," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;d=e.value;return typeof d=="string"?d.replace(p,""):d==null?"":d}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c=a.selectedIndex,d=[],e=a.options,g=a.type==="select-one";if(c<0)return null;for(var h=g?c:0,i=g?c+1:e.length;h<i;h++){var j=e[h];if(j.selected&&(f.support.optDisabled?!j.disabled:j.getAttribute("disabled")===null)&&(!j.parentNode.disabled||!f.nodeName(j.parentNode,"optgroup"))){b=f(j).val();if(g)return b;d.push(b)}}if(g&&!d.length&&e.length)return f(e[c]).val();return d},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);var h,i,j=g!==1||!f.isXMLDoc(a);j&&(c=f.attrFix[c]||c,i=f.attrHooks[c],i||(t.test(c)?i=v:u&&(i=u)));if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j&&(h=i.get(a,c))!==null)return h;h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){var c;a.nodeType===1&&(b=f.attrFix[b]||b,f.attr(a,b,""),a.removeAttribute(b),t.test(b)&&(c=f.propFix[b]||b)in a&&(a[c]=!1))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(u&&f.nodeName(a,"button"))return u.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(u&&f.nodeName(a,"button"))return u.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);i&&(c=f.propFix[c]||c,h=f.propHooks[c]);return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==null?g:a[c]},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabIndex=f.propHooks.tabIndex,v={get:function(a,c){var d;return f.prop(a,c)===!0||(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},f.support.getSetAttribute||(u=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&d.nodeValue!==""?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var w=/\.(.*)$/,x=/^(?:textarea|input|select)$/i,y=/\./g,z=/ /g,A=/[^\w\s.|`]/g,B=function(a){return a.replace(A,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=C;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=C);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),B).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j<p.length;j++){q=p[j];if(l||n.test(q.namespace))f.event.remove(a,r,q.handler,j),p.splice(j--,1)}continue}o=f.event.special[h]||{};for(j=e||0;j<p.length;j++){q=p[j];if(d.guid===q.guid){if(l||n.test(q.namespace))e==null&&p.splice(j--,1),o.remove&&o.remove.call(a,q);if(e!=null)break}}if(p.length===0||e!=null&&p.length===1)(!o.teardo |