shared_writable_dirs: | |
- /labs/tiles | |
- /lib/staticmaplite/cache | |
php_extensions: [pgsql, pdo, pdo_pgsql, curl] | |
/labs/tiles/12 | |
/labs/tiles/13 | |
/labs/tiles/14 | |
/labs/tiles/15 | |
/labs/tiles/16 | |
/labs/tiles/17 | |
/labs/tiles/19 | |
/nbproject/private/ |
<?php | <?php |
/* | |
* Copyright 2010,2011 Alexander Sadleir | |
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. | |
*/ | |
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://s3-ap-southeast-1.amazonaws.com/busresources/cbrfeed.zip">download</a>, |
last updated <?php | last updated <?php echo date("F d Y.", @filemtime('cbrfeed.zip')); ?>)<br /> |
echo date("F d Y.", @filemtime('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 /> |
<br /> | Street geocoding based on work by OpenStreetMap contributors<br> |
Feedback encouraged; contact maxious@lambdacomplex.org<br /> | |
<br /> | <br /> |
Some icons by Joseph Wain / glyphish.com<br /> | Feedback encouraged; contact maxious@lambdacomplex.org<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. | Some icons by Joseph Wain / glyphish.com<br /> |
Whilst every effort has been made to ensure the high quality and accuracy of the Site, the Author makes no warranty, | Native clients also available for iPhone(<a href="http://itunes.apple.com/au/app/cbrtimetable/id444287349?mt=8">cbrTimetable by Sandor Kolotenko</a> |
express or implied concerning the topicality, correctness, completeness or quality of the information, which is provided | , <a href="http://itunes.apple.com/au/app/act-buses/id376634797?mt=8">ACT Buses by David Sullivan</a>) |
"as is". The Author expressly disclaims all warranties, including but not limited to warranties of fitness for a particular purpose and warranties of merchantability. | and Android (<a href="https://market.android.com/details?id=com.action">MyBus 2.0 by Imagine Team</a>) |
All offers are not binding and without obligation. The Author expressly reserves the right, in his discretion, to suspend, | <br /> |
change, modify, add or remove portions of the Site and to restrict or terminate the use and accessibility of the Site | GTFS-realtime API: |
without prior notice. </small> | Alerts and Trip Updates (but only Cancelled or Stop Skipped) |
<?php | Default format binary Protocol Buffer but can get JSON by adding ?ascii=yes |
include_footer(); | <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. | |
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 | |
"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, | |
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> | |
<?php | |
include_footer(); | |
?> | |
#!/bin/bash | #!/bin/bash |
#this script should be run from a fresh git checkout from github | #this script should be run from a fresh git checkout from github |
#ami base must have yum install lighttpd-fastcgi, git, tomcat6 | #ami base must have yum install lighttpd-fastcgi, git, tomcat6 |
#php-cli php-gd tomcat6-webapps tomcat6-admin-webapps svn maven2 | #php-cli php-gd tomcat6-webapps tomcat6-admin-webapps svn maven2 |
#postgres postgres-server php-pg | #postgres postgres-server php-pg |
#http://www.how2forge.org/installing-lighttpd-with-php5-and-mysql-support-on-fedora-12 | #http://www.how2forge.org/installing-lighttpd-with-php5-and-mysql-support-on-fedora-12 |
cp /root/aws.php /tmp/ | sh busuiphp.sh |
mkdir /var/www/lib/staticmaplite/cache | sh busuidb.sh |
chcon -h system_u:object_r:httpd_sys_content_t /var/www | sh busuiotp.sh |
chcon -R -h root:object_r:httpd_sys_content_t /var/www/* | |
chcon -R -t httpd_sys_content_rw_t /var/www/lib/staticmaplite/cache | |
chmod -R 777 /var/www/lib/staticmaplite/cache | |
chcon -R -t httpd_sys_content_rw_t /var/www/labs/tiles | |
chmod -R 777 /var/www/labs/tiles | |
wget http://s3-ap-southeast-1.amazonaws.com/busresources/cbrfeed.zip \ | |
-O /var/www/cbrfeed.zip | |
createdb transitdata | |
createlang -d transitdata plpgsql | |
psql -d transitdata -f /var/www/lib/postgis.sql | |
# curl https://github.com/maxious/ACTBus-ui/raw/master/transitdata.cbrfeed.sql.gz -o transitdata.cbrfeed.sql.gz | |
#made with pg_dump transitdata | gzip -c > transitdata.cbrfeed.sql.gz | |
gunzip /var/www/transitdata.cbrfeed.sql.gz | |
psql -d transitdata -f /var/www/transitdata.cbrfeed.sql | |
#createuser transitdata -SDRP | |
#password transitdata | |
#psql -d transitdata -c \"GRANT SELECT ON TABLE agency,calendar,calendar_dates,routes,stop_times,stops,trips TO transitdata;\" | |
php /var/www/updatedb.php | |
wget http://s3-ap-southeast-1.amazonaws.com/busresources/Graph.obj \ | |
-O /tmp/Graph.obj | |
rm -rfv /usr/share/tomcat6/webapps/opentripplanner* | |
wget http://s3-ap-southeast-1.amazonaws.com/busresources/opentripplanner-webapp.war \ | |
-O /usr/share/tomcat6/webapps/opentripplanner-webapp.war | |
wget http://s3-ap-southeast-1.amazonaws.com/busresources/opentripplanner-api-webapp.war \ | |
-O /usr/share/tomcat6/webapps/opentripplanner-api-webapp.war | |
/etc/init.d/tomcat6 restart | |
createdb transitdata | |
createlang -d transitdata plpgsql | |
psql -d transitdata -f /var/www/lib/postgis.sql | |
# curl https://github.com/maxious/ACTBus-ui/raw/master/transitdata.cbrfeed.sql.gz -o transitdata.cbrfeed.sql.gz | |
#made with pg_dump transitdata | gzip -c > transitdata.cbrfeed.sql.gz | |
gunzip /var/www/transitdata.cbrfeed.sql.gz | |
psql -d transitdata -f /var/www/transitdata.cbrfeed.sql | |
#createuser transitdata -SDRP | |
#password transitdata | |
#psql -d transitdata -c "GRANT SELECT ON TABLE agency,calendar,calendar_dates,routes,stop_times,stops,trips TO transitdata;" | |
#psql -d transitdata -c "GRANT SELECT,INSERT ON TABLE myway_observations,myway_routes,myway_stops,myway_timingdeltas TO transitdata;" | |
#psql -d transitdata -c "GRANT SELECT,INSERT,UPDATE ON TABLE myway_routes,myway_stops TO transitdata;" | |
##psql -d transitdata -c "GRANT SELECT ON ALL TABLES IN SCHEMA public TO transitdata;" | |
php /var/www/updatedb.php |
wget http://s3-ap-southeast-1.amazonaws.com/busresources/Graph.obj \ | |
-O /tmp/Graph.obj | |
/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 | |
<?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> | |
-- | |
-- PostgreSQL database dump | |
-- | |
-- Dumped from database version 9.0.4 | |
-- Dumped by pg_dump version 9.0.4 | |
-- Started on 2011-10-10 16:28:13 | |
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 2766 (class 1262 OID 18349) | |
-- Name: transitdata; Type: DATABASE; Schema: -; Owner: postgres | |
-- | |
CREATE DATABASE transitdata WITH TEMPLATE = template0 ENCODING = 'UTF8' LC_COLLATE = 'English_Australia.1252' LC_CTYPE = 'English_Australia.1252'; | |
ALTER DATABASE transitdata OWNER TO postgres; | |
\connect transitdata | |
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 1167 (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: 19 6 15 | |
-- 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: 20 6 21 | |
-- 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 22 23 | |
-- 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: 30 29 26 6 27 28 | |
-- 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: 6 31 35 34 33 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 2407 | |
-- 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 6 36 | |
-- 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: 39 38 6 | |
-- 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: 1102 6 | |
-- 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: 6 1102 | |
-- 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: 6 1099 | |
-- 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: 1099 6 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: 1102 6 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: 1102 6 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: 1102 6 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 6 1102 | |
-- 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 1099 6 | |
-- 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: 1102 6 1167 1105 | |
-- 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: 6 1099 1099 | |
-- 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: 1102 6 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: 1102 6 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: 1102 6 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: 1099 6 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: 1102 1102 6 | |
-- 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: 1167 6 | |
-- 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: 1102 6 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: 1167 6 | |
-- 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 1167 | |
-- 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 1167 | |
-- 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: 1102 6 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: 1102 1102 1102 6 | |
-- 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 1102 6 | |
-- 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: 6 1102 1102 | |
-- 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: 6 1102 | |
-- 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: 6 1102 | |
-- 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: 1102 6 | |
-- 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: 1102 6 | |
-- 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: 6 1102 | |
-- 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: 6 1102 | |
-- 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: 6 1102 | |
-- 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: 6 1102 | |
-- 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: 1102 6 | |
-- 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: 1102 1102 6 | |
-- 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 1167 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 1102 1167 | |
-- 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: 1102 1102 6 | |
-- 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: 1102 6 | |
-- 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: 1090 6 | |
-- 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 1093 1087 | |
-- 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: 1087 6 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 1102 1090 | |
-- 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: 1087 1090 6 | |
-- 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: 1093 1090 6 | |
-- 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: 1090 6 | |
-- 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: 1102 6 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: 1102 6 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: 1102 6 | |
-- 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: 1167 6 | |
-- 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: 1087 6 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: 1102 1102 6 | |
-- 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: 1096 6 | |
-- 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: 1102 1102 1102 6 | |
-- 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: 1102 6 | |
-- 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: 1167 6 | |
-- 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: 1102 6 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: 1102 1102 6 | |
-- 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: 1102 6 1113 1102 | |
-- 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: 1102 1102 6 | |
-- 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: 1167 6 | |
-- 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: 1167 6 | |
-- 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: 1167 6 | |
-- 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 1167 | |
-- 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: 1102 6 1105 | |
-- 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: 1167 6 | |
-- 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: 1102 6 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: 1102 1102 6 | |
-- 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: 1087 6 | |
-- 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: 1087 6 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: 1102 6 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: 1096 6 | |
-- 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: 1087 1167 6 | |
-- 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: 1087 1167 6 | |
-- 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 1167 | |
-- 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 1167 | |
-- 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: 1102 6 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: 1102 6 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: 1102 6 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: 1102 1102 6 | |
-- 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: 1102 6 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: 1102 6 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 1102 1099 | |
-- 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: 1099 1099 6 | |
-- 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: 1099 6 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: 1087 6 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: 6 1102 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 1167 | |
-- 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: 6 1102 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: 6 1102 | |
-- 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: 6 1102 1102 | |
-- 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: 1167 6 | |
-- 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: 1167 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: 1102 6 | |
-- 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: 1087 6 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: 1102 6 | |
-- 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: 1087 6 1102 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: 1102 6 1102 1090 | |
-- 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: 1102 6 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: 1102 6 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: 6 1104 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: 6 1102 1102 | |
-- 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: 1102 6 | |
-- 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: 1102 6 | |
-- 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: 1102 6 | |
-- 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: 6 1102 | |
-- 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: 1102 6 | |
-- 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: 1102 6 | |
-- 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: 1102 6 | |
-- 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: 6 1102 | |
-- 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: 6 1102 | |
-- 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 1102 6 | |
-- 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: 6 1102 | |
-- 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: 6 1102 | |
-- 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: 1102 6 | |
-- 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: 6 1102 | |
-- 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: 1102 1102 6 | |
-- 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: 6 1102 | |
-- 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: 1102 6 | |
-- 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: 1110 6 1102 | |
-- 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: 6 1102 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: 1102 6 1110 | |
-- 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: 6 1102 | |
-- 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: 1102 6 | |
-- 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: 6 1102 | |
-- 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: 6 1102 | |
-- 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: 6 1102 | |
-- 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 1167 | |
-- 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 1167 | |
-- 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 1167 | |
-- 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 1167 | |
-- 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: 1102 6 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 1167 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 1167 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: 1090 1090 6 | |
-- 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: 1096 6 | |
-- 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: 1167 1087 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: 1167 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 6 1102 | |
-- 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: 1102 1102 6 | |
-- 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: 6 1102 1102 | |
-- 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: 6 1099 | |
-- 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: 1099 6 | |
-- 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: 1102 6 | |
-- 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: 1102 6 | |
-- 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 1102 6 | |
-- 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: 1102 6 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: 6 1096 1102 | |
-- 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: 1102 6 1093 | |
-- 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: 6 1102 1102 | |
-- 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: 1102 6 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: 1102 1102 6 | |
-- 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 1102 6 | |
-- 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: 1102 6 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: 1102 6 | |
-- 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: 6 1102 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 6 1102 | |
-- 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: 1102 6 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: 1102 6 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: 1102 6 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: 6 1102 | |
-- 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: 6 1102 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: 6 1102 | |
-- 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: 6 1102 | |
-- 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: 6 1102 | |
-- 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: 1102 6 | |
-- 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: 1102 6 | |
-- 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: 6 1102 | |
-- 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: 6 1102 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: 1102 6 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: 6 1102 | |
-- 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 1167 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: 6 1102 | |
-- 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: 1102 6 | |
-- 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: 6 1102 | |
-- 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: 6 1102 | |
-- 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: 6 1102 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: 6 1104 1102 | |
-- 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 1102 6 | |
-- 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: 6 1102 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: 6 1102 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: 6 1102 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 1102 6 | |
-- 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 1102 6 | |
-- 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 1102 6 | |
-- 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 6 1102 | |
-- 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: 1096 1096 6 | |
-- 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 6 1102 1102 | |
-- 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 1102 6 | |
-- 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: 1102 1102 6 | |
-- 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: 1102 6 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: 6 1102 1102 1102 | |
-- 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: 1113 6 | |
-- 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: 1102 6 | |
-- 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 6 1102 1102 | |
-- 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 6 1102 1102 | |
-- 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: 1102 6 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: 6 1102 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: 1102 1102 6 | |
-- 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: 1102 6 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: 6 1104 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: 1096 6 | |
-- 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 6 1102 | |
-- 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: 6 1102 | |
-- 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: 1090 6 | |
-- 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: 6 1102 | |
-- 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: 6 1090 | |
-- 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: 6 1102 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: 1102 6 | |
-- 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: 6 1102 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 1102 6 | |
-- 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: 1102 6 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: 1102 6 1104 | |
-- 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: 1167 6 | |
-- 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: 1167 6 | |
-- 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 1167 | |
-- 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: 1167 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: 1096 6 | |
-- 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 6 1102 | |
-- 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: 1102 6 | |
-- 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: 1102 6 | |
-- 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: 6 1090 | |
-- 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: 1102 6 | |
-- 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 1172 (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 1173 (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 1174 (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 1175 (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 1176 (class 1255 OID 19161) | |
-- Dependencies: 1102 1102 330 6 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 1177 (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 1178 (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 1179 (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 1180 (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 1181 (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 1182 (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 1168 (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 1169 (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 1170 (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 1171 (class 1255 OID 19171) | |
-- Dependencies: 756 1102 6 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 1183 (class 1255 OID 19172) | |
-- Dependencies: 6 1102 330 1102 333 | |
-- 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 1184 (class 1255 OID 19173) | |
-- Dependencies: 6 330 334 1102 1102 | |
-- 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 1890 (class 2617 OID 19174) | |
-- Dependencies: 208 207 6 1102 1102 215 | |
-- 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 1891 (class 2617 OID 19175) | |
-- Dependencies: 180 185 1099 1099 6 176 | |
-- 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 1892 (class 2617 OID 19177) | |
-- Dependencies: 216 6 1102 1102 | |
-- 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 1893 (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 1894 (class 2617 OID 19176) | |
-- Dependencies: 1102 1102 217 6 | |
-- 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 1895 (class 2617 OID 19182) | |
-- Dependencies: 6 1102 212 1102 | |
-- 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 1898 (class 2617 OID 19185) | |
-- Dependencies: 184 1099 6 1099 | |
-- 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 1899 (class 2617 OID 19187) | |
-- Dependencies: 1102 6 211 1102 | |
-- 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 1900 (class 2617 OID 19189) | |
-- Dependencies: 201 1102 6 1102 | |
-- 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 1901 (class 2617 OID 19190) | |
-- Dependencies: 1102 210 6 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 1902 (class 2617 OID 19191) | |
-- Dependencies: 1099 6 183 1099 | |
-- 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 1903 (class 2617 OID 19192) | |
-- Dependencies: 205 1102 6 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 1904 (class 2617 OID 19193) | |
-- Dependencies: 1099 6 171 1099 | |
-- 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 1896 (class 2617 OID 19180) | |
-- Dependencies: 1102 6 1102 209 | |
-- 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 1905 (class 2617 OID 19183) | |
-- Dependencies: 1099 6 182 1099 | |
-- 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 1906 (class 2617 OID 19181) | |
-- Dependencies: 1102 1102 6 206 | |
-- 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 1907 (class 2617 OID 19184) | |
-- Dependencies: 1099 172 1099 6 | |
-- 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 1908 (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 1909 (class 2617 OID 19195) | |
-- Dependencies: 1102 6 1102 204 | |
-- 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 1897 (class 2617 OID 19178) | |
-- Dependencies: 1102 6 213 1102 | |
-- 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 1910 (class 2617 OID 19188) | |
-- Dependencies: 1102 6 1102 200 | |
-- 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 1911 (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 1912 (class 2617 OID 19196) | |
-- Dependencies: 1102 220 1102 6 | |
-- 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 2025 (class 2616 OID 19198) | |
-- Dependencies: 1099 2136 6 | |
-- 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 2026 (class 2616 OID 19206) | |
-- Dependencies: 6 1102 2137 | |
-- 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 2027 (class 2616 OID 19214) | |
-- Dependencies: 2138 6 1099 1107 | |
-- 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 2028 (class 2616 OID 19224) | |
-- Dependencies: 6 1087 1102 2139 | |
-- 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 1090 1087 110 | |
-- 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 1087 1102 194 | |
-- 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 105 1090 | |
-- 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 195 1102 1090 | |
-- 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 1087 1093 106 | |
-- 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 1090 1093 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 1102 193 1093 | |
-- 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 198 1102 | |
-- 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 1102 197 1096 | |
-- 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 104 1102 | |
-- 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 107 1102 1087 | |
-- 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 777 1102 | |
-- 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 2427 (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 2408 (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 2409 (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 2410 (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 2411 (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 2412 (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 2413 (class 1259 OID 19298) | |
-- Dependencies: 6 | |
-- Name: myway_routes; Type: TABLE; Schema: public; Owner: postgres; Tablespace: | |
-- | |
CREATE TABLE myway_routes ( | |
myway_route text NOT NULL, | |
route_full_name text | |
); | |
ALTER TABLE public.myway_routes OWNER TO postgres; | |
-- | |
-- TOC entry 2414 (class 1259 OID 19304) | |
-- Dependencies: 2413 6 | |
-- Name: myway_routes_myway_route_seq; Type: SEQUENCE; Schema: public; Owner: postgres | |
-- | |
CREATE SEQUENCE myway_routes_myway_route_seq | |
START WITH 1 | |
INCREMENT BY 1 | |
NO MINVALUE | |
NO MAXVALUE | |
CACHE 1; | |
ALTER TABLE public.myway_routes_myway_route_seq OWNER TO postgres; | |
-- | |
-- TOC entry 2769 (class 0 OID 0) | |
-- Dependencies: 2414 | |
-- Name: myway_routes_myway_route_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres | |
-- | |
ALTER SEQUENCE myway_routes_myway_route_seq OWNED BY myway_routes.myway_route; | |
-- | |
-- TOC entry 2415 (class 1259 OID 19306) | |
-- Dependencies: 2413 6 | |
-- Name: myway_routes_route_full_name_seq; Type: SEQUENCE; Schema: public; Owner: postgres | |
-- | |
CREATE SEQUENCE myway_routes_route_full_name_seq | |
START WITH 1 | |
INCREMENT BY 1 | |
NO MINVALUE | |
NO MAXVALUE | |
CACHE 1; | |
ALTER TABLE public.myway_routes_route_full_name_seq OWNER TO postgres; | |
-- | |
-- TOC entry 2770 (class 0 OID 0) | |
-- Dependencies: 2415 | |
-- Name: myway_routes_route_full_name_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres | |
-- | |
ALTER SEQUENCE myway_routes_route_full_name_seq OWNED BY myway_routes.route_full_name; | |
-- | |
-- TOC entry 2416 (class 1259 OID 19314) | |
-- Dependencies: 6 | |
-- Name: myway_timingdeltas; Type: TABLE; Schema: public; Owner: postgres; Tablespace: | |
-- | |
CREATE TABLE myway_timingdeltas ( | |
observation_id text NOT NULL, | |
route_full_name text, | |
stop_code text, | |
timing_delta integer, | |
"time" time with time zone, | |
date date, | |
timing_period text, | |
stop_sequence integer | |
); | |
ALTER TABLE public.myway_timingdeltas OWNER TO postgres; | |
-- | |
-- TOC entry 2417 (class 1259 OID 19320) | |
-- Dependencies: 6 2416 | |
-- 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: 2417 | |
-- 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 2424 (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 2418 (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 | |
); | |
ALTER TABLE public.servicealerts_alerts OWNER TO postgres; | |
-- | |
-- TOC entry 2419 (class 1259 OID 19334) | |
-- Dependencies: 6 2418 | |
-- 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: 2419 | |
-- 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 2420 (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 2421 (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 | |
); | |
ALTER TABLE public.shapes OWNER TO postgres; | |
-- | |
-- TOC entry 2422 (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 2423 (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 2425 (class 1259 OID 40452) | |
-- Dependencies: 1099 6 | |
-- 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 2426 (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: 2419 2418 | |
-- 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 2762 (class 2606 OID 40488) | |
-- Dependencies: 2427 2427 | |
-- 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: 2409 2409 2409 | |
-- 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: 2408 2408 | |
-- 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: 2411 2411 2411 2411 2411 | |
-- 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: 2412 2412 | |
-- 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 2735 (class 2606 OID 19384) | |
-- Dependencies: 2413 2413 | |
-- 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 2737 (class 2606 OID 19386) | |
-- Dependencies: 2416 2416 | |
-- 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 2753 (class 2606 OID 40450) | |
-- Dependencies: 2424 2424 | |
-- Name: routes_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres; Tablespace: | |
-- | |
ALTER TABLE ONLY routes | |
ADD CONSTRAINT routes_pkey PRIMARY KEY (route_id); | |
-- | |
-- TOC entry 2739 (class 2606 OID 19392) | |
-- Dependencies: 2418 2418 | |
-- 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 2741 (class 2606 OID 19394) | |
-- Dependencies: 2420 2420 2420 2420 | |
-- 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 2743 (class 2606 OID 19396) | |
-- Dependencies: 2421 2421 2421 | |
-- 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 2745 (class 2606 OID 19398) | |
-- Dependencies: 2422 2422 | |
-- 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 2748 (class 2606 OID 40421) | |
-- Dependencies: 2423 2423 2423 | |
-- 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 2755 (class 2606 OID 40459) | |
-- Dependencies: 2425 2425 | |
-- Name: stops_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres; Tablespace: | |
-- | |
ALTER TABLE ONLY stops | |
ADD CONSTRAINT stops_pkey PRIMARY KEY (stop_id); | |
-- | |
-- TOC entry 2757 (class 2606 OID 40461) | |
-- Dependencies: 2425 2425 | |
-- 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 2760 (class 2606 OID 40473) | |
-- Dependencies: 2426 2426 | |
-- Name: trips_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres; Tablespace: | |
-- | |
ALTER TABLE ONLY trips | |
ADD CONSTRAINT trips_pkey PRIMARY KEY (trip_id); | |
-- | |
-- TOC entry 2751 (class 1259 OID 40451) | |
-- Dependencies: 2424 | |
-- Name: routenumber; Type: INDEX; Schema: public; Owner: postgres; Tablespace: | |
-- | |
CREATE INDEX routenumber ON routes USING btree (route_short_name); | |
-- | |
-- TOC entry 2758 (class 1259 OID 40474) | |
-- Dependencies: 2426 | |
-- Name: routetrips; Type: INDEX; Schema: public; Owner: postgres; Tablespace: | |
-- | |
CREATE INDEX routetrips ON trips USING btree (route_id); | |
-- | |
-- TOC entry 2746 (class 1259 OID 40418) | |
-- Dependencies: 2423 2423 2423 | |
-- 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 2749 (class 1259 OID 40406) | |
-- Dependencies: 2423 2423 | |
-- Name: stoptimes; Type: INDEX; Schema: public; Owner: postgres; Tablespace: | |
-- | |
CREATE INDEX stoptimes ON stop_times USING btree (arrival_time, stop_id); | |
-- | |
-- TOC entry 2750 (class 1259 OID 40419) | |
-- Dependencies: 2423 2423 | |
-- Name: triptimes; Type: INDEX; Schema: public; Owner: postgres; Tablespace: | |
-- | |
CREATE INDEX triptimes ON stop_times USING btree (trip_id, arrival_time); | |
-- | |
-- TOC entry 2763 (class 2606 OID 19412) | |
-- Dependencies: 2418 2420 2738 | |
-- 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 2768 (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-10 16:28:14 | |
-- | |
-- PostgreSQL database dump complete | |
-- | |
/*! | |
* jQuery Mobile v1.0b1 | |
* http://jquerymobile.com/ | |
* | |
* Copyright 2010, jQuery Project | |
* Dual licensed under the MIT or GPL Version 2 licenses. | |
* http://jquery.org/license | |
*/ | |
/* | |
* jQuery Mobile Framework | |
* Copyright (c) jQuery Project | |
* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses. | |
* Note: Code is in draft form and is subject to change | |
*/ | |
/* A | |
-----------------------------------------------------------------------------------------------------------*/ | |
.ui-bar-a { | |
border: 1px solid #2A2A2A; | |
background: #111111; | |
color: #ffffff; | |
font-weight: bold; | |
text-shadow: 0 -1px 1px #000000; | |
background-image: -moz-linear-gradient(top, | |
#3c3c3c, | |
#111111); | |
background-image: -webkit-gradient(linear,left top,left bottom, | |
color-stop(0, #3c3c3c), | |
color-stop(1, #111111)); | |
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr='#3c3c3c', EndColorStr='#111111')"; | |
} | |
.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-body-a { | |
border: 1px solid #2A2A2A; | |
background: #222222; | |
color: #fff; | |
text-shadow: 0 1px 0 #000; | |
font-weight: normal; | |
background-image: -moz-linear-gradient(top, | |
#666666, | |
#222222); | |
background-image: -webkit-gradient(linear,left top,left bottom, | |
color-stop(0, #666666), | |
color-stop(1, #222222)); | |
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr='#666666', EndColorStr='#222222)')"; | |
} | |
.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-br { | |
border-bottom: rgb(130,130,130); | |
border-bottom: rgba(130,130,130,.3); | |
border-bottom-width: 1px; | |
border-bottom-style: solid; | |
} | |
.ui-btn-up-a { | |
border: 1px solid #222; | |
background: #333333; | |
font-weight: bold; | |
color: #fff; | |
text-shadow: 0 -1px 1px #000; | |
background-image: -moz-linear-gradient(top, | |
#555555, | |
#333333); | |
background-image: -webkit-gradient(linear,left top,left bottom, | |
color-stop(0, #555555), | |
color-stop(1, #333333)); | |
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr='#555555', EndColorStr='#333333')"; | |
} | |
.ui-btn-up-a a.ui-link-inherit { | |
color: #fff; | |
} | |
.ui-btn-hover-a { | |
border: 1px solid #000; | |
background: #444444; | |
font-weight: bold; | |
color: #fff; | |
text-shadow: 0 -1px 1px #000; | |
background-image: -moz-linear-gradient(top, | |
#666666, | |
#444444); | |
background-image: -webkit-gradient(linear,left top,left bottom, | |
color-stop(0, #666666), | |
color-stop(1, #444444)); | |
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr='#666666', EndColorStr='#444444')"; | |
} | |
.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: -moz-linear-gradient(top, | |
#333333, | |
#5a5a5a); | |
background-image: -webkit-gradient(linear,left top,left bottom, | |
color-stop(0, #333333), | |
color-stop(1, #5a5a5a)); | |
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr='#333333', EndColorStr='#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; | |
} | |
/* B | |
-----------------------------------------------------------------------------------------------------------*/ | |
.ui-bar-b { | |
border: 1px solid #456f9a; | |
background: #5e87b0; | |
color: #fff; | |
font-weight: bold; | |
text-shadow: 0 -1px 1px #254f7a; | |
background-image: -moz-linear-gradient(top, | |
#81a8ce, | |
#5e87b0); | |
background-image: -webkit-gradient(linear,left top,left bottom, | |
color-stop(0, #81a8ce), | |
color-stop(1, #5e87b0)); | |
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr='#81a8ce', EndColorStr='#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: #7cc4e7; | |
font-weight: bold; | |
} | |
.ui-body-b { | |
border: 1px solid #C6C6C6; | |
background: #cccccc; | |
color: #333333; | |
text-shadow: 0 1px 0 #fff; | |
font-weight: normal; | |
background-image: -moz-linear-gradient(top, | |
#e6e6e6, | |
#cccccc); | |
background-image: -webkit-gradient(linear,left top,left bottom, | |
color-stop(0, #e6e6e6), | |
color-stop(1, #cccccc)); | |
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr='#e6e6e6', EndColorStr='#cccccc')"; | |
} | |
.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: #333333; | |
} | |
.ui-body-b .ui-link { | |
color: #2489CE; | |
font-weight: bold; | |
} | |
.ui-btn-up-b { | |
border: 1px solid #145072; | |
background: #2567ab; | |
font-weight: bold; | |
color: #fff; | |
text-shadow: 0 -1px 1px #145072; | |
background-image: -moz-linear-gradient(top, | |
#4e89c5, | |
#2567ab); | |
background-image: -webkit-gradient(linear,left top,left bottom, | |
color-stop(0, #5f9cc5), | |
color-stop(1, #396b9e)); | |
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr='#4e89c5', EndColorStr='#2567ab')"; | |
} | |
.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: -moz-linear-gradient(top, | |
#72b0d4, | |
#4b88b6); | |
background-image: -webkit-gradient(linear,left top,left bottom, | |
color-stop(0, #72b0d4), | |
color-stop(1, #4b88b6)); | |
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr='#72b0d4', EndColorStr='#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: -moz-linear-gradient(top, | |
#396b9e, | |
#4e89c5); | |
background-image: -webkit-gradient(linear,left top,left bottom, | |
color-stop(0, #396b9e), | |
color-stop(1, #4e89c5)); | |
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr='#396b9e', EndColorStr='#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; | |
} | |
/* C | |
-----------------------------------------------------------------------------------------------------------*/ | |
.ui-bar-c { | |
border: 1px solid #B3B3B3; | |
background: #e9eaeb; | |
color: #3E3E3E; | |
font-weight: bold; | |
text-shadow: 0 1px 1px #fff; | |
background-image: -moz-linear-gradient(top, | |
#f0f0f0, | |
#e9eaeb); | |
background-image: -webkit-gradient(linear,left top,left bottom, | |
color-stop(0, #f0f0f0), | |
color-stop(1, #e9eaeb)); | |
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr='#f0f0f0', EndColorStr='#e9eaeb')"; | |
} | |
.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 { | |
border: 1px solid #B3B3B3; | |
color: #333333; | |
text-shadow: 0 1px 0 #fff; | |
background: #f0f0f0; | |
background-image: -moz-linear-gradient(top, | |
#eeeeee, | |
#dddddd); | |
background-image: -webkit-gradient(linear,left top,left bottom, | |
color-stop(0, #eeeeee), | |
color-stop(1, #dddddd)); | |
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr='#eeeeee', EndColorStr='#dddddd')"; | |
} | |
.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: #333333; | |
} | |
.ui-body-c .ui-link { | |
color: #2489CE; | |
font-weight: bold; | |
} | |
.ui-btn-up-c { | |
border: 1px solid #ccc; | |
background: #eee; | |
font-weight: bold; | |
color: #444; | |
text-shadow: 0 1px 1px #f6f6f6; | |
background-image: -moz-linear-gradient(top, | |
#fefefe, | |
#eeeeee); | |
background-image: -webkit-gradient(linear,left top,left bottom, | |
color-stop(0, #fdfdfd), | |
color-stop(1, #eeeeee)); | |
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr='#fdfdfd', EndColorStr='#eeeeee')"; | |
} | |
.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: -moz-linear-gradient(top, | |
#ededed, | |
#dadada); | |
background-image: -webkit-gradient(linear,left top,left bottom, | |
color-stop(0, #ededed), | |
color-stop(1, #dadada)); | |
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr='#ededed', EndColorStr='#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: #111111; | |
text-shadow: 0 1px 1px #ffffff; | |
background-image: -moz-linear-gradient(top, | |
#eeeeee, | |
#fdfdfd); | |
background-image: -webkit-gradient(linear,left top,left bottom, | |
color-stop(0, #eeeeee), | |
color-stop(1, #fdfdfd)); | |
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr='#eeeeee', EndColorStr='#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; | |
} | |
/* D | |
-----------------------------------------------------------------------------------------------------------*/ | |
.ui-bar-d { | |
border: 1px solid #ccc; | |
background: #bbb; | |
color: #333; | |
text-shadow: 0 1px 0 #eee; | |
background-image: -moz-linear-gradient(top, | |
#ddd, | |
#bbb); | |
background-image: -webkit-gradient(linear,left top,left bottom, | |
color-stop(0, #ddd), | |
color-stop(1, #bbb)); | |
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr='#dddddd', EndColorStr='#bbbbbb')"; | |
} | |
.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-body-d { | |
border: 1px solid #ccc; | |
color: #333333; | |
text-shadow: 0 1px 0 #fff; | |
background: #ffffff; | |
} | |
.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: #333333; | |
} | |
.ui-body-d .ui-link { | |
color: #2489CE; | |
font-weight: bold; | |
} | |
.ui-btn-up-d { | |
border: 1px solid #ccc; | |
background: #fff; | |
font-weight: bold; | |
color: #444; | |
text-shadow: 0 1px 1px #fff; | |
} | |
.ui-btn-up-d a.ui-link-inherit { | |
color: #333; | |
} | |
.ui-btn-hover-d { | |
border: 1px solid #aaa; | |
background: #eeeeee; | |
font-weight: bold; | |
color: #222; | |
cursor: pointer; | |
text-shadow: 0 1px 1px #fff; | |
background-image: -moz-linear-gradient(top, | |
#fdfdfd, | |
#eeeeee); | |
background-image: -webkit-gradient(linear,left top,left bottom, | |
color-stop(0, #fdfdfd), | |
color-stop(1, #eeeeee)); | |
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr='#fdfdfd', EndColorStr='#eeeeee')"; | |
} | |
.ui-btn-hover-d a.ui-link-inherit { | |
color: #222; | |
} | |
.ui-btn-down-d { | |
border: 1px solid #aaaaaa; | |
background: #ffffff; | |
font-weight: bold; | |
color: #111; | |
text-shadow: 0 1px 1px #ffffff; | |
background-image: -moz-linear-gradient(top, | |
#eeeeee, | |
#ffffff); | |
background-image: -webkit-gradient(linear,left top,left bottom, | |
color-stop(0, #eeeeee), | |
color-stop(1, #ffffff)); | |
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr='#eeeeee', EndColorStr='#ffffff')"; | |
} | |
.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; | |
} | |
/* E | |
-----------------------------------------------------------------------------------------------------------*/ | |
.ui-bar-e { | |
border: 1px solid #F7C942; | |
background: #fadb4e; | |
color: #333; | |
text-shadow: 0 1px 0 #fff; | |
background-image: -moz-linear-gradient(top, | |
#fceda7, | |
#fadb4e); | |
background-image: -webkit-gradient(linear,left top,left bottom, | |
color-stop(0, #fceda7), | |
color-stop(1, #fadb4e)); | |
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr='#fceda7', EndColorStr='#fadb4e')"; | |
} | |
.ui-bar-e, | |
.ui-bar-e input, | |
.ui-bar-e select, | |
.ui-bar-e textarea, | |
.ui-bar-d 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-body-e { | |
border: 1px solid #F7C942; | |
color: #333333; | |
text-shadow: 0 1px 0 #fff; | |
background: #faeb9e; | |
background-image: -moz-linear-gradient(top, | |
#fff, | |
#faeb9e); | |
background-image: -webkit-gradient(linear,left top,left bottom, | |
color-stop(0, #fff), | |
color-stop(1, #faeb9e)); | |
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr='#ffffff', EndColorStr='#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: #333333; | |
} | |
.ui-body-e .ui-link { | |
color: #2489CE; | |
font-weight: bold; | |
} | |
.ui-btn-up-e { | |
border: 1px solid #F7C942; | |
background: #fadb4e; | |
font-weight: bold; | |
color: #333; | |
text-shadow: 0 1px 0 #fff; | |
background-image: -moz-linear-gradient(top, | |
#fceda7, | |
#fadb4e); | |
background-image: -webkit-gradient(linear,left top,left bottom, | |
color-stop(0, #fceda7), | |
color-stop(1, #fadb4e)); | |
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr='#fceda7', EndColorStr='#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: -moz-linear-gradient(top, | |
#fcf0b5, | |
#fbe26f); | |
background-image: -webkit-gradient(linear,left top,left bottom, | |
color-stop(0, #fcf0b5), | |
color-stop(1, #fbe26f)); | |
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr='#fcf0b5', EndColorStr='#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 #ffffff; | |
background-image: -moz-linear-gradient(top, | |
#fadb4e, | |
#fceda7); | |
background-image: -webkit-gradient(linear,left top,left bottom, | |
color-stop(0, #fadb4e), | |
color-stop(1, #fceda7)); | |
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr='#fadb4e', EndColorStr='#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; | |
} | |
/* links within "buttons" | |
-----------------------------------------------------------------------------------------------------------*/ | |
a.ui-link-inherit { | |
text-decoration: none !important; | |
} | |
/* Active class used as the "on" state across all themes | |
-----------------------------------------------------------------------------------------------------------*/ | |
.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: -moz-linear-gradient(top, | |
#85bae4, | |
#5393c5); | |
background-image: -webkit-gradient(linear,left top,left bottom, | |
color-stop(0, #85bae4), | |
color-stop(1, #5393c5)); | |
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr='#85bae4', EndColorStr='#5393c5')"; | |
outline: none; | |
} | |
.ui-btn-active a.ui-link-inherit { | |
color: #fff; | |
} | |
/* button inner top highlight | |
-----------------------------------------------------------------------------------------------------------*/ | |
.ui-btn-inner { | |
border-top: 1px solid #fff; | |
border-color: rgba(255,255,255,.3); | |
} | |
/* corner rounding classes | |
-----------------------------------------------------------------------------------------------------------*/ | |
.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; | |
} | |
/* Interaction cues | |
-----------------------------------------------------------------------------------------------------------*/ | |
.ui-disabled { | |
opacity: .3; | |
} | |
.ui-disabled, | |
.ui-disabled a { | |
cursor: default; | |
} | |
/* Icons | |
-----------------------------------------------------------------------------------------------------------*/ | |
.ui-icon { | |
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; | |
} | |
/* Alt icon color | |
-----------------------------------------------------------------------------------------------------------*/ | |
.ui-icon-alt { | |
background: #fff; | |
background: rgba(255,255,255,.3); | |
background-image: url(images/icons-18-black.png); | |
background-repeat: no-repeat; | |
} | |
/* HD/"retina" sprite | |
-----------------------------------------------------------------------------------------------------------*/ | |
@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-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); | |
} | |
} | |
/* plus minus */ | |
.ui-icon-plus { | |
background-position: -0 50%; | |
} | |
.ui-icon-minus { | |
background-position: -36px 50%; | |
} | |
/* delete/close */ | |
.ui-icon-delete { | |
background-position: -72px 50%; | |
} | |
/* arrows */ | |
.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%; | |
} | |
/* misc */ | |
.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 { | |
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%; | |
} | |
/* checks,radios */ | |
.ui-icon-checkbox-off, | |
.ui-icon-checkbox-on, | |
.ui-icon-radio-off, | |
.ui-icon-radio-on { | |
background-color: transparent; | |
-moz-border-radius: 0; | |
-webkit-border-radius: 0; | |
border-radius: 0; | |
} | |
.ui-icon-searchfield { | |
background-image: url(images/icon-search-black.png); | |
background-size: 16px 16px; | |
} | |
/* loading icon */ | |
.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; | |
} | |
/* Button corner classes | |
-----------------------------------------------------------------------------------------------------------*/ | |
.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; | |
} | |
/* radius clip workaround for cleaning up corner trapping */ | |
.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-box; | |
background-clip: padding-box; | |
} | |
/* Overlay / modal | |
-----------------------------------------------------------------------------------------------------------*/ | |
.ui-overlay { | |
background: #666; | |
opacity: .5; | |
filter: Alpha(Opacity=50); | |
position: absolute; | |
width: 100%; | |
height: 100%; | |
} | |
.ui-overlay-shadow { | |
-moz-box-shadow: 0px 0px 12px rgba(0,0,0,.6); | |
-webkit-box-shadow: 0px 0px 12px rgba(0,0,0,.6); | |
box-shadow: 0px 0px 12px rgba(0,0,0,.6); | |
} | |
.ui-shadow { | |
-moz-box-shadow: 0px 1px 4px rgba(0,0,0,.3); | |
-webkit-box-shadow: 0px 1px 4px rgba(0,0,0,.3); | |
box-shadow: 0px 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: 0px 1px 0 rgba(255,255,255,.3); | |
-webkit-box-shadow: 0px 1px 0 rgba(255,255,255,.3); | |
box-shadow: 0px 1px 0 rgba(255,255,255,.3); | |
} | |
.ui-shadow-inset { | |
-moz-box-shadow: inset 0px 1px 4px rgba(0,0,0,.2); | |
-webkit-box-shadow: inset 0px 1px 4px rgba(0,0,0,.2); | |
box-shadow: inset 0px 1px 4px rgba(0,0,0,.2); | |
} | |
.ui-icon-shadow { | |
-moz-box-shadow: 0px 1px 0 rgba(255,255,255,.4); | |
-webkit-box-shadow: 0px 1px 0 rgba(255,255,255,.4); | |
box-shadow: 0px 1px 0 rgba(255,255,255,.4); | |
} | |
/* Focus state - set here for specificity | |
-----------------------------------------------------------------------------------------------------------*/ | |
.ui-focus { | |
-moz-box-shadow: 0px 0px 12px #387bbe; | |
-webkit-box-shadow: 0px 0px 12px #387bbe; | |
box-shadow: 0px 0px 12px #387bbe; | |
} | |
/* unset box shadow in browsers that don't do it right | |
-----------------------------------------------------------------------------------------------------------*/ | |
.ui-mobile-nosupport-boxshadow * { | |
-moz-box-shadow: none !important; | |
-webkit-box-shadow: none !important; | |
box-shadow: none !important; | |
} | |
/* ...and bring back focus */ | |
.ui-mobile-nosupport-boxshadow .ui-focus { | |
outline-width: 2px; | |
}/* | |
* jQuery Mobile Framework | |
* Copyright (c) jQuery Project | |
* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses. | |
* Note: Code is in draft form and is subject to change | |
*/ | |
/* some unsets - more probably needed */ | |
.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; } | |
/* responsive page widths */ | |
.ui-mobile-viewport { margin: 0; overflow-x: hidden; -webkit-text-size-adjust: none; -ms-text-size-adjust:none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } | |
/* "page" containers - full-screen views, one should always be in view post-pageload */ | |
.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; } | |
/*orientations from js are available */ | |
.portrait, | |
.portrait .ui-page { min-height: 420px; } | |
.landscape, | |
.landscape .ui-page { min-height: 300px; } | |
/* loading screen */ | |
.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; } | |
/*fouc*/ | |
.ui-mobile-rendering > * { visibility: hidden; } | |
/*headers, content panels*/ | |
.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; } | |
/*content area*/ | |
.ui-content { border-width: 0; overflow: visible; overflow-x: hidden; padding: 15px; } | |
.ui-page-fullscreen .ui-content { padding:0; } | |
/* icons sizing */ | |
.ui-icon { width: 18px; height: 18px; } | |
/* fullscreen class on ui-content div */ | |
.ui-fullscreen { } | |
.ui-fullscreen img { max-width: 100%; } | |
/* non-js content hiding */ | |
.ui-nojs { position: absolute; left: -9999px; } | |
/* | |
* jQuery Mobile Framework | |
* Copyright (c) jQuery Project | |
* Dual licensed under the MIT (MIT-LICENSE.txt) or GPL (GPL-LICENSE.txt) licenses. | |
*/ | |
.spin { | |
-webkit-transform: rotate(360deg); | |
-webkit-animation-name: spin; | |
-webkit-animation-duration: 1s; | |
-webkit-animation-iteration-count: infinite; | |
} | |
@-webkit-keyframes spin { | |
from {-webkit-transform: rotate(0deg);} | |
to {-webkit-transform: rotate(360deg);} | |
} | |
/* Transitions from jQtouch (with small modifications): http://www.jqtouch.com/ | |
Built by David Kaneda and maintained by Jonathan Stark. | |
*/ | |
.in, .out { | |
-webkit-animation-timing-function: ease-in-out; | |
-webkit-animation-duration: 350ms; | |
} | |
.slide.in { | |
-webkit-transform: translateX(0); | |
-webkit-animation-name: slideinfromright; | |
} | |
.slide.out { | |
-webkit-transform: translateX(-100%); | |
-webkit-animation-name: slideouttoleft; | |
} | |
.slide.in.reverse { | |
-webkit-transform: translateX(0); | |
-webkit-animation-name: slideinfromleft; | |
} | |
.slide.out.reverse { | |
-webkit-transform: translateX(100%); | |
-webkit-animation-name: slideouttoright; | |
} | |
.slideup.in { | |
-webkit-transform: translateY(0); | |
-webkit-animation-name: slideinfrombottom; | |
z-index: 10; | |
} | |
.slideup.out { | |
-webkit-animation-name: dontmove; | |
z-index: 0; | |
} | |
.slideup.out.reverse { | |
-webkit-transform: translateY(100%); | |
z-index: 10; | |
-webkit-animation-name: slideouttobottom; | |
} | |
.slideup.in.reverse { | |
z-index: 0; | |
-webkit-animation-name: dontmove; | |
} | |
.slidedown.in { | |
-webkit-transform: translateY(0); | |
-webkit-animation-name: slideinfromtop; | |
z-index: 10; | |
} | |
.slidedown.out { | |
-webkit-animation-name: dontmove; | |
z-index: 0; | |
} | |
.slidedown.out.reverse { | |
-webkit-transform: translateY(-100%); | |
z-index: 10; | |
-webkit-animation-name: slideouttotop; | |
} | |
.slidedown.in.reverse { | |
z-index: 0; | |
-webkit-animation-name: dontmove; | |
} | |
@-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.in { | |
opacity: 1; | |
z-index: 10; | |
-webkit-animation-name: fadein; | |
} | |
.fade.out { | |
z-index: 0; | |
-webkit-animation-name: fadeout; | |
} | |
/* The properties in this rule are only necessary for the 'flip' transition. | |
* We need specify the perspective to create a projection matrix. This will add | |
* some depth as the element flips. The depth number represents the distance of | |
* the viewer from the z-plane. According to the CSS3 spec, 1000 is a moderate | |
* value. | |
*/ | |
.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); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */ | |
} | |
.flip.in { | |
-webkit-transform: rotateY(0) scale(1); | |
-webkit-animation-name: flipinfromleft; | |
} | |
.flip.out { | |
-webkit-transform: rotateY(-180deg) scale(.8); | |
-webkit-animation-name: flipouttoleft; | |
} | |
/* Shake it all about */ | |
.flip.in.reverse { | |
-webkit-transform: rotateY(0) scale(1); | |
-webkit-animation-name: flipinfromright; | |
} | |
.flip.out.reverse { | |
-webkit-transform: rotateY(180deg) scale(.8); | |
-webkit-animation-name: flipouttoright; | |
} | |
@-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); } | |
} | |
/* Hackish, but reliable. */ | |
@-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.out.reverse { | |
-webkit-transform: scale(.2); | |
opacity: 0; | |
-webkit-animation-name: popout; | |
z-index: 10; | |
} | |
.pop.in.reverse { | |
z-index: 0; | |
-webkit-animation-name: dontmove; | |
} | |
@-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; | |
} | |
}/* | |
* jQuery Mobile Framework | |
* Copyright (c) jQuery Project | |
* Dual licensed under the MIT (MIT-LICENSE.txt) or GPL (GPL-LICENSE.txt) licenses. | |
*/ | |
/* content configurations. */ | |
.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;} | |
/* grid solo: 100 - single item fallback */ | |
.ui-grid-solo .ui-block-a { width: 100%; float: none; } | |
/* grid a: 50/50 */ | |
.ui-grid-a .ui-block-a, .ui-grid-a .ui-block-b { width: 50%; } | |
.ui-grid-a .ui-block-a { clear: left; } | |
/* grid b: 33/33/33 */ | |
.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; } | |
/* grid c: 25/25/25/25 */ | |
.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; } | |
/* grid d: 20/20/20/20/20 */ | |
.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; } | |
/* | |
* jQuery Mobile Framework | |
* Copyright (c) jQuery Project | |
* Dual licensed under the MIT (MIT-LICENSE.txt) or GPL (GPL-LICENSE.txt) licenses. | |
*/ | |
/* fixed page header & footer configuration */ | |
.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); /* Force header/footer rendering to go through the same rendering pipeline as native page scrolling. */ | |
} | |
.ui-footer-duplicate, .ui-page-fullscreen .ui-fixed-inline { display: none; } | |
.ui-page-fullscreen .ui-header, .ui-page-fullscreen .ui-footer { opacity: .9; } | |
/* | |
* jQuery Mobile Framework | |
* Copyright (c) jQuery Project | |
* Dual licensed under the MIT (MIT-LICENSE.txt) or GPL (GPL-LICENSE.txt) licenses. | |
*/ | |
.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; } | |
/*expanded page styles*/ | |
.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; } | |
/* | |
* jQuery Mobile Framework | |
* Copyright (c) jQuery Project | |
* Dual licensed under the MIT (MIT-LICENSE.txt) or GPL (GPL-LICENSE.txt) licenses. | |
*/ | |
.ui-btn { display: block; text-align: center; cursor:pointer; position: relative; margin: .5em 5px; padding: 0; } | |
.ui-btn:focus, .ui-btn:active { outline: none; } | |
.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; } | |
.ui-header .ui-btn-inner, .ui-footer .ui-btn-inner, .ui-bar .ui-btn-inner { padding: .4em 8px .5em; } | |
.ui-btn-icon-notext { display: inline-block; width: 20px; height: 20px; padding: 2px 1px 2px 3px; text-indent: -9999px; } | |
.ui-btn-icon-notext .ui-btn-inner { padding: 0; } | |
.ui-btn-icon-notext .ui-btn-text { position: absolute; left: -999px; } | |
.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; } | |
/*btn icon positioning*/ | |
.ui-btn-icon-notext .ui-icon { display: block; } | |
.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-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-icon-top .ui-icon { top: 5px; } | |
.ui-btn-icon-bottom .ui-icon { bottom: 5px; } | |
/*hiding native button,inputs */ | |
.ui-btn-hidden { position: absolute; top: 0; left: 0; width: 100%; height: 100%; -webkit-appearance: button; opacity: 0; cursor: pointer; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter: alpha(opacity=0); background: transparent; } | |
/* | |
* jQuery Mobile Framework | |
* Copyright (c) jQuery Project | |
* Dual licensed under the MIT (MIT-LICENSE.txt) or GPL (GPL-LICENSE.txt) licenses. | |
*/ | |
.ui-collapsible-contain { 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 0px 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; left:-9999px; } | |
.ui-collapsible-content { display: block; padding: 10px 0 10px 8px; } | |
.ui-collapsible-content-collapsed { display: none; } | |
.ui-collapsible-set { margin: .5em 0; } | |
.ui-collapsible-set .ui-collapsible-contain { margin: -1px 0 0; } | |
/* | |
* jQuery Mobile Framework | |
* Copyright (c) jQuery Project | |
* Dual licensed under the MIT (MIT-LICENSE.txt) or GPL (GPL-LICENSE.txt) licenses. | |
*/ | |
.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: 95%;} | |
.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-vertical .ui-controlgroup-last { border-bottom-width: 1px; } | |
.ui-controlgroup-horizontal { padding: 0; } | |
.ui-controlgroup-horizontal .ui-btn, | |
.ui-controlgroup-horizontal .ui-checkbox, .ui-controlgroup-horizontal .ui-radio { display: inline-block; margin: 0 -5px 0 0; } | |
.ui-controlgroup-horizontal .ui-checkbox, .ui-controlgroup-horizontal .ui-radio { display: inline; } | |
.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; } | |
/* conflicts with listview.. | |
.ui-controlgroup .ui-btn-icon-notext { width: 30px; height: 30px; text-indent: -9999px; } | |
.ui-controlgroup .ui-btn-icon-notext .ui-btn-inner { padding: 5px 6px 5px 5px; } | |
*/ | |
@media all and (min-width: 450px){ | |
.ui-controlgroup-label { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; } | |
.ui-controlgroup-controls { width: 60%; display: inline-block; } | |
} /* | |
* jQuery Mobile Framework | |
* Copyright (c) jQuery Project | |
* Dual licensed under the MIT (MIT-LICENSE.txt) or GPL (GPL-LICENSE.txt) licenses. | |
*/ | |
.ui-dialog { min-height: 480px; } | |
.ui-dialog .ui-header, .ui-dialog .ui-content, .ui-dialog .ui-footer { margin: 15px; position: relative; } | |
.ui-dialog .ui-header, .ui-dialog .ui-footer { z-index: 10; width: auto; } | |
.ui-dialog .ui-content, .ui-dialog .ui-footer { margin-top: -15px; }/* | |
* jQuery Mobile Framework | |
* Copyright (c) jQuery Project | |
* Dual licensed under the MIT (MIT-LICENSE.txt) or GPL (GPL-LICENSE.txt) licenses. | |
*/ | |
.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; } | |
/* input, label positioning */ | |
.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; }/* | |
* jQuery Mobile Framework | |
* Copyright (c) jQuery Project | |
* Dual licensed under the MIT (MIT-LICENSE.txt) or GPL (GPL-LICENSE.txt) licenses. | |
*/ | |
.ui-field-contain { background: none; 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; } | |
} /* | |
* jQuery Mobile Framework | |
* Copyright (c) jQuery Project | |
* Dual licensed under the MIT (MIT-LICENSE.txt) or GPL (GPL-LICENSE.txt) licenses. | |
*/ | |
.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 select { cursor: pointer; -webkit-appearance: button; left: 0; top:0; width: 100%; height: 100%; opacity: 0; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter: alpha(opacity=0); } | |
@-moz-document url-prefix() {.ui-select .ui-btn select { opacity: 0.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; } | |
/* labels */ | |
label.ui-select { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .3em; display: block; } | |
/*listbox*/ | |
.ui-select .ui-btn-text, .ui-selectmenu .ui-btn-text { display: inline-block; min-height: 1em; } | |
.ui-select .ui-btn-text { text-overflow: ellipsis; overflow: hidden; display: block;} | |
.ui-selectmenu { position: absolute; padding: 0; z-index: 100 !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: 0.6em 46px 0.8em; } | |
@media all and (min-width: 450px){ | |
label.ui-select { display: inline-block; width: 20%; margin: 0 2% 0 0; } | |
.ui-select { width: 60%; display: inline-block; } | |
} | |
/* when no placeholder is defined in a multiple select, the header height doesn't even extend past the close button. this shim's content in there */ | |
.ui-selectmenu .ui-header h1:after { content: '.'; visibility: hidden; }/* | |
* jQuery Mobile Framework | |
* Copyright (c) jQuery Project | |
* Dual licensed under the MIT (MIT-LICENSE.txt) or GPL (GPL-LICENSE.txt) licenses. | |
*/ | |
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: 95%; } | |
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; width: 77%; background-position: 8px 50%; background-repeat: no-repeat; position: relative; } | |
.ui-input-search input.ui-input-text { border: none; 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: -14px; } | |
.ui-input-search .ui-input-clear-hidden { display: none; } | |
/* orientation adjustments - incomplete!*/ | |
@media all and (min-width: 450px){ | |
label.ui-input-text { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0 } | |
input.ui-input-text, | |
textarea.ui-input-text, | |
.ui-input-search { width: 60%; display: inline-block; } | |
.ui-input-search { width: 50%; } | |
.ui-input-search input.ui-input-text { width: 98%; /*echos rule from above*/ } | |
}/* | |
* jQuery Mobile Framework | |
* Copyright (c) jQuery Project | |
* Dual licensed under the MIT (MIT-LICENSE.txt) or GPL (GPL-LICENSE.txt) licenses. | |
*/ | |
.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; } /* to avoid chance of duplication */ | |
.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 75px .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-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-li-icon { position: absolute; left: 1px; top: 0; max-height: 80px; max-width: 80px; } | |
.ui-li-icon { max-height: 40px; max-width: 40px; left: 10px; top: .9em; } | |
.ui-li-thumb, .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-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; } | |
.ui-li-link-alt .ui-btn { overflow: hidden; position: absolute; right: 8px; top: 50%; margin: -11px 0 0 0; border-bottom-width: 1px; } | |
.ui-li-link-alt .ui-btn-inner { padding: 0; position: static; } | |
.ui-li-link-alt .ui-btn .ui-icon { right: 50%; margin-right: -9px; } | |
.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;} | |
/* Odd iPad positioning issue. */ | |
@media only screen and (min-device-width: 768px) and (max-device-width: 1024px) { | |
.ui-li .ui-btn-text { overflow: visible; } | |
}/* | |
* jQuery Mobile Framework | |
* Copyright (c) jQuery Project | |
* Dual licensed under the MIT (MIT-LICENSE.txt) or GPL (GPL-LICENSE.txt) licenses. | |
*/ | |
label.ui-slider { display: block; } | |
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%; } | |
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){ | |
label.ui-slider { display: inline-block; width: 20%; margin: 0 2% 0 0; } | |
div.ui-slider { width: 45%; } | |
} | |
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%; } | |
div.ui-slider-handle-snapping { -webkit-transition: left 100ms 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: none; border-color: transparent; } | |
span.ui-slider-label-a { left: -100%; margin-right: -1px } | |
span.ui-slider-label-b { right: -100%; margin-left: -1px } | |
/*! | |
* jQuery Mobile v1.0rc1 | |
* http://jquerymobile.com/ | |
* | |
* Copyright 2010, jQuery Project | |
* Dual licensed under the MIT or GPL Version 2 licenses. | |
* http://jquery.org/license | |
*/ | |
/*! | |
* jQuery Mobile Framework | |
* Copyright (c) jQuery Project | |
* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses. | |
*/ | |
/* Swatches */ | |
/* A | |
-----------------------------------------------------------------------------------------------------------*/ | |
.ui-bar-a { | |
border: 1px solid #2A2A2A /*{a-bar-border}*/; | |
background: #111111 /*{a-bar-background-color}*/; | |
color: #ffffff /*{a-bar-color}*/; | |
font-weight: bold; | |
text-shadow: 0 /*{a-bar-shadow-x}*/ -1px /*{a-bar-shadow-y}*/ 1px /*{a-bar-shadow-radius}*/ #000000 /*{a-bar-shadow-color}*/; | |
background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c /*{a-bar-background-start}*/), to(#111 /*{a-bar-background-end}*/)); /* Saf4+, Chrome */ | |
background-image: -webkit-linear-gradient(top, #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */ | |
background-image: -moz-linear-gradient(top, #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* FF3.6 */ | |
background-image: -ms-linear-gradient(top, #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* IE10 */ | |
background-image: -o-linear-gradient(top, #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* Opera 11.10+ */ | |
background-image: linear-gradient(top, #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); | |
} | |
.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 /*{a-bar-font}*/; | |
} | |
.ui-bar-a .ui-link-inherit { | |
color: #fff /*{a-bar-color}*/; | |
} | |
.ui-bar-a .ui-link { | |
color: #7cc4e7 /*{global-link-color}*/; | |
font-weight: bold; | |
} | |
.ui-body-a { | |
border: 1px solid #2A2A2A /*{a-body-border}*/; | |
background: #222222 /*{a-body-background-color}*/; | |
color: #fff /*{a-body-color}*/; | |
text-shadow: 0 /*{a-body-shadow-x}*/ 1px /*{a-body-shadow-y}*/ 0 /*{a-body-shadow-radius}*/ #000 /*{a-body-shadow-color}*/; | |
font-weight: normal; | |
background-image: -webkit-gradient(linear, left top, left bottom, from(#666 /*{a-body-background-start}*/), to(#222 /*{a-body-background-end}*/)); /* Saf4+, Chrome */ | |
background-image: -webkit-linear-gradient(top, #666 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ | |
background-image: -moz-linear-gradient(top, #666 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* FF3.6 */ | |
background-image: -ms-linear-gradient(top, #666 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* IE10 */ | |
background-image: -o-linear-gradient(top, #666 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* Opera 11.10+ */ | |
background-image: linear-gradient(top, #666 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); | |
} | |
.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 /*{a-body-font}*/; | |
} | |
.ui-body-a .ui-link-inherit { | |
color: #fff /*{a-body-color}*/; | |
} | |
.ui-body-a .ui-link { | |
color: #2489CE /*{global-link-color}*/; | |
font-weight: bold; | |
} | |
.ui-br { | |
border-bottom: rgb(130,130,130); | |
border-bottom: rgba(130,130,130,.3); | |
border-bottom-width: 1px; | |
border-bottom-style: solid; | |
} | |
.ui-btn-up-a { | |
border: 1px solid #222 /*{a-bup-border}*/; | |
background: #333333 /*{a-bup-background-color}*/; | |
font-weight: bold; | |
color: #fff /*{a-bup-color}*/; | |
text-shadow: 0 /*{a-bup-shadow-x}*/ -1px /*{a-bup-shadow-y}*/ 1px /*{a-bup-shadow-radius}*/ #000 /*{a-bup-shadow-color}*/; | |
background-image: -webkit-gradient(linear, left top, left bottom, from(#555 /*{a-bup-background-start}*/), to(#333 /*{a-bup-background-end}*/)); /* Saf4+, Chrome */ | |
background-image: -webkit-linear-gradient(top, #555 /*{a-bup-background-start}*/, #333 /*{a-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ | |
background-image: -moz-linear-gradient(top, #555 /*{a-bup-background-start}*/, #333 /*{a-bup-background-end}*/); /* FF3.6 */ | |
background-image: -ms-linear-gradient(top, #555 /*{a-bup-background-start}*/, #333 /*{a-bup-background-end}*/); /* IE10 */ | |
background-image: -o-linear-gradient(top, #555 /*{a-bup-background-start}*/, #333 /*{a-bup-background-end}*/); /* Opera 11.10+ */ | |
background-image: linear-gradient(top, #555 /*{a-bup-background-start}*/, #333 /*{a-bup-background-end}*/); | |
} | |
.ui-btn-up-a a.ui-link-inherit { | |
color: #fff /*{a-bup-color}*/; | |
} | |
.ui-btn-hover-a { | |
border: 1px solid #000 /*{a-bhover-border}*/; | |
background: #444444 /*{a-bhover-background-color}*/; | |
font-weight: bold; | |
color: #fff /*{a-bhover-color}*/; | |
text-shadow: 0 /*{a-bhover-shadow-x}*/ -1px /*{a-bhover-shadow-y}*/ 1px /*{a-bhover-shadow-radius}*/ #000 /*{a-bhover-shadow-color}*/; | |
background-image: -webkit-gradient(linear, left top, left bottom, from(#666 /*{a-bhover-background-start}*/), to(#444 /*{a-bhover-background-end}*/)); /* Saf4+, Chrome */ | |
background-image: -webkit-linear-gradient(top, #666 /*{a-bhover-background-start}*/, #444 /*{a-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ | |
background-image: -moz-linear-gradient(top, #666 /*{a-bhover-background-start}*/, #444 /*{a-bhover-background-end}*/); /* FF3.6 */ | |
background-image: -ms-linear-gradient(top, #666 /*{a-bhover-background-start}*/, #444 /*{a-bhover-background-end}*/); /* IE10 */ | |
background-image: -o-linear-gradient(top, #666 /*{a-bhover-background-start}*/, #444 /*{a-bhover-background-end}*/); /* Opera 11.10+ */ | |
background-image: linear-gradient(top, #666 /*{a-bhover-background-start}*/, #444 /*{a-bhover-background-end}*/); | |
} | |
.ui-btn-hover-a a.ui-link-inherit { | |
color: #fff /*{a-bhover-color}*/; | |
} | |
.ui-btn-down-a { | |
border: 1px solid #000 /*{a-bdown-border}*/; | |
background: #3d3d3d /*{a-bdown-background-color}*/; | |
font-weight: bold; | |
color: #fff /*{a-bdown-color}*/; | |
text-shadow: 0 /*{a-bdown-shadow-x}*/ -1px /*{a-bdown-shadow-y}*/ 1px /*{a-bdown-shadow-radius}*/ #000 /*{a-bdown-shadow-color}*/; | |
background-image: -webkit-gradient(linear, left top, left bottom, from(#333 /*{a-bdown-background-start}*/), to(#5a5a5a /*{a-bdown-background-end}*/)); /* Saf4+, Chrome */ | |
background-image: -webkit-linear-gradient(top, #333 /*{a-bdown-background-start}*/, #5a5a5a /*{a-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */ | |
background-image: -moz-linear-gradient(top, #333 /*{a-bdown-background-start}*/, #5a5a5a /*{a-bdown-background-end}*/); /* FF3.6 */ | |
background-image: -ms-linear-gradient(top, #333 /*{a-bdown-background-start}*/, #5a5a5a /*{a-bdown-background-end}*/); /* IE10 */ | |
background-image: -o-linear-gradient(top, #333 /*{a-bdown-background-start}*/, #5a5a5a /*{a-bdown-background-end}*/); /* Opera 11.10+ */ | |
background-image: linear-gradient(top, #333 /*{a-bdown-background-start}*/, #5a5a5a /*{a-bdown-background-end}*/); | |
} | |
.ui-btn-down-a a.ui-link-inherit { | |
color: #fff /*{a-bdown-color}*/; | |
} | |
.ui-btn-up-a, | |
.ui-btn-hover-a, | |
.ui-btn-down-a { | |
font-family: Helvetica, Arial, sans-serif /*{a-button-font}*/; | |
text-decoration: none; | |
} | |
/* B | |
-----------------------------------------------------------------------------------------------------------*/ | |
.ui-bar-b { | |
border: 1px solid #456f9a /*{b-bar-border}*/; | |
background: #5e87b0 /*{b-bar-background-color}*/; | |
color: #fff /*{b-bar-color}*/; | |
font-weight: bold; | |
text-shadow: 0 /*{b-bar-shadow-x}*/ -1px /*{b-bar-shadow-y}*/ 1px /*{b-bar-shadow-radius}*/ #254f7a /*{b-bar-shadow-color}*/; | |
background-image: -webkit-gradient(linear, left top, left bottom, from(#81a8ce /*{b-bar-background-start}*/), to(#5e87b0 /*{b-bar-background-end}*/)); /* Saf4+, Chrome */ | |
background-image: -webkit-linear-gradient(top, #81a8ce /*{b-bar-background-start}*/, #5e87b0 /*{b-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */ | |
background-image: -moz-linear-gradient(top, #81a8ce /*{b-bar-background-start}*/, #5e87b0 /*{b-bar-background-end}*/); /* FF3.6 */ | |
background-image: -ms-linear-gradient(top, #81a8ce /*{b-bar-background-start}*/, #5e87b0 /*{b-bar-background-end}*/); /* IE10 */ | |
background-image: -o-linear-gradient(top, #81a8ce /*{b-bar-background-start}*/, #5e87b0 /*{b-bar-background-end}*/); /* Opera 11.10+ */ | |
background-image: linear-gradient(top, #81a8ce /*{b-bar-background-start}*/, #5e87b0 /*{b-bar-background-end}*/); | |
} | |
.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 /*{b-bar-font}*/; | |
} | |
.ui-bar-b .ui-link-inherit { | |
color: #fff /*{b-bar-color}*/; | |
} | |
.ui-bar-b .ui-link { | |
color: #7cc4e7 /*{global-link-color}*/; | |
font-weight: bold; | |
} | |
.ui-body-b { | |
border: 1px solid #C6C6C6 /*{b-body-border}*/; | |
background: #cccccc /*{b-body-background-color}*/; | |
color: #333333 /*{b-body-color}*/; | |
text-shadow: 0 /*{b-body-shadow-x}*/ 1px /*{b-body-shadow-y}*/ 0 /*{b-body-shadow-radius}*/ #fff /*{b-body-shadow-color}*/; | |
font-weight: normal; | |
background-image: -webkit-gradient(linear, left top, left bottom, from(#e6e6e6 /*{b-body-background-start}*/), to(#ccc /*{b-body-background-end}*/)); /* Saf4+, Chrome */ | |
background-image: -webkit-linear-gradient(top, #e6e6e6 /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ | |
background-image: -moz-linear-gradient(top, #e6e6e6 /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* FF3.6 */ | |
background-image: -ms-linear-gradient(top, #e6e6e6 /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* IE10 */ | |
background-image: -o-linear-gradient(top, #e6e6e6 /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* Opera 11.10+ */ | |
background-image: linear-gradient(top, #e6e6e6 /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); | |
} | |
.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 /*{b-body-font}*/; | |
} | |
.ui-body-b .ui-link-inherit { | |
color: #333333 /*{b-body-color}*/; | |
} | |
.ui-body-b .ui-link { | |
color: #2489CE /*{global-link-color}*/; | |
font-weight: bold; | |
} | |
.ui-btn-up-b { | |
border: 1px solid #145072 /*{b-bup-border}*/; | |
background: #2567ab /*{b-bup-background-color}*/; | |
font-weight: bold; | |
color: #fff /*{b-bup-color}*/; | |
text-shadow: 0 /*{b-bup-shadow-x}*/ -1px /*{b-bup-shadow-y}*/ 1px /*{b-bup-shadow-radius}*/ #145072 /*{b-bup-shadow-color}*/; | |
background-image: -webkit-gradient(linear, left top, left bottom, from(#5f9cc5 /*{b-bup-background-start}*/), to(#396b9e /*{b-bup-background-end}*/)); /* Saf4+, Chrome */ | |
background-image: -webkit-linear-gradient(top, #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ | |
background-image: -moz-linear-gradient(top, #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* FF3.6 */ | |
background-image: -ms-linear-gradient(top, #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* IE10 */ | |
background-image: -o-linear-gradient(top, #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* Opera 11.10+ */ | |
background-image: linear-gradient(top, #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); | |
} | |
.ui-btn-up-b a.ui-link-inherit { | |
color: #fff /*{b-bup-color}*/; | |
} | |
.ui-btn-hover-b { | |
border: 1px solid #00516e /*{b-bhover-border}*/; | |
background: #4b88b6 /*{b-bhover-background-color}*/; | |
font-weight: bold; | |
color: #fff /*{b-bhover-color}*/; | |
text-shadow: 0 /*{b-bhover-shadow-x}*/ -1px /*{b-bhover-shadow-y}*/ 1px /*{b-bhover-shadow-radius}*/ #014D68 /*{b-bhover-shadow-color}*/; | |
background-image: -webkit-gradient(linear, left top, left bottom, from(#72b0d4 /*{b-bhover-background-start}*/), to(#4b88b6 /*{b-bhover-background-end}*/)); /* Saf4+, Chrome */ | |
background-image: -webkit-linear-gradient(top, #72b0d4 /*{b-bhover-background-start}*/, #4b88b6 /*{b-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ | |
background-image: -moz-linear-gradient(top, #72b0d4 /*{b-bhover-background-start}*/, #4b88b6 /*{b-bhover-background-end}*/); /* FF3.6 */ | |
background-image: -ms-linear-gradient(top, #72b0d4 /*{b-bhover-background-start}*/, #4b88b6 /*{b-bhover-background-end}*/); /* IE10 */ | |
background-image: -o-linear-gradient(top, #72b0d4 /*{b-bhover-background-start}*/, #4b88b6 /*{b-bhover-background-end}*/); /* Opera 11.10+ */ | |
background-image: linear-gradient(top, #72b0d4 /*{b-bhover-background-start}*/, #4b88b6 /*{b-bhover-background-end}*/); | |
} | |
.ui-btn-hover-b a.ui-link-inherit { | |
color: #fff /*{b-bhover-color}*/; | |
} | |
.ui-btn-down-b { | |
border: 1px solid #225377 /*{b-bdown-border}*/; | |
background: #4e89c5 /*{b-bdown-background-color}*/; | |
font-weight: bold; | |
color: #fff /*{b-bdown-color}*/; | |
text-shadow: 0 /*{b-bdown-shadow-x}*/ -1px /*{b-bdown-shadow-y}*/ 1px /*{b-bdown-shadow-radius}*/ #225377 /*{b-bdown-shadow-color}*/; | |
background-image: -webkit-gradient(linear, left top, left bottom, from(#396b9e /*{b-bdown-background-start}*/), to(#4e89c5 /*{b-bdown-background-end}*/)); /* Saf4+, Chrome */ | |
background-image: -webkit-linear-gradient(top, #396b9e /*{b-bdown-background-start}*/, #4e89c5 /*{b-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */ | |
background-image: -moz-linear-gradient(top, #396b9e /*{b-bdown-background-start}*/, #4e89c5 /*{b-bdown-background-end}*/); /* FF3.6 */ | |
background-image: -ms-linear-gradient(top, #396b9e /*{b-bdown-background-start}*/, #4e89c5 /*{b-bdown-background-end}*/); /* IE10 */ | |
background-image: -o-linear-gradient(top, #396b9e /*{b-bdown-background-start}*/, #4e89c5 /*{b-bdown-background-end}*/); /* Opera 11.10+ */ | |
background-image: linear-gradient(top, #396b9e /*{b-bdown-background-start}*/, #4e89c5 /*{b-bdown-background-end}*/); | |
} | |
.ui-btn-down-b a.ui-link-inherit { | |
color: #fff /*{b-bdown-color}*/; | |
} | |
.ui-btn-up-b, | |
.ui-btn-hover-b, | |
.ui-btn-down-b { | |
font-family: Helvetica, Arial, sans-serif /*{b-button-font}*/; | |
text-decoration: none; | |
} | |
/* C | |
-----------------------------------------------------------------------------------------------------------*/ | |
.ui-bar-c { | |
border: 1px solid #B3B3B3 /*{c-bar-border}*/; | |
background: #e9eaeb /*{c-bar-background-color}*/; | |
color: #3E3E3E /*{c-bar-color}*/; | |
font-weight: bold; | |
text-shadow: 0 /*{c-bar-shadow-x}*/ 1px /*{c-bar-shadow-y}*/ 1px /*{c-bar-shadow-radius}*/ #fff /*{c-bar-shadow-color}*/; | |
background-image: -webkit-gradient(linear, left top, left bottom, from(#f0f0f0 /*{c-bar-background-start}*/), to(#e9eaeb /*{c-bar-background-end}*/)); /* Saf4+, Chrome */ | |
background-image: -webkit-linear-gradient(top, #f0f0f0 /*{c-bar-background-start}*/, #e9eaeb /*{c-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */ | |
background-image: -moz-linear-gradient(top, #f0f0f0 /*{c-bar-background-start}*/, #e9eaeb /*{c-bar-background-end}*/); /* FF3.6 */ | |
background-image: -ms-linear-gradient(top, #f0f0f0 /*{c-bar-background-start}*/, #e9eaeb /*{c-bar-background-end}*/); /* IE10 */ | |
background-image: -o-linear-gradient(top, #f0f0f0 /*{c-bar-background-start}*/, #e9eaeb /*{c-bar-background-end}*/); /* Opera 11.10+ */ | |
background-image: linear-gradient(top, #f0f0f0 /*{c-bar-background-start}*/, #e9eaeb /*{c-bar-background-end}*/); | |
} | |
.ui-bar-c .ui-link { | |
color: #2489CE /*{global-link-color}*/; | |
font-weight: bold; | |
} | |
.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 /*{c-bar-font}*/; | |
} | |
.ui-body-c { | |
border: 1px solid #B3B3B3 /*{c-body-border}*/; | |
color: #333333 /*{c-body-color}*/; | |
text-shadow: 0 /*{c-body-shadow-x}*/ 1px /*{c-body-shadow-y}*/ 0 /*{c-body-shadow-radius}*/ #fff /*{c-body-shadow-color}*/; | |
background: #f0f0f0 /*{c-body-background-color}*/; | |
background-image: -webkit-gradient(linear, left top, left bottom, from(#eee /*{c-body-background-start}*/), to(#ddd /*{c-body-background-end}*/)); /* Saf4+, Chrome */ | |
background-image: -webkit-linear-gradient(top, #eee /*{c-body-background-start}*/, #ddd /*{c-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ | |
background-image: -moz-linear-gradient(top, #eee /*{c-body-background-start}*/, #ddd /*{c-body-background-end}*/); /* FF3.6 */ | |
background-image: -ms-linear-gradient(top, #eee /*{c-body-background-start}*/, #ddd /*{c-body-background-end}*/); /* IE10 */ | |
background-image: -o-linear-gradient(top, #eee /*{c-body-background-start}*/, #ddd /*{c-body-background-end}*/); /* Opera 11.10+ */ | |
background-image: linear-gradient(top, #eee /*{c-body-background-start}*/, #ddd /*{c-body-background-end}*/); | |
} | |
.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 /*{c-body-font}*/; | |
} | |
.ui-body-c .ui-link-inherit { | |
color: #333333 /*{c-body-color}*/; | |
} | |
.ui-body-c .ui-link { | |
color: #2489CE /*{global-link-color}*/; | |
font-weight: bold; | |
} | |
.ui-btn-up-c { | |
border: 1px solid #ccc /*{c-bup-border}*/; | |
background: #eee /*{c-bup-background-color}*/; | |
font-weight: bold; | |
color: #444 /*{c-bup-color}*/; | |
text-shadow: 0 /*{c-bup-shadow-x}*/ 1px /*{c-bup-shadow-y}*/ 1px /*{c-bup-shadow-radius}*/ #f6f6f6 /*{c-bup-shadow-color}*/; | |
background-image: -webkit-gradient(linear, left top, left bottom, from(#fdfdfd /*{c-bup-background-start}*/), to(#eee /*{c-bup-background-end}*/)); /* Saf4+, Chrome */ | |
background-image: -webkit-linear-gradient(top, #fdfdfd /*{c-bup-background-start}*/, #eee /*{c-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ | |
background-image: -moz-linear-gradient(top, #fdfdfd /*{c-bup-background-start}*/, #eee /*{c-bup-background-end}*/); /* FF3.6 */ | |
background-image: -ms-linear-gradient(top, #fdfdfd /*{c-bup-background-start}*/, #eee /*{c-bup-background-end}*/); /* IE10 */ | |
background-image: -o-linear-gradient(top, #fdfdfd /*{c-bup-background-start}*/, #eee /*{c-bup-background-end}*/); /* Opera 11.10+ */ | |
background-image: linear-gradient(top, #fdfdfd /*{c-bup-background-start}*/, #eee /*{c-bup-background-end}*/); | |
} | |
.ui-btn-up-c a.ui-link-inherit { | |
color: #2F3E46 /*{c-bup-color}*/; | |
} | |
.ui-btn-hover-c { | |
border: 1px solid #bbb /*{c-bhover-border}*/; | |
background: #dadada /*{c-bhover-background-color}*/; | |
font-weight: bold; | |
color: #101010 /*{c-bhover-color}*/; | |
text-shadow: 0 /*{c-bhover-shadow-x}*/ 1px /*{c-bhover-shadow-y}*/ 1px /*{c-bhover-shadow-radius}*/ #fff /*{c-bhover-shadow-color}*/; | |
background-image: -webkit-gradient(linear, left top, left bottom, from(#ededed /*{c-bhover-background-start}*/), to(#dadada /*{c-bhover-background-end}*/)); /* Saf4+, Chrome */ | |
background-image: -webkit-linear-gradient(top, #ededed /*{c-bhover-background-start}*/, #dadada /*{c-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ | |
background-image: -moz-linear-gradient(top, #ededed /*{c-bhover-background-start}*/, #dadada /*{c-bhover-background-end}*/); /* FF3.6 */ | |
background-image: -ms-linear-gradient(top, #ededed /*{c-bhover-background-start}*/, #dadada /*{c-bhover-background-end}*/); /* IE10 */ | |
background-image: -o-linear-gradient(top, #ededed /*{c-bhover-background-start}*/, #dadada /*{c-bhover-background-end}*/); /* Opera 11.10+ */ | |
background-image: linear-gradient(top, #ededed /*{c-bhover-background-start}*/, #dadada /*{c-bhover-background-end}*/); | |
} | |
.ui-btn-hover-c a.ui-link-inherit { | |
color: #2F3E46 /*{c-bhover-color}*/; | |
} | |
.ui-btn-down-c { | |
border: 1px solid #808080 /*{c-bdown-border}*/; | |
background: #fdfdfd /*{c-bdown-background-color}*/; | |
font-weight: bold; | |
color: #111111 /*{c-bdown-color}*/; | |
text-shadow: 0 /*{c-bdown-shadow-x}*/ 1px /*{c-bdown-shadow-y}*/ 1px /*{c-bdown-shadow-radius}*/ #ffffff /*{c-bdown-shadow-color}*/; | |
background-image: -webkit-gradient(linear, left top, left bottom, from(#eee /*{c-bdown-background-start}*/), to(#fdfdfd /*{c-bdown-background-end}*/)); /* Saf4+, Chrome */ | |
background-image: -webkit-linear-gradient(top, #eee /*{c-bdown-background-start}*/, #fdfdfd /*{c-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */ | |
background-image: -moz-linear-gradient(top, #eee /*{c-bdown-background-start}*/, #fdfdfd /*{c-bdown-background-end}*/); /* FF3.6 */ | |
background-image: -ms-linear-gradient(top, #eee /*{c-bdown-background-start}*/, #fdfdfd /*{c-bdown-background-end}*/); /* IE10 */ | |
background-image: -o-linear-gradient(top, #eee /*{c-bdown-background-start}*/, #fdfdfd /*{c-bdown-background-end}*/); /* Opera 11.10+ */ | |
background-image: linear-gradient(top, #eee /*{c-bdown-background-start}*/, #fdfdfd /*{c-bdown-background-end}*/); | |
} | |
.ui-btn-down-c a.ui-link-inherit { | |
color: #2F3E46 /*{c-bdown-color}*/; | |
} | |
.ui-btn-up-c, | |
.ui-btn-hover-c, | |
.ui-btn-down-c { | |
font-family: Helvetica, Arial, sans-serif /*{c-button-font}*/; | |
text-decoration: none; | |
} | |
/* D | |
-----------------------------------------------------------------------------------------------------------*/ | |
.ui-bar-d { | |
border: 1px solid #ccc /*{d-bar-border}*/; | |
background: #bbb /*{d-bar-background-color}*/; | |
color: #333 /*{d-bar-color}*/; | |
text-shadow: 0 /*{d-bar-shadow-x}*/ 1px /*{d-bar-shadow-y}*/ 0 /*{d-bar-shadow-radius}*/ #eee /*{d-bar-shadow-color}*/; | |
background-image: -webkit-gradient(linear, left top, left bottom, from(#ddd /*{d-bar-background-start}*/), to(#bbb /*{d-bar-background-end}*/)); /* Saf4+, Chrome */ | |
background-image: -webkit-linear-gradient(top, #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */ | |
background-image: -moz-linear-gradient(top, #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* FF3.6 */ | |
background-image: -ms-linear-gradient(top, #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* IE10 */ | |
background-image: -o-linear-gradient(top, #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* Opera 11.10+ */ | |
background-image: linear-gradient(top, #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); | |
} | |
.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 /*{d-bar-font}*/; | |
} | |
.ui-bar-d .ui-link-inherit { | |
color: #333 /*{d-bar-color}*/; | |
} | |
.ui-bar-d .ui-link { | |
color: #2489CE /*{global-link-color}*/; | |
font-weight: bold; | |
} | |
.ui-body-d { | |
border: 1px solid #ccc /*{d-body-border}*/; | |
color: #333333 /*{d-body-color}*/; | |
text-shadow: 0 /*{d-body-shadow-x}*/ 1px /*{d-body-shadow-y}*/ 0 /*{d-body-shadow-radius}*/ #fff /*{d-body-shadow-color}*/; | |
background: #ffffff /*{d-body-background-color}*/; | |
background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#fff /*{d-body-background-end}*/)); /* Saf4+, Chrome */ | |
background-image: -webkit-linear-gradient(top, #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ | |
background-image: -moz-linear-gradient(top, #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* FF3.6 */ | |
background-image: -ms-linear-gradient(top, #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* IE10 */ | |
background-image: -o-linear-gradient(top, #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* Opera 11.10+ */ | |
background-image: linear-gradient(top, #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); | |
} | |
.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 /*{d-body-font}*/; | |
} | |
.ui-body-d .ui-link-inherit { | |
color: #333333 /*{d-body-color}*/; | |
} | |
.ui-body-d .ui-link { | |
color: #2489CE /*{global-link-color}*/; | |
font-weight: bold; | |
} | |
.ui-btn-up-d { | |
border: 1px solid #ccc /*{d-bup-border}*/; | |
background: #fff /*{d-bup-background-color}*/; | |
font-weight: bold; | |
color: #444 /*{d-bup-color}*/; | |
text-shadow: 0 /*{d-bup-shadow-x}*/ 1px /*{d-bup-shadow-y}*/ 1px /*{d-bup-shadow-radius}*/ #fff /*{d-bup-shadow-color}*/; | |
background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#fff /*{d-bup-background-end}*/)); /* Saf4+, Chrome */ | |
background-image: -webkit-linear-gradient(top, #fff /*{d-bup-background-start}*/, #fff /*{d-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ | |
background-image: -moz-linear-gradient(top, #fff /*{d-bup-background-start}*/, #fff /*{d-bup-background-end}*/); /* FF3.6 */ | |
background-image: -ms-linear-gradient(top, #fff /*{d-bup-background-start}*/, #fff /*{d-bup-background-end}*/); /* IE10 */ | |
background-image: -o-linear-gradient(top, #fff /*{d-bup-background-start}*/, #fff /*{d-bup-background-end}*/); /* Opera 11.10+ */ | |
background-image: linear-gradient(top, #fff /*{d-bup-background-start}*/, #fff /*{d-bup-background-end}*/); | |
} | |
.ui-btn-up-d a.ui-link-inherit { | |
color: #333 /*{d-bup-color}*/; | |
} | |
.ui-btn-hover-d { | |
border: 1px solid #aaa /*{d-bhover-border}*/; | |
background: #eeeeee /*{d-bhover-background-color}*/; | |
font-weight: bold; | |
color: #222 /*{d-bhover-color}*/; | |
cursor: pointer; | |
text-shadow: 0 /*{d-bhover-shadow-x}*/ 1px /*{d-bhover-shadow-y}*/ 1px /*{d-bhover-shadow-radius}*/ #fff /*{d-bhover-shadow-color}*/; | |
background-image: -webkit-gradient(linear, left top, left bottom, from(#fdfdfd), to(#eee /*{d-bhover-background-end}*/)); /* Saf4+, Chrome */ | |
background-image: -webkit-linear-gradient(top, #fdfdfd /*{d-bhover-background-start}*/, #eee /*{d-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ | |
background-image: -moz-linear-gradient(top, #fdfdfd /*{d-bhover-background-start}*/, #eee /*{d-bhover-background-end}*/); /* FF3.6 */ | |
background-image: -ms-linear-gradient(top, #fdfdfd /*{d-bhover-background-start}*/, #eee /*{d-bhover-background-end}*/); /* IE10 */ | |
background-image: -o-linear-gradient(top, #fdfdfd /*{d-bhover-background-start}*/, #eee /*{d-bhover-background-end}*/); /* Opera 11.10+ */ | |
background-image: linear-gradient(top, #fdfdfd /*{d-bhover-background-start}*/, #eee /*{d-bhover-background-end}*/); | |
} | |
.ui-btn-hover-d a.ui-link-inherit { | |
color: #222 /*{d-bhover-color}*/; | |
} | |
.ui-btn-down-d { | |
border: 1px solid #aaaaaa /*{d-bdown-border}*/; | |
background: #ffffff /*{d-bdown-background-color}*/; | |
font-weight: bold; | |
color: #111 /*{d-bdown-color}*/; | |
text-shadow: 0 /*{d-bdown-shadow-x}*/ 1px /*{d-bdown-shadow-y}*/ 1px /*{d-bdown-shadow-radius}*/ #ffffff /*{d-bdown-shadow-color}*/; | |
background-image: -webkit-gradient(linear, left top, left bottom, from(#eee /*{d-bdown-background-start}*/), to(#fff /*{d-bdown-background-end}*/)); /* Saf4+, Chrome */ | |
background-image: -webkit-linear-gradient(top, #eee /*{d-bdown-background-start}*/, #fff /*{d-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */ | |
background-image: -moz-linear-gradient(top, #eee /*{d-bdown-background-start}*/, #fff /*{d-bdown-background-end}*/); /* FF3.6 */ | |
background-image: -ms-linear-gradient(top, #eee /*{d-bdown-background-start}*/, #fff /*{d-bdown-background-end}*/); /* IE10 */ | |
background-image: -o-linear-gradient(top, #eee /*{d-bdown-background-start}*/, #fff /*{d-bdown-background-end}*/); /* Opera 11.10+ */ | |
background-image: linear-gradient(top, #eee /*{d-bdown-background-start}*/, #fff /*{d-bdown-background-end}*/); | |
} | |
.ui-btn-down-d a.ui-link-inherit { | |
color: #111 /*{d-bdown-color}*/; | |
} | |
.ui-btn-up-d, | |
.ui-btn-hover-d, | |
.ui-btn-down-d { | |
font-family: Helvetica, Arial, sans-serif /*{d-button-font}*/; | |
text-decoration: none; | |
} | |
/* E | |
-----------------------------------------------------------------------------------------------------------*/ | |
.ui-bar-e { | |
border: 1px solid #F7C942 /*{e-bar-border}*/; | |
background: #fadb4e /*{e-bar-background-color}*/; | |
color: #333 /*{e-bar-color}*/; | |
text-shadow: 0 /*{e-bar-shadow-x}*/ 1px /*{e-bar-shadow-y}*/ 0 /*{e-bar-shadow-radius}*/ #fff /*{e-bar-shadow-color}*/; | |
background-image: -webkit-gradient(linear, left top, left bottom, from(#fceda7 /*{e-bar-background-start}*/), to(#fadb4e /*{e-bar-background-end}*/)); /* Saf4+, Chrome */ | |
background-image: -webkit-linear-gradient(top, #fceda7 /*{e-bar-background-start}*/, #fadb4e /*{e-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */ | |
background-image: -moz-linear-gradient(top, #fceda7 /*{e-bar-background-start}*/, #fadb4e /*{e-bar-background-end}*/); /* FF3.6 */ | |
background-image: -ms-linear-gradient(top, #fceda7 /*{e-bar-background-start}*/, #fadb4e /*{e-bar-background-end}*/); /* IE10 */ | |
background-image: -o-linear-gradient(top, #fceda7 /*{e-bar-background-start}*/, #fadb4e /*{e-bar-background-end}*/); /* Opera 11.10+ */ | |
background-image: linear-gradient(top, #fceda7 /*{e-bar-background-start}*/, #fadb4e /*{e-bar-background-end}*/); | |
} | |
.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 /*{e-bar-font}*/; | |
} | |
.ui-bar-e .ui-link-inherit { | |
color: #333 /*{e-bar-color}*/; | |
} | |
.ui-bar-e .ui-link { | |
color: #2489CE /*{global-link-color}*/; | |
font-weight: bold; | |
} | |
.ui-body-e { | |
border: 1px solid #F7C942 /*{e-body-border}*/; | |
color: #333333 /*{e-body-color}*/; | |
text-shadow: 0 /*{e-body-shadow-x}*/ 1px /*{e-body-shadow-y}*/ 0 /*{e-body-shadow-radius}*/ #fff /*{e-body-shadow-color}*/; | |
background: #faeb9e /*{e-body-background-color}*/; | |
background-image: -webkit-gradient(linear, left top, left bottom, from(#fff /*{e-body-background-start}*/), to(#faeb9e /*{e-body-background-end}*/)); /* Saf4+, Chrome */ | |
background-image: -webkit-linear-gradient(top, #fff /*{e-body-background-start}*/, #faeb9e /*{e-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ | |
background-image: -moz-linear-gradient(top, #fff /*{e-body-background-start}*/, #faeb9e /*{e-body-background-end}*/); /* FF3.6 */ | |
background-image: -ms-linear-gradient(top, #fff /*{e-body-background-start}*/, #faeb9e /*{e-body-background-end}*/); /* IE10 */ | |
background-image: -o-linear-gradient(top, #fff /*{e-body-background-start}*/, #faeb9e /*{e-body-background-end}*/); /* Opera 11.10+ */ | |
background-image: linear-gradient(top, #fff /*{e-body-background-start}*/, #faeb9e /*{e-body-background-end}*/); | |
} | |
.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 /*{e-body-font}*/; | |
} | |
.ui-body-e .ui-link-inherit { | |
color: #333333 /*{e-body-color}*/; | |
} | |
.ui-body-e .ui-link { | |
color: #2489CE /*{global-link-color}*/; | |
font-weight: bold; | |
} | |
.ui-btn-up-e { | |
border: 1px solid #F7C942 /*{e-bup-border}*/; | |
background: #fadb4e /*{e-bup-background-color}*/; | |
font-weight: bold; | |
color: #333 /*{e-bup-color}*/; | |
text-shadow: 0 /*{e-bup-shadow-x}*/ 1px /*{e-bup-shadow-y}*/ 0 /*{e-bup-shadow-radius}*/ #fff /*{e-bup-shadow-color}*/; | |
background-image: -webkit-gradient(linear, left top, left bottom, from(#fceda7 /*{e-bup-background-start}*/), to(#fadb4e /*{e-bup-background-end}*/)); /* Saf4+, Chrome */ | |
background-image: -webkit-linear-gradient(top, #fceda7 /*{e-bup-background-start}*/, #fadb4e /*{e-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ | |
background-image: -moz-linear-gradient(top, #fceda7 /*{e-bup-background-start}*/, #fadb4e /*{e-bup-background-end}*/); /* FF3.6 */ | |
background-image: -ms-linear-gradient(top, #fceda7 /*{e-bup-background-start}*/, #fadb4e /*{e-bup-background-end}*/); /* IE10 */ | |
background-image: -o-linear-gradient(top, #fceda7 /*{e-bup-background-start}*/, #fadb4e /*{e-bup-background-end}*/); /* Opera 11.10+ */ | |
background-image: linear-gradient(top, #fceda7 /*{e-bup-background-start}*/, #fadb4e /*{e-bup-background-end}*/); | |
} | |
.ui-btn-up-e a.ui-link-inherit { | |
color: #333 /*{e-bup-color}*/; | |
} | |
.ui-btn-hover-e { | |
border: 1px solid #e79952 /*{e-bhover-border}*/; | |
background: #fbe26f /*{e-bhover-background-color}*/; | |
font-weight: bold; | |
color: #111 /*{e-bhover-color}*/; | |
text-shadow: 0 /*{e-bhover-shadow-x}*/ 1px /*{e-bhover-shadow-y}*/ 1px /*{e-bhover-shadow-radius}*/ #fff /*{e-bhover-shadow-color}*/; | |
background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf0b5 /*{e-bhover-background-start}*/), to(#fbe26f /*{e-bhover-background-end}*/)); /* Saf4+, Chrome */ | |
background-image: -webkit-linear-gradient(top, #fcf0b5 /*{e-bhover-background-start}*/, #fbe26f /*{e-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ | |
background-image: -moz-linear-gradient(top, #fcf0b5 /*{e-bhover-background-start}*/, #fbe26f /*{e-bhover-background-end}*/); /* FF3.6 */ | |
background-image: -ms-linear-gradient(top, #fcf0b5 /*{e-bhover-background-start}*/, #fbe26f /*{e-bhover-background-end}*/); /* IE10 */ | |
background-image: -o-linear-gradient(top, #fcf0b5 /*{e-bhover-background-start}*/, #fbe26f /*{e-bhover-background-end}*/); /* Opera 11.10+ */ | |
background-image: linear-gradient(top, #fcf0b5 /*{e-bhover-background-start}*/, #fbe26f /*{e-bhover-background-end}*/); | |
} | |
.ui-btn-hover-e a.ui-link-inherit { | |
color: #333 /*{e-bhover-color}*/; | |
} | |
.ui-btn-down-e { | |
border: 1px solid #F7C942 /*{e-bdown-border}*/; | |
background: #fceda7 /*{e-bdown-background-color}*/; | |
font-weight: bold; | |
color: #111 /*{e-bdown-color}*/; | |
text-shadow: 0 /*{e-bdown-shadow-x}*/ 1px /*{e-bdown-shadow-y}*/ 1px /*{e-bdown-shadow-radius}*/ #ffffff /*{e-bdown-shadow-color}*/; | |
background-image: -webkit-gradient(linear, left top, left bottom, from(#fadb4e /*{e-bdown-background-start}*/), to(#fceda7 /*{e-bdown-background-end}*/)); /* Saf4+, Chrome */ | |
background-image: -webkit-linear-gradient(top, #fadb4e /*{e-bdown-background-start}*/, #fceda7 /*{e-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */ | |
background-image: -moz-linear-gradient(top, #fadb4e /*{e-bdown-background-start}*/, #fceda7 /*{e-bdown-background-end}*/); /* FF3.6 */ | |
background-image: -ms-linear-gradient(top, #fadb4e /*{e-bdown-background-start}*/, #fceda7 /*{e-bdown-background-end}*/); /* IE10 */ | |
background-image: -o-linear-gradient(top, #fadb4e /*{e-bdown-background-start}*/, #fceda7 /*{e-bdown-background-end}*/); /* Opera 11.10+ */ | |
background-image: linear-gradient(top, #fadb4e /*{e-bdown-background-start}*/, #fceda7 /*{e-bdown-background-end}*/); | |
} | |
.ui-btn-down-e a.ui-link-inherit { | |
color: #333 /*{e-bdown-color}*/; | |
} | |
.ui-btn-up-e, | |
.ui-btn-hover-e, | |
.ui-btn-down-e { | |
font-family: Helvetica, Arial, sans-serif /*{e-button-font}*/; | |
text-decoration: none; | |
} | |
/* Structure */ | |
/* links within "buttons" | |
-----------------------------------------------------------------------------------------------------------*/ | |
a.ui-link-inherit { | |
text-decoration: none !important; | |
} | |
/* links and their different states | |
-----------------------------------------------------------------------------------------------------------*/ | |
.ui-link{ | |
color: #2489CE /*{global-link-color}*/ | |
} | |
.ui-link:hover{ | |
color: #2489CE /*{global-link-hover}*/ | |
} | |
.ui-link:active{ | |
color: #2489CE /*{global-link-active}*/ | |
} | |
.ui-link:visited{ | |
color: #2489CE /*{global-link-visited}*/ | |
} | |
/* Active class used as the "on" state across all themes | |
-----------------------------------------------------------------------------------------------------------*/ | |
.ui-btn-active { | |
border: 1px solid #155678 /*{global-active-border}*/; | |
background: #4596ce /*{global-active-background-color}*/; | |
font-weight: bold; | |
color: #fff /*{global-active-color}*/; | |
cursor: pointer; | |
text-shadow: 0 /*{global-active-shadow-x}*/ -1px /*{global-active-shadow-y}*/ 1px /*{global-active-shadow-radius}*/ #145072 /*{global-active-shadow-color}*/; | |
text-decoration: none; | |
background-image: -webkit-gradient(linear, left top, left bottom, from(#85bae4 /*{global-active-background-start}*/), to(#5393c5 /*{global-active-background-end}*/)); /* Saf4+, Chrome */ | |
background-image: -webkit-linear-gradient(top, #85bae4 /*{global-active-background-start}*/, #5393c5 /*{global-active-background-end}*/); /* Chrome 10+, Saf5.1+ */ | |
background-image: -moz-linear-gradient(top, #85bae4 /*{global-active-background-start}*/, #5393c5 /*{global-active-background-end}*/); /* FF3.6 */ | |
background-image: -ms-linear-gradient(top, #85bae4 /*{global-active-background-start}*/, #5393c5 /*{global-active-background-end}*/); /* IE10 */ | |
background-image: -o-linear-gradient(top, #85bae4 /*{global-active-background-start}*/, #5393c5 /*{global-active-background-end}*/); /* Opera 11.10+ */ | |
background-image: linear-gradient(top, #85bae4 /*{global-active-background-start}*/, #5393c5 /*{global-active-background-end}*/); | |
outline: none; | |
font-family: Helvetica, Arial, sans-serif /*{global-active-font}*/; | |
} | |
.ui-btn-active a.ui-link-inherit { | |
color: #fff /*{global-active-color}*/; | |
} | |
/* button inner top highlight | |
-----------------------------------------------------------------------------------------------------------*/ | |
.ui-btn-inner { | |
border-top: 1px solid #fff; | |
border-color: rgba(255,255,255,.3); | |
} | |
/* corner rounding classes | |
-----------------------------------------------------------------------------------------------------------*/ | |
.ui-corner-tl { | |
-moz-border-radius-topleft: .6em /*{global-radii-blocks}*/; | |
-webkit-border-top-left-radius: .6em /*{global-radii-blocks}*/; | |
border-top-left-radius: .6em /*{global-radii-blocks}*/; | |
} | |
.ui-corner-tr { | |
-moz-border-radius-topright: .6em /*{global-radii-blocks}*/; | |
-webkit-border-top-right-radius: .6em /*{global-radii-blocks}*/; | |
border-top-right-radius: .6em /*{global-radii-blocks}*/; | |
} | |
.ui-corner-bl { | |
-moz-border-radius-bottomleft: .6em /*{global-radii-blocks}*/; | |
-webkit-border-bottom-left-radius: .6em /*{global-radii-blocks}*/; | |
border-bottom-left-radius: .6em /*{global-radii-blocks}*/; | |
} | |
.ui-corner-br { | |
-moz-border-radius-bottomright: .6em /*{global-radii-blocks}*/; | |
-webkit-border-bottom-right-radius: .6em /*{global-radii-blocks}*/; | |
border-bottom-right-radius: .6em /*{global-radii-blocks}*/; | |
} | |
.ui-corner-top { | |
-moz-border-radius-topleft: .6em /*{global-radii-blocks}*/; | |
-webkit-border-top-left-radius: .6em /*{global-radii-blocks}*/; | |
border-top-left-radius: .6em /*{global-radii-blocks}*/; | |
-moz-border-radius-topright: .6em /*{global-radii-blocks}*/; | |
-webkit-border-top-right-radius: .6em /*{global-radii-blocks}*/; | |
border-top-right-radius: .6em /*{global-radii-blocks}*/; | |
} | |
.ui-corner-bottom { | |
-moz-border-radius-bottomleft: .6em /*{global-radii-blocks}*/; | |
-webkit-border-bottom-left-radius: .6em /*{global-radii-blocks}*/; | |
border-bottom-left-radius: .6em /*{global-radii-blocks}*/; | |
-moz-border-radius-bottomright: .6em /*{global-radii-blocks}*/; | |
-webkit-border-bottom-right-radius: .6em /*{global-radii-blocks}*/; | |
border-bottom-right-radius: .6em /*{global-radii-blocks}*/; | |
} | |
.ui-corner-right { | |
-moz-border-radius-topright: .6em /*{global-radii-blocks}*/; | |
-webkit-border-top-right-radius: .6em /*{global-radii-blocks}*/; | |
border-top-right-radius: .6em /*{global-radii-blocks}*/; | |
-moz-border-radius-bottomright: .6em /*{global-radii-blocks}*/; | |
-webkit-border-bottom-right-radius: .6em /*{global-radii-blocks}*/; | |
border-bottom-right-radius: .6em /*{global-radii-blocks}*/; | |
} | |
.ui-corner-left { | |
-moz-border-radius-topleft: .6em /*{global-radii-blocks}*/; | |
-webkit-border-top-left-radius: .6em /*{global-radii-blocks}*/; | |
border-top-left-radius: .6em /*{global-radii-blocks}*/; | |
-moz-border-radius-bottomleft: .6em /*{global-radii-blocks}*/; | |
-webkit-border-bottom-left-radius: .6em /*{global-radii-blocks}*/; | |
border-bottom-left-radius: .6em /*{global-radii-blocks}*/; | |
} | |
.ui-corner-all { | |
-moz-border-radius: .6em /*{global-radii-blocks}*/; | |
-webkit-border-radius: .6em /*{global-radii-blocks}*/; | |
border-radius: .6em /*{global-radii-blocks}*/; | |
} | |
.ui-corner-none { | |
-moz-border-radius: 0; | |
-webkit-border-radius: 0; | |
border-radius: 0; | |
} | |
/* Interaction cues | |
-----------------------------------------------------------------------------------------------------------*/ | |
.ui-disabled { | |
opacity: .3; | |
} | |
.ui-disabled, | |
.ui-disabled a { | |
cursor: default; | |
} | |
/* Icons | |
-----------------------------------------------------------------------------------------------------------*/ | |
.ui-icon, | |
.ui-icon-searchfield:after { | |
background: #666 /*{global-icon-color}*/; | |
background: rgba(0,0,0,.4) /*{global-icon-disc}*/; | |
background-image: url(images/icons-18-white.png) /*{global-icon-set}*/; | |
background-repeat: no-repeat; | |
-moz-border-radius: 9px; | |
-webkit-border-radius: 9px; | |
border-radius: 9px; | |
} | |
/* Alt icon color | |
-----------------------------------------------------------------------------------------------------------*/ | |
.ui-icon-alt { | |
background: #fff; | |
background: rgba(255,255,255,.3); | |
background-image: url(images/icons-18-black.png); | |
background-repeat: no-repeat; | |
} | |
/* HD/"retina" sprite | |
-----------------------------------------------------------------------------------------------------------*/ | |
@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); | |
} | |
} | |
/* plus minus */ | |
.ui-icon-plus { | |
background-position: -0 50%; | |
} | |
.ui-icon-minus { | |
background-position: -36px 50%; | |
} | |
/* delete/close */ | |
.ui-icon-delete { | |
background-position: -72px 50%; | |
} | |
/* arrows */ | |
.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%; | |
} | |
/* misc */ | |
.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%; | |
} | |
/* checks,radios */ | |
.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 /*{global-active-background-color}*/; /* NOTE: this hex should match the active state color. It's repeated here for cascade */ | |
} | |
/* loading icon */ | |
.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; | |
} | |
/* Button corner classes | |
-----------------------------------------------------------------------------------------------------------*/ | |
.ui-btn-corner-tl { | |
-moz-border-radius-topleft: 1em /*{global-radii-buttons}*/; | |
-webkit-border-top-left-radius: 1em /*{global-radii-buttons}*/; | |
border-top-left-radius: 1em /*{global-radii-buttons}*/; | |
} | |
.ui-btn-corner-tr { | |
-moz-border-radius-topright: 1em /*{global-radii-buttons}*/; | |
-webkit-border-top-right-radius: 1em /*{global-radii-buttons}*/; | |
border-top-right-radius: 1em /*{global-radii-buttons}*/; | |
} | |
.ui-btn-corner-bl { | |
-moz-border-radius-bottomleft: 1em /*{global-radii-buttons}*/; | |
-webkit-border-bottom-left-radius: 1em /*{global-radii-buttons}*/; | |
border-bottom-left-radius: 1em /*{global-radii-buttons}*/; | |
} | |
.ui-btn-corner-br { | |
-moz-border-radius-bottomright: 1em /*{global-radii-buttons}*/; | |
-webkit-border-bottom-right-radius: 1em /*{global-radii-buttons}*/; | |
border-bottom-right-radius: 1em /*{global-radii-buttons}*/; | |
} | |
.ui-btn-corner-top { | |
-moz-border-radius-topleft: 1em /*{global-radii-buttons}*/; | |
-webkit-border-top-left-radius: 1em /*{global-radii-buttons}*/; | |
border-top-left-radius: 1em /*{global-radii-buttons}*/; | |
-moz-border-radius-topright: 1em /*{global-radii-buttons}*/; | |
-webkit-border-top-right-radius: 1em /*{global-radii-buttons}*/; | |
border-top-right-radius: 1em /*{global-radii-buttons}*/; | |
} | |
.ui-btn-corner-bottom { | |
-moz-border-radius-bottomleft: 1em /*{global-radii-buttons}*/; | |
-webkit-border-bottom-left-radius: 1em /*{global-radii-buttons}*/; | |
border-bottom-left-radius: 1em /*{global-radii-buttons}*/; | |
-moz-border-radius-bottomright: 1em /*{global-radii-buttons}*/; | |
-webkit-border-bottom-right-radius: 1em /*{global-radii-buttons}*/; | |
border-bottom-right-radius: 1em /*{global-radii-buttons}*/; | |
} | |
.ui-btn-corner-right { | |
-moz-border-radius-topright: 1em /*{global-radii-buttons}*/; | |
-webkit-border-top-right-radius: 1em /*{global-radii-buttons}*/; | |
border-top-right-radius: 1em /*{global-radii-buttons}*/; | |
-moz-border-radius-bottomright: 1em /*{global-radii-buttons}*/; | |
-webkit-border-bottom-right-radius: 1em /*{global-radii-buttons}*/; | |
border-bottom-right-radius: 1em /*{global-radii-buttons}*/; | |
} | |
.ui-btn-corner-left { | |
-moz-border-radius-topleft: 1em /*{global-radii-buttons}*/; | |
-webkit-border-top-left-radius: 1em /*{global-radii-buttons}*/; | |
border-top-left-radius: 1em /*{global-radii-buttons}*/; | |
-moz-border-radius-bottomleft: 1em /*{global-radii-buttons}*/; | |
-webkit-border-bottom-left-radius: 1em /*{global-radii-buttons}*/; | |
border-bottom-left-radius: 1em /*{global-radii-buttons}*/; | |
} | |
.ui-btn-corner-all { | |
-moz-border-radius: 1em /*{global-radii-buttons}*/; | |
-webkit-border-radius: 1em /*{global-radii-buttons}*/; | |
border-radius: 1em /*{global-radii-buttons}*/; | |
} | |
/* radius clip workaround for cleaning up corner trapping */ | |
.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; | |
} | |
/* Overlay / modal | |
-----------------------------------------------------------------------------------------------------------*/ | |
.ui-overlay { | |
background: #666; | |
opacity: .5; | |
filter: Alpha(Opacity=50); | |
position: absolute; | |
width: 100%; | |
height: 100%; | |
} | |
.ui-overlay-shadow { | |
-moz-box-shadow: 0px 0px 12px rgba(0,0,0,.6); | |
-webkit-box-shadow: 0px 0px 12px rgba(0,0,0,.6); | |
box-shadow: 0px 0px 12px rgba(0,0,0,.6); | |
} | |
.ui-shadow { | |
-moz-box-shadow: 0px 1px 4px /*{global-box-shadow-size}*/ rgba(0,0,0,.3) /*{global-box-shadow-color}*/; | |
-webkit-box-shadow: 0px 1px 4px /*{global-box-shadow-size}*/ rgba(0,0,0,.3) /*{global-box-shadow-color}*/; | |
box-shadow: 0px 1px 4px /*{global-box-shadow-size}*/ rgba(0,0,0,.3) /*{global-box-shadow-color}*/; | |
} | |
.ui-bar-a .ui-shadow, | |
.ui-bar-b .ui-shadow , | |
.ui-bar-c .ui-shadow { | |
-moz-box-shadow: 0px 1px 0 rgba(255,255,255,.3); | |
-webkit-box-shadow: 0px 1px 0 rgba(255,255,255,.3); | |
box-shadow: 0px 1px 0 rgba(255,255,255,.3); | |
} | |
.ui-shadow-inset { | |
-moz-box-shadow: inset 0px 1px 4px rgba(0,0,0,.2); | |
-webkit-box-shadow: inset 0px 1px 4px rgba(0,0,0,.2); | |
box-shadow: inset 0px 1px 4px rgba(0,0,0,.2); | |
} | |
.ui-icon-shadow { | |
-moz-box-shadow: 0px 1px 0 rgba(255,255,255,.4); | |
-webkit-box-shadow: 0px 1px 0 rgba(255,255,255,.4); | |
box-shadow: 0px 1px 0 rgba(255,255,255,.4); | |
} | |
/* Focus state - set here for specificity | |
-----------------------------------------------------------------------------------------------------------*/ | |
.ui-focus { | |
-moz-box-shadow: 0px 0px 12px #387bbe /*{global-active-background-color}*/; | |
-webkit-box-shadow: 0px 0px 12px #387bbe /*{global-active-background-color}*/; | |
box-shadow: 0px 0px 12px #387bbe /*{global-active-background-color}*/; | |
} | |
/* unset box shadow in browsers that don't do it right | |
-----------------------------------------------------------------------------------------------------------*/ | |
.ui-mobile-nosupport-boxshadow * { | |
-moz-box-shadow: none !important; | |
-webkit-box-shadow: none !important; | |
box-shadow: none !important; | |
} | |
/* ...and bring back focus */ | |
.ui-mobile-nosupport-boxshadow .ui-focus { | |
outline-width: 2px; | |
}/* | |
* jQuery Mobile Framework | |
* Copyright (c) jQuery Project | |
* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses. | |
*/ | |
/* some unsets - more probably needed */ | |
.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; } | |
/* responsive page widths */ | |
.ui-mobile-viewport { margin: 0; overflow-x: hidden; -webkit-text-size-adjust: none; -ms-text-size-adjust:none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } | |
/* "page" containers - full-screen views, one should always be in view post-pageload */ | |
.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; } | |
/* on ios4, setting focus on the page element causes flashing during transitions when there is an outline, so we turn off outlines */ | |
.ui-page { outline: none; } | |
/* native overflow scrolling */ | |
.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 * { | |
/* some level of transform keeps elements from blinking out of visibility on iOS */ | |
-webkit-transform: rotateY(0); | |
} | |
.ui-page.ui-mobile-pre-transition { | |
display: block; | |
} | |
/* loading screen */ | |
.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; } | |
/*fouc*/ | |
.ui-mobile-rendering > * { visibility: hidden; } | |
/*headers, content panels*/ | |
.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; } | |
/*content area*/ | |
.ui-content { border-width: 0; overflow: visible; overflow-x: hidden; padding: 15px; } | |
.ui-page-fullscreen .ui-content { padding:0; } | |
/* native fixed headers and footers */ | |
.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; | |
} | |
/* icons sizing */ | |
.ui-icon { width: 18px; height: 18px; } | |
/* fullscreen class on ui-content div */ | |
.ui-fullscreen { } | |
.ui-fullscreen img { max-width: 100%; } | |
/* non-js content hiding */ | |
.ui-nojs { position: absolute; left: -9999px; } | |
/* | |
* jQuery Mobile Framework | |
* Copyright (c) jQuery Project | |
* Dual licensed under the MIT (MIT-LICENSE.txt) or GPL (GPL-LICENSE.txt) licenses. | |
*/ | |
.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);} | |
} | |
/* Transitions from jQtouch (with small modifications): http://www.jqtouch.com/ | |
Built by David Kaneda and maintained by Jonathan Stark. | |
*/ | |
.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; | |
} | |
/* The properties in this rule are only necessary for the 'flip' transition. | |
* We need specify the perspective to create a projection matrix. This will add | |
* some depth as the element flips. The depth number represents the distance of | |
* the viewer from the z-plane. According to the CSS3 spec, 1000 is a moderate | |
* value. | |
*/ | |
.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); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */ | |
} | |
.flip.out { | |
-webkit-transform: rotateY(-180deg) scale(.8); | |
-webkit-animation-name: flipouttoleft; | |
} | |
.flip.in { | |
-webkit-transform: rotateY(0) scale(1); | |
-webkit-animation-name: flipinfromleft; | |
} | |
/* Shake it all about */ | |
.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); } | |
} | |
/* Hackish, but reliable. */ | |
@-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; | |
} | |
}/* | |
* jQuery Mobile Framework | |
* Copyright (c) jQuery Project | |
* Dual licensed under the MIT (MIT-LICENSE.txt) or GPL (GPL-LICENSE.txt) licenses. | |
*/ | |
/* content configurations. */ | |
.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;} | |
/* grid solo: 100 - single item fallback */ | |
.ui-grid-solo .ui-block-a { width: 100%; float: none; } | |
/* grid a: 50/50 */ | |
.ui-grid-a .ui-block-a, .ui-grid-a .ui-block-b { width: 50%; } | |
.ui-grid-a .ui-block-a { clear: left; } | |
/* grid b: 33/33/33 */ | |
.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; } | |
/* grid c: 25/25/25/25 */ | |
.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; } | |
/* grid d: 20/20/20/20/20 */ | |
.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; } | |
/* | |
* jQuery Mobile Framework | |
* Copyright (c) jQuery Project | |
* Dual licensed under the MIT (MIT-LICENSE.txt) or GPL (GPL-LICENSE.txt) licenses. | |
*/ | |
/* fixed page header & footer configuration */ | |
.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); /* Force header/footer rendering to go through the same rendering pipeline as native page scrolling. */ | |
} | |
.ui-footer-duplicate, .ui-page-fullscreen .ui-fixed-inline { display: none; } | |
.ui-page-fullscreen .ui-header, .ui-page-fullscreen .ui-footer { opacity: .9; } | |
/* | |
* jQuery Mobile Framework | |
* Copyright (c) jQuery Project | |
* Dual licensed under the MIT (MIT-LICENSE.txt) or GPL (GPL-LICENSE.txt) licenses. | |
*/ | |
.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; } | |
/*expanded page styles*/ | |
.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; } | |
/* | |
* jQuery Mobile Framework | |
* Copyright (c) jQuery Project | |
* Dual licensed under the MIT (MIT-LICENSE.txt) or GPL (GPL-LICENSE.txt) licenses. | |
*/ | |
.ui-btn { display: block; text-align: center; cursor:pointer; position: relative; margin: .5em 5px; padding: 0; } | |
.ui-btn:focus, .ui-btn:active { outline: none; } | |
.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-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-icon-notext .ui-btn-text { position: absolute; left: -999px; } | |
.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; } | |
/*btn icon positioning*/ | |
.ui-btn-icon-notext .ui-icon { display: block; } | |
.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; } | |
/*hiding native button,inputs */ | |
.ui-btn-hidden { position: absolute; top: 0; left: 0; width: 100%; height: 100%; -webkit-appearance: button; opacity: .1; cursor: pointer; background: transparent; font-size: 1px; border: none; line-height: 999px; } | |
/* | |
* jQuery Mobile Framework | |
* Copyright (c) jQuery Project | |
* Dual licensed under the MIT (MIT-LICENSE.txt) or GPL (GPL-LICENSE.txt) licenses. | |
*/ | |
.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 0px 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; left:-9999px; } | |
.ui-collapsible-content { | |
display: block; | |
margin: 0 -8px; | |
padding: 10px 16px; | |
border-top: none; /* Overrides ui-btn-up-* */ | |
background-image: none; /* Overrides ui-btn-up-* */ | |
font-weight: normal; /* Overrides ui-btn-up-* */ | |
} | |
.ui-collapsible-content-collapsed { display: none; } | |
.ui-collapsible-set { margin: .5em 0; } | |
.ui-collapsible-set .ui-collapsible { margin: -1px 0 0; } | |
/* | |
* jQuery Mobile Framework | |
* Copyright (c) jQuery Project | |
* Dual licensed under the MIT (MIT-LICENSE.txt) or GPL (GPL-LICENSE.txt) licenses. | |
*/ | |
.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: 95%;} | |
.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-vertical .ui-controlgroup-last { border-bottom-width: 1px; } | |
.ui-controlgroup-horizontal { padding: 0; } | |
.ui-controlgroup-horizontal .ui-btn { 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; } | |
/* conflicts with listview.. | |
.ui-controlgroup .ui-btn-icon-notext { width: 30px; height: 30px; text-indent: -9999px; } | |
.ui-controlgroup .ui-btn-icon-notext .ui-btn-inner { padding: 5px 6px 5px 5px; } | |
*/ | |
@media all and (min-width: 450px){ | |
.ui-controlgroup-label { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; } | |
.ui-controlgroup-controls { width: 60%; display: inline-block; } | |
} /* | |
* jQuery Mobile Framework | |
* Copyright (c) jQuery Project | |
* Dual licensed under the MIT (MIT-LICENSE.txt) or GPL (GPL-LICENSE.txt) licenses. | |
*/ | |
.ui-dialog { min-height: 480px; } | |
.ui-dialog .ui-header, .ui-dialog .ui-content, .ui-dialog .ui-footer { margin: 15px; position: relative; } | |
.ui-dialog .ui-header, .ui-dialog .ui-footer { z-index: 10; width: auto; } | |
.ui-dialog .ui-content, .ui-dialog .ui-footer { margin-top: -15px; }/* | |
* jQuery Mobile Framework | |
* Copyright (c) jQuery Project | |
* Dual licensed under the MIT (MIT-LICENSE.txt) or GPL (GPL-LICENSE.txt) licenses. | |
*/ | |
.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; } | |
/* input, label positioning */ | |
.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; }/* | |
* jQuery Mobile Framework | |
* Copyright (c) jQuery Project | |
* Dual licensed under the MIT (MIT-LICENSE.txt) or GPL (GPL-LICENSE.txt) licenses. | |
*/ | |
.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; } | |
} /* | |
* jQuery Mobile Framework | |
* Copyright (c) jQuery Project | |
* Dual licensed under the MIT (MIT-LICENSE.txt) or GPL (GPL-LICENSE.txt) licenses. | |
*/ | |
.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 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: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter: alpha(opacity=0); z-index: 2; } | |
@-moz-document url-prefix() {.ui-select .ui-btn select { opacity: 0.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; } | |
/* labels */ | |
label.ui-select { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .3em; display: block; } | |
/*listbox*/ | |
.ui-select .ui-btn-text, .ui-selectmenu .ui-btn-text { display: block; min-height: 1em; } | |
.ui-select .ui-btn-text { text-overflow: ellipsis; overflow: hidden;} | |
.ui-selectmenu { position: absolute; padding: 0; z-index: 100 !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: 0.6em 46px 0.8em; } | |
@media all and (min-width: 450px){ | |
label.ui-select { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; } | |
.ui-select { width: 60%; display: inline-block; } | |
} | |
/* when no placeholder is defined in a multiple select, the header height doesn't even extend past the close button. this shim's content in there */ | |
.ui-selectmenu .ui-header h1:after { content: '.'; visibility: hidden; }/* | |
* jQuery Mobile Framework | |
* Copyright (c) jQuery Project | |
* Dual licensed under the MIT (MIT-LICENSE.txt) or GPL (GPL-LICENSE.txt) licenses. | |
*/ | |
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: 95%; } | |
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; width: 77%; 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: none; 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: -14px; } | |
.ui-input-search .ui-input-clear-hidden { display: none; } | |
/* orientation adjustments - incomplete!*/ | |
@media all and (min-width: 450px){ | |
label.ui-input-text { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0 } | |
input.ui-input-text, | |
textarea.ui-input-text, | |
.ui-input-search { width: 60%; display: inline-block; } | |
.ui-input-search { width: 50%; } | |
.ui-input-search input.ui-input-text { width: 98%; /*echos rule from above*/ } | |
}/* | |
* jQuery Mobile Framework | |
* Copyright (c) jQuery Project | |
* Dual licensed under the MIT (MIT-LICENSE.txt) or GPL (GPL-LICENSE.txt) licenses. | |
*/ | |
.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 { position: relative; z-index: 1; } | |
.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; } /* to avoid chance of duplication */ | |
.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-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-li-icon { position: absolute; left: 1px; top: 0; max-height: 80px; max-width: 80px; } | |
.ui-li-icon { max-height: 40px; max-width: 40px; left: 10px; top: .9em; } | |
.ui-li-thumb, .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: 0px; } | |
.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;} | |
/* Odd iPad positioning issue. */ | |
@media only screen and (min-device-width: 768px) and (max-device-width: 1024px) { | |
.ui-li .ui-btn-text { overflow: visible; } | |
}/* | |
* jQuery Mobile Framework | |
* Copyright (c) jQuery Project | |
* Dual licensed under the MIT (MIT-LICENSE.txt) or GPL (GPL-LICENSE.txt) licenses. | |
*/ | |
label.ui-slider { display: block; } | |
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%; } | |
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){ | |
label.ui-slider { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; } | |
div.ui-slider { width: 45%; } | |
} | |
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 100ms 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: none; border-color: transparent; } | |
span.ui-slider-label-a { left: -100%; margin-right: -1px } | |
span.ui-slider-label-b { right: -100%; margin-left: -1px } | |
<?php | |
header('Content-type: text/css'); | |
ob_start("compress"); | |
function compress($buffer) { | |
/* remove comments */ | |
$buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer); | |
/* remove tabs, spaces, newlines, etc. */ | |
$buffer = str_replace(array("\r\n", "\r", "\n", "\t", ' ', ' ', ' '), '', $buffer); | |
return $buffer; | |
} | |
echo ' | |
.ui-li-thumb, .ui-li-icon { position: relative; } | |
.ui-navbar { | |
width: 100%; | |
} | |
.ui-btn-inner { | |
white-space: normal !important; | |
} | |
.ui-li-heading { | |
white-space: normal !important; | |
} | |
.ui-listview-filter { | |
margin: 0 !important; | |
} | |
.ui-icon-navigation { | |
background-image: url(images/113-navigation.png); | |
background-position: 1px 0; | |
} | |
.ui-icon-beaker { | |
background-image: url(images/91-beaker-2.png); | |
background-position: 1px 0; | |
} | |
#footer { | |
text-size: 0.75em; | |
text-align: center; | |
} | |
body { | |
background-color: #F0F0F0; | |
} | |
#jqm-homeheader { | |
text-align: center; | |
} | |
.viaPoints { | |
display: none; | |
text-size: 0.2em; | |
} | |
.min-width-480px .viaPoints { | |
display: inline; | |
} | |
#extrainfo { | |
visibility: hidden; | |
display: none; | |
} | |
#servicewarning { | |
padding: 1em; | |
margin-bottom: 0.5em; | |
text-size: 0.2em; | |
background-color: #FF9; | |
-moz-border-radius: 15px; | |
border-radius: 15px; | |
} | |
#footer { | |
clear:both; | |
text-align:center; | |
} | |
// source http://webaim.org/techniques/skipnav/ | |
#skip a, #skip a:hover, #skip a:visited | |
{ | |
position:absolute; | |
left:0px; | |
top:-500px; | |
width:1px; | |
height:1px; | |
overflow:hidden; | |
} | |
#skip a:active, #skip a:focus | |
{ | |
position:static; | |
width:auto; | |
height:auto; | |
}'; | |
//if (false) | |
echo ' | |
// adaptive layout from jQuery Mobile docs site | |
.type-interior .content-secondary { | |
border-right: 0; | |
border-left: 0; | |
margin: 10px -15px 0; | |
background: #fff; | |
border-top: 1px solid #ccc; | |
} | |
.type-home .ui-content { | |
margin-top: 5px; | |
} | |
.type-interior .ui-content { | |
padding-bottom: 0; | |
} | |
.content-secondary .ui-collapsible-contain { | |
padding: 10px 15px; | |
} | |
.content-secondary .ui-collapsible-heading { | |
margin: 0 0 30px; | |
} | |
.content-secondary .ui-collapsible-heading-collapsed, | |
.content-secondary .ui-collapsible-content { | |
padding:0; | |
margin: 0; | |
} | |
/* hires ahoy */ | |
@media all and (min-width: 650px){ | |
.content-secondary { | |
text-align: left; | |
float: left; | |
width: 45%; | |
background: none; | |
border-top: 0; | |
} | |
.content-secondary, | |
.type-interior .content-secondary { | |
margin: 30px 0 20px 2%; | |
padding: 20px 4% 0 0; | |
background: none; | |
} | |
.type-index .content-secondary { | |
padding: 0; | |
} | |
.type-index .content-secondary .ui-listview { | |
margin: 0; | |
} | |
.content-primary { | |
width: 45%; | |
float: right; | |
margin-top: 30px; | |
margin-right: 1%; | |
padding-right: 1%; | |
} | |
.content-primary ul:first-child { | |
margin-top: 0; | |
} | |
.type-interior .content-primary { | |
padding: 1.5em 6% 3em 0; | |
margin: 0; | |
} | |
/* fix up the collapsibles - expanded on desktop */ | |
.content-secondary .ui-collapsible-heading { | |
display: none; | |
} | |
.content-secondary .ui-collapsible-contain { | |
margin:0; | |
} | |
.content-secondary .ui-collapsible-content { | |
display: block; | |
margin: 0; | |
padding: 0; | |
} | |
.type-interior .content-secondary .ui-li-divider { | |
padding-top: 1em; | |
padding-bottom: 1em; | |
} | |
.type-interior .content-secondary { | |
margin: 0; | |
padding: 0; | |
} | |
} | |
@media all and (min-width: 750px){ | |
.type-home .ui-content, | |
.type-interior .ui-content { | |
background-position: 39%; | |
} | |
.content-secondary { | |
width: 34%; | |
} | |
.content-primary { | |
width: 56%; | |
padding-right: 1%; | |
} | |
.type-interior .ui-content { | |
background-position: 34%; | |
} | |
} | |
@media all and (min-width: 1200px){ | |
.type-home .ui-content{ | |
background-position: 38.5%; | |
} | |
.type-interior .ui-content { | |
background-position: 30%; | |
} | |
.content-secondary { | |
width: 30%; | |
padding-right:6%; | |
margin: 30px 0 20px 5%; | |
} | |
.type-interior .content-secondary { | |
margin: 0; | |
padding: 0; | |
} | |
.content-primary { | |
width: 50%; | |
margin-right: 5%; | |
padding-right: 3%; | |
} | |
.type-interior .content-primary { | |
width: 60%; | |
} | |
} | |
'; | |
ob_end_flush(); | |
?> | |
#!/bin/bash | #!/bin/bash |
#dotcloud postinstall | #dotcloud postinstall |
curl http://s3-ap-southeast-1.amazonaws.com/busresources/cbrfeed.zip \ | curl http://s3-ap-southeast-1.amazonaws.com/busresources/cbrfeed.zip \ |
-o /home/dotcloud/current/cbrfeed.zip | -o /home/dotcloud/current/cbrfeed.zip |
wget http://s3-ap-southeast-1.amazonaws.com/busresources/Graph.obj \ | curl http://s3-ap-southeast-1.amazonaws.com/busresources/Graph.obj \ |
-O /tmp/Graph.obj | -o /tmp/Graph.obj |
#db setup | #db setup |
#curl https://github.com/maxious/ACTBus-ui/raw/master/transitdata.cbrfeed.sql.gz -o transitdata.cbrfeed.sql.gz | #curl https://github.com/maxious/ACTBus-ui/raw/master/transitdata.cbrfeed.sql.gz -o transitdata.cbrfeed.sql.gz |
#curl https://github.com/maxious/ACTBus-ui/raw/master/lib/postgis.sql -o postgis.sql | #curl https://github.com/maxious/ACTBus-ui/raw/master/lib/postgis.sql -o postgis.sql |
#createlang -d transitdata plpgsql | #createlang -d transitdata plpgsql |
#psql -d transitdata -f postgis.sql | #psql -d transitdata -f postgis.sql |
#gunzip /var/www/transitdata.cbrfeed.sql.gz | #gunzip /var/www/transitdata.cbrfeed.sql.gz |
#psql -d transitdata -f transitdata.cbrfeed.sql | #psql -d transitdata -f transitdata.cbrfeed.sql |
#createuser transitdata -SDRP | #createuser transitdata -SDRP |
#password transitdata | #password transitdata |
#psql -c \"GRANT SELECT ON TABLE agency,calendar,calendar_dates,routes,stop_times,stops,trips TO transitdata;\" | #psql -c \"GRANT SELECT ON TABLE agency,calendar,calendar_dates,routes,stop_times,stops,trips TO transitdata;\" |
<?php | <?php |
header('Content-Type: application/vnd.google-earth.kml+xml'); | header('Content-Type: application/vnd.google-earth.kml+xml'); |
include ('../include/common.inc.php'); | include ('../include/common.inc.php'); |
echo '<?xml version="1.0" encoding="UTF-8"?> | 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>'; | <kml xmlns="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom"><Document>'; |
echo ' | echo ' |
<Style id="yellowLineGreenPoly"> | <Style id="yellowLineGreenPoly"> |
<LineStyle> | <LineStyle> |
<color>7f00ff00</color> | <color>7f00ff00</color> |
<width>4</width> | <width>4</width> |
</LineStyle> | </LineStyle> |
<PolyStyle> | <PolyStyle> |
<color>7f00ffff</color> | <color>7f00ffff</color> |
</PolyStyle> | </PolyStyle> |
</Style>'; | </Style>'; |
$route = getRoute($routeid); | $route = getRoute($routeid); |
echo "\n<Placemark>\n"; | echo "\n<Placemark>\n"; |
$link = curPageURL()."/../trip.php?routeid=".htmlspecialchars ($route["route_id"]); | $link = curPageURL()."/../trip.php?routeid=".htmlspecialchars ($route["route_id"]); |
echo "<name>".$route['route_short_name']."</name>"; | echo "<name>".$route['route_short_name']."</name>"; |
echo '<atom:link href="'.$link.'"/>'; | echo '<atom:link href="'.$link.'"/>'; |
echo '<description><![CDATA[ <a href="'.$link.'">'.$route['route_short_name']." ".$route['route_long_name']."</a>]]> </description>"; | echo '<description><![CDATA[ <a href="'.$link.'">'.$route['route_short_name']." ".$route['route_long_name']."</a>]]> </description>"; |
echo "<styleUrl>#yellowLineGreenPoly</styleUrl>"; | echo "<styleUrl>#yellowLineGreenPoly</styleUrl>"; |
$trips = getRouteTrips($routeid); | $trips = getRouteTrips($routeid); |
echo getTripShape($trips[0]['trip_id']); | echo getTripShape($trips[0]['trip_id']); |
echo "</Placemark>\n</Document></kml>\n"; | echo "</Placemark>\n</Document></kml>\n"; |
?> | ?> |
<?php | <?php |
include ('../include/common.inc.php'); | |
header('Content-type: application/vnd.google-earth.kml+xml'); | header('Content-type: application/vnd.google-earth.kml+xml'); |
//http://wiki.openstreetmap.org/wiki/OpenLayers_Dynamic_KML | //http://wiki.openstreetmap.org/wiki/OpenLayers_Dynamic_KML |
// Creates the KML/XML Document. | // Creates the KML/XML Document. |
$dom = new DOMDocument('1.0', 'UTF-8'); | $dom = new DOMDocument('1.0', 'UTF-8'); |
// Creates the root KML element and appends it to the root document. | // Creates the root KML element and appends it to the root document. |
$node = $dom->createElementNS('http://earth.google.com/kml/2.1', 'kml'); | $node = $dom->createElementNS('http://earth.google.com/kml/2.1', 'kml'); |
$parNode = $dom->appendChild($node); | $parNode = $dom->appendChild($node); |
// Creates a KML Document element and append it to the KML element. | // Creates a KML Document element and append it to the KML element. |
$dnode = $dom->createElement('Document'); | $dnode = $dom->createElement('Document'); |
$docNode = $parNode->appendChild($dnode); | $docNode = $parNode->appendChild($dnode); |
if ($suburb != "") $result_stops = getStopsBySuburb($suburb); | if ($suburb != "") $result_stops = getStopsBySuburb($suburb); |
else $result_stops = getStops(); | else $result_stops = getStops(); |
foreach ($result_stops as $stop) { | foreach ($result_stops as $stop) { |
$description = 'http://bus.lambdacomplex.org/' . 'stop.php?stopid=' . $stop['stop_id'] . " <br>"; | $description = 'http://bus.lambdacomplex.org/' . 'stop.php?stopid=' . $stop['stop_id'] . " <br>"; |
// Creates a Placemark and append it to the Document. | // Creates a Placemark and append it to the Document. |
$node = $dom->createElement('Placemark'); | $node = $dom->createElement('Placemark'); |
$placeNode = $docNode->appendChild($node); | $placeNode = $docNode->appendChild($node); |
// Creates an id attribute and assign it the value of id column. | // Creates an id attribute and assign it the value of id column. |
$placeNode->setAttribute('id', 'placemark' . $stop['stop_id']); | $placeNode->setAttribute('id', 'placemark' . $stop['stop_id']); |
// Create name, and description elements and assigns them the values of the name and address columns from the results. | // Create name, and description elements and assigns them the values of the name and address columns from the results. |
$nameNode = $dom->createElement('name', htmlentities($stop['stop_name'])); | $nameNode = $dom->createElement('name', htmlentities($stop['stop_name'])); |
$descriptionNode = $dom->createElement('description', $description); | $descriptionNode = $dom->createElement('description', $description); |
$placeNode->appendChild($nameNode); | $placeNode->appendChild($nameNode); |
$placeNode->appendChild($descriptionNode); | $placeNode->appendChild($descriptionNode); |
// Creates a Point element. | // Creates a Point element. |
$pointNode = $dom->createElement('Point'); | $pointNode = $dom->createElement('Point'); |
$placeNode->appendChild($pointNode); | $placeNode->appendChild($pointNode); |
// Creates a coordinates element and gives it the value of the lng and lat columns from the results. | // Creates a coordinates element and gives it the value of the lng and lat columns from the results. |
$coorStr = $stop['stop_lon'] . ',' . $stop['stop_lat']; | $coorStr = $stop['stop_lon'] . ',' . $stop['stop_lat']; |
$coorNode = $dom->createElement('coordinates', $coorStr); | $coorNode = $dom->createElement('coordinates', $coorStr); |
$pointNode->appendChild($coorNode); | $pointNode->appendChild($coorNode); |
} | } |
$kmlOutput = $dom->saveXML(); | $kmlOutput = $dom->saveXML(); |
echo $kmlOutput; | echo $kmlOutput; |
?> | ?> |
<?php | |
require $basePath.'lib/openid.php'; | |
$openid = new LightOpenID($_SERVER['HTTP_HOST']); | |
function login() | |
{ | |
global $openid; | |
if(!$openid->mode) { | |
$openid->required = array('contact/email'); | |
$openid->identity = 'https://www.google.com/accounts/o8/id'; | |
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(); | |
} | |
} | |
?> |
<?php | <?php |
/* | |
* Copyright 2010,2011 Alexander Sadleir | |
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. | |
*/ | |
if (php_uname('n') == "actbus-www") { | if (php_uname('n') == "actbus-www") { |
$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 { |
} | $conn = new PDO("pgsql:dbname=transitdata;user=transitdata;password=transitdata;host=localhost"); |
else { | |
$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.\n"); |
} | } |
function databaseError($errMsg) | |
{ | function databaseError($errMsg) { |
die($errMsg); | die($errMsg); |
} | } |
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 | |
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. | |
*/ | |
// 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, $zoom = 0, $markerImage = "iconb", $collapsible = true, $twotone = false) | |
{ | function staticmap($mapPoints, $collapsible = true, $twotone = false, $path = false, $numbered = false) { |
global $labsPath; | |
$width = 300; | $markers = ""; |
$height = 300; | $height = 300; |
$metersperpixel[9] = 305.492 * $width; | $width = $height; |
$metersperpixel[10] = 152.746 * $width; | $index = 0; |
$metersperpixel[11] = 76.373 * $width; | if (sizeof($mapPoints) < 1) |
$metersperpixel[12] = 38.187 * $width; | return "map error"; |
$metersperpixel[13] = 19.093 * $width; | if (sizeof($mapPoints) === 1) { |
$metersperpixel[14] = 9.547 * $width; | $markers = "markers={$mapPoints[0][0]},{$mapPoints[0][1]}"; |
$metersperpixel[15] = 4.773 * $width; | } else { |
//$metersperpixel[16] = 2.387 * $width; | if (!$numbered) { |
// $metersperpixel[17]=1.193*$width; | $markers = "markers="; |
$center = ""; | } |
$markers = ""; | if ($path) { |
$mapwidthinmeters = 50; | $markers.= "markers={$mapPoints[0][0]},{$mapPoints[0][1]}&path="; |
if (sizeof($mapPoints) < 1) return "map error"; | } |
if (sizeof($mapPoints) === 1) { | foreach ($mapPoints as $index => $mapPoint) { |
if ($zoom == 0) $zoom = 14; | if ($twotone && $index == 0) { |
$markers.= "{$mapPoints[0][0]},{$mapPoints[0][1]},$markerimage"; | $markers = "markerd=color:red|".$mapPoint[0] . "," . $mapPoint[1]."&markers="; |
$center = "{$mapPoints[0][0]},{$mapPoints[0][1]}"; | } else { |
} | if ($numbered) { |
else { | $label = ($index > 9 ? 9 : $index); |
foreach ($mapPoints as $index => $mapPoint) { | $markers.= "markers=label:$label|" . $mapPoint[0] . "," . $mapPoint[1]; |
if ($twotone && $index == 0) { | if ($index + 1 != sizeof($mapPoints)) { |
$markers.= $mapPoint[0] . "," . $mapPoint[1] . "," . "iconr" . ($index + 1); | $markers.= "&"; |
$center = "{$mapPoints[0][0]},{$mapPoints[0][1]}"; | } |
} | } else { |
else { | $markers.= $mapPoint[0] . "," . $mapPoint[1]; |
$markers.= $mapPoint[0] . "," . $mapPoint[1] . "," . $markerImage . ($index + 1); | if ($index + 1 != sizeof($mapPoints)) { |
} | $markers.= "|"; |
if ($index + 1 != sizeof($mapPoints)) $markers.= "|"; | } |
$dist = distance($mapPoints[0][0], $mapPoint[0][1], $mapPoint[0], $mapPoint[1]); | } |
$mapwidthinmeters = ($dist > $mapwidthinmeters ? $dist : $mapwidthinmeters); | $index++; |
$totalLat+= $mapPoint[0]; | } |
$totalLon+= $mapPoint[1]; | } |
} | } |
if ($zoom == 0) { | $output = ""; |
$mapwidthinmeters = distance($minlat, $minlon, $minlat, $maxlon); | if ($collapsible) |
foreach (array_reverse($metersperpixel, true) as $zoomLevel => $maxdistance) { | $output.= '<div class="map" data-role="collapsible" data-collapsed="true"><h3>Open Map...</h3>'; |
if ($zoom == 0 && $mapwidthinmeters * 1.5 < ($maxdistance)) $zoom = $zoomLevel; | 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 . '>'; |
} | 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 . '>'; |
} | |
$center = $totalLat / sizeof($mapPoints) . "," . $totalLon / sizeof($mapPoints); | if ($collapsible) |
} | $output.= '</div>'; |
$output = ""; | return $output; |
if ($collapsible) $output.= '<div class="map" data-role="collapsible" data-collapsed="true"><h3>Open Map...</h3>'; | |
$output.= '<img class="map" src="' . curPageURL() . '/' . $labsPath . '/lib/staticmaplite/staticmap.php?center=' . $center . '&zoom=' . $zoom . '&size=' . $width . 'x' . $height . '&markers=' . $markers . '" width=' . $width . ' height=' . $height . '>'; | |
if ($collapsible) $output.= '</div>'; | |
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) return floor($km * 1000); | if ($km < 1) |
else return round($km, 2) . "k"; | return floor($km * 1000); |
} | else |
else return floor($km * 1000); | return round($km, 2) . "k"; |
} | |
else | |
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) return $contents->features; | if ($giveOptions) |
elseif (isset($contents->features[0]->centroid)) return $contents->features[0]->centroid->coordinates[0] . "," . $contents->features[0]->centroid->coordinates[1]; | return $contents->features; |
else return ""; | elseif (isset($contents->features[0]->centroid)) |
return $contents->features[0]->centroid->coordinates[0] . "," . $contents->features[0]->centroid->coordinates[1]; | |
else | |
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 |
function getPage($url) | |
{ | /* |
debug($url, "json"); | * Copyright 2010,2011 Alexander Sadleir |
$ch = curl_init($url); | |
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); | Licensed under the Apache License, Version 2.0 (the "License"); |
curl_setopt($ch, CURLOPT_HEADER, 0); | you may not use this file except in compliance with the License. |
curl_setopt($ch, CURLOPT_TIMEOUT, 45); | You may obtain a copy of the License at |
$page = curl_exec($ch); | |
if (curl_errno($ch)) { | http://www.apache.org/licenses/LICENSE-2.0 |
echo "<font color=red> Database temporarily unavailable: "; | |
echo curl_errno($ch) . " " . curl_error($ch); | Unless required by applicable law or agreed to in writing, software |
if (isDebug()) { | distributed under the License is distributed on an "AS IS" BASIS, |
echo $url; | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
} | See the License for the specific language governing permissions and |
echo "</font><br>"; | limitations under the License. |
} | */ |
curl_close($ch); | |
debug(print_r($page,true),"json"); | function getPage($url) { |
return $page; | debug($url, "json"); |
$ch = curl_init($url); | |
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); | |
curl_setopt($ch, CURLOPT_HEADER, 0); | |
curl_setopt($ch, CURLOPT_TIMEOUT, 45); | |
$page = curl_exec($ch); | |
if (curl_errno($ch)) { | |
echo "<font color=red> Database temporarily unavailable: "; | |
echo curl_errno($ch) . " " . curl_error($ch); | |
if (isDebug()) { | |
echo $url; | |
} | |
echo "</font><br>"; | |
} | |
curl_close($ch); | |
debug(print_r($page, true), "json"); | |
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 | |
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. | |
*/ | |
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['suburb'])) { | if (isset($_REQUEST['suburb'])) { |
$suburb = $_REQUEST['suburb']; | $suburb = $_REQUEST['suburb']; |
} | } |
$pageKey = filter_var($_REQUEST['pageKey'], FILTER_SANITIZE_NUMBER_INT); | if (isset($_REQUEST['pageKey'])) { |
$lat = filter_var($_REQUEST['lat'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION); | $pageKey = filter_var($_REQUEST['pageKey'], FILTER_SANITIZE_NUMBER_INT); |
$lon = filter_var($_REQUEST['lon'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION); | } |
$max_distance = filter_var($_REQUEST['radius'], FILTER_SANITIZE_NUMBER_INT); | if (isset($_REQUEST['lat'])) { |
$lat = filter_var($_REQUEST['lat'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION); | |
} | |
if (isset($_REQUEST['lon'])) { | |
$lon = filter_var($_REQUEST['lon'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION); | |
} | |
if (isset($_REQUEST['radius'])) { | |
$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['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['tripid'])) { | if (isset($_REQUEST['tripid'])) { |
$tripid = filter_var($_REQUEST['tripid'], FILTER_SANITIZE_NUMBER_INT); | $tripid = filter_var($_REQUEST['tripid'], FILTER_SANITIZE_NUMBER_INT); |
} | } |
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['routeid'])) { | if (isset($_REQUEST['routeid'])) { |
$routeid = filter_var($_REQUEST['routeid'], FILTER_SANITIZE_NUMBER_INT); | $routeid = filter_var($_REQUEST['routeid'], 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 | |
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. | |
*/ | |
// 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['service_period'])) { | if (isset($_REQUEST['service_period'])) { |
$_SESSION['service_period'] = filter_var($_REQUEST['service_period'], FILTER_SANITIZE_STRING); | $_SESSION['service_period'] = filter_var($_REQUEST['service_period'], FILTER_SANITIZE_STRING); |
sessionUpdated(); | sessionUpdated(); |
} | } |
if (isset($_REQUEST['time'])) { | if (isset($_REQUEST['time'])) { |
$_SESSION['time'] = filter_var($_REQUEST['time'], FILTER_SANITIZE_STRING); | $_SESSION['time'] = filter_var($_REQUEST['time'], FILTER_SANITIZE_STRING); |
sessionUpdated(); | sessionUpdated(); |
} | } |
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) { |
} | $geoParts = explode("(", $geolocate); |
else if (strpos($geolocate, "(") !== false) { | $locateparts = explode(",", str_replace(")", "", $geoParts[1])); |
$geoParts = explode("(", $geolocate); | $_SESSION['lat'] = $locateparts[0]; |
$locateparts = explode(",", str_replace(")", "",$geoParts[1])); | $_SESSION['lon'] = $locateparts[1]; |
$_SESSION['lat'] = $locateparts[0]; | } else { |
$_SESSION['lon'] = $locateparts[1]; | $contents = geocode($geolocate, true); |
} | print_r($contents); |
else { | if (isset($contents[0]->centroid)) { |
$contents = geocode($geolocate, true); | $geocoded = true; |
print_r($contents); | $_SESSION['lat'] = $contents[0]->centroid->coordinates[0]; |
if (isset($contents[0]->centroid)) { | $_SESSION['lon'] = $contents[0]->centroid->coordinates[1]; |
$geocoded = true; | } else { |
$_SESSION['lat'] = $contents[0]->centroid->coordinates[0]; | $_SESSION['lat'] = ""; |
$_SESSION['lon'] = $contents[0]->centroid->coordinates[1]; | $_SESSION['lon'] = ""; |
} | } |
else { | } |
$_SESSION['lat'] = ""; | } |
$_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() | function current_time() { |
{ | return ($_SESSION['time'] ? $_SESSION['time'] : date("H:i:s")); |
return ($_SESSION['time'] ? $_SESSION['time'] : date("H:i:s")); | |
} | } |
?> | ?> |
<?php | <?php |
/* | |
* Copyright 2010,2011 Alexander Sadleir | |
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. | |
*/ | |
// 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 = $_SERVER["HTTP_REFERER"]; | $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; |
global $labsPath; | echo ' |
echo ' | |
<!DOCTYPE html> | <!DOCTYPE html> |
<html lang="en"> | <html lang="en"> |
<head> | <head> |
<meta charset="UTF-8"> | <meta charset="UTF-8"> |
<title>' . $pageTitle . '</title> | <meta name="viewport" content="width=device-width, initial-scale=1"> |
<meta name="google-site-verification" | <title>' . $pageTitle . ' - Canberra Bus Timetable</title> |
content="-53T5Qn4TB_de1NyfR_ZZkEVdUNcNFSaYKSFkWKx-sY" /> | <meta name="google-site-verification" content="-53T5Qn4TB_de1NyfR_ZZkEVdUNcNFSaYKSFkWKx-sY" /> |
<link rel="stylesheet" href="'.$labsPath.'css/jquery-ui-1.8.12.custom.css" />'; | <link rel="dns-prefetch" href="//code.jquery.com"> |
if (isDebugServer()) { | <link rel="dns-prefetch" href="//ajax.googleapis.com"> |
echo '<link rel="stylesheet" href="'.$labsPath.'css/jquery.mobile-1.0b1.css" /> | <link rel="stylesheet" href="' . $basePath . 'css/jquery-ui-1.8.12.custom.css" />'; |
$jqmVersion = "1.0rc1"; | |
<script type="text/javascript" src="'.$labsPath.'js/jquery-1.6.1.min.js"></script> | if (isDebugServer()) { |
<script>$(document).bind("mobileinit", function(){ | $jqmcss = $basePath . "css/jquery.mobile-$jqmVersion.css"; |
$jqjs = $basePath . "js/jquery-1.6.2.min.js"; | |
$jqmjs = $basePath . "js/jquery.mobile-$jqmVersion.js"; | |
} else { | |
$jqmcss = "//code.jquery.com/mobile/$jqmVersion/jquery.mobile-$jqmVersion.min.css"; | |
$jqjs = "//ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"; | |
$jqmjs = "//code.jquery.com/mobile/$jqmVersion/jquery.mobile-$jqmVersion.min.js"; | |
} | |
echo '<link rel="stylesheet" href="' . $jqmcss . '" /> | |
<script src="' . $jqjs . '"></script> | |
<script>$(document).bind("mobileinit", function(){ | |
$.mobile.ajaxEnabled = false; | $.mobile.ajaxEnabled = false; |
}); | }); |
</script> | </script> |
<script type="text/javascript" src="'.$labsPath.'js/jquery.mobile-1.0b1.js"></script>'; | <script src="' . $jqmjs . '"></script> |
} | |
else { | <script src="' . $basePath . 'js/jquery.ui.core.min.js"></script> |
echo '<link rel="stylesheet" href="http://code.jquery.com/mobile/1.0b1/jquery.mobile-1.0b1.min.css" /> | <script src="' . $basePath . 'js/jquery.ui.position.min.js"></script> |
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script> | <script src="' . $basePath . 'js/jquery.ui.widget.min.js"></script> |
<script>$(document).bind("mobileinit", function(){ | <script src="' . $basePath . 'js/jquery.ui.autocomplete.min.js"></script> |
$.mobile.ajaxEnabled = false; | |
}); | |
</script> | |
<script type="text/javascript" src="http://code.jquery.com/mobile/1.0b1/jquery.mobile-1.0b1.min.js"></script>'; | |
} | |
echo ' | |
<script src="'.$labsPath.'js/jquery.ui.autocomplete.min.js"></script> | |
<script src="'.$labsPath.'js/jquery.ui.core.min.js"></script> | |
<script src="'.$labsPath.'js/jquery.ui.position.min.js"></script> | |
<script src="'.$labsPath.'js/jquery.ui.widget.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')) |
.ui-li-thumb, .ui-li-icon { position: relative; }'; | 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, |
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, | |
.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 ' | echo '</style>'; |
.ui-navbar { | echo '<link rel="stylesheet" href="' . $basePath . 'css/local.css.php" />'; |
width: 100%; | if (isIOSDevice()){ |
} | echo '<meta name="apple-mobile-web-app-capable" content="yes" /> |
.ui-btn-inner { | |
white-space: normal !important; | |
} | |
.ui-li-heading { | |
white-space: normal !important; | |
} | |
.ui-listview-filter { | |
margin: 0 !important; | |
} | |
.ui-icon-navigation { | |
background-image: url('.$labsPath.'css/images/113-navigation.png); | |
background-position: 1px 0; | |
} | |
.ui-icon-beaker { | |
background-image: url('.$labsPath.'css/images/91-beaker-2.png); | |
background-position: 1px 0; | |
} | |
#footer { | |
text-size: 0.75em; | |
text-align: center; | |
} | |
body { | |
background-color: #F0F0F0; | |
} | |
#jqm-homeheader { | |
text-align: center; | |
} | |
.viaPoints { | |
display: none; | |
text-size: 0.2em; | |
} | |
.min-width-480px .viaPoints { | |
display: inline; | |
} | |
#extrainfo { | |
visibility: hidden; | |
display: none; | |
} | |
#servicewarning { | |
padding: 1em; | |
margin-bottom: 0.5em; | |
text-size: 0.2em; | |
background-color: #FF9; | |
-moz-border-radius: 15px; | |
border-radius: 15px; | |
} | |
#footer { | |
clear:both; | |
text-align:center; | |
} | |
// source http://webaim.org/techniques/skipnav/ | |
#skip a, #skip a:hover, #skip a:visited | |
{ | |
position:absolute; | |
left:0px; | |
top:-500px; | |
width:1px; | |
height:1px; | |
overflow:hidden; | |
} | |
#skip a:active, #skip a:focus | |
{ | |
position:static; | |
width:auto; | |
height:auto; | |
} | |
// adaptive layout from jQuery Mobile docs site | |
.type-interior .content-secondary { | |
border-right: 0; | |
border-left: 0; | |
margin: 10px -15px 0; | |
background: #fff; | |
border-top: 1px solid #ccc; | |
} | |
.type-home .ui-content { | |
margin-top: 5px; | |
} | |
.type-interior .ui-content { | |
padding-bottom: 0; | |
} | |
.content-secondary .ui-collapsible-contain { | |
padding: 10px 15px; | |
} | |
.content-secondary .ui-collapsible-heading { | |
margin: 0 0 30px; | |
} | |
.content-secondary .ui-collapsible-heading-collapsed, | |
.content-secondary .ui-collapsible-content { | |
padding:0; | |
margin: 0; | |
} | |
@media all and (min-width: 650px){ | |
.content-secondary { | |
text-align: left; | |
float: left; | |
width: 45%; | |
background: none; | |
border-top: 0; | |
} | |
.content-secondary, | |
.type-interior .content-secondary { | |
margin: 30px 0 20px 2%; | |
padding: 20px 4% 0 0; | |
background: none; | |
} | |
.type-index .content-secondary { | |
padding: 0; | |
} | |
.type-index .content-secondary .ui-listview { | |
margin: 0; | |
} | |
.content-primary { | |
width: 45%; | |
float: right; | |
margin-top: 30px; | |
margin-right: 1%; | |
padding-right: 1%; | |
} | |
.content-primary ul:first-child { | |
margin-top: 0; | |
} | |
.type-interior .content-primary { | |
padding: 1.5em 6% 3em 0; | |
margin: 0; | |
} | |
/* fix up the collapsibles - expanded on desktop */ | |
.content-secondary .ui-collapsible-heading { | |
display: none; | |
} | |
.content-secondary .ui-collapsible-contain { | |
margin:0; | |
} | |
.content-secondary .ui-collapsible-content { | |
display: block; | |
margin: 0; | |
padding: 0; | |
} | |
.type-interior .content-secondary .ui-li-divider { | |
padding-top: 1em; | |
padding-bottom: 1em; | |
} | |
.type-interior .content-secondary { | |
margin: 0; | |
padding: 0; | |
} | |
} | |
@media all and (min-width: 750px){ | |
.type-home .ui-content, | |
.type-interior .ui-content { | |
background-position: 39%; | |
} | |
.content-secondary { | |
width: 34%; | |
} | |
.content-primary { | |
width: 56%; | |
padding-right: 1%; | |
} | |
.type-interior .ui-content { | |
background-position: 34%; | |
} | |
} | |
@media all and (min-width: 1200px){ | |
.type-home .ui-content{ | |
background-position: 38.5%; | |
} | |
.type-interior .ui-content { | |
background-position: 30%; | |
} | |
.content-secondary { | |
width: 30%; | |
padding-right:6%; | |
margin: 30px 0 20px 5%; | |
} | |
.type-interior .content-secondary { | |
margin: 0; | |
padding: 0; | |
} | |
.content-primary { | |
width: 50%; | |
margin-right: 5%; | |
padding-right: 3%; | |
} | |
.type-interior .content-primary { | |
width: 60%; | |
} | |
} | |
</style>'; | |
if (strstr($_SERVER['HTTP_USER_AGENT'], 'iPhone') || strstr($_SERVER['HTTP_USER_AGENT'], 'iPod') || strstr($_SERVER['HTTP_USER_AGENT'], 'iPad')) { | |
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({ url: \"include/common.inc.php?geolocate=yes&lat=\"+position.coords.latitude+\"&lon=\"+position.coords.longitude }); | $.ajax({ async: false, |
location.reload(true); | success: function(){ |
location.reload(true); | |
}, | |
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'] == "") echo "geolocate();"; | if (!isset($_SESSION['lat']) || $_SESSION['lat'] == "") |
echo "</script> "; | echo "geolocate();"; |
} | echo "</script> "; |
if (isAnalyticsOn()) echo ' | } |
if (isAnalyticsOn()) | |
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="'.$labsPath.'/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"> '; |
$overrides = getServiceOverride(); | $overrides = getServiceOverride(); |
if ($overrides['service_id']) { | if ($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 id="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 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>'; | } |
} | } |
} | if ($GTFSREnabled) { |
} | $serviceAlerts = getServiceAlertsAsArray("agency", "0"); |
if (isset($serviceAlerts['entity']) && sizeof($serviceAlerts['entity']) > 0) { | |
} | foreach ($serviceAlerts['entity'] as $entity) { |
function include_footer() | echo "<div id='servicewarning'>" . date("F j, g:i a", strtotime($entity['alert']['active_period'][0]['start'])) . " to " . date("F j, g:i a", strtotime($entity['alert']['active_period'][0]['end'])) . "{$entity['alert']['header_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>"; |
} | |
global $labsPath; | } |
echo '<div id="footer"><a href="'.$labsPath.'about.php">About/Contact Us</a> <a href="'.$labsPath.'feedback.php">Feedback/Bug Report</a> <a href="'.$labsPath.'privacy.php">Privacy Policy</a>'; | } |
echo '</div>'; | } |
if (isAnalyticsOn()) { | } |
echo "<script> (function() { | |
function include_footer() { | |
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>'; | |
if (isAnalyticsOn()) { | |
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 . '" /></noscript>'; |
} | |
} | echo "\n</div></div></body></html>"; |
echo "\n</div></div></body></html>"; | } |
} | |
function timePlaceSettings($geolocate = false) | function placeSettings() { |
{ | global $service_periods; |
global $service_periods; | $geoerror = false; |
$geoerror = false; | $geoerror = !isset($_SESSION['lat']) || !isset($_SESSION['lat']) || $_SESSION['lat'] == "" || $_SESSION['lon'] == ""; |
if ($geolocate == true) { | |
$geoerror = !isset($_SESSION['lat']) || !isset($_SESSION['lat']) || $_SESSION['lat'] == "" || $_SESSION['lon'] == ""; | echo '<div id="error">'; |
} | if ($geoerror) { |
echo '<div id="error">'; | echo 'Sorry, but your location could not currently be detected. |
if ($geoerror) { | |
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 Time/Place (' . (isset($_SESSION['time']) ? $_SESSION['time'] : "Current Time,") . ' ' . ucwords(service_period()) . ')...</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> |
<div data-role="fieldcontain"> | |
<label for="time"> Time: </label> | |
<input type="time" name="time" id="time" value="' . (isset($_SESSION['time']) ? $_SESSION['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> | |
</div> | |
<div data-role="fieldcontain"> | |
<label for="service_period"> Service Period: </label> | |
<select name="service_period" id="service_period">'; | |
foreach ($service_periods as $service_period) { | |
echo "<option value=\"$service_period\"" . (service_period() === $service_period ? " SELECTED" : "") . '>' . ucwords($service_period) . '</option>'; | |
} | |
echo '</select> | |
<a href="#" style="display:none" name="currentPeriod" id="currentPeriod">Current Period?</a> | |
</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>"; |
} | } |
} | } |
?> | ?> |
<?php | <?php |
/* | |
* Copyright 2010,2011 Alexander Sadleir | |
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. | |
*/ | |
$service_periods = Array( | $service_periods = Array( |
'sunday', | 'sunday', |
'saturday', | 'saturday', |
'weekday' | 'weekday' |
); | ); |
function service_period($date = "") | function service_period($date = "") { |
{ | |
if (isset($_SESSION['service_period'])) | |
if (isset($_SESSION['service_period'])) return $_SESSION['service_period']; | return $_SESSION['service_period']; |
$override = getServiceOverride($date); | $override = getServiceOverride($date); |
if ($override['service_id']){ | if ($override['service_id']) { |
return $override['service_id']; | return $override['service_id']; |
} | } |
switch (date('w',($date != "" ? $date : time()))) { | switch (date('w', ($date != "" ? $date : time()))) { |
case 0: | case 0: |
return 'sunday'; | return 'sunday'; |
case 6: | case 6: |
return 'saturday'; | return 'saturday'; |
default: | default: |
return 'weekday'; | return 'weekday'; |
} | } |
} | } |
function midnight_seconds($time = "") | function service_ids($service_period) { |
{ | switch ($service_period) { |
// from http://www.perturb.org/display/Perlfunc__Seconds_Since_Midnight.html | case 'sunday': |
if ($time != "") { | return Array("2010-TUGGSUN-Sunday-20","2010-BELCSUN-Sunday-19"); |
return (date("G", $time) * 3600) + (date("i", $time) * 60) + date("s", $time); | case 'saturday': |
} | return Array("2010-BELCSAT-Saturday-19","2010-TUGGSAT-Saturday-19"); |
if (isset($_SESSION['time'])) { | default: |
$time = strtotime($_SESSION['time']); | //return 'weekday'; |
return (date("G", $time) * 3600) + (date("i", $time) * 60) + date("s", $time); | return Array("2010-BELCMAST-Weekday-15","2010-TUGGMAST-Weekday-14"); |
} | } |
return (date("G") * 3600) + (date("i") * 60) + date("s"); | } |
} | |
function midnight_seconds_to_time($seconds) | function midnight_seconds($time = "") { |
{ | // from http://www.perturb.org/display/Perlfunc__Seconds_Since_Midnight.html |
if ($seconds > 0) { | if ($time != "") { |
$midnight = mktime(0, 0, 0, date("n") , date("j") , date("Y")); | return (date("G", $time) * 3600) + (date("i", $time) * 60) + date("s", $time); |
return date("h:ia", $midnight + $seconds); | } |
} | if (isset($_SESSION['time'])) { |
else { | $time = strtotime($_SESSION['time']); |
return ""; | return (date("G", $time) * 3600) + (date("i", $time) * 60) + date("s", $time); |
} | } |
return (date("G") * 3600) + (date("i") * 60) + date("s"); | |
} | |
function midnight_seconds_to_time($seconds) { | |
if ($seconds > 0) { | |
$midnight = mktime(0, 0, 0, date("n"), date("j"), date("Y")); | |
return date("h:ia", $midnight + $seconds); | |
} else { | |
return ""; | |
} | |
} | |
if ($GTFSREnabled) { | |
$serviceAlertCause = Array( | |
"UNKNOWN_CAUSE" => "Unknown cause", | |
"OTHER_CAUSE" => "Other cause", | |
"TECHNICAL_PROBLEM" => "Technical problem", | |
"STRIKE" => "Strike", | |
"DEMONSTRATION" => "Demonstration", | |
"ACCIDENT" => "Accident", | |
"HOLIDAY" => "Holiday", | |
"WEATHER" => "Weather", | |
"MAINTENANCE" => "Maintenance", | |
"CONSTRUCTION" => "Construction", | |
"POLICE_ACTIVITY" => "Police activity", | |
"MEDICAL_EMERGENCY" => "Medical emergency" | |
); | |
$serviceAlertEffect = Array( | |
"NO_SERVICE" => "No service", | |
"REDUCED_SERVICE" => "Reduced service", | |
"SIGNIFICANT_DELAYS" => "Significant delays", | |
"DETOUR" => "Detour", | |
"ADDITIONAL_SERVICE" => "Additional service", | |
"MODIFIED_SERVICE" => "Modified service", | |
"OTHER_EFFECT" => "Other effect", | |
"UNKNOWN_EFFECT" => "Unknown effect", | |
"STOP_MOVED" => "Stop moved"); | |
set_include_path(get_include_path() . PATH_SEPARATOR . ($basePath . "lib/Protobuf-PHP/library/DrSlump/")); | |
include_once("Protobuf.php"); | |
include_once("Protobuf/Message.php"); | |
include_once("Protobuf/Registry.php"); | |
include_once("Protobuf/Descriptor.php"); | |
include_once("Protobuf/Field.php"); | |
include_once($basePath . "lib/Protobuf-PHP/gtfs-realtime.php"); | |
include_once("Protobuf/CodecInterface.php"); | |
include_once("Protobuf/Codec/PhpArray.php"); | |
include_once("Protobuf/Codec/Binary.php"); | |
include_once("Protobuf/Codec/Binary/Writer.php"); | |
include_once("Protobuf/Codec/Json.php"); | |
function getServiceAlerts($filter_class = "", $filter_id = "") { | |
/* | |
also need last modified epoch of client gtfs | |
- add,remove,patch,inform (null) | |
- stop | |
- trip | |
- network | |
- classes (WHERE=) | |
- route (short_name or route_id) | |
- street | |
- stop | |
- trip | |
Currently support: | |
network inform | |
trip patch: stop remove | |
street inform: route inform, trip inform, stop inform | |
route patch: trip remove | |
*/ | |
$fm = new transit_realtime\FeedMessage(); | |
$fh = new transit_realtime\FeedHeader(); | |
$fh->setGtfsRealtimeVersion(1); | |
$fh->setTimestamp(time()); | |
$fm->setHeader($fh); | |
foreach (getCurrentAlerts() as $alert) { | |
$fe = new transit_realtime\FeedEntity(); | |
$fe->setId($alert['id']); | |
$fe->setIsDeleted(false); | |
$alert = new transit_realtime\Alert(); | |
$tr = new transit_realtime\TimeRange(); | |
$tr->setStart($alert['start']); | |
$tr->setEnd($alert['end']); | |
$alert->addActivePeriod($tr); | |
$informedEntities = getInformedAlerts($alert['id'], $_REQUEST['filter_class'], $_REQUEST['filter_id']); | |
if (sizeof($informedEntities) > 0) { | |
$informed = Array(); | |
$es = new transit_realtime\EntitySelector(); | |
if ($informedEntity['informed_class'] == "agency") { | |
$es->setAgencyId($informedEntity['informed_id']); | |
} | |
if ($informedEntity['informed_class'] == "stop") { | |
$es->setStopId($informedEntity['informed_id']); | |
} | |
if ($informedEntity['informed_class'] == "route") { | |
$es->setRouteId($informedEntity['informed_id']); | |
} | |
if ($informedEntity['informed_class'] == "trip") { | |
$td = new transit_realtime\TripDescriptor(); | |
$td->setTripId($informedEntity['informed_id']); | |
$es->setTrip($td); | |
} | |
$alert->addInformedEntity($es); | |
} | |
$alert->setCause(constant("transit_realtime\Alert\Cause::" . $alert['cause'])); | |
$alert->setEffect(constant("transit_realtime\Alert\Effect::" . $alert['effect'])); | |
$tsUrl = new transit_realtime\TranslatedString(); | |
$tUrl = new transit_realtime\TranslatedString\Translation(); | |
$tUrl->setText($alert['url']); | |
$tUrl->setLanguage("en"); | |
$tsUrl->addTranslation($tUrl); | |
$alert->setUrl($tsUrl); | |
$tsHeaderText = new transit_realtime\TranslatedString(); | |
$tHeaderText = new transit_realtime\TranslatedString\Translation(); | |
$tHeaderText->setText($alert['header']); | |
$tHeaderText->setLanguage("en"); | |
$tsHeaderText->addTranslation($tHeaderText); | |
$alert->setHeaderText($tsHeaderText); | |
$tsDescriptionText = new transit_realtime\TranslatedString(); | |
$tDescriptionText = new transit_realtime\TranslatedString\Translation(); | |
$tDescriptionText->setText($alert['description']); | |
$tDescriptionText->setLanguage("en"); | |
$tsDescriptionText->addTranslation($tDescriptionText); | |
$alert->setDescriptionText($tsDescriptionText); | |
$fe->setAlert($alert); | |
$fm->addEntity($fe); | |
} | |
return $fm; | |
} | |
function getServiceAlertsAsArray($filter_class = "", $filter_id = "") { | |
$codec = new DrSlump\Protobuf\Codec\PhpArray(); | |
return $codec->encode(getServiceAlerts($filter_class, $filter_id)); | |
} | |
function getServiceAlertsAsBinary($filter_class = "", $filter_id = "") { | |
$codec = new DrSlump\Protobuf\Codec\Binary(); | |
return $codec->encode(getServiceAlerts($filter_class, $filter_id)); | |
} | |
function getServiceAlertsAsJSON($filter_class = "", $filter_id = "") { | |
$codec = new DrSlump\Protobuf\Codec\Json(); | |
return $codec->encode(getServiceAlerts($filter_class, $filter_id)); | |
} | |
function getServiceAlertsByClass() { | |
$return = Array(); | |
$alerts = getServiceAlertsAsArray("", ""); | |
foreach ($alerts['entities'] as $entity) { | |
foreach ($entity['informed'] as $informed) { | |
foreach ($informed as $key => $value) { | |
if (strpos("_id", $key) > 0) { | |
$parts = explode($key); | |
$class = $parts[0]; | |
$id = $value; | |
} | |
} | |
$return[$class][$id][] = $entity; | |
} | |
} | |
} | |
function getTripUpdates($filter_class = "", $filter_id = "") { | |
$fm = new transit_realtime\FeedMessage(); | |
$fh = new transit_realtime\FeedHeader(); | |
$fh->setGtfsRealtimeVersion(1); | |
$fh->setTimestamp(time()); | |
$fm->setHeader($fh); | |
foreach (getCurrentAlerts() as $alert) { | |
$informedEntities = getInformedAlerts($alert['id'], $_REQUEST['filter_class'], $_REQUEST['filter_id']); | |
$stops = Array(); | |
$routestrips = Array(); | |
if (sizeof($informedEntities) > 0) { | |
if ($informedEntity['informed_class'] == "stop" && $informed["x-action"] == "remove") { | |
$stops[] = $informedEntity['informed_id']; | |
} | |
if (($informedEntity['informed_class'] == "route" || $informedEntity['informed_class'] == "trip") && $informed["x-action"] == "patch") { | |
$routestrips[] = Array("id" => $informedEntity['informed_id'], | |
"type" => $informedEntity['informed_class']); | |
} | |
} | |
foreach ($routestrips as $routetrip) { | |
$fe = new transit_realtime\FeedEntity(); | |
$fe->setId($alert['id'] . $routetrip['id']); | |
$fe->setIsDeleted(false); | |
$tu = new transit_realtime\TripUpdate(); | |
$td = new transit_realtime\TripDescriptor(); | |
if ($routetrip['type'] == "route") { | |
$td->setRouteId($routetrip['id']); | |
} else if ($routetrip['type'] == "trip") { | |
$td->setTripId($routetrip['id']); | |
} | |
$tu->setTrip($td); | |
foreach ($stops as $stop) { | |
$stu = new transit_realtime\TripUpdate\StopTimeUpdate(); | |
$stu->setStopId($stop); | |
$stu->setScheduleRelationship(transit_realtime\TripUpdate\StopTimeUpdate\ScheduleRelationship::SKIPPED); | |
$tu->addStopTimeUpdate($stu); | |
} | |
$fe->setTripUpdate($tu); | |
$fm->addEntity($fe); | |
} | |
} | |
return $fm; | |
} | |
function getTripUpdatesAsArray($filter_class = "", $filter_id = "") { | |
$codec = new DrSlump\Protobuf\Codec\PhpArray(); | |
return $codec->encode(getTripUpdates($filter_class, $filter_id)); | |
} | |
function getTripUpdatesAsBinary($filter_class = "", $filter_id = "") { | |
$codec = new DrSlump\Protobuf\Codec\Binary(); | |
return $codec->encode(getTripUpdates($filter_class, $filter_id)); | |
} | |
function getTripUpdatesAsJSON($filter_class = "", $filter_id = "") { | |
$codec = new DrSlump\Protobuf\Codec\Json(); | |
return $codec->encode(getTripUpdates($filter_class, $filter_id)); | |
} | |
} | } |
?> | ?> |
<?php | <?php |
/* | |
* Copyright 2010,2011 Alexander Sadleir | |
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. | |
*/ | |
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; | |
$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") { | if (isDebug("awsotp") || php_uname('n') == "maxious.xen.prgmr.com") { |
$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")) error_reporting(E_ALL ^ E_NOTICE); | if (isDebug("phperror")) |
$labsPath = ""; | error_reporting(E_ALL ^ E_NOTICE); |
if (strstr($_SERVER['PHP_SELF'],"labs")) $labsPath = "../"; | $basePath = ""; |
if (strstr($_SERVER['PHP_SELF'], "labs/") | |
function isDebugServer() | || strstr($_SERVER['PHP_SELF'], "myway/") |
{ | || strstr($_SERVER['PHP_SELF'], "lib/") |
return !isset($_SERVER['SERVER_NAME']) || $_SERVER['SERVER_NAME'] == "10.0.1.154" || $_SERVER['SERVER_NAME'] == "10.1.0.4" || $_SERVER['SERVER_NAME'] == "localhost" || $_SERVER['SERVER_NAME'] == "127.0.0.1" ; | || strstr($_SERVER['PHP_SELF'], "geo/") |
|| strstr($_SERVER['PHP_SELF'], "include/") | |
|| strstr($_SERVER['PHP_SELF'], "servicealerts/")) | |
$basePath = "../"; | |
function isDebugServer() { | |
return php_sapi_name() == "cli" || isset($_SERVER['SERVER_NAME']) && ( $_SERVER['SERVER_NAME'] == "azusa" || $_SERVER['SERVER_NAME'] == "vanille" | |
|| $_SERVER['SERVER_NAME'] == "localhost" || $_SERVER['SERVER_NAME'] == "127.0.0.1"); | |
} | } |
include_once ("common-geo.inc.php"); | include_once ("common-geo.inc.php"); |
include_once ("common-net.inc.php"); | include_once ("common-net.inc.php"); |
include_once ("common-transit.inc.php"); | include_once ("common-transit.inc.php"); |
include_once ("common-db.inc.php"); | include_once ("common-db.inc.php"); |
include_once ("common-request.inc.php"); | include_once ("common-request.inc.php"); |
include_once ("common-session.inc.php"); | include_once ("common-session.inc.php"); |
include_once ("common-auth.inc.php"); | |
include_once ("common-template.inc.php"); | include_once ("common-template.inc.php"); |
function isAnalyticsOn() { | |
function isAnalyticsOn() | $user_agent = $_SERVER['HTTP_USER_AGENT']; |
{ | return !isDebugServer() && !preg_match('/cloudkick/i', $user_agent) && !preg_match('/googlebot/i', $user_agent) && |
return !isDebugServer(); | !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)) echo "\n<!-- " . date(DATE_RFC822) . "\n $msg -->\n"; | if (isDebug($debugReason)) |
} | echo "\n<!-- " . date(DATE_RFC822) . "\n $msg -->\n"; |
function isJQueryMobileDevice() | } |
{ | function isIOSDevice() { |
// http://forum.jquery.com/topic/what-is-the-best-way-to-detect-all-useragents-which-can-handle-jquery-mobile#14737000002087897 | return strstr($_SERVER['HTTP_USER_AGENT'], 'iPhone') || strstr($_SERVER['HTTP_USER_AGENT'], 'iPod') || strstr($_SERVER['HTTP_USER_AGENT'], 'iPad'); |
$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); | function isJQueryMobileDevice() { |
} | // http://forum.jquery.com/topic/what-is-the-best-way-to-detect-all-useragents-which-can-handle-jquery-mobile#14737000002087897 |
function isFastDevice() | $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); |
$ua = $_SERVER['HTTP_USER_AGENT']; | } |
$fastDevices = Array( | |
"Mozilla/5.0 (X11;", | |
"Mozilla/5.0 (Windows;", | function array_flatten($a, $f = array()) { |
"Mozilla/5.0 (iP", | if (!$a || !is_array($a)) |
"Mozilla/5.0 (Linux; U; Android", | return ''; |
"Mozilla/4.0 (compatible; MSIE" | foreach ($a as $k => $v) { |
); | if (is_array($v)) |
$slowDevices = Array( | $f = array_flatten($v, $f); |
"J2ME", | else |
"MIDP", | $f[$k] = $v; |
"Opera/", | } |
"Mozilla/2.0 (compatible;", | return $f; |
"Mozilla/3.0 (compatible;" | } |
); | |
return true; | function remove_spaces($string) { |
} | return str_replace(' ', '', $string); |
function array_flatten($a, $f = array()) | } |
{ | |
if (!$a || !is_array($a)) return ''; | function object2array($object) { |
foreach ($a as $k => $v) { | if (is_object($object)) { |
if (is_array($v)) $f = array_flatten($v, $f); | foreach ($object as $key => $value) { |
else $f[$k] = $v; | $array[$key] = $value; |
} | } |
return $f; | } else { |
} | $array = $object; |
function remove_spaces($string) | } |
{ | return $array; |
return str_replace(' ', '', $string); | } |
} | |
function object2array($object) | function startsWith($haystack, $needle, $case = true) { |
{ | if ($case) { |
if (is_object($object)) { | return (strcmp(substr($haystack, 0, strlen($needle)), $needle) === 0); |
foreach ($object as $key => $value) { | } |
$array[$key] = $value; | return (strcasecmp(substr($haystack, 0, strlen($needle)), $needle) === 0); |
} | } |
} | |
else { | function endsWith($haystack, $needle, $case = true) { |
$array = $object; | if ($case) { |
} | return (strcmp(substr($haystack, strlen($haystack) - strlen($needle)), $needle) === 0); |
return $array; | } |
} | return (strcasecmp(substr($haystack, strlen($haystack) - strlen($needle)), $needle) === 0); |
function startsWith($haystack, $needle, $case = true) | } |
{ | |
if ($case) { | function sksort(&$array, $subkey = "id", $sort_ascending = false) { |
return (strcmp(substr($haystack, 0, strlen($needle)) , $needle) === 0); | if (count($array)) |
} | $temp_array[key($array)] = array_shift($array); |
return (strcasecmp(substr($haystack, 0, strlen($needle)) , $needle) === 0); | foreach ($array as $key => $val) { |
} | $offset = 0; |
$found = false; | |
function endsWith($haystack, $needle, $case = true) | foreach ($temp_array as $tmp_key => $tmp_val) { |
{ | if (!$found and strtolower($val[$subkey]) > strtolower($tmp_val[$subkey])) { |
if ($case) { | $temp_array = array_merge((array) array_slice($temp_array, 0, $offset), array( |
return (strcmp(substr($haystack, strlen($haystack) - strlen($needle)) , $needle) === 0); | $key => $val |
} | ), array_slice($temp_array, $offset)); |
return (strcasecmp(substr($haystack, strlen($haystack) - strlen($needle)) , $needle) === 0); | $found = true; |
} | } |
function bracketsMeanNewLine($input) | $offset++; |
{ | } |
return str_replace(")", "</small>", str_replace("(", "<br><small>", $input)); | if (!$found) |
} | $temp_array = array_merge($temp_array, array( |
function sksort(&$array, $subkey = "id", $sort_ascending = false) | $key => $val |
{ | )); |
if (count($array)) $temp_array[key($array) ] = array_shift($array); | } |
foreach ($array as $key => $val) { | if ($sort_ascending) |
$offset = 0; | $array = array_reverse($temp_array); |
$found = false; | else |
foreach ($temp_array as $tmp_key => $tmp_val) { | $array = $temp_array; |
if (!$found and strtolower($val[$subkey]) > strtolower($tmp_val[$subkey])) { | } |
$temp_array = array_merge((array)array_slice($temp_array, 0, $offset) , array( | |
$key => $val | function sktimesort(&$array, $subkey = "id", $sort_ascending = false) { |
) , array_slice($temp_array, $offset)); | if (count($array)) |
$found = true; | $temp_array[key($array)] = array_shift($array); |
} | foreach ($array as $key => $val) { |
$offset++; | $offset = 0; |
} | $found = false; |
if (!$found) $temp_array = array_merge($temp_array, array( | foreach ($temp_array as $tmp_key => $tmp_val) { |
$key => $val | if (!$found and strtotime($val[$subkey]) > strtotime($tmp_val[$subkey])) { |
)); | $temp_array = array_merge((array) array_slice($temp_array, 0, $offset), array( |
} | $key => $val |
if ($sort_ascending) $array = array_reverse($temp_array); | ), array_slice($temp_array, $offset)); |
else $array = $temp_array; | $found = true; |
} | } |
function sktimesort(&$array, $subkey = "id", $sort_ascending = false) | $offset++; |
{ | } |
if (count($array)) $temp_array[key($array) ] = array_shift($array); | if (!$found) |
foreach ($array as $key => $val) { | $temp_array = array_merge($temp_array, array( |
$offset = 0; | $key => $val |
$found = false; | )); |
foreach ($temp_array as $tmp_key => $tmp_val) { | } |
if (!$found and strtotime($val[$subkey]) > strtotime($tmp_val[$subkey])) { | if ($sort_ascending && isset($temp_array)) |
$temp_array = array_merge((array)array_slice($temp_array, 0, $offset) , array( | $array = array_reverse($temp_array); |
$key => $val | else |
) , array_slice($temp_array, $offset)); | $array = $temp_array; |
$found = true; | } |
} | |
$offset++; | function r_implode($glue, $pieces) { |
} | foreach ($pieces as $r_pieces) { |
if (!$found) $temp_array = array_merge($temp_array, array( | if (is_array($r_pieces)) { |
$key => $val | $retVal[] = r_implode($glue, $r_pieces); |
)); | } else { |
} | $retVal[] = $r_pieces; |
if ($sort_ascending && isset($temp_array)) $array = array_reverse($temp_array); | } |
else $array = $temp_array; | } |
} | return implode($glue, $retVal); |
function r_implode( $glue, $pieces ) | } |
{ | |
foreach( $pieces as $r_pieces ) | |
{ | |
if( is_array( $r_pieces ) ) | |
{ | |
$retVal[] = r_implode( $glue, $r_pieces ); | |
} | |
else | |
{ | |
$retVal[] = $r_pieces; | |
} | |
} | |
return implode( $glue, $retVal ); | |
} | |
?> | ?> |
<?php | <?php |
function getRoute($routeID) | |
{ | /* |
global $conn; | * Copyright 2010,2011 Alexander Sadleir |
$query = "Select * from routes where route_id = :routeID LIMIT 1"; | |
debug($query, "database"); | Licensed under the Apache License, Version 2.0 (the "License"); |
$query = $conn->prepare($query); | you may not use this file except in compliance with the License. |
$query->bindParam(":routeID", $routeID); | You may obtain a copy of the License at |
$query->execute(); | |
if (!$query) { | http://www.apache.org/licenses/LICENSE-2.0 |
databaseError($conn->errorInfo()); | |
return Array(); | Unless required by applicable law or agreed to in writing, software |
} | distributed under the License is distributed on an "AS IS" BASIS, |
return $query->fetch(PDO::FETCH_ASSOC); | 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. | |
function getRouteByFullName($routeFullName) | */ |
{ | |
global $conn; | function getRoute($routeID) { |
$query = "Select * from routes where route_short_name||route_long_name = :routeFullName LIMIT 1"; | global $conn; |
debug($query, "database"); | $query = "Select * from routes where route_id = :routeID LIMIT 1"; |
$query = $conn->prepare($query); | debug($query, "database"); |
$query->bindParam(":routeFullName", $routeFullName); | $query = $conn->prepare($query); |
$query->execute(); | $query->bindParam(":routeID", $routeID); |
if (!$query) { | $query->execute(); |
databaseError($conn->errorInfo()); | if (!$query) { |
return Array(); | databaseError($conn->errorInfo()); |
} | return Array(); |
return $query->fetch(PDO::FETCH_ASSOC); | } |
} | return $query->fetch(PDO :: FETCH_ASSOC); |
} | |
function getRoutes() | |
{ | function getRouteByFullName($routeFullName) { |
global $conn; | global $conn; |
$query = "Select * from routes order by route_short_name;"; | $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->execute(); | $query->bindParam(":routeFullName", $routeFullName); |
if (!$query) { | $query->execute(); |
databaseError($conn->errorInfo()); | if (!$query) { |
return Array(); | databaseError($conn->errorInfo()); |
} | return Array(); |
return $query->fetchAll(); | } |
} | return $query->fetch(PDO :: FETCH_ASSOC); |
function getRoutesByNumber($routeNumber = "") | } |
{ | |
global $conn; | function getRoutes() { |
if ($routeNumber != "") { | global $conn; |
$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 * from routes order by route_short_name;"; |
debug($query, "database"); | |
$query = $conn->prepare($query); | |
$query->execute(); | |
if (!$query) { | |
databaseError($conn->errorInfo()); | |
return Array(); | |
} | |
return $query->fetchAll(); | |
} | |
function getRoutesByNumber($routeNumber = "") { | |
global $conn; | |
if ($routeNumber != "") { | |
$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 | routes.route_id join stop_times on stop_times.trip_id = trips.trip_id |
where route_short_name = :routeNumber OR route_short_name LIKE :routeNumber2 order by route_short_name;"; | where route_short_name = :routeNumber OR route_short_name LIKE :routeNumber2 order by route_short_name;"; |
} | } else { |
else { | $query = "SELECT DISTINCT route_short_name from routes order by route_short_name"; |
$query = "SELECT DISTINCT route_short_name from routes order by route_short_name"; | } |
} | debug($query, "database"); |
debug($query, "database"); | $query = $conn->prepare($query); |
$query = $conn->prepare($query); | if ($routeNumber != "") { |
if ($routeNumber != "") { | $query->bindParam(":routeNumber", $routeNumber); |
$query->bindParam(":routeNumber", $routeNumber); | $routeNumber2 = "% " . $routeNumber; |
$routeNumber2 = "% ".$routeNumber; | $query->bindParam(":routeNumber2", $routeNumber2); |
$query->bindParam(":routeNumber2", $routeNumber2); | } |
} | $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 getRoutesByNumber($routeNumberSeries); |
return getRoutesByNumber($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) | |
{ | function getRouteNextTrip($routeID) { |
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 | join stop_times on stop_times.trip_id = trips.trip_id where |
arrival_time > :currentTime and routes.route_id = :routeID order by | arrival_time > :currentTime and routes.route_id = :routeID 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()); |
$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(); |
} | } |
$r = $query->fetch(PDO::FETCH_ASSOC); | $r = $query->fetch(PDO :: FETCH_ASSOC); |
// past last trip of the day special case | // past last trip of the day special case |
if (sizeof($r) < 16) { | if (sizeof($r) < 16) { |
$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 order by | join stop_times on stop_times.trip_id = trips.trip_id where routes.route_id = :routeID 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->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 getTimeInterpolatedRouteAtStop($routeID, $stop_id) | |
{ | function getRouteAtStop($routeID, $stop_id) { |
$nextTrip = getRouteNextTrip($routeID); | $nextTrip = getRouteNextTrip($routeID); |
if ($nextTrip['trip_id']) { | if ($nextTrip['trip_id']) { |
foreach (getTimeInterpolatedTrip($nextTrip['trip_id']) as $tripStop) { | foreach (getTripStopTimes($nextTrip['trip_id']) as $tripStop) { |
if ($tripStop['stop_id'] == $stop_id) return $tripStop; | if ($tripStop['stop_id'] == $stop_id) |
} | return $tripStop; |
} | } |
return Array(); | } |
} | return Array(); |
function getRouteTrips($routeID) | } |
{ | |
global $conn; | function getRouteTrips($routeID) { |
$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 | global $conn; |
$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 routes.route_id = :routeID and stop_sequence = '1' order by | join stop_times on stop_times.trip_id = trips.trip_id where routes.route_id = :routeID 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->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 == "") $service_period = service_period(); | if ($service_period == "") |
if ($destination != "") { | $service_period = service_period(); |
$query = "SELECT DISTINCT trips.route_id,route_short_name,route_long_name, service_id | if ($destination != "") { |
$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_period order by route_short_name"; | WHERE route_long_name = :destination AND service_id=:service_period order by route_short_name"; |
} | } else { |
else { | $query = "SELECT DISTINCT route_long_name |
$query = "SELECT DISTINCT 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 | stop_times.trip_id join routes on trips.route_id = routes.route_id |
WHERE service_id= :service_period order by route_long_name"; | WHERE service_id= :service_period order by route_long_name"; |
} | } |
debug($query, "database"); | debug($query, "database"); |
$query = $conn->prepare($query); | $query = $conn->prepare($query); |
$query->bindParam(":service_period", $service_period); | $query->bindParam(":service_period", $service_period); |
if ($destination != "") $query->bindParam(":destination", $destination); | if ($destination != "") |
$query->execute(); | $query->bindParam(":destination", $destination); |
if (!$query) { | $query->execute(); |
databaseError($conn->errorInfo()); | if (!$query) { |
return Array(); | databaseError($conn->errorInfo()); |
} | return Array(); |
return $query->fetchAll(); | } |
} | return $query->fetchAll(); |
function getRoutesBySuburb($suburb, $service_period = "") | } |
{ | |
if ($service_period == "") $service_period = service_period(); | function getRoutesBySuburb($suburb, $service_period = "") { |
global $conn; | if ($service_period == "") |
$query = "SELECT DISTINCT service_id,trips.route_id,route_short_name,route_long_name | $service_period = service_period(); |
global $conn; | |
$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 zone_id LIKE ':suburb AND service_id=:service_period ORDER BY route_short_name"; | WHERE zone_id LIKE ':suburb AND service_id=:service_period ORDER BY route_short_name"; |
debug($query, "database"); | debug($query, "database"); |
$query = $conn->prepare($query); | $query = $conn->prepare($query); |
$query->bindParam(":service_period", $service_period); | $query->bindParam(":service_period", $service_period); |
$suburb = "%" . $suburb . ";%"; | $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 getRoutesNearby($lat, $lng, $limit = "", $distance = 500) | |
{ | function getRoutesNearby($lat, $lng, $limit = "", $distance = 500) { |
if ($service_period == "") $service_period = service_period(); | if ($service_period == "") |
if ($limit != "") $limitSQL = " LIMIT :limit "; | $service_period = service_period(); |
global $conn; | $service_ids = service_ids($service_period); |
$query = "SELECT service_id,trips.route_id,route_short_name,route_long_name,min(stops.stop_id) as stop_id, | $sidA = $service_ids[0]; |
$sidB = $service_ids[1]; | |
if ($limit != "") | |
$limitSQL = " LIMIT :limit "; | |
global $conn; | |
$query = "SELECT service_id,trips.route_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_period | 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,route_short_name,route_long_name | group by service_id,trips.route_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_period", $service_period); | $query->bindParam(":service_periodA", $sidA); |
$query->bindParam(":distance", $distance); | $query->bindParam(":service_periodB", $sidB); |
if ($limit != "") $query->bindParam(":limit", $limit); | $query->bindParam(":distance", $distance); |
$query->execute(); | if ($limit != "") |
if (!$query) { | $query->bindParam(":limit", $limit); |
databaseError($conn->errorInfo()); | $query->execute(); |
return Array(); | if (!$query) { |
} | databaseError($conn->errorInfo()); |
return $query->fetchAll(); | return Array(); |
} | } |
return $query->fetchAll(); | |
} | |
?> | ?> |
<?php | <?php |
function getServiceOverride($date="") { | |
global $conn; | /* |
$query = "Select * from calendar_dates where date = :date and exception_type = '1' LIMIT 1"; | * Copyright 2010,2011 Alexander Sadleir |
debug($query,"database"); | |
$query = $conn->prepare($query); // Create a prepared statement | Licensed under the Apache License, Version 2.0 (the "License"); |
$query->bindParam(":date", date("Ymd",($date != "" ? $date : time()))); | you may not use this file except in compliance with the License. |
$query->execute(); | You may obtain a copy of the License at |
if (!$query) { | |
databaseError($conn->errorInfo()); | http://www.apache.org/licenses/LICENSE-2.0 |
return Array(); | |
} | Unless required by applicable law or agreed to in writing, software |
return $query->fetch(PDO::FETCH_ASSOC); | 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. | |
*/ | |
function getServiceOverride($date = "") { | |
global $conn; | |
$query = "Select * from calendar_dates where date = :date and exception_type = '1' LIMIT 1"; | |
// debug($query,"database"); | |
$query = $conn->prepare($query); // Create a prepared statement | |
$query->bindParam(":date", date("Ymd", ($date != "" ? $date : time()))); | |
$query->execute(); | |
if (!$query) { | |
databaseError($conn->errorInfo()); | |
return Array(); | |
} | |
return $query->fetch(PDO :: FETCH_ASSOC); | |
} | } |
function getServiceAlert($alertID) { | |
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"; | |
debug($query, "database"); | |
$query = $conn->prepare($query); | |
$query->bindParam(":servicealert_id", $alertID); | |
$query->execute(); | |
if (!$query) { | |
databaseError($conn->errorInfo()); | |
return Array(); | |
} | |
return $query->fetch(PDO :: FETCH_ASSOC); | |
} | |
function updateServiceAlert($alertID, $start, $end, $header, $description, $url) { | |
global $conn; | |
$query = 'update servicealerts_alerts set start=:start, "end"=:end, header=:header, description=:description, url=:url where id = :servicealert_id'; | |
debug($query, "database"); | |
$query = $conn->prepare($query); | |
$query->bindParam(":servicealert_id", $alertID); | |
$query->bindParam(":start", $start); | |
$query->bindParam(":end", $end); | |
$query->bindParam(":header", $header); | |
$query->bindParam(":description", $description); | |
$query->bindParam(":url", $url); | |
$query->execute(); | |
print_r($conn->errorInfo()); | |
if (!$query) { | |
databaseError($conn->errorInfo()); | |
return Array(); | |
} | |
return $query->fetch(PDO :: FETCH_ASSOC); | |
} | |
function addServiceAlert($start, $end, $header, $description, $url) { | |
global $conn; | |
$query = 'INSERT INTO servicealerts_alerts (start, "end", header, description, url) VALUES (:start, :end, :header, :description, :url) '; | |
debug($query, "database"); | |
$query = $conn->prepare($query); | |
$query->bindParam(":start", $start); | |
$query->bindParam(":end", $end); | |
$query->bindParam(":header", $header); | |
$query->bindParam(":description", $description); | |
$query->bindParam(":url", $url); | |
$query->execute(); | |
print_r($conn->errorInfo()); | |
if (!$query) { | |
databaseError($conn->errorInfo()); | |
return Array(); | |
} | |
return $query->fetch(PDO :: FETCH_ASSOC); | |
} | |
function getCurrentAlerts() { | |
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\""; | |
// debug($query, "database"); | |
$query = $conn->prepare($query); | |
$query->execute(); | |
if (!$query) { | |
databaseError($conn->errorInfo()); | |
return Array(); | |
} | |
return $query->fetchAll(); | |
} | |
function getFutureAlerts() { | |
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\""; | |
// debug($query, "database"); | |
$query = $conn->prepare($query); | |
$query->execute(); | |
if (!$query) { | |
databaseError($conn->errorInfo()); | |
return Array(); | |
} | |
return $query->fetchAll(); | |
} | |
function getInformedAlerts($id, $filter_class, $filter_id) { | |
global $conn; | |
$query = "SELECT * from servicealerts_informed where servicealert_id = :servicealert_id"; | |
if ($filter_class != "") { | |
$query .= " AND informed_class = :informed_class "; | |
} | |
if ($filter_id != "") { | |
$query .= " AND informed_id = :informed_id "; | |
} | |
// debug($query, "database"); | |
$query = $conn->prepare($query); | |
if ($filter_class != "") { | |
$query->bindParam(":informed_class", $filter_class); | |
} | |
if ($filter_id != "") { | |
$query->bindParam(":informed_id", $filter_id); | |
} | |
$query->bindParam(":servicealert_id", $id); | |
$query->execute(); | |
if (!$query) { | |
databaseError($conn->errorInfo()); | |
return Array(); | |
} | |
return $query->fetchAll(); | |
} | |
function deleteInformedAlert($serviceAlertID, $class, $id) { | |
global $conn; | |
$query = 'DELETE from servicealerts_informed where servicealert_id = :servicealert_id and informed_class = :informed_class AND informed_id = :informed_id'; | |
debug($query, "database"); | |
$query = $conn->prepare($query); | |
$query->bindParam(":servicealert_id", $serviceAlertID); | |
$query->bindParam(":informed_class", $class); | |
$query->bindParam(":informed_id", $id); | |
$query->execute(); | |
print_r($conn->errorInfo()); | |
if (!$query) { | |
databaseError($conn->errorInfo()); | |
return Array(); | |
} | |
return null; | |
} | |
function addInformedAlert($serviceAlertID, $class, $id, $action) { | |
global $conn; | |
$query = 'INSERT INTO servicealerts_informed (servicealert_id , informed_class , informed_id) VALUES(:servicealert_id ,:informed_class, :informed_id)'; | |
debug($query, "database"); | |
$query = $conn->prepare($query); | |
$query->bindParam(":servicealert_id", $serviceAlertID); | |
$query->bindParam(":informed_class", $class); | |
$query->bindParam(":informed_id", $id); | |
$query->execute(); | |
print_r($conn->errorInfo()); | |
if (!$query) { | |
databaseError($conn->errorInfo()); | |
return Array(); | |
} | |
return null; | |
} | |
?> | ?> |
<?php | <?php |
function getStop($stopID) | |
{ | /* |
global $conn; | * Copyright 2010,2011 Alexander Sadleir |
$query = "Select * from stops where stop_id = :stopID LIMIT 1"; | |
debug($query, "database"); | Licensed under the Apache License, Version 2.0 (the "License"); |
$query = $conn->prepare($query); | you may not use this file except in compliance with the License. |
$query->bindParam(":stopID", $stopID); | You may obtain a copy of the License at |
$query->execute(); | |
if (!$query) { | http://www.apache.org/licenses/LICENSE-2.0 |
databaseError($conn->errorInfo()); | |
return Array(); | Unless required by applicable law or agreed to in writing, software |
} | distributed under the License is distributed on an "AS IS" BASIS, |
return $query->fetch(PDO::FETCH_ASSOC); | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
} | See the License for the specific language governing permissions and |
function getStops($timingPointsOnly = false, $firstLetter = "", $startsWith = "") | limitations under the License. |
{ | */ |
global $conn; | |
$conditions = Array(); | function getStop($stopID) { |
if ($timingPointsOnly) $conditions[] = "substr(stop_code,1,2) != 'Wj'"; | global $conn; |
if ($firstLetter != "") $conditions[] = "substr(stop_name,1,1) = :firstLetter"; | $query = "Select * from stops where stop_id = :stopID LIMIT 1"; |
if ($startsWith != "") $conditions[] = "stop_name like :startsWith"; | debug($query, "database"); |
$query = "Select * from stops"; | $query = $conn->prepare($query); |
if (sizeof($conditions) > 0) { | $query->bindParam(":stopID", $stopID); |
if (sizeof($conditions) > 1) { | $query->execute(); |
$query.= " Where " . implode(" AND ", $conditions) . " "; | if (!$query) { |
} | databaseError($conn->errorInfo()); |
else { | return Array(); |
$query.= " Where " . $conditions[0] . " "; | } |
} | return $query->fetch(PDO :: FETCH_ASSOC); |
} | } |
$query.= " order by stop_name;"; | |
$query = $conn->prepare($query); | function getStops($firstLetter = "", $startsWith = "") { |
if ($firstLetter != "") $query->bindParam(":firstLetter", $firstLetter); | global $conn; |
$conditions = Array(); | |
if ($startsWith != "") { | if ($firstLetter != "") |
$startsWith = $startsWith."%"; | $conditions[] = "substr(stop_name,1,1) = :firstLetter"; |
$query->bindParam(":startsWith", $startsWith); | if ($startsWith != "") |
$conditions[] = "stop_name like :startsWith"; | |
$query = "Select * from stops"; | |
if (sizeof($conditions) > 0) { | |
if (sizeof($conditions) > 1) { | |
$query .= " Where " . implode(" AND ", $conditions) . " "; | |
} else { | |
$query .= " Where " . $conditions[0] . " "; | |
} | } |
$query->execute(); | } |
if (!$query) { | $query .= " order by stop_name;"; |
databaseError($conn->errorInfo()); | debug($query,"database"); |
return Array(); | $query = $conn->prepare($query); |
} | if ($firstLetter != "") |
return $query->fetchAll(); | $query->bindParam(":firstLetter", $firstLetter); |
} | |
function getNearbyStops($lat, $lng, $limit = "", $distance = 1000) | if ($startsWith != "") { |
{ | $startsWith = $startsWith . "%"; |
if ($lat == null || $lng == null) return Array(); | $query->bindParam(":startsWith", $startsWith); |
if ($limit != "") $limitSQL = " LIMIT :limit "; | } |
global $conn; | $query->execute(); |
$query = "Select *, ST_Distance(position, ST_GeographyFromText('SRID=4326;POINT($lng $lat)'), FALSE) as distance | if (!$query) { |
databaseError($conn->errorInfo()); | |
return Array(); | |
} | |
return $query->fetchAll(); | |
} | |
function getNearbyStops($lat, $lng, $limit = "", $distance = 1000) { | |
if ($lat == null || $lng == null) | |
return Array(); | |
if ($limit != "") | |
$limitSQL = " LIMIT :limit "; | |
global $conn; | |
$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 getStopsBySuburb($suburb) | |
{ | function getStopsByName($name) { |
global $conn; | global $conn; |
$query = "Select * from stops where zone_id LIKE :suburb order by stop_name;"; | $query = "Select * from stops where stop_name LIKE :name;"; |
debug($query, "database"); | debug($query, "database"); |
$query = $conn->prepare($query); | $query = $conn->prepare($query); |
$suburb = "%" . $suburb . ";%"; | $name = "%" . $name . ";%"; |
$query->bindParam(":suburb", $suburb); | $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 getStopsByStopCode($stop_code,$startsWith = "") | |
{ | function getStopsBySuburb($suburb) { |
global $conn; | global $conn; |
$query = "Select * from stops where (stop_code = :stop_code OR stop_code LIKE :stop_code2)"; | $query = "Select * from stops where zone_id LIKE :suburb order by stop_name;"; |
if ($startsWith != "") $query .= " AND stop_name like :startsWith"; | debug($query, "database"); |
$query = $conn->prepare($query); | |
debug($query, "database"); | $suburb = "%" . $suburb . ";%"; |
$query = $conn->prepare($query); | $query->bindParam(":suburb", $suburb); |
$query->execute(); | |
$query->bindParam(":stop_code", $stop_code); | if (!$query) { |
$stop_code2 = $stop_code . "%"; | databaseError($conn->errorInfo()); |
$query->bindParam(":stop_code2", $stop_code2); | return Array(); |
if ($startsWith != "") { | } |
$startsWith = $startsWith."%"; | return $query->fetchAll(); |
$query->bindParam(":startsWith", $startsWith); | } |
} | |
$query->execute(); | function getStopsByStopCode($stop_code, $startsWith = "") { |
if (!$query) { | global $conn; |
databaseError($conn->errorInfo()); | $query = "Select * from stops where (stop_code = :stop_code OR stop_code LIKE :stop_code2)"; |
return Array(); | if ($startsWith != "") |
} | $query .= " AND stop_name like :startsWith"; |
return $query->fetchAll(); | |
} | debug($query, "database"); |
function getStopRoutes($stopID, $service_period) | $query = $conn->prepare($query); |
{ | |
if ($service_period == "") $service_period = service_period(); | $query->bindParam(":stop_code", $stop_code); |
global $conn; | $stop_code2 = $stop_code . "%"; |
$query = "SELECT distinct service_id,trips.route_id,route_short_name,route_long_name | $query->bindParam(":stop_code2", $stop_code2); |
if ($startsWith != "") { | |
$startsWith = $startsWith . "%"; | |
$query->bindParam(":startsWith", $startsWith); | |
} | |
$query->execute(); | |
if (!$query) { | |
databaseError($conn->errorInfo()); | |
return Array(); | |
} | |
return $query->fetchAll(); | |
} | |
function getStopRoutes($stopID, $service_period) { | |
if ($service_period == "") | |
$service_period = service_period(); | |
$service_ids = service_ids($service_period); | |
$sidA = $service_ids[0]; | |
$sidB = $service_ids[1]; | |
global $conn; | |
$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 AND service_id=:service_period"; | stop_times.trip_id join routes on trips.route_id = routes.route_id WHERE stop_id = :stopID |
debug($query, "database"); | AND (service_id=:service_periodA OR service_id=:service_periodB)"; |
$query = $conn->prepare($query); | debug($query, "database"); |
$query->bindParam(":service_period", $service_period); | $query = $conn->prepare($query); |
$query->bindParam(":stopID", $stopID); | $query->bindParam(":service_periodA", $sidA); |
$query->execute(); | $query->bindParam(":service_periodB", $sidB); |
if (!$query) { | $query->bindParam(":stopID", $stopID); |
databaseError($conn->errorInfo()); | $query->execute(); |
return Array(); | if (!$query) { |
} | databaseError($conn->errorInfo()); |
return $query->fetchAll(); | return Array(); |
} | } |
function getStopTrips($stopID, $service_period = "", $afterTime = "", $limit = "") | return $query->fetchAll(); |
{ | } |
if ($service_period == "") $service_period = service_period(); | |
if ($limit != "") $limitSQL = " LIMIT :limit "; | function getStopTrips($stopID, $service_period = "", $afterTime = "", $limit = "") { |
global $conn; | if ($service_period == "") |
if ($afterTime != "") { | $service_period = service_period(); |
$query = " SELECT stop_times.trip_id,stop_times.arrival_time,stop_times.stop_id,stop_sequence,service_id,trips.route_id,route_short_name,route_long_name, end_times.arrival_time as end_time | $service_ids = service_ids($service_period); |
$sidA = $service_ids[0]; | |
$sidB = $service_ids[1]; | |
if ($limit != "") | |
$limitSQL = " LIMIT :limit "; | |
global $conn; | |
if ($afterTime != "") { | |
$query = " SELECT stop_times.trip_id,stop_times.arrival_time,stop_times.stop_id,stop_sequence,service_id,trips.route_id,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_period | AND (service_id=:service_periodA OR service_id=:service_periodB) |
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_period | AND (service_id=:service_periodA OR service_id=:service_periodB) |
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_period", $service_period); | $query->bindParam(":service_periodA", $sidA); |
$query->bindParam(":stopID", $stopID); | $query->bindParam(":service_periodB", $sidB); |
if ($limit != "") $query->bindParam(":limit", $limit); | $query->bindParam(":stopID", $stopID); |
if ($afterTime != "") $query->bindParam(":afterTime", $afterTime); | if ($limit != "") |
$query->execute(); | $query->bindParam(":limit", $limit); |
if (!$query) { | if ($afterTime != "") |
databaseError($conn->errorInfo()); | $query->bindParam(":afterTime", $afterTime); |
return Array(); | $query->execute(); |
} | if (!$query) { |
return $query->fetchAll(); | databaseError($conn->errorInfo()); |
} | return Array(); |
function getStopTripsWithTimes($stopID, $time = "", $service_period = "", $time_range = "", $limit = "") | } |
{ | return $query->fetchAll(); |
if ($service_period == "") $service_period = service_period(); | } |
if ($time_range == "") $time_range = (24 * 60 * 60); | |
if ($time == "") $time = current_time(); | function getStopTripsWithTimes($stopID, $time = "", $service_period = "", $time_range = "", $limit = "") { |
if ($limit == "") $limit = 10; | if ($service_period == "") |
$trips = getStopTrips($stopID, $service_period, $time); | $service_period = service_period(); |
$timedTrips = Array(); | if ($time_range == "") |
if ($trips && sizeof($trips) > 0) { | $time_range = (24 * 60 * 60); |
foreach ($trips as $trip) { | if ($time == "") |
if ($trip['arrival_time'] != "") { | $time = current_time(); |
if (strtotime($trip['arrival_time']) > strtotime($time) and strtotime($trip['arrival_time']) < (strtotime($time) + $time_range)) { | if ($limit == "") |
$timedTrips[] = $trip; | $limit = 10; |
} | $trips = getStopTrips($stopID, $service_period, $time); |
} | $timedTrips = Array(); |
else { | if ($trips && sizeof($trips) > 0) { |
$timedTrip = getTimeInterpolatedTripAtStop($trip['trip_id'], $trip['stop_sequence']); | foreach ($trips as $trip) { |
if ($timedTrip['arrival_time'] > $time and strtotime($timedTrip['arrival_time']) < (strtotime($time) + $time_range)) { | if ($trip['arrival_time'] != "") { |
$timedTrips[] = $timedTrip; | if (strtotime($trip['arrival_time']) > strtotime($time) and strtotime($trip['arrival_time']) < (strtotime($time) + $time_range)) { |
} | $timedTrips[] = $trip; |
} | } |
if (sizeof($timedTrips) > $limit) break; | } else { |
} | $timedTrip = getTripAtStop($trip['trip_id'], $trip['stop_sequence']); |
sktimesort($timedTrips, "arrival_time", true); | if ($timedTrip['arrival_time'] > $time and strtotime($timedTrip['arrival_time']) < (strtotime($time) + $time_range)) { |
$timedTrips[] = $timedTrip; | |
} | |
} | |
if (sizeof($timedTrips) > $limit) | |
break; | |
} | } |
return $timedTrips; | sktimesort($timedTrips, "arrival_time", true); |
} | } |
return $timedTrips; | |
} | |
?> | ?> |
<?php | <?php |
function getTrip($tripID) | |
{ | /* |
global $conn; | * Copyright 2010,2011 Alexander Sadleir |
$query = "Select * from trips | |
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. | |
*/ | |
function getTrip($tripID) { | |
global $conn; | |
$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 getTripShape($tripID) | |
{ | function getTripShape($tripID) { |
global $conn; | // todo, use shapes table if shape_id specified |
$query = "SELECT ST_AsKML(ST_MakeLine(geometry(a.position))) as the_route | global $conn; |
$query = "SELECT ST_AsKML(ST_MakeLine(geometry(a.position))) as the_route | |
FROM (SELECT position, | FROM (SELECT position, |
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) as a group by a.trip_id"; | WHERE trips.trip_id = :tripID ORDER BY stop_sequence) as a group by a.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(); |
} | } |
return $query->fetchColumn(0); | return $query->fetchColumn(0); |
} | } |
function getTimeInterpolatedTrip($tripID, $range = "") | |
{ | function getTripStopTimes($tripID) { |
global $conn; | global $conn; |
$query = "SELECT stop_times.trip_id,arrival_time,stop_times.stop_id,stop_lat,stop_lon,stop_name,stop_code, | $query = "SELECT stop_times.trip_id,arrival_time,stop_times.stop_id,stop_lat,stop_lon,stop_name,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 $range ORDER BY stop_sequence"; | WHERE trips.trip_id = :tripID $range 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(); |
$cur_timepoint = Array(); | return $stopTimes; |
$next_timepoint = Array(); | } |
$distance_between_timepoints = 0.0; | |
$distance_traveled_between_timepoints = 0.0; | function getTripAtStop($tripID, $stop_sequence) { |
$rv = Array(); | global $conn; |
foreach ($stopTimes as $i => $stopTime) { | foreach (getTripStopTimes($tripID) as $tripStop) { |
if ($stopTime['arrival_time'] != "") { | if ($tripStop['stop_sequence'] == $stop_sequence) |
// is timepoint | return $tripStop; |
$cur_timepoint = $stopTime; | } |
$distance_between_timepoints = 0.0; | return Array(); |
$distance_traveled_between_timepoints = 0.0; | } |
if ($i + 1 < sizeof($stopTimes)) { | |
$k = $i + 1; | /* DEPRECIATED |
$distance_between_timepoints+= distance($stopTimes[$k - 1]["stop_lat"], $stopTimes[$k - 1]["stop_lon"], $stopTimes[$k]["stop_lat"], $stopTimes[$k]["stop_lon"]); | function getTimeInterpolatedTrip($tripID, $range = "") { |
while ($stopTimes[$k]["arrival_time"] == "" && $k + 1 < sizeof($stopTimes)) { | global $conn; |
$k+= 1; | $query = "SELECT stop_times.trip_id,arrival_time,stop_times.stop_id,stop_lat,stop_lon,stop_name,stop_code, |
//echo "k".$k; | stop_sequence,service_id,trips.route_id,route_short_name,route_long_name |
$distance_between_timepoints+= distance($stopTimes[$k - 1]["stop_lat"], $stopTimes[$k - 1]["stop_lon"], $stopTimes[$k]["stop_lat"], $stopTimes[$k]["stop_lon"]); | FROM stop_times |
} | join trips on trips.trip_id = stop_times.trip_id |
$next_timepoint = $stopTimes[$k]; | join routes on trips.route_id = routes.route_id |
join stops on stops.stop_id = stop_times.stop_id | |
} | WHERE trips.trip_id = :tripID $range ORDER BY stop_sequence"; |
$rv[] = $stopTime; | debug($query, "database"); |
} | $query = $conn->prepare($query); |
else { | $query->bindParam(":tripID", $tripID); |
// is untimed point | $query->execute(); |
//echo "i".$i; | if (!$query) { |
$distance_traveled_between_timepoints+= distance($stopTimes[$i - 1]["stop_lat"], $stopTimes[$i - 1]["stop_lon"], $stopTimes[$i]["stop_lat"], $stopTimes[$i]["stop_lon"]); | databaseError($conn->errorInfo()); |
//echo "$distance_traveled_between_timepoints / $distance_between_timepoints<br>"; | return Array(); |
$distance_percent = $distance_traveled_between_timepoints / $distance_between_timepoints; | } |
if ($next_timepoint["arrival_time"] != "") { | $stopTimes = $query->fetchAll(); |
$total_time = strtotime($next_timepoint["arrival_time"]) - strtotime($cur_timepoint["arrival_time"]); | $cur_timepoint = Array(); |
//echo strtotime($next_timepoint["arrival_time"])." - ".strtotime($cur_timepoint["arrival_time"])."<br>"; | $next_timepoint = Array(); |
$time_estimate = ($distance_percent * $total_time) + strtotime($cur_timepoint["arrival_time"]); | $distance_between_timepoints = 0.0; |
$stopTime["arrival_time"] = date("H:i:s", $time_estimate); | $distance_traveled_between_timepoints = 0.0; |
} | $rv = Array(); |
else { | foreach ($stopTimes as $i => $stopTime) { |
$stopTime["arrival_time"] = $cur_timepoint["arrival_time"]; | if ($stopTime['arrival_time'] != "") { |
} | // is timepoint |
$rv[] = $stopTime; | $cur_timepoint = $stopTime; |
$distance_between_timepoints = 0.0; | |
$distance_traveled_between_timepoints = 0.0; | |
} | if ($i + 1 < sizeof($stopTimes)) { |
} | $k = $i + 1; |
//var_dump($rv); | $distance_between_timepoints += distance($stopTimes[$k - 1]["stop_lat"], $stopTimes[$k - 1]["stop_lon"], $stopTimes[$k]["stop_lat"], $stopTimes[$k]["stop_lon"]); |
return $rv; | while ($stopTimes[$k]["arrival_time"] == "" && $k + 1 < sizeof($stopTimes)) { |
} | $k += 1; |
function getTripPreviousTimePoint($tripID, $stop_sequence) | // echo "k".$k; |
{ | $distance_between_timepoints += distance($stopTimes[$k - 1]["stop_lat"], $stopTimes[$k - 1]["stop_lon"], $stopTimes[$k]["stop_lat"], $stopTimes[$k]["stop_lon"]); |
global $conn; | } |
$query = " SELECT trip_id,stop_id, | $next_timepoint = $stopTimes[$k]; |
stop_sequence | } |
FROM stop_times | $rv[] = $stopTime; |
WHERE trip_id = :tripID and stop_sequence < :stop_sequence | } else { |
and stop_times.arrival_time IS NOT NULL ORDER BY stop_sequence DESC LIMIT 1"; | // is untimed point |
debug($query, "database"); | // echo "i".$i; |
$query = $conn->prepare($query); | $distance_traveled_between_timepoints += distance($stopTimes[$i - 1]["stop_lat"], $stopTimes[$i - 1]["stop_lon"], $stopTimes[$i]["stop_lat"], $stopTimes[$i]["stop_lon"]); |
$query->bindParam(":tripID", $tripID); | // echo "$distance_traveled_between_timepoints / $distance_between_timepoints<br>"; |
$query->bindParam(":stop_sequence", $stop_sequence); | $distance_percent = $distance_traveled_between_timepoints / $distance_between_timepoints; |
$query->execute(); | if ($next_timepoint["arrival_time"] != "") { |
if (!$query) { | $total_time = strtotime($next_timepoint["arrival_time"]) - strtotime($cur_timepoint["arrival_time"]); |
databaseError($conn->errorInfo()); | // echo strtotime($next_timepoint["arrival_time"])." - ".strtotime($cur_timepoint["arrival_time"])."<br>"; |
return Array(); | $time_estimate = ($distance_percent * $total_time) + strtotime($cur_timepoint["arrival_time"]); |
} | $stopTime["arrival_time"] = date("H:i:s", $time_estimate); |
return $query->fetch(PDO::FETCH_ASSOC); | } else { |
} | $stopTime["arrival_time"] = $cur_timepoint["arrival_time"]; |
function getTripNextTimePoint($tripID, $stop_sequence) | } |
{ | $rv[] = $stopTime; |
global $conn; | } |
$query = " SELECT trip_id,stop_id, | } |
stop_sequence | // var_dump($rv); |
FROM stop_times | return $rv; |
WHERE trip_id = :tripID and stop_sequence > :stop_sequence | } |
and stop_times.arrival_time IS NOT NULL ORDER BY stop_sequence LIMIT 1"; | |
debug($query, "database"); | function getTripPreviousTimePoint($tripID, $stop_sequence) { |
$query = $conn->prepare($query); | global $conn; |
$query->bindParam(":tripID", $tripID); | $query = " SELECT trip_id,stop_id, |
$query->bindParam(":stop_sequence", $stop_sequence); | stop_sequence |
$query->execute(); | FROM stop_times |
if (!$query) { | WHERE trip_id = :tripID and stop_sequence < :stop_sequence |
databaseError($conn->errorInfo()); | and stop_times.arrival_time IS NOT NULL ORDER BY stop_sequence DESC LIMIT 1"; |
return Array(); | debug($query, "database"); |
} | $query = $conn->prepare($query); |
return $query->fetch(PDO::FETCH_ASSOC); | $query->bindParam(":tripID", $tripID); |
} | $query->bindParam(":stop_sequence", $stop_sequence); |
function getTimeInterpolatedTripAtStop($tripID, $stop_sequence) | $query->execute(); |
{ | if (!$query) { |
global $conn; | databaseError($conn->errorInfo()); |
// limit interpolation to between nearest actual points. | return Array(); |
$prevTimePoint = getTripPreviousTimePoint($tripID, $stop_sequence); | } |
$nextTimePoint = getTripNextTimePoint($tripID, $stop_sequence); | return $query->fetch(PDO :: FETCH_ASSOC); |
//echo " prev {$lowestDelta['stop_sequence']} next {$nextTimePoint['stop_sequence']} "; | } |
$range = ""; | |
if ($prevTimePoint != "") $range .= " AND stop_sequence >= '{$prevTimePoint['stop_sequence']}'"; | function getTripNextTimePoint($tripID, $stop_sequence) { |
if ($nextTimePoint != "") $range .= " AND stop_sequence <= '{$nextTimePoint['stop_sequence']}'"; | global $conn; |
foreach (getTimeInterpolatedTrip($tripID, $range) as $tripStop) { | $query = " SELECT trip_id,stop_id, |
if ($tripStop['stop_sequence'] == $stop_sequence) return $tripStop; | stop_sequence |
} | FROM stop_times |
return Array(); | WHERE trip_id = :tripID and stop_sequence > :stop_sequence |
} | and stop_times.arrival_time IS NOT NULL ORDER BY stop_sequence LIMIT 1"; |
function getTripStartTime($tripID) | debug($query, "database"); |
{ | $query = $conn->prepare($query); |
global $conn; | $query->bindParam(":tripID", $tripID); |
$query = "Select * from stop_times | $query->bindParam(":stop_sequence", $stop_sequence); |
$query->execute(); | |
if (!$query) { | |
databaseError($conn->errorInfo()); | |
return Array(); | |
} | |
return $query->fetch(PDO :: FETCH_ASSOC); | |
} | |
function getTimeInterpolatedTripAtStop($tripID, $stop_sequence) { | |
global $conn; | |
// limit interpolation to between nearest actual points. | |
$prevTimePoint = getTripPreviousTimePoint($tripID, $stop_sequence); | |
$nextTimePoint = getTripNextTimePoint($tripID, $stop_sequence); | |
// echo " prev {$lowestDelta['stop_sequence']} next {$nextTimePoint['stop_sequence']} "; | |
$range = ""; | |
if ($prevTimePoint != "") | |
$range .= " AND stop_sequence >= '{$prevTimePoint['stop_sequence']}'"; | |
if ($nextTimePoint != "") | |
$range .= " AND stop_sequence <= '{$nextTimePoint['stop_sequence']}'"; | |
foreach (getTimeInterpolatedTrip($tripID, $range) as $tripStop) { | |
if ($tripStop['stop_sequence'] == $stop_sequence) | |
return $tripStop; | |
} | |
return Array(); | |
} */ | |
function getTripStartTime($tripID) { | |
global $conn; | |
$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 getActiveTrips($time) | |
{ | function getTripEndTime($tripID) { |
global $conn; | global $conn; |
if ($time == "") $time = current_time(); | $query = "SELECT trip_id,max(arrival_time) as arrival_time from stop_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 stop_times.arrival_time IS NOT NULL and trip_id = :tripID group by trip_id"; |
debug($query, "database"); | |
$query = $conn->prepare($query); | |
$query->bindParam(":tripID", $tripID); | |
$query->execute(); | |
if (!$query) { | |
databaseError($conn->errorInfo()); | |
return Array(); | |
} | |
$r = $query->fetch(PDO :: FETCH_ASSOC); | |
return $r['arrival_time']; | |
} | |
function getActiveTrips($time) { | |
global $conn; | |
if ($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 | 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 |
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"; | 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"; |
debug($query, "database"); | debug($query, "database"); |
$query = $conn->prepare($query); | $query = $conn->prepare($query); |
$query->bindParam(":time", $time); | $query->bindParam(":time", $time); |
$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 viaPoints($tripID, $stop_sequence = "") | |
{ | function viaPoints($tripID, $stop_sequence = "") { |
global $conn; | global $conn; |
$query = "SELECT stops.stop_id, stop_name, arrival_time | $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 " : "") . "AND substr(stop_code,1,2) != 'Wj' 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 != "") $query->bindParam(":stop_sequence", $stop_sequence); | if ($stop_sequence != "") |
$query->bindParam(":tripID", $tripID); | $query->bindParam(":stop_sequence", $stop_sequence); |
$query->execute(); | $query->bindParam(":tripID", $tripID); |
if (!$query) { | $query->execute(); |
databaseError($conn->errorInfo()); | if (!$query) { |
return Array(); | databaseError($conn->errorInfo()); |
} | return Array(); |
return $query->fetchAll(); | } |
} | return $query->fetchAll(); |
function viaPointNames($tripid, $stop_sequence = "") | } |
{ | |
$viaPointNames = Array(); | function viaPointNames($tripid, $stop_sequence = "") { |
foreach (viaPoints($tripid, $stop_sequence) as $point) { | $viaPointNames = Array(); |
$viaPointNames[] = $point['stop_name']; | foreach (viaPoints($tripid, $stop_sequence) as $point) { |
} | $viaPointNames[] = $point['stop_name']; |
if (sizeof($viaPointNames) > 0) { | } |
return r_implode(", ", $viaPointNames); | if (sizeof($viaPointNames) > 0) { |
} | return r_implode(", ", $viaPointNames); |
else { | } else { |
return ""; | return ""; |
} | } |
} | } |
?> | ?> |
<?php | <?php |
/* | |
* Copyright 2010,2011 Alexander Sadleir | |
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. | |
*/ | |
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">Major (Timing Point) Stops</a></li> | <li><a href="stopList.php">Major (Timing Point) Stops</a></li> |
<li><a href="stopList.php?allstops=yes">All Stops</a></li> | <li><a href="stopList.php?allstops=yes">All Stops</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> |
<?php | <?php |
echo timePlaceSettings(); | echo ' <a href="labs/index.php" data-role="button" data-icon="beaker">Busness R&D</a>'; |
echo ' <a href="labs/index.php" data-role="button" data-icon="beaker">Busness R&D</a>'; | echo ' <a href="myway/index.php" data-role="button">MyWay Balance and Timeliness Survey Results</a>'; |
include_footer(true) | include_footer(true) |
?> | ?> |
/*! LAB.js (LABjs :: Loading And Blocking JavaScript) | |
v2.0.1 (c) Kyle Simpson | |
MIT License | |
*/ | |
(function(o){var K=o.$LAB,y="UseLocalXHR",z="AlwaysPreserveOrder",u="AllowDuplicates",A="CacheBust",B="BasePath",C=/^[^?#]*\//.exec(location.href)[0],D=/^\w+\:\/\/\/?[^\/]+/.exec(C)[0],i=document.head||document.getElementsByTagName("head"),L=(o.opera&&Object.prototype.toString.call(o.opera)=="[object Opera]")||("MozAppearance"in document.documentElement.style),q=document.createElement("script"),E=typeof q.preload=="boolean",r=E||(q.readyState&&q.readyState=="uninitialized"),F=!r&&q.async===true,M=!r&&!F&&!L;function G(a){return Object.prototype.toString.call(a)=="[object Function]"}function H(a){return Object.prototype.toString.call(a)=="[object Array]"}function N(a,c){var b=/^\w+\:\/\//;if(/^\/\/\/?/.test(a)){a=location.protocol+a}else if(!b.test(a)&&a.charAt(0)!="/"){a=(c||"")+a}return b.test(a)?a:((a.charAt(0)=="/"?D:C)+a)}function s(a,c){for(var b in a){if(a.hasOwnProperty(b)){c[b]=a[b]}}return c}function O(a){var c=false;for(var b=0;b<a.scripts.length;b++){if(a.scripts[b].ready&&a.scripts[b].exec_trigger){c=true;a.scripts[b].exec_trigger();a.scripts[b].exec_trigger=null}}return c}function t(a,c,b,d){a.onload=a.onreadystatechange=function(){if((a.readyState&&a.readyState!="complete"&&a.readyState!="loaded")||c[b])return;a.onload=a.onreadystatechange=null;d()}}function I(a){a.ready=a.finished=true;for(var c=0;c<a.finished_listeners.length;c++){setTimeout(a.finished_listeners[c],0)}a.ready_listeners=[];a.finished_listeners=[]}function P(d,f,e,g,h){setTimeout(function(){var a,c=f.real_src,b;if("item"in i){if(!i[0]){setTimeout(arguments.callee,25);return}i=i[0]}a=document.createElement("script");if(f.type)a.type=f.type;if(f.charset)a.charset=f.charset;if(h){if(r){e.elem=a;if(E){a.preload=true;a.onpreload=g}else{a.onreadystatechange=function(){if(a.readyState=="loaded")g();a.onreadystatechange=null}}a.src=c}else if(h&&c.indexOf(D)==0&&d[y]){b=new XMLHttpRequest();b.onreadystatechange=function(){if(b.readyState==4){b.onreadystatechange=function(){};e.text=b.responseText+"\n//@ sourceURL="+c;g()}};b.open("GET",c);b.send()}else{a.type="text/cache-script";t(a,e,"ready",function(){i.removeChild(a);g()});a.src=c;i.insertBefore(a,i.firstChild)}}else if(F){a.async=false;t(a,e,"finished",g);a.src=c;i.insertBefore(a,i.firstChild)}else{t(a,e,"finished",g);a.src=c;i.insertBefore(a,i.firstChild)}},0)}function J(){var l={},Q=r||M,n=[],p={},m;l[y]=true;l[z]=false;l[u]=false;l[A]=false;l[B]="";function R(a,c,b){var d;function f(){if(d!=null){I(b);d=null}}if(p[c.src].finished)return;if(!a[u])p[c.src].finished=true;d=b.elem||document.createElement("script");if(c.type)d.type=c.type;if(c.charset)d.charset=c.charset;t(d,b,"finished",f);if(b.elem){b.elem=null}else if(b.text){d.onload=d.onreadystatechange=null;d.text=b.text}else{d.src=c.real_src}i.insertBefore(d,i.firstChild);if(b.text){f()}}function S(c,b,d,f){var e,g,h=function(){b.ready_cb(b,function(){R(c,b,e)})},j=function(){b.finished_cb(b,d)};b.src=N(b.src,c[B]);b.real_src=b.src+(c[A]?((/\?.*$/.test(b.src)?"&_":"?_")+~~(Math.random()*1E9)+"="):"");if(!p[b.src])p[b.src]={items:[],finished:false};g=p[b.src].items;if(c[u]||g.length==0){e=g[g.length]={ready:false,finished:false,ready_listeners:[h],finished_listeners:[j]};P(c,b,e,((f)?function(){e.ready=true;for(var a=0;a<e.ready_listeners.length;a++){setTimeout(e.ready_listeners[a],0)}e.ready_listeners=[]}:function(){I(e)}),f)}else{e=g[0];if(e.finished){setTimeout(j,0)}else{e.finished_listeners.push(j)}}}function v(){var e,g=s(l,{}),h=[],j=0,w=false,k;function T(a,c){a.ready=true;a.exec_trigger=c;x()}function U(a,c){a.ready=a.finished=true;a.exec_trigger=null;for(var b=0;b<c.scripts.length;b++){if(!c.scripts[b].finished)return}c.finished=true;x()}function x(){while(j<h.length){if(G(h[j])){try{h[j]()}catch(err){}}else if(!h[j].finished){if(O(h[j]))continue;break}j++}if(j==h.length){w=false;k=false}}function V(){if(!k||!k.scripts){h.push(k={scripts:[],finished:true})}}e={script:function(){for(var f=0;f<arguments.length;f++){(function(a,c){var b;if(!H(a)){c=[a]}for(var d=0;d<c.length;d++){V();a=c[d];if(G(a))a=a();if(!a)continue;if(H(a)){b=[].slice.call(a);b.push(d,1);c.splice.call(c,b);d--;continue}if(typeof a=="string")a={src:a};a=s(a,{ready:false,ready_cb:T,finished:false,finished_cb:U});k.finished=false;k.scripts.push(a);S(g,a,k,(Q&&w));w=true;if(g[z])e.wait()}})(arguments[f],arguments[f])}return e},wait:function(){if(arguments.length>0){for(var a=0;a<arguments.length;a++){h.push(arguments[a])}k=h[h.length-1]}else k=false;x();return e}};return{script:e.script,wait:e.wait,setOptions:function(a){s(a,g);return e}}}m={setGlobalDefaults:function(a){s(a,l);return m},setOptions:function(){return v().setOptions.apply(null,arguments)},script:function(){return v().script.apply(null,arguments)},wait:function(){return v().wait.apply(null,arguments)},queueScript:function(){n[n.length]={type:"script",args:[].slice.call(arguments)};return m},queueWait:function(){n[n.length]={type:"wait",args:[].slice.call(arguments)};return m},runQueue:function(){var a=m,c=n.length,b=c,d;for(;--b>=0;){d=n.shift();a=a[d.type].apply(null,d.args)}return a},noConflict:function(){o.$LAB=K;return m},sandbox:function(){return J()}};return m}o.$LAB=J();(function(a,c,b){if(document.readyState==null&&document[a]){document.readyState="loading";document[a](c,b=function(){document.removeEventListener(c,b,false);document.readyState="complete"},false)}})("addEventListener","DOMContentLoaded")})(this); |
//Flotr 0.2.0-alpha Copyright (c) 2009 Bas Wenneker, <http://solutoire.com>, MIT License. | |
var Flotr={version:"0.2.0-alpha",author:"Bas Wenneker",website:"http://www.solutoire.com",_registeredTypes:{lines:"drawSeriesLines",points:"drawSeriesPoints",bars:"drawSeriesBars",candles:"drawSeriesCandles",pie:"drawSeriesPie"},register:function(A,B){Flotr._registeredTypes[A]=B+""},draw:function(B,D,A,C){C=C||Flotr.Graph;return new C(B,D,A)},getSeries:function(A){return A.collect(function(C){var B,C=(C.data)?Object.clone(C):{data:C};for(B=C.data.length-1;B>-1;--B){C.data[B][1]=(C.data[B][1]===null?null:parseFloat(C.data[B][1]))}return C})},merge:function(D,B){var A=B||{};for(var C in D){A[C]=(D[C]!=null&&typeof (D[C])=="object"&&!(D[C].constructor==Array||D[C].constructor==RegExp)&&!Object.isElement(D[C]))?Flotr.merge(D[C],B[C]):A[C]=D[C]}return A},getTickSize:function(E,D,A,B){var H=(A-D)/E;var G=Flotr.getMagnitude(H);var C=H/G;var F=10;if(C<1.5){F=1}else{if(C<2.25){F=2}else{if(C<3){F=((B==0)?2:2.5)}else{if(C<7.5){F=5}}}}return F*G},defaultTickFormatter:function(A){return A+""},defaultTrackFormatter:function(A){return"("+A.x+", "+A.y+")"},defaultPieLabelFormatter:function(A){return(A.fraction*100).toFixed(2)+"%"},getMagnitude:function(A){return Math.pow(10,Math.floor(Math.log(A)/Math.LN10))},toPixel:function(A){return Math.floor(A)+0.5},toRad:function(A){return -A*(Math.PI/180)},parseColor:function(D){if(D instanceof Flotr.Color){return D}var A,C=Flotr.Color;if((A=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(D))){return new C(parseInt(A[1]),parseInt(A[2]),parseInt(A[3]))}if((A=/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(D))){return new C(parseInt(A[1]),parseInt(A[2]),parseInt(A[3]),parseFloat(A[4]))}if((A=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(D))){return new C(parseFloat(A[1])*2.55,parseFloat(A[2])*2.55,parseFloat(A[3])*2.55)}if((A=/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(D))){return new C(parseFloat(A[1])*2.55,parseFloat(A[2])*2.55,parseFloat(A[3])*2.55,parseFloat(A[4]))}if((A=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(D))){return new C(parseInt(A[1],16),parseInt(A[2],16),parseInt(A[3],16))}if((A=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(D))){return new C(parseInt(A[1]+A[1],16),parseInt(A[2]+A[2],16),parseInt(A[3]+A[3],16))}var B=D.strip().toLowerCase();if(B=="transparent"){return new C(255,255,255,0)}return((A=C.lookupColors[B]))?new C(A[0],A[1],A[2]):false},extractColor:function(B){var A;do{A=B.getStyle("background-color").toLowerCase();if(!(A==""||A=="transparent")){break}B=B.up(0)}while(!B.nodeName.match(/^body$/i));return(A=="rgba(0, 0, 0, 0)")?"transparent":A}};Flotr.Graph=Class.create({initialize:function(B,C,A){this.el=$(B);if(!this.el){throw"The target container doesn't exist"}this.data=C;this.series=Flotr.getSeries(C);this.setOptions(A);this.lastMousePos={pageX:null,pageY:null};this.selection={first:{x:-1,y:-1},second:{x:-1,y:-1}};this.prevSelection=null;this.selectionInterval=null;this.ignoreClick=false;this.prevHit=null;this.constructCanvas();this.initEvents();this.findDataRanges();this.calculateTicks(this.axes.x);this.calculateTicks(this.axes.x2);this.calculateTicks(this.axes.y);this.calculateTicks(this.axes.y2);this.calculateSpacing();this.draw();this.insertLegend();if(this.options.spreadsheet.show){this.constructTabs()}},setOptions:function(B){var P={colors:["#00A8F0","#C0D800","#CB4B4B","#4DA74D","#9440ED"],title:null,subtitle:null,legend:{show:true,noColumns:1,labelFormatter:Prototype.K,labelBoxBorderColor:"#CCCCCC",labelBoxWidth:14,labelBoxHeight:10,labelBoxMargin:5,container:null,position:"nw",margin:5,backgroundColor:null,backgroundOpacity:0.85},xaxis:{ticks:null,showLabels:true,labelsAngle:0,title:null,titleAngle:0,noTicks:5,tickFormatter:Flotr.defaultTickFormatter,tickDecimals:null,min:null,max:null,autoscaleMargin:0,color:null},x2axis:{},yaxis:{ticks:null,showLabels:true,labelsAngle:0,title:null,titleAngle:90,noTicks:5,tickFormatter:Flotr.defaultTickFormatter,tickDecimals:null,min:null,max:null,autoscaleMargin:0,color:null},y2axis:{titleAngle:270},points:{show:false,radius:3,lineWidth:2,fill:true,fillColor:"#FFFFFF",fillOpacity:0.4},lines:{show:false,lineWidth:2,fill:false,fillColor:null,fillOpacity:0.4},bars:{show:false,lineWidth:2,barWidth:1,fill:true,fillColor:null,fillOpacity:0.4,horizontal:false,stacked:false},candles:{show:false,lineWidth:1,wickLineWidth:1,candleWidth:0.6,fill:true,upFillColor:"#00A8F0",downFillColor:"#CB4B4B",fillOpacity:0.5,barcharts:false},pie:{show:false,lineWidth:1,fill:true,fillColor:null,fillOpacity:0.6,explode:6,sizeRatio:0.6,startAngle:Math.PI/4,labelFormatter:Flotr.defaultPieLabelFormatter,pie3D:false,pie3DviewAngle:(Math.PI/2*0.8),pie3DspliceThickness:20},grid:{color:"#545454",backgroundColor:null,tickColor:"#DDDDDD",labelMargin:3,verticalLines:true,horizontalLines:true,outlineWidth:2},selection:{mode:null,color:"#B6D9FF",fps:20},mouse:{track:false,position:"se",relative:false,trackFormatter:Flotr.defaultTrackFormatter,margin:5,lineColor:"#FF3F19",trackDecimals:1,sensibility:2,radius:3},shadowSize:4,defaultType:"lines",HtmlText:true,fontSize:7.5,spreadsheet:{show:false,tabGraphLabel:"Graph",tabDataLabel:"Data",toolbarDownload:"Download CSV",toolbarSelectAll:"Select all"}};P.x2axis=Object.extend(Object.clone(P.xaxis),P.x2axis);P.y2axis=Object.extend(Object.clone(P.yaxis),P.y2axis);this.options=Flotr.merge((B||{}),P);this.axes={x:{options:this.options.xaxis,n:1},x2:{options:this.options.x2axis,n:2},y:{options:this.options.yaxis,n:1},y2:{options:this.options.y2axis,n:2}};var H=[],C=[],K=this.series.length,N=this.series.length,D=this.options.colors,A=[],G=0,M,J,I,O,E;for(J=N-1;J>-1;--J){M=this.series[J].color;if(M!=null){--N;if(Object.isNumber(M)){H.push(M)}else{A.push(Flotr.parseColor(M))}}}for(J=H.length-1;J>-1;--J){N=Math.max(N,H[J]+1)}for(J=0;C.length<N;){M=(D.length==J)?new Flotr.Color(100,100,100):Flotr.parseColor(D[J]);var F=G%2==1?-1:1;var L=1+F*Math.ceil(G/2)*0.2;M.scale(L,L,L);C.push(M);if(++J>=D.length){J=0;++G}}for(J=0,I=0;J<K;++J){O=this.series[J];if(O.color==null){O.color=C[I++].toString()}else{if(Object.isNumber(O.color)){O.color=C[O.color].toString()}}if(!O.xaxis){O.xaxis=this.axes.x}if(O.xaxis==1){O.xaxis=this.axes.x}else{if(O.xaxis==2){O.xaxis=this.axes.x2}}if(!O.yaxis){O.yaxis=this.axes.y}if(O.yaxis==1){O.yaxis=this.axes.y}else{if(O.yaxis==2){O.yaxis=this.axes.y2}}O.lines=Object.extend(Object.clone(this.options.lines),O.lines);O.points=Object.extend(Object.clone(this.options.points),O.points);O.bars=Object.extend(Object.clone(this.options.bars),O.bars);O.candles=Object.extend(Object.clone(this.options.candles),O.candles);O.pie=Object.extend(Object.clone(this.options.pie),O.pie);O.mouse=Object.extend(Object.clone(this.options.mouse),O.mouse);if(O.shadowSize==null){O.shadowSize=this.options.shadowSize}}},constructCanvas:function(){var C=this.el,B,D,A;this.canvas=C.select(".flotr-canvas")[0];this.overlay=C.select(".flotr-overlay")[0];C.childElements().invoke("remove");C.setStyle({position:"relative",cursor:"default"});this.canvasWidth=C.getWidth();this.canvasHeight=C.getHeight();B={width:this.canvasWidth,height:this.canvasHeight};if(this.canvasWidth<=0||this.canvasHeight<=0){throw"Invalid dimensions for plot, width = "+this.canvasWidth+", height = "+this.canvasHeight}if(!this.canvas){D=this.canvas=new Element("canvas",B);D.className="flotr-canvas";D=D.writeAttribute("style","position:absolute;left:0px;top:0px;")}else{D=this.canvas.writeAttribute(B)}C.insert(D);if(Prototype.Browser.IE){D=window.G_vmlCanvasManager.initElement(D)}this.ctx=D.getContext("2d");if(!this.overlay){A=this.overlay=new Element("canvas",B);A.className="flotr-overlay";A=A.writeAttribute("style","position:absolute;left:0px;top:0px;")}else{A=this.overlay.writeAttribute(B)}C.insert(A);if(Prototype.Browser.IE){A=window.G_vmlCanvasManager.initElement(A)}this.octx=A.getContext("2d");if(window.CanvasText){CanvasText.enable(this.ctx);CanvasText.enable(this.octx);this.textEnabled=true}},getTextDimensions:function(F,C,B,D){if(!F){return{width:0,height:0}}if(!this.options.HtmlText&&this.textEnabled){var E=this.ctx.getTextBounds(F,C);return{width:E.width+2,height:E.height+6}}else{var A=this.el.insert('<div style="position:absolute;top:-10000px;'+B+'" class="'+D+' flotr-dummy-div">'+F+"</div>").select(".flotr-dummy-div")[0];dim=A.getDimensions();A.remove();return dim}},loadDataGrid:function(){if(this.seriesData){return this.seriesData}var A=this.series;var B=[];for(i=0;i<A.length;++i){A[i].data.each(function(D){var C=D[0],F=D[1];if(r=B.find(function(G){return G[0]==C})){r[i+1]=F}else{var E=[];E[0]=C;E[i+1]=F;B.push(E)}})}B=B.sortBy(function(C){return C[0]});return this.seriesData=B},showTab:function(B,C){var A="canvas, .flotr-labels, .flotr-legend, .flotr-legend-bg, .flotr-title, .flotr-subtitle";switch(B){case"graph":this.datagrid.up().hide();this.el.select(A).invoke("show");this.tabs.data.removeClassName("selected");this.tabs.graph.addClassName("selected");break;case"data":this.constructDataGrid();this.datagrid.up().show();this.el.select(A).invoke("hide");this.tabs.data.addClassName("selected");this.tabs.graph.removeClassName("selected");break}},constructTabs:function(){var A=new Element("div",{className:"flotr-tabs-group",style:"position:absolute;left:0px;top:"+this.canvasHeight+"px;width:"+this.canvasWidth+"px;"});this.el.insert({bottom:A});this.tabs={graph:new Element("div",{className:"flotr-tab selected",style:"float:left;"}).update(this.options.spreadsheet.tabGraphLabel),data:new Element("div",{className:"flotr-tab",style:"float:left;"}).update(this.options.spreadsheet.tabDataLabel)};A.insert(this.tabs.graph).insert(this.tabs.data);this.el.setStyle({height:this.canvasHeight+this.tabs.data.getHeight()+2+"px"});this.tabs.graph.observe("click",(function(){this.showTab("graph")}).bind(this));this.tabs.data.observe("click",(function(){this.showTab("data")}).bind(this))},constructDataGrid:function(){if(this.datagrid){return this.datagrid}var D,B,L=this.series,J=this.loadDataGrid();var K=this.datagrid=new Element("table",{className:"flotr-datagrid",style:"height:100px;"});var C=["<colgroup><col />"];var F=['<tr class="first-row">'];F.push("<th> </th>");for(D=0;D<L.length;++D){F.push('<th scope="col">'+(L[D].label||String.fromCharCode(65+D))+"</th>");C.push("<col />")}F.push("</tr>");for(B=0;B<J.length;++B){F.push("<tr>");for(D=0;D<L.length+1;++D){var M="td";var G=(J[B][D]!=null?Math.round(J[B][D]*100000)/100000:"");if(D==0){M="th";var I;if(this.options.xaxis.ticks){var E=this.options.xaxis.ticks.find(function(N){return N[0]==J[B][D]});if(E){I=E[1]}}else{I=this.options.xaxis.tickFormatter(G)}if(I){G=I}}F.push("<"+M+(M=="th"?' scope="row"':"")+">"+G+"</"+M+">")}F.push("</tr>")}C.push("</colgroup>");K.update(C.join("")+F.join(""));if(!Prototype.Browser.IE){K.select("td").each(function(N){N.observe("mouseover",function(O){N=O.element();var P=N.previousSiblings();K.select("th[scope=col]")[P.length-1].addClassName("hover");K.select("colgroup col")[P.length].addClassName("hover")});N.observe("mouseout",function(){K.select("colgroup col.hover, th.hover").each(function(O){O.removeClassName("hover")})})})}var H=new Element("div",{className:"flotr-datagrid-toolbar"}).insert(new Element("button",{type:"button",className:"flotr-datagrid-toolbar-button"}).update(this.options.spreadsheet.toolbarDownload).observe("click",this.downloadCSV.bind(this))).insert(new Element("button",{type:"button",className:"flotr-datagrid-toolbar-button"}).update(this.options.spreadsheet.toolbarSelectAll).observe("click",this.selectAllData.bind(this)));var A=new Element("div",{className:"flotr-datagrid-container",style:"left:0px;top:0px;width:"+this.canvasWidth+"px;height:"+this.canvasHeight+"px;overflow:auto;"});A.insert(H);K.wrap(A.hide());this.el.insert(A);return K},selectAllData:function(){if(this.tabs){var B,A,E,D,C=this.constructDataGrid();this.showTab("data");(function(){if((E=C.ownerDocument)&&(D=E.defaultView)&&D.getSelection&&E.createRange&&(B=window.getSelection())&&B.removeAllRanges){A=E.createRange();A.selectNode(C);B.removeAllRanges();B.addRange(A)}else{if(document.body&&document.body.createTextRange&&(A=document.body.createTextRange())){A.moveToElementText(C);A.select()}}}).defer();return true}else{return false}},downloadCSV:function(){var D,A='"x"',C=this.series,E=this.loadDataGrid();for(D=0;D<C.length;++D){A+='%09"'+(C[D].label||String.fromCharCode(65+D))+'"'}A+="%0D%0A";for(D=0;D<E.length;++D){if(this.options.xaxis.ticks){var B=this.options.xaxis.ticks.find(function(F){return F[0]==E[D][0]});if(B){E[D][0]=B[1]}}else{E[D][0]=this.options.xaxis.tickFormatter(E[D][0])}A+=E[D].join("%09")+"%0D%0A"}if(Prototype.Browser.IE){A=A.gsub("%09","\t").gsub("%0A","\n").gsub("%0D","\r");window.open().document.write(A)}else{window.open("data:text/csv,"+A)}},initEvents:function(){this.overlay.stopObserving();this.overlay.observe("mousedown",this.mouseDownHandler.bind(this));this.overlay.observe("mousemove",this.mouseMoveHandler.bind(this));this.overlay.observe("click",this.clickHandler.bind(this))},findDataRanges:function(){var J=this.series,G=this.axes;G.x.datamin=0;G.x.datamax=0;G.x2.datamin=0;G.x2.datamax=0;G.y.datamin=0;G.y.datamax=0;G.y2.datamin=0;G.y2.datamax=0;if(J.length>0){var C,A,D,H,F,B,I,E;for(C=0;C<J.length;++C){B=J[C].data,I=J[C].xaxis,E=J[C].yaxis;if(B.length>0&&!J[C].hide){if(!I.used){I.datamin=I.datamax=B[0][0]}if(!E.used){E.datamin=E.datamax=B[0][1]}I.used=true;E.used=true;for(D=B.length-1;D>-1;--D){H=B[D][0];if(H<I.datamin){I.datamin=H}else{if(H>I.datamax){I.datamax=H}}for(A=1;A<B[D].length;A++){F=B[D][A];if(F<E.datamin){E.datamin=F}else{if(F>E.datamax){E.datamax=F}}}}}}}this.findXAxesValues();this.calculateRange(G.x);this.extendXRangeIfNeededByBar(G.x);if(G.x2.used){this.calculateRange(G.x2);this.extendXRangeIfNeededByBar(G.x2)}this.calculateRange(G.y);this.extendYRangeIfNeededByBar(G.y);if(G.y2.used){this.calculateRange(G.y2);this.extendYRangeIfNeededByBar(G.y2)}},calculateRange:function(D){var F=D.options,C=F.min!=null?F.min:D.datamin,A=F.max!=null?F.max:D.datamax,E;if(A-C==0){var B=(A==0)?1:0.01;C-=B;A+=B}D.tickSize=Flotr.getTickSize(F.noTicks,C,A,F.tickDecimals);if(F.min==null){E=F.autoscaleMargin;if(E!=0){C-=D.tickSize*E;if(C<0&&D.datamin>=0){C=0}C=D.tickSize*Math.floor(C/D.tickSize)}}if(F.max==null){E=F.autoscaleMargin;if(E!=0){A+=D.tickSize*E;if(A>0&&D.datamax<=0){A=0}A=D.tickSize*Math.ceil(A/D.tickSize)}}D.min=C;D.max=A},extendXRangeIfNeededByBar:function(A){if(A.options.max==null){var D=A.max,B,I,F,E,H=[],C=null;for(B=0;B<this.series.length;++B){I=this.series[B];F=I.bars;E=I.candles;if(I.axis==A&&(F.show||E.show)){if(!F.horizontal&&(F.barWidth+A.datamax>D)||(E.candleWidth+A.datamax>D)){D=A.max+I.bars.barWidth}if(F.stacked&&F.horizontal){for(j=0;j<I.data.length;j++){if(I.bars.show&&I.bars.stacked){var G=I.data[j][0];H[G]=(H[G]||0)+I.data[j][1];C=I}}for(j=0;j<H.length;j++){D=Math.max(H[j],D)}}}}A.lastSerie=C;A.max=D}},extendYRangeIfNeededByBar:function(A){if(A.options.max==null){var D=A.max,B,I,F,E,H=[],C=null;for(B=0;B<this.series.length;++B){I=this.series[B];F=I.bars;E=I.candles;if(I.yaxis==A&&F.show&&!I.hide){if(F.horizontal&&(F.barWidth+A.datamax>D)||(E.candleWidth+A.datamax>D)){D=A.max+F.barWidth}if(F.stacked&&!F.horizontal){for(j=0;j<I.data.length;j++){if(I.bars.show&&I.bars.stacked){var G=I.data[j][0];H[G]=(H[G]||0)+I.data[j][1];C=I}}for(j=0;j<H.length;j++){D=Math.max(H[j],D)}}}}A.lastSerie=C;A.max=D}},findXAxesValues:function(){for(i=this.series.length-1;i>-1;--i){s=this.series[i];s.xaxis.values=s.xaxis.values||[];for(j=s.data.length-1;j>-1;--j){s.xaxis.values[s.data[j][0]]={}}}},calculateTicks:function(D){var B=D.options,E,H;D.ticks=[];if(B.ticks){var G=B.ticks,I,F;if(Object.isFunction(G)){G=G({min:D.min,max:D.max})}for(E=0;E<G.length;++E){I=G[E];if(typeof (I)=="object"){H=I[0];F=(I.length>1)?I[1]:B.tickFormatter(H)}else{H=I;F=B.tickFormatter(H)}D.ticks[E]={v:H,label:F}}}else{var A=D.tickSize*Math.ceil(D.min/D.tickSize),C;for(E=0;A+E*D.tickSize<=D.max;++E){H=A+E*D.tickSize;C=B.tickDecimals;if(C==null){C=1-Math.floor(Math.log(D.tickSize)/Math.LN10)}if(C<0){C=0}H=H.toFixed(C);D.ticks.push({v:H,label:B.tickFormatter(H)})}}},calculateSpacing:function(){var L=this.axes,N=this.options,H=this.series,D=N.grid.labelMargin,M=L.x,A=L.x2,J=L.y,K=L.y2,F=2,G,E,C,I;[M,A,J,K].each(function(P){var O="";if(P.options.showLabels){for(G=0;G<P.ticks.length;++G){C=P.ticks[G].label.length;if(C>O.length){O=P.ticks[G].label}}}P.maxLabel=this.getTextDimensions(O,{size:N.fontSize,angle:Flotr.toRad(P.options.labelsAngle)},"font-size:smaller;","flotr-grid-label");P.titleSize=this.getTextDimensions(P.options.title,{size:N.fontSize*1.2,angle:Flotr.toRad(P.options.titleAngle)},"font-weight:bold;","flotr-axis-title")},this);I=this.getTextDimensions(N.title,{size:N.fontSize*1.5},"font-size:1em;font-weight:bold;","flotr-title");this.titleHeight=I.height;I=this.getTextDimensions(N.subtitle,{size:N.fontSize},"font-size:smaller;","flotr-subtitle");this.subtitleHeight=I.height;if(N.show){F=Math.max(F,N.points.radius+N.points.lineWidth/2)}for(E=0;E<N.length;++E){if(H[E].points.show){F=Math.max(F,H[E].points.radius+H[E].points.lineWidth/2)}}var B=this.plotOffset={left:0,right:0,top:0,bottom:0};B.left=B.right=B.top=B.bottom=F;B.bottom+=(M.options.showLabels?(M.maxLabel.height+D):0)+(M.options.title?(M.titleSize.height+D):0);B.top+=(A.options.showLabels?(A.maxLabel.height+D):0)+(A.options.title?(A.titleSize.height+D):0)+this.subtitleHeight+this.titleHeight;B.left+=(J.options.showLabels?(J.maxLabel.width+D):0)+(J.options.title?(J.titleSize.width+D):0);B.right+=(K.options.showLabels?(K.maxLabel.width+D):0)+(K.options.title?(K.titleSize.width+D):0);B.top=Math.floor(B.top);this.plotWidth=this.canvasWidth-B.left-B.right;this.plotHeight=this.canvasHeight-B.bottom-B.top;M.scale=this.plotWidth/(M.max-M.min);A.scale=this.plotWidth/(A.max-A.min);J.scale=this.plotHeight/(J.max-J.min);K.scale=this.plotHeight/(K.max-K.min)},draw:function(){this.drawGrid();this.drawLabels();this.drawTitles();if(this.series.length){this.el.fire("flotr:beforedraw",[this.series,this]);for(var A=0;A<this.series.length;A++){if(!this.series[A].hide){this.drawSeries(this.series[A])}}}this.el.fire("flotr:afterdraw",[this.series,this])},tHoz:function(A,B){B=B||this.axes.x;return(A-B.min)*B.scale},tVert:function(B,A){A=A||this.axes.y;return this.plotHeight-(B-A.min)*A.scale},drawGrid:function(){var B,E=this.options,A=this.ctx;if(E.grid.verticalLines||E.grid.horizontalLines){this.el.fire("flotr:beforegrid",[this.axes.x,this.axes.y,E,this])}A.save();A.translate(this.plotOffset.left,this.plotOffset.top);if(E.grid.backgroundColor!=null){A.fillStyle=E.grid.backgroundColor;A.fillRect(0,0,this.plotWidth,this.plotHeight)}A.lineWidth=1;A.strokeStyle=E.grid.tickColor;A.beginPath();if(E.grid.verticalLines){for(var D=0;D<this.axes.x.ticks.length;++D){B=this.axes.x.ticks[D].v;if((B==this.axes.x.min||B==this.axes.x.max)&&E.grid.outlineWidth!=0){continue}A.moveTo(Math.floor(this.tHoz(B))+A.lineWidth/2,0);A.lineTo(Math.floor(this.tHoz(B))+A.lineWidth/2,this.plotHeight)}}if(E.grid.horizontalLines){for(var C=0;C<this.axes.y.ticks.length;++C){B=this.axes.y.ticks[C].v;if((B==this.axes.y.min||B==this.axes.y.max)&&E.grid.outlineWidth!=0){continue}A.moveTo(0,Math.floor(this.tVert(B))+A.lineWidth/2);A.lineTo(this.plotWidth,Math.floor(this.tVert(B))+A.lineWidth/2)}}A.stroke();if(E.grid.outlineWidth!=0){A.lineWidth=E.grid.outlineWidth;A.strokeStyle=E.grid.color;A.lineJoin="round";A.strokeRect(0,0,this.plotWidth,this.plotHeight)}A.restore();if(E.grid.verticalLines||E.grid.horizontalLines){this.el.fire("flotr:aftergrid",[this.axes.x,this.axes.y,E,this])}},drawLabels:function(){var C=0,D,B,E,F,G,J=this.options,I=this.ctx,H=this.axes;for(E=0;E<H.x.ticks.length;++E){if(H.x.ticks[E].label){++C}}B=this.plotWidth/C;if(!J.HtmlText&&this.textEnabled){var A={size:J.fontSize,adjustAlign:true};D=H.x;A.color=D.options.color||J.grid.color;for(E=0;E<D.ticks.length&&D.options.showLabels&&D.used;++E){G=D.ticks[E];if(!G.label||G.label.length==0){continue}A.angle=Flotr.toRad(D.options.labelsAngle);A.halign="c";A.valign="t";I.drawText(G.label,this.plotOffset.left+this.tHoz(G.v,D),this.plotOffset.top+this.plotHeight+J.grid.labelMargin,A)}D=H.x2;A.color=D.options.color||J.grid.color;for(E=0;E<D.ticks.length&&D.options.showLabels&&D.used;++E){G=D.ticks[E];if(!G.label||G.label.length==0){continue}A.angle=Flotr.toRad(D.options.labelsAngle);A.halign="c";A.valign="b";I.drawText(G.label,this.plotOffset.left+this.tHoz(G.v,D),this.plotOffset.top+J.grid.labelMargin,A)}D=H.y;A.color=D.options.color||J.grid.color;for(E=0;E<D.ticks.length&&D.options.showLabels&&D.used;++E){G=D.ticks[E];if(!G.label||G.label.length==0){continue}A.angle=Flotr.toRad(D.options.labelsAngle);A.halign="r";A.valign="m";I.drawText(G.label,this.plotOffset.left-J.grid.labelMargin,this.plotOffset.top+this.tVert(G.v,D),A)}D=H.y2;A.color=D.options.color||J.grid.color;for(E=0;E<D.ticks.length&&D.options.showLabels&&D.used;++E){G=D.ticks[E];if(!G.label||G.label.length==0){continue}A.angle=Flotr.toRad(D.options.labelsAngle);A.halign="l";A.valign="m";I.drawText(G.label,this.plotOffset.left+this.plotWidth+J.grid.labelMargin,this.plotOffset.top+this.tVert(G.v,D),A);I.save();I.strokeStyle=A.color;I.beginPath();I.moveTo(this.plotOffset.left+this.plotWidth-8,this.plotOffset.top+this.tVert(G.v,D));I.lineTo(this.plotOffset.left+this.plotWidth,this.plotOffset.top+this.tVert(G.v,D));I.stroke();I.restore()}}else{if(H.x.options.showLabels||H.x2.options.showLabels||H.y.options.showLabels||H.y2.options.showLabels){F=['<div style="font-size:smaller;color:'+J.grid.color+';" class="flotr-labels">'];D=H.x;if(D.options.showLabels){for(E=0;E<D.ticks.length;++E){G=D.ticks[E];if(!G.label||G.label.length==0){continue}F.push('<div style="position:absolute;top:'+(this.plotOffset.top+this.plotHeight+J.grid.labelMargin)+"px;left:"+(this.plotOffset.left+this.tHoz(G.v,D)-B/2)+"px;width:"+B+"px;text-align:center;"+(D.options.color?("color:"+D.options.color+";"):"")+'" class="flotr-grid-label">'+G.label+"</div>")}}D=H.x2;if(D.options.showLabels&&D.used){for(E=0;E<D.ticks.length;++E){G=D.ticks[E];if(!G.label||G.label.length==0){continue}F.push('<div style="position:absolute;top:'+(this.plotOffset.top-J.grid.labelMargin-D.maxLabel.height)+"px;left:"+(this.plotOffset.left+this.tHoz(G.v,D)-B/2)+"px;width:"+B+"px;text-align:center;"+(D.options.color?("color:"+D.options.color+";"):"")+'" class="flotr-grid-label">'+G.label+"</div>")}}D=H.y;if(D.options.showLabels){for(E=0;E<D.ticks.length;++E){G=D.ticks[E];if(!G.label||G.label.length==0){continue}F.push('<div style="position:absolute;top:'+(this.plotOffset.top+this.tVert(G.v,D)-D.maxLabel.height/2)+"px;left:0;width:"+(this.plotOffset.left-J.grid.labelMargin)+"px;text-align:right;"+(D.options.color?("color:"+D.options.color+";"):"")+'" class="flotr-grid-label">'+G.label+"</div>")}}D=H.y2;if(D.options.showLabels&&D.used){I.save();I.strokeStyle=D.options.color||J.grid.color;I.beginPath();for(E=0;E<D.ticks.length;++E){G=D.ticks[E];if(!G.label||G.label.length==0){continue}F.push('<div style="position:absolute;top:'+(this.plotOffset.top+this.tVert(G.v,D)-D.maxLabel.height/2)+"px;right:0;width:"+(this.plotOffset.right-J.grid.labelMargin)+"px;text-align:left;"+(D.options.color?("color:"+D.options.color+";"):"")+'" class="flotr-grid-label">'+G.label+"</div>");I.moveTo(this.plotOffset.left+this.plotWidth-8,this.plotOffset.top+this.tVert(G.v,D));I.lineTo(this.plotOffset.left+this.plotWidth,this.plotOffset.top+this.tVert(G.v,D))}I.stroke();I.restore()}F.push("</div>");this.el.insert(F.join(""))}}},drawTitles:function(){var D,C=this.options,F=C.grid.labelMargin,B=this.ctx,A=this.axes;if(!C.HtmlText&&this.textEnabled){var E={size:C.fontSize,color:C.grid.color,halign:"c"};if(C.subtitle){B.drawText(C.subtitle,this.plotOffset.left+this.plotWidth/2,this.titleHeight+this.subtitleHeight-2,E)}E.weight=1.5;E.size*=1.5;if(C.title){B.drawText(C.title,this.plotOffset.left+this.plotWidth/2,this.titleHeight-2,E)}E.weight=1.8;E.size*=0.8;E.adjustAlign=true;if(A.x.options.title&&A.x.used){E.halign="c";E.valign="t";E.angle=Flotr.toRad(A.x.options.titleAngle);B.drawText(A.x.options.title,this.plotOffset.left+this.plotWidth/2,this.plotOffset.top+A.x.maxLabel.height+this.plotHeight+2*F,E)}if(A.x2.options.title&&A.x2.used){E.halign="c";E.valign="b";E.angle=Flotr.toRad(A.x2.options.titleAngle);B.drawText(A.x2.options.title,this.plotOffset.left+this.plotWidth/2,this.plotOffset.top-A.x2.maxLabel.height-2*F,E)}if(A.y.options.title&&A.y.used){E.halign="r";E.valign="m";E.angle=Flotr.toRad(A.y.options.titleAngle);B.drawText(A.y.options.title,this.plotOffset.left-A.y.maxLabel.width-2*F,this.plotOffset.top+this.plotHeight/2,E)}if(A.y2.options.title&&A.y2.used){E.halign="l";E.valign="m";E.angle=Flotr.toRad(A.y2.options.titleAngle);B.drawText(A.y2.options.title,this.plotOffset.left+this.plotWidth+A.y2.maxLabel.width+2*F,this.plotOffset.top+this.plotHeight/2,E)}}else{D=['<div style="color:'+C.grid.color+';" class="flotr-titles">'];if(C.title){D.push('<div style="position:absolute;top:0;left:'+this.plotOffset.left+"px;font-size:1em;font-weight:bold;text-align:center;width:"+this.plotWidth+'px;" class="flotr-title">'+C.title+"</div>")}if(C.subtitle){D.push('<div style="position:absolute;top:'+this.titleHeight+"px;left:"+this.plotOffset.left+"px;font-size:smaller;text-align:center;width:"+this.plotWidth+'px;" class="flotr-subtitle">'+C.subtitle+"</div>")}D.push("</div>");D.push('<div class="flotr-axis-title" style="font-weight:bold;">');if(A.x.options.title&&A.x.used){D.push('<div style="position:absolute;top:'+(this.plotOffset.top+this.plotHeight+C.grid.labelMargin+A.x.titleSize.height)+"px;left:"+this.plotOffset.left+"px;width:"+this.plotWidth+'px;text-align:center;" class="flotr-axis-title">'+A.x.options.title+"</div>")}if(A.x2.options.title&&A.x2.used){D.push('<div style="position:absolute;top:0;left:'+this.plotOffset.left+"px;width:"+this.plotWidth+'px;text-align:center;" class="flotr-axis-title">'+A.x2.options.title+"</div>")}if(A.y.options.title&&A.y.used){D.push('<div style="position:absolute;top:'+(this.plotOffset.top+this.plotHeight/2-A.y.titleSize.height/2)+'px;left:0;text-align:right;" class="flotr-axis-title">'+A.y.options.title+"</div>")}if(A.y2.options.title&&A.y2.used){D.push('<div style="position:absolute;top:'+(this.plotOffset.top+this.plotHeight/2-A.y.titleSize.height/2)+'px;right:0;text-align:right;" class="flotr-axis-title">'+A.y2.options.title+"</div>")}D.push("</div>");this.el.insert(D.join(""))}},drawSeries:function(A){A=A||this.series;var C=false;for(var B in Flotr._registeredTypes){if(A[B]&&A[B].show){this[Flotr._registeredTypes[B]](A);C=true}}if(!C){this[Flotr._registeredTypes[this.options.defaultType]](A)}},plotLine:function(I,F){var O=this.ctx,A=I.xaxis,K=I.yaxis,J=this.tHoz.bind(this),M=this.tVert.bind(this),H=I.data;if(H.length<2){return }var E=J(H[0][0],A),D=M(H[0][1],K)+F;O.beginPath();O.moveTo(E,D);for(var G=0;G<H.length-1;++G){var C=H[G][0],N=H[G][1],B=H[G+1][0],L=H[G+1][1];if(N===null||L===null){continue}if(N<=L&&N<K.min){if(L<K.min){continue}C=(K.min-N)/(L-N)*(B-C)+C;N=K.min}else{if(L<=N&&L<K.min){if(N<K.min){continue}B=(K.min-N)/(L-N)*(B-C)+C;L=K.min}}if(N>=L&&N>K.max){if(L>K.max){continue}C=(K.max-N)/(L-N)*(B-C)+C;N=K.max}else{if(L>=N&&L>K.max){if(N>K.max){continue}B=(K.max-N)/(L-N)*(B-C)+C;L=K.max}}if(C<=B&&C<A.min){if(B<A.min){continue}N=(A.min-C)/(B-C)*(L-N)+N;C=A.min}else{if(B<=C&&B<A.min){if(C<A.min){continue}L=(A.min-C)/(B-C)*(L-N)+N;B=A.min}}if(C>=B&&C>A.max){if(B>A.max){continue}N=(A.max-C)/(B-C)*(L-N)+N;C=A.max}else{if(B>=C&&B>A.max){if(C>A.max){continue}L=(A.max-C)/(B-C)*(L-N)+N;B=A.max}}if(E!=J(C,A)||D!=M(N,K)+F){O.moveTo(J(C,A),M(N,K)+F)}E=J(B,A);D=M(L,K)+F;O.lineTo(E,D)}O.stroke()},plotLineArea:function(J,D){var S=J.data;if(S.length<2){return }var L,G=0,N=this.ctx,Q=J.xaxis,B=J.yaxis,E=this.tHoz.bind(this),M=this.tVert.bind(this),H=Math.min(Math.max(0,B.min),B.max),F=true;N.beginPath();for(var O=0;O<S.length-1;++O){var R=S[O][0],C=S[O][1],P=S[O+1][0],A=S[O+1][1];if(R<=P&&R<Q.min){if(P<Q.min){continue}C=(Q.min-R)/(P-R)*(A-C)+C;R=Q.min}else{if(P<=R&&P<Q.min){if(R<Q.min){continue}A=(Q.min-R)/(P-R)*(A-C)+C;P=Q.min}}if(R>=P&&R>Q.max){if(P>Q.max){continue}C=(Q.max-R)/(P-R)*(A-C)+C;R=Q.max}else{if(P>=R&&P>Q.max){if(R>Q.max){continue}A=(Q.max-R)/(P-R)*(A-C)+C;P=Q.max}}if(F){N.moveTo(E(R,Q),M(H,B)+D);F=false}if(C>=B.max&&A>=B.max){N.lineTo(E(R,Q),M(B.max,B)+D);N.lineTo(E(P,Q),M(B.max,B)+D);continue}else{if(C<=B.min&&A<=B.min){N.lineTo(E(R,Q),M(B.min,B)+D);N.lineTo(E(P,Q),M(B.min,B)+D);continue}}var I=R,K=P;if(C<=A&&C<B.min&&A>=B.min){R=(B.min-C)/(A-C)*(P-R)+R;C=B.min}else{if(A<=C&&A<B.min&&C>=B.min){P=(B.min-C)/(A-C)*(P-R)+R;A=B.min}}if(C>=A&&C>B.max&&A<=B.max){R=(B.max-C)/(A-C)*(P-R)+R;C=B.max}else{if(A>=C&&A>B.max&&C<=B.max){P=(B.max-C)/(A-C)*(P-R)+R;A=B.max}}if(R!=I){L=(C<=B.min)?L=B.min:B.max;N.lineTo(E(I,Q),M(L,B)+D);N.lineTo(E(R,Q),M(L,B)+D)}N.lineTo(E(R,Q),M(C,B)+D);N.lineTo(E(P,Q),M(A,B)+D);if(P!=K){L=(A<=B.min)?B.min:B.max;N.lineTo(E(K,Q),M(L,B)+D);N.lineTo(E(P,Q),M(L,B)+D)}G=Math.max(P,K)}N.lineTo(E(G,Q),M(H,B)+D);N.closePath();N.fill()},drawSeriesLines:function(C){C=C||this.series;var B=this.ctx;B.save();B.translate(this.plotOffset.left,this.plotOffset.top);B.lineJoin="round";var D=C.lines.lineWidth;var A=C.shadowSize;if(A>0){B.lineWidth=A/2;var E=D/2+B.lineWidth/2;B.strokeStyle="rgba(0,0,0,0.1)";this.plotLine(C,E+A/2);B.strokeStyle="rgba(0,0,0,0.2)";this.plotLine(C,E);if(C.lines.fill){B.fillStyle="rgba(0,0,0,0.05)";this.plotLineArea(C,E+A/2)}}B.lineWidth=D;B.strokeStyle=C.color;if(C.lines.fill){B.fillStyle=C.lines.fillColor!=null?C.lines.fillColor:Flotr.parseColor(C.color).scale(null,null,null,C.lines.fillOpacity).toString();this.plotLineArea(C,0)}this.plotLine(C,0);B.restore()},drawSeriesPoints:function(C){var B=this.ctx;B.save();B.translate(this.plotOffset.left,this.plotOffset.top);var D=C.lines.lineWidth;var A=C.shadowSize;if(A>0){B.lineWidth=A/2;B.strokeStyle="rgba(0,0,0,0.1)";this.plotPointShadows(C,A/2+B.lineWidth/2,C.points.radius);B.strokeStyle="rgba(0,0,0,0.2)";this.plotPointShadows(C,B.lineWidth/2,C.points.radius)}B.lineWidth=C.points.lineWidth;B.strokeStyle=C.color;B.fillStyle=C.points.fillColor!=null?C.points.fillColor:C.color;this.plotPoints(C,C.points.radius,C.points.fill);B.restore()},plotPoints:function(C,E,I){var A=C.xaxis,F=C.yaxis,J=this.ctx,D,B=C.data;for(D=B.length-1;D>-1;--D){var H=B[D][0],G=B[D][1];if(H<A.min||H>A.max||G<F.min||G>F.max){continue}J.beginPath();J.arc(this.tHoz(H,A),this.tVert(G,F),E,0,2*Math.PI,true);if(I){J.fill()}J.stroke()}},plotPointShadows:function(D,B,F){var A=D.xaxis,G=D.yaxis,J=this.ctx,E,C=D.data;for(E=C.length-1;E>-1;--E){var I=C[E][0],H=C[E][1];if(I<A.min||I>A.max||H<G.min||H>G.max){continue}J.beginPath();J.arc(this.tHoz(I,A),this.tVert(H,G)+B,F,0,Math.PI,false);J.stroke()}},drawSeriesBars:function(B){var A=this.ctx,D=B.bars.barWidth,C=Math.min(B.bars.lineWidth,D);A.save();A.translate(this.plotOffset.left,this.plotOffset.top);A.lineJoin="miter";A.lineWidth=C;A.strokeStyle=B.color;this.plotBarsShadows(B,D,0,B.bars.fill);if(B.bars.fill){A.fillStyle=B.bars.fillColor!=null?B.bars.fillColor:Flotr.parseColor(B.color).scale(null,null,null,B.bars.fillOpacity).toString()}this.plotBars(B,D,0,B.bars.fill);A.restore()},plotBars:function(K,N,D,Q){var U=K.data;if(U.length<1){return }var S=K.xaxis,B=K.yaxis,P=this.ctx,F=this.tHoz.bind(this),O=this.tVert.bind(this);for(var R=0;R<U.length;R++){var J=U[R][0],I=U[R][1];var E=true,L=true,A=true;var H=0;if(K.bars.stacked){S.values.each(function(W,V){if(V==J){H=W.stack||0;W.stack=H+I}})}if(K.bars.horizontal){var C=H,T=J+H,G=I,M=I+N}else{var C=J,T=J+N,G=H,M=I+H}if(T<S.min||C>S.max||M<B.min||G>B.max){continue}if(C<S.min){C=S.min;E=false}if(T>S.max){T=S.max;if(S.lastSerie!=K&&K.bars.horizontal){L=false}}if(G<B.min){G=B.min}if(M>B.max){M=B.max;if(B.lastSerie!=K&&!K.bars.horizontal){L=false}}if(Q){P.beginPath();P.moveTo(F(C,S),O(G,B)+D);P.lineTo(F(C,S),O(M,B)+D);P.lineTo(F(T,S),O(M,B)+D);P.lineTo(F(T,S),O(G,B)+D);P.fill()}if(K.bars.lineWidth!=0&&(E||A||L)){P.beginPath();P.moveTo(F(C,S),O(G,B)+D);P[E?"lineTo":"moveTo"](F(C,S),O(M,B)+D);P[L?"lineTo":"moveTo"](F(T,S),O(M,B)+D);P[A?"lineTo":"moveTo"](F(T,S),O(G,B)+D);P.stroke()}}},plotBarsShadows:function(I,K,C){var T=I.data;if(T.length<1){return }var R=I.xaxis,A=I.yaxis,P=this.ctx,D=this.tHoz.bind(this),M=this.tVert.bind(this),N=this.options.shadowSize;for(var Q=0;Q<T.length;Q++){var H=T[Q][0],G=T[Q][1];var E=0;if(I.bars.stacked){R.values.each(function(V,U){if(U==H){E=V.stackShadow||0;V.stackShadow=E+G}})}if(I.bars.horizontal){var B=E,S=H+E,F=G,J=G+K}else{var B=H,S=H+K,F=E,J=G+E}if(S<R.min||B>R.max||J<A.min||F>A.max){continue}if(B<R.min){B=R.min}if(S>R.max){S=R.max}if(F<A.min){F=A.min}if(J>A.max){J=A.max}var O=D(S,R)-D(B,R)-((D(S,R)+N<=this.plotWidth)?0:N);var L=Math.max(0,M(F,A)-M(J,A)-((M(F,A)+N<=this.plotHeight)?0:N));P.fillStyle="rgba(0,0,0,0.05)";P.fillRect(Math.min(D(B,R)+N,this.plotWidth),Math.min(M(J,A)+N,this.plotWidth),O,L)}},drawSeriesCandles:function(B){var A=this.ctx,C=B.candles.candleWidth;A.save();A.translate(this.plotOffset.left,this.plotOffset.top);A.lineJoin="miter";A.lineWidth=B.candles.lineWidth;this.plotCandlesShadows(B,C/2);this.plotCandles(B,C/2);A.restore()},plotCandles:function(K,D){var W=K.data;if(W.length<1){return }var T=K.xaxis,B=K.yaxis,P=this.ctx,E=this.tHoz.bind(this),O=this.tVert.bind(this);for(var S=0;S<W.length;S++){var U=W[S],J=U[0],L=U[1],I=U[2],X=U[3],N=U[4];var C=J,V=J+K.candles.candleWidth,G=Math.max(B.min,X),M=Math.min(B.max,I),A=Math.max(B.min,Math.min(L,N)),R=Math.min(B.max,Math.max(L,N));if(V<T.min||C>T.max||M<B.min||G>B.max){continue}var Q=K.candles[L>N?"downFillColor":"upFillColor"];if(K.candles.fill&&!K.candles.barcharts){P.fillStyle=Flotr.parseColor(Q).scale(null,null,null,K.candles.fillOpacity).toString();P.fillRect(E(C,T),O(R,B)+D,E(V,T)-E(C,T),O(A,B)-O(R,B))}if(K.candles.lineWidth||K.candles.wickLineWidth){var J,H,F=(K.candles.wickLineWidth%2)/2;J=Math.floor(E((C+V)/2),T)+F;P.save();P.strokeStyle=Q;P.lineWidth=K.candles.wickLineWidth;P.lineCap="butt";if(K.candles.barcharts){P.beginPath();P.moveTo(J,Math.floor(O(M,B)+D));P.lineTo(J,Math.floor(O(G,B)+D));H=Math.floor(O(L,B)+D)+0.5;P.moveTo(Math.floor(E(C,T))+F,H);P.lineTo(J,H);H=Math.floor(O(N,B)+D)+0.5;P.moveTo(Math.floor(E(V,T))+F,H);P.lineTo(J,H)}else{P.strokeRect(E(C,T),O(R,B)+D,E(V,T)-E(C,T),O(A,B)-O(R,B));P.beginPath();P.moveTo(J,Math.floor(O(R,B)+D));P.lineTo(J,Math.floor(O(M,B)+D));P.moveTo(J,Math.floor(O(A,B)+D));P.lineTo(J,Math.floor(O(G,B)+D))}P.stroke();P.restore()}}},plotCandlesShadows:function(H,C){var T=H.data;if(T.length<1||H.candles.barcharts){return }var Q=H.xaxis,A=H.yaxis,D=this.tHoz.bind(this),M=this.tVert.bind(this),N=this.options.shadowSize;for(var P=0;P<T.length;P++){var R=T[P],G=R[0],I=R[1],F=R[2],U=R[3],K=R[4];var B=G,S=G+H.candles.candleWidth,E=Math.max(A.min,Math.min(I,K)),J=Math.min(A.max,Math.max(I,K));if(S<Q.min||B>Q.max||J<A.min||E>A.max){continue}var O=D(S,Q)-D(B,Q)-((D(S,Q)+N<=this.plotWidth)?0:N);var L=Math.max(0,M(E,A)-M(J,A)-((M(E,A)+N<=this.plotHeight)?0:N));this.ctx.fillStyle="rgba(0,0,0,0.05)";this.ctx.fillRect(Math.min(D(B,Q)+N,this.plotWidth),Math.min(M(J,A)+N,this.plotWidth),O,L)}},drawSeriesPie:function(G){if(!this.options.pie.drawn){var K=this.ctx,C=this.options,E=G.pie.lineWidth,I=G.shadowSize,R=G.data,D=(Math.min(this.canvasWidth,this.canvasHeight)*G.pie.sizeRatio)/2,H=[];var L=1;var P=Math.sin(G.pie.viewAngle)*G.pie.spliceThickness/L;var M={size:C.fontSize*1.2,color:C.grid.color,weight:1.5};var Q={x:(this.canvasWidth+this.plotOffset.left)/2,y:(this.canvasHeight-this.plotOffset.bottom)/2};var O=this.series.collect(function(T,S){if(T.pie.show){return{name:(T.label||T.data[0][1]),value:[S,T.data[0][1]],explode:T.pie.explode}}});var B=O.pluck("value").pluck(1).inject(0,function(S,T){return S+T});var F=0,N=G.pie.startAngle,J=0;var A=O.collect(function(S){N+=F;J=parseFloat(S.value[1]);F=J/B;return{name:S.name,fraction:F,x:S.value[0],y:J,explode:S.explode,startAngle:2*N*Math.PI,endAngle:2*(N+F)*Math.PI}});K.save();if(I>0){A.each(function(V){var S=(V.startAngle+V.endAngle)/2;var T=Q.x+Math.cos(S)*V.explode+I;var U=Q.y+Math.sin(S)*V.explode+I;this.plotSlice(T,U,D,V.startAngle,V.endAngle,false,L);K.fillStyle="rgba(0,0,0,0.1)";K.fill()},this)}if(C.HtmlText){H=['<div style="color:'+this.options.grid.color+'" class="flotr-labels">']}A.each(function(c,X){var W=(c.startAngle+c.endAngle)/2;var V=C.colors[X];var Y=Q.x+Math.cos(W)*c.explode;var U=Q.y+Math.sin(W)*c.explode;this.plotSlice(Y,U,D,c.startAngle,c.endAngle,false,L);if(G.pie.fill){K.fillStyle=Flotr.parseColor(V).scale(null,null,null,G.pie.fillOpacity).toString();K.fill()}K.lineWidth=E;K.strokeStyle=V;K.stroke();var b=C.pie.labelFormatter(c);var S=(Math.cos(W)<0);var a=Y+Math.cos(W)*(G.pie.explode+D);var Z=U+Math.sin(W)*(G.pie.explode+D);if(c.fraction&&b){if(C.HtmlText){var T="position:absolute;top:"+(Z-5)+"px;";if(S){T+="right:"+(this.canvasWidth-a)+"px;text-align:right;"}else{T+="left:"+a+"px;text-align:left;"}H.push('<div style="'+T+'" class="flotr-grid-label">'+b+"</div>")}else{M.halign=S?"r":"l";K.drawText(b,a,Z+M.size/2,M)}}},this);if(C.HtmlText){H.push("</div>");this.el.insert(H.join(""))}K.restore();C.pie.drawn=true}},plotSlice:function(B,H,A,E,D,F,G){var C=this.ctx;G=G||1;C.save();C.scale(1,G);C.beginPath();C.moveTo(B,H);C.arc(B,H,A,E,D,F);C.lineTo(B,H);C.closePath();C.restore()},plotPie:function(){},insertLegend:function(){if(!this.options.legend.show){return }var H=this.series,I=this.plotOffset,B=this.options,b=[],A=false,O=this.ctx,R;var Q=H.findAll(function(c){return(c.label&&!c.hide)}).size();if(Q){if(!B.HtmlText&&this.textEnabled){var T={size:B.fontSize*1.1,color:B.grid.color};var M=B.legend.position,N=B.legend.margin,L=B.legend.labelBoxWidth,Z=B.legend.labelBoxHeight,S=B.legend.labelBoxMargin,W=I.left+N,U=I.top+N;var a=0;for(R=H.length-1;R>-1;--R){if(!H[R].label||H[R].hide){continue}var E=B.legend.labelFormatter(H[R].label);a=Math.max(a,O.measureText(E,T))}var K=Math.round(L+S*3+a),C=Math.round(Q*(S+Z)+S);if(M.charAt(0)=="s"){U=I.top+this.plotHeight-(N+C)}if(M.charAt(1)=="e"){W=I.left+this.plotWidth-(N+K)}var P=Flotr.parseColor(B.legend.backgroundColor||"rgb(240,240,240)").scale(null,null,null,B.legend.backgroundOpacity||0.1).toString();O.fillStyle=P;O.fillRect(W,U,K,C);O.strokeStyle=B.legend.labelBoxBorderColor;O.strokeRect(Flotr.toPixel(W),Flotr.toPixel(U),K,C);var G=W+S;var F=U+S;for(R=0;R<H.length;R++){if(!H[R].label||H[R].hide){continue}var E=B.legend.labelFormatter(H[R].label);O.fillStyle=H[R].color;O.fillRect(G,F,L-1,Z-1);O.strokeStyle=B.legend.labelBoxBorderColor;O.lineWidth=1;O.strokeRect(Math.ceil(G)-1.5,Math.ceil(F)-1.5,L+2,Z+2);O.drawText(E,G+L+S,F+(Z+T.size-O.fontDescent(T))/2,T);F+=Z+S}}else{for(R=0;R<H.length;++R){if(!H[R].label||H[R].hide){continue}if(R%B.legend.noColumns==0){b.push(A?"</tr><tr>":"<tr>");A=true}var E=B.legend.labelFormatter(H[R].label);b.push('<td class="flotr-legend-color-box"><div style="border:1px solid '+B.legend.labelBoxBorderColor+';padding:1px"><div style="width:'+B.legend.labelBoxWidth+"px;height:"+B.legend.labelBoxHeight+"px;background-color:"+H[R].color+'"></div></div></td><td class="flotr-legend-label">'+E+"</td>")}if(A){b.push("</tr>")}if(b.length>0){var V='<table style="font-size:smaller;color:'+B.grid.color+'">'+b.join("")+"</table>";if(B.legend.container!=null){$(B.legend.container).update(V)}else{var D="";var M=B.legend.position,N=B.legend.margin;if(M.charAt(0)=="n"){D+="top:"+(N+I.top)+"px;"}else{if(M.charAt(0)=="s"){D+="bottom:"+(N+I.bottom)+"px;"}}if(M.charAt(1)=="e"){D+="right:"+(N+I.right)+"px;"}else{if(M.charAt(1)=="w"){D+="left:"+(N+I.left)+"px;"}}var J=this.el.insert('<div class="flotr-legend" style="position:absolute;z-index:2;'+D+'">'+V+"</div>").select("div.flotr-legend").first();if(B.legend.backgroundOpacity!=0){var Y=B.legend.backgroundColor;if(Y==null){var X=(B.grid.backgroundColor!=null)?B.grid.backgroundColor:Flotr.extractColor(J);Y=Flotr.parseColor(X).adjust(null,null,null,1).toString()}this.el.insert('<div class="flotr-legend-bg" style="position:absolute;width:'+J.getWidth()+"px;height:"+J.getHeight()+"px;"+D+"background-color:"+Y+';"> </div>').select("div.flotr-legend-bg").first().setStyle({opacity:B.legend.backgroundOpacity})}}}}}},getEventPosition:function(C){var G=this.overlay.cumulativeOffset(),F=(C.pageX-G.left-this.plotOffset.left),E=(C.pageY-G.top-this.plotOffset.top),D=0,B=0;if(C.pageX==null&&C.clientX!=null){var H=document.documentElement,A=document.body;D=C.clientX+(H&&H.scrollLeft||A.scrollLeft||0);B=C.clientY+(H&&H.scrollTop||A.scrollTop||0)}else{D=C.pageX;B=C.pageY}return{x:this.axes.x.min+F/this.axes.x.scale,x2:this.axes.x2.min+F/this.axes.x2.scale,y:this.axes.y.max-E/this.axes.y.scale,y2:this.axes.y2.max-E/this.axes.y2.scale,relX:F,relY:E,absX:D,absY:B}},clickHandler:function(A){if(this.ignoreClick){this.ignoreClick=false;return }this.el.fire("flotr:click",[this.getEventPosition(A),this])},mouseMoveHandler:function(A){var B=this.getEventPosition(A);this.lastMousePos.pageX=B.absX;this.lastMousePos.pageY=B.absY;if(this.selectionInterval==null&&(this.options.mouse.track||this.series.any(function(C){return C.mouse&&C.mouse.track}))){this.hit(B)}this.el.fire("flotr:mousemove",[A,B,this])},mouseDownHandler:function(C){if(C.isRightClick()){C.stop();var B=this.overlay;B.hide();function A(){B.show();$(document).stopObserving("mousemove",A)}$(document).observe("mousemove",A);return }if(!this.options.selection.mode||!C.isLeftClick()){return }this.setSelectionPos(this.selection.first,C);if(this.selectionInterval!=null){clearInterval(this.selectionInterval)}this.lastMousePos.pageX=null;this.selectionInterval=setInterval(this.updateSelection.bind(this),1000/this.options.selection.fps);this.mouseUpHandler=this.mouseUpHandler.bind(this);$(document).observe("mouseup",this.mouseUpHandler)},fireSelectEvent:function(){var A=this.axes,F=this.selection,C=(F.first.x<=F.second.x)?F.first.x:F.second.x,B=(F.first.x<=F.second.x)?F.second.x:F.first.x,E=(F.first.y>=F.second.y)?F.first.y:F.second.y,D=(F.first.y>=F.second.y)?F.second.y:F.first.y;C=A.x.min+C/A.x.scale;B=A.x.min+B/A.x.scale;E=A.y.max-E/A.y.scale;D=A.y.max-D/A.y.scale;this.el.fire("flotr:select",[{x1:C,y1:E,x2:B,y2:D},this])},mouseUpHandler:function(A){$(document).stopObserving("mouseup",this.mouseUpHandler);A.stop();if(this.selectionInterval!=null){clearInterval(this.selectionInterval);this.selectionInterval=null}this.setSelectionPos(this.selection.second,A);this.clearSelection();if(this.selectionIsSane()){this.drawSelection();this.fireSelectEvent();this.ignoreClick=true}},setSelectionPos:function(D,B){var A=this.options,C=$(this.overlay).cumulativeOffset();if(A.selection.mode.indexOf("x")==-1){D.x=(D==this.selection.first)?0:this.plotWidth}else{D.x=B.pageX-C.left-this.plotOffset.left;D.x=Math.min(Math.max(0,D.x),this.plotWidth)}if(A.selection.mode.indexOf("y")==-1){D.y=(D==this.selection.first)?0:this.plotHeight}else{D.y=B.pageY-C.top-this.plotOffset.top;D.y=Math.min(Math.max(0,D.y),this.plotHeight)}},updateSelection:function(){if(this.lastMousePos.pageX==null){return }this.setSelectionPos(this.selection.second,this.lastMousePos);this.clearSelection();if(this.selectionIsSane()){this.drawSelection()}},clearSelection:function(){if(this.prevSelection==null){return }var G=this.prevSelection,E=this.octx,C=this.plotOffset,A=Math.min(G.first.x,G.second.x),F=Math.min(G.first.y,G.second.y),B=Math.abs(G.second.x-G.first.x),D=Math.abs(G.second.y-G.first.y);E.clearRect(A+C.left-E.lineWidth,F+C.top-E.lineWidth,B+E.lineWidth*2,D+E.lineWidth*2);this.prevSelection=null},setSelection:function(G){var B=this.options,H=this.axes.x,A=this.axes.y,F=yaxis.scale,D=xaxis.scale,E=B.selection.mode.indexOf("x")!=-1,C=B.selection.mode.indexOf("y")!=-1;this.clearSelection();this.selection.first.y=E?0:(A.max-G.y1)*F;this.selection.second.y=E?this.plotHeight:(A.max-G.y2)*F;this.selection.first.x=C?0:(G.x1-H.min)*D;this.selection.second.x=C?this.plotWidth:(G.x2-H.min)*D;this.drawSelection();this.fireSelectEvent()},drawSelection:function(){var C=this.prevSelection,F=this.selection,H=this.octx,I=this.options,A=this.plotOffset;if(C!=null&&F.first.x==C.first.x&&F.first.y==C.first.y&&F.second.x==C.second.x&&F.second.y==C.second.y){return }H.strokeStyle=Flotr.parseColor(I.selection.color).scale(null,null,null,0.8).toString();H.lineWidth=1;H.lineJoin="round";H.fillStyle=Flotr.parseColor(I.selection.color).scale(null,null,null,0.4).toString();this.prevSelection={first:{x:F.first.x,y:F.first.y},second:{x:F.second.x,y:F.second.y}};var E=Math.min(F.first.x,F.second.x),D=Math.min(F.first.y,F.second.y),G=Math.abs(F.second.x-F.first.x),B=Math.abs(F.second.y-F.first.y);H.fillRect(E+A.left,D+A.top,G,B);H.strokeRect(E+A.left,D+A.top,G,B)},selectionIsSane:function(){var A=this.selection;return Math.abs(A.second.x-A.first.x)>=5&&Math.abs(A.second.y-A.first.y)>=5},clearHit:function(){if(this.prevHit){var B=this.options,A=this.plotOffset,C=this.prevHit;this.octx.clearRect(this.tHoz(C.x)+A.left-B.points.radius*2,this.tVert(C.y)+A.top-B.points.radius*2,B.points.radius*3+B.points.lineWidth*3,B.points.radius*3+B.points.lineWidth*3);this.prevHit=null}},hit:function(I){var G=this.series,C=this.options,R=this.prevHit,H=this.plotOffset,D=this.octx,S,A,M,Q,L={dist:Number.MAX_VALUE,x:null,y:null,relX:I.relX,relY:I.relY,absX:I.absX,absY:I.absY,mouse:null};for(Q=0;Q<G.length;Q++){s=G[Q];if(!s.mouse.track){continue}S=s.data;A=(s.xaxis.scale*s.mouse.sensibility);M=(s.yaxis.scale*s.mouse.sensibility);for(var P=0,B,E;P<S.length;P++){if(S[P][1]===null){continue}B=Math.pow(s.xaxis.scale*(S[P][0]-I.x),2);E=Math.pow(s.yaxis.scale*(S[P][1]-I.y),2);if(B<A&&E<M&&Math.sqrt(B+E)<L.dist){L.dist=Math.sqrt(B+E);L.x=S[P][0];L.y=S[P][1];L.mouse=s.mouse}}}if(L.mouse&&L.mouse.track&&!R||(R&&(L.x!=R.x||L.y!=R.y))){var K=this.mouseTrack||this.el.select(".flotr-mouse-value")[0],F="",J=C.mouse.position,N=C.mouse.margin,O="opacity:0.7;background-color:#000;color:#fff;display:none;position:absolute;padding:2px 8px;-moz-border-radius:4px;border-radius:4px;white-space:nowrap;";if(!C.mouse.relative){if(J.charAt(0)=="n"){F+="top:"+(N+H.top)+"px;"}else{if(J.charAt(0)=="s"){F+="bottom:"+(N+H.bottom)+"px;"}}if(J.charAt(1)=="e"){F+="right:"+(N+H.right)+"px;"}else{if(J.charAt(1)=="w"){F+="left:"+(N+H.left)+"px;"}}}else{if(J.charAt(0)=="n"){F+="bottom:"+(N-H.top-this.tVert(L.y)+this.canvasHeight)+"px;"}else{if(J.charAt(0)=="s"){F+="top:"+(N+H.top+this.tVert(L.y))+"px;"}}if(J.charAt(1)=="e"){F+="left:"+(N+H.left+this.tHoz(L.x))+"px;"}else{if(J.charAt(1)=="w"){F+="right:"+(N-H.left-this.tHoz(L.x)+this.canvasWidth)+"px;"}}}O+=F;if(!K){this.el.insert('<div class="flotr-mouse-value" style="'+O+'"></div>');K=this.mouseTrack=this.el.select(".flotr-mouse-value").first()}else{this.mouseTrack=K.setStyle(O)}if(L.x!==null&&L.y!==null){K.show();this.clearHit();if(L.mouse.lineColor!=null){D.save();D.translate(H.left,H.top);D.lineWidth=C.points.lineWidth;D.strokeStyle=L.mouse.lineColor;D.fillStyle="#ffffff";D.beginPath();D.arc(this.tHoz(L.x),this.tVert(L.y),C.mouse.radius,0,2*Math.PI,true);D.fill();D.stroke();D.restore()}this.prevHit=L;var T=L.mouse.trackDecimals;if(T==null||T<0){T=0}K.innerHTML=L.mouse.trackFormatter({x:L.x.toFixed(T),y:L.y.toFixed(T)});K.fire("flotr:hit",[L,this])}else{if(R){K.hide();this.clearHit()}}}},saveImage:function(D,C,A,B){var E=null;switch(D){case"jpeg":case"jpg":E=Canvas2Image.saveAsJPEG(this.canvas,B,C,A);break;default:case"png":E=Canvas2Image.saveAsPNG(this.canvas,B,C,A);break;case"bmp":E=Canvas2Image.saveAsBMP(this.canvas,B,C,A);break}if(Object.isElement(E)&&B){this.restoreCanvas();this.canvas.hide();this.overlay.hide();this.el.insert(E.setStyle({position:"absolute"}))}},restoreCanvas:function(){this.canvas.show();this.overlay.show();this.el.select("img").invoke("remove")}});Flotr.Color=Class.create({initialize:function(E,D,B,C){this.rgba=["r","g","b","a"];var A=4;while(-1<--A){this[this.rgba[A]]=arguments[A]||((A==3)?1:0)}this.normalize()},adjust:function(D,C,E,B){var A=4;while(-1<--A){if(arguments[A]!=null){this[this.rgba[A]]+=arguments[A]}}return this.normalize()},clone:function(){return new Flotr.Color(this.r,this.b,this.g,this.a)},limit:function(B,A,C){return Math.max(Math.min(B,C),A)},normalize:function(){var A=this.limit;this.r=A(parseInt(this.r),0,255);this.g=A(parseInt(this.g),0,255);this.b=A(parseInt(this.b),0,255);this.a=A(this.a,0,1);return this},scale:function(D,C,E,B){var A=4;while(-1<--A){if(arguments[A]!=null){this[this.rgba[A]]*=arguments[A]}}return this.normalize()},distance:function(B){if(!B){return }B=new Flotr.parseColor(B);var C=0;var A=3;while(-1<--A){C+=Math.abs(this[this.rgba[A]]-B[this.rgba[A]])}return C},toString:function(){return(this.a>=1)?"rgb("+[this.r,this.g,this.b].join(",")+")":"rgba("+[this.r,this.g,this.b,this.a].join(",")+")"}});Flotr.Color.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]};Flotr.Date={format:function(F,E){if(!F){return }var A=function(H){H=H.toString();return H.length==1?"0"+H:H};var D=[];var C=false;for(var B=0;B<E.length;++B){var G=E.charAt(B);if(C){switch(G){case"h":G=F.getUTCHours().toString();break;case"H":G=A(F.getUTCHours());break;case"M":G=A(F.getUTCMinutes());break;case"S":G=A(F.getUTCSeconds());break;case"d":G=F.getUTCDate().toString();break;case"m":G=(F.getUTCMonth()+1).toString();break;case"y":G=F.getUTCFullYear().toString();break;case"b":G=Flotr.Date.monthNames[F.getUTCMonth()];break}D.push(G);C=false}else{if(G=="%"){C=true}else{D.push(G)}}}return D.join("")},timeUnits:{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},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"]],monthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]}; |
//Flotr 0.2.0-alpha Copyright (c) 2009 Bas Wenneker, <http://solutoire.com>, MIT License. | |
// | |
//Radar chart added by Ryan Simmons | |
// | |
/* $Id: flotr.js 82 2009-01-12 19:19:31Z fabien.menager $ */ | |
var Flotr = { | |
version: '0.2.0-alpha', | |
author: 'Bas Wenneker', | |
website: 'http://www.solutoire.com', | |
/** | |
* An object of the default registered graph types. Use Flotr.register(type, functionName) | |
* to add your own type. | |
*/ | |
_registeredTypes:{ | |
'lines': 'drawSeriesLines', | |
'points': 'drawSeriesPoints', | |
'bars': 'drawSeriesBars', | |
'candles': 'drawSeriesCandles', | |
'pie': 'drawSeriesPie', | |
'radar':'drawSeriesRadar' | |
}, | |
/** | |
* Can be used to register your own chart type. Default types are 'lines', 'points' and 'bars'. | |
* This is still experimental. | |
* @todo Test and confirm. | |
* @param {String} type - type of chart, like 'pies', 'bars' etc. | |
* @param {String} functionName - Name of the draw function, like 'drawSeriesPies', 'drawSeriesBars' etc. | |
*/ | |
register: function(type, functionName){ | |
Flotr._registeredTypes[type] = functionName+''; | |
}, | |
/** | |
* Draws the graph. This function is here for backwards compatibility with Flotr version 0.1.0alpha. | |
* You could also draw graphs by directly calling Flotr.Graph(element, data, options). | |
* @param {Element} el - element to insert the graph into | |
* @param {Object} data - an array or object of dataseries | |
* @param {Object} options - an object containing options | |
* @param {Class} _GraphKlass_ - (optional) Class to pass the arguments to, defaults to Flotr.Graph | |
* @return {Class} returns a new graph object and of course draws the graph. | |
*/ | |
draw: function(el, data, options, _GraphKlass_){ | |
_GraphKlass_ = _GraphKlass_ || Flotr.Graph; | |
return new _GraphKlass_(el, data, options); | |
}, | |
/** | |
* Collects dataseries from input and parses the series into the right format. It returns an Array | |
* of Objects each having at least the 'data' key set. | |
* @param {Array/Object} data - Object or array of dataseries | |
* @return {Array} Array of Objects parsed into the right format ({(...,) data: [[x1,y1], [x2,y2], ...] (, ...)}) | |
*/ | |
getSeries: function(data){ | |
return data.collect(function(serie){ | |
var i, serie = (serie.data) ? Object.clone(serie) : {'data': serie}; | |
for (i = serie.data.length-1; i > -1; --i) { | |
serie.data[i][1] = (serie.data[i][1] === null ? null : parseFloat(serie.data[i][1])); | |
} | |
return serie; | |
}); | |
}, | |
/** | |
* Recursively merges two objects. | |
* @param {Object} src - source object (likely the object with the least properties) | |
* @param {Object} dest - destination object (optional, object with the most properties) | |
* @return {Object} recursively merged Object | |
*/ | |
merge: function(src, dest){ | |
var result = dest || {}; | |
for(var i in src){ | |
result[i] = (src[i] != null && typeof(src[i]) == 'object' && !(src[i].constructor == Array || src[i].constructor == RegExp) && !Object.isElement(src[i])) ? Flotr.merge(src[i], dest[i]) : result[i] = src[i]; | |
} | |
return result; | |
}, | |
/** | |
* Function calculates the ticksize and returns it. | |
* @param {Integer} noTicks - number of ticks | |
* @param {Integer} min - lower bound integer value for the current axis | |
* @param {Integer} max - upper bound integer value for the current axis | |
* @param {Integer} decimals - number of decimals for the ticks | |
* @return {Integer} returns the ticksize in pixels | |
*/ | |
getTickSize: function(noTicks, min, max, decimals){ | |
var delta = (max - min) / noTicks; | |
var magn = Flotr.getMagnitude(delta); | |
// Norm is between 1.0 and 10.0. | |
var norm = delta / magn; | |
var tickSize = 10; | |
if(norm < 1.5) tickSize = 1; | |
else if(norm < 2.25) tickSize = 2; | |
else if(norm < 3) tickSize = ((decimals == 0) ? 2 : 2.5); | |
else if(norm < 7.5) tickSize = 5; | |
return tickSize * magn; | |
}, | |
/** | |
* Default tick formatter. | |
* @param {String/Integer} val - tick value integer | |
* @return {String} formatted tick string | |
*/ | |
defaultTickFormatter: function(val){ | |
return val+''; | |
}, | |
/** | |
* Formats the mouse tracker values. | |
* @param {Object} obj - Track value Object {x:..,y:..} | |
* @return {String} Formatted track string | |
*/ | |
defaultTrackFormatter: function(obj){ | |
return '('+obj.x+', '+obj.y+')'; | |
}, | |
defaultPieLabelFormatter: function(slice) { | |
return (slice.fraction*100).toFixed(2)+'%'; | |
}, | |
/** | |
* Returns the magnitude of the input value. | |
* @param {Integer/Float} x - integer or float value | |
* @return {Integer/Float} returns the magnitude of the input value | |
*/ | |
getMagnitude: function(x){ | |
return Math.pow(10, Math.floor(Math.log(x) / Math.LN10)); | |
}, | |
toPixel: function(val){ | |
return Math.floor(val)+0.5;//((val-Math.round(val) < 0.4) ? (Math.floor(val)-0.5) : val); | |
}, | |
toRad: function(angle){ | |
return -angle * (Math.PI/180); | |
}, | |
/** | |
* Parses a color string and returns a corresponding Color. | |
* @param {String} str - string thats representing a color | |
* @return {Color} returns a Color object or false | |
*/ | |
parseColor: function(str){ | |
if (str instanceof Flotr.Color) return str; | |
var result, Color = Flotr.Color; | |
// rgb(num,num,num) | |
if((result = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(str))) | |
return new Color(parseInt(result[1]), parseInt(result[2]), parseInt(result[3])); | |
// rgba(num,num,num,num) | |
if((result = /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 new Color(parseInt(result[1]), parseInt(result[2]), parseInt(result[3]), parseFloat(result[4])); | |
// rgb(num%,num%,num%) | |
if((result = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(str))) | |
return new Color(parseFloat(result[1])*2.55, parseFloat(result[2])*2.55, parseFloat(result[3])*2.55); | |
// rgba(num%,num%,num%,num) | |
if((result = /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 new Color(parseFloat(result[1])*2.55, parseFloat(result[2])*2.55, parseFloat(result[3])*2.55, parseFloat(result[4])); | |
// #a0b1c2 | |
if((result = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(str))) | |
return new Color(parseInt(result[1],16), parseInt(result[2],16), parseInt(result[3],16)); | |
// #fff | |
if((result = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(str))) | |
return new Color(parseInt(result[1]+result[1],16), parseInt(result[2]+result[2],16), parseInt(result[3]+result[3],16)); | |
// Otherwise, we're most likely dealing with a named color. | |
var name = str.strip().toLowerCase(); | |
if(name == 'transparent'){ | |
return new Color(255, 255, 255, 0); | |
} | |
return ((result = Color.lookupColors[name])) ? new Color(result[0], result[1], result[2]) : false; | |
}, | |
/** | |
* Extracts the background-color of the passed element. | |
* @param {Element} element | |
* @return {String} color string | |
*/ | |
extractColor: function(element){ | |
var color; | |
// Loop until we find an element with a background color and stop when we hit the body element. | |
do { | |
color = element.getStyle('background-color').toLowerCase(); | |
if(!(color == '' || color == 'transparent')) break; | |
element = element.up(0); | |
} while(!element.nodeName.match(/^body$/i)); | |
// Catch Safari's way of signaling transparent. | |
return (color == 'rgba(0, 0, 0, 0)') ? 'transparent' : color; | |
} | |
}; | |
/** | |
* Flotr Graph class that plots a graph on creation. | |
*/ | |
Flotr.Graph = Class.create({ | |
/** | |
* Flotr Graph constructor. | |
* @param {Element} el - element to insert the graph into | |
* @param {Object} data - an array or object of dataseries | |
* @param {Object} options - an object containing options | |
*/ | |
initialize: function(el, data, options){ | |
this.el = $(el); | |
if (!this.el) throw 'The target container doesn\'t exist'; | |
this.data = data; | |
this.series = Flotr.getSeries(data); | |
this.setOptions(options); | |
// Initialize some variables | |
this.lastMousePos = { pageX: null, pageY: null }; | |
this.selection = { first: { x: -1, y: -1}, second: { x: -1, y: -1} }; | |
this.prevSelection = null; | |
this.selectionInterval = null; | |
this.ignoreClick = false; | |
this.prevHit = null; | |
// Create and prepare canvas. | |
this.constructCanvas(); | |
// Add event handlers for mouse tracking, clicking and selection | |
this.initEvents(); | |
this.findDataRanges(); | |
this.calculateTicks(this.axes.x); | |
this.calculateTicks(this.axes.x2); | |
this.calculateTicks(this.axes.y); | |
this.calculateTicks(this.axes.y2); | |
this.calculateSpacing(); | |
this.draw(); | |
this.insertLegend(); | |
// Graph and Data tabs | |
if (this.options.spreadsheet.show) | |
this.constructTabs(); | |
}, | |
/** | |
* Sets options and initializes some variables and color specific values, used by the constructor. | |
* @param {Object} opts - options object | |
*/ | |
setOptions: function(opts){ | |
var options = { | |
colors: ['#00A8F0', '#C0D800', '#CB4B4B', '#4DA74D', '#9440ED'], //=> The default colorscheme. When there are > 5 series, additional colors are generated. | |
title: null, | |
subtitle: null, | |
legend: { | |
show: true, // => setting to true will show the legend, hide otherwise | |
noColumns: 1, // => number of colums in legend table // @todo: doesn't work for HtmlText = false | |
labelFormatter: Prototype.K, // => fn: string -> string | |
labelBoxBorderColor: '#CCCCCC', // => border color for the little label boxes | |
labelBoxWidth: 14, | |
labelBoxHeight: 10, | |
labelBoxMargin: 5, | |
container: null, // => container (as jQuery object) to put legend in, null means default on top of graph | |
position: 'nw', // => 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, set to 1 for a solid background | |
}, | |
xaxis: { | |
ticks: null, // => format: either [1, 3] or [[1, 'a'], 3] | |
showLabels: true, // => setting to true will show the axis ticks labels, hide otherwise | |
labelsAngle: 0, // => Labels' angle, in degrees | |
title: null, // => axis title | |
titleAngle: 0, // => axis title's angle, in degrees | |
noTicks: 5, // => number of ticks for automagically generated ticks | |
tickFormatter: Flotr.defaultTickFormatter, // => fn: number -> string | |
tickDecimals: null, // => no. of decimals, null means auto | |
min: null, // => min. value to show, null means set automatically | |
max: null, // => max. value to show, null means set automatically | |
autoscaleMargin: 0, // => margin in % to add if auto-setting min/max | |
color: null | |
}, | |
x2axis: {}, | |
yaxis: { | |
ticks: null, // => format: either [1, 3] or [[1, 'a'], 3] | |
showLabels: true, // => setting to true will show the axis ticks labels, hide otherwise | |
labelsAngle: 0, // => Labels' angle, in degrees | |
title: null, // => axis title | |
titleAngle: 90, // => axis title's angle, in degrees | |
noTicks: 5, // => number of ticks for automagically generated ticks | |
tickFormatter: Flotr.defaultTickFormatter, // => fn: number -> string | |
tickDecimals: null, // => no. of decimals, null means auto | |
min: null, // => min. value to show, null means set automatically | |
max: null, // => max. value to show, null means set automatically | |
autoscaleMargin: 0, // => margin in % to add if auto-setting min/max | |
color: null | |
}, | |
y2axis: { | |
titleAngle: 270 | |
}, | |
points: { | |
show: false, // => setting to true will show points, false will hide | |
radius: 3, // => point radius (pixels) | |
lineWidth: 2, // => line width in pixels | |
fill: true, // => true to fill the points with a color, false for (transparent) no fill | |
fillColor: '#FFFFFF', // => fill color | |
fillOpacity: 0.4 | |
}, | |
lines: { | |
show: false, // => setting to true will show lines, false will hide | |
lineWidth: 2, // => line width in pixels | |
fill: false, // => true to fill the area from the line to the x axis, false for (transparent) no fill | |
fillColor: null, // => fill color | |
fillOpacity: 0.4 // => opacity of the fill color, set to 1 for a solid fill, 0 hides the fill | |
}, | |
radar: { | |
show: false, // => setting to true will show radar chart, false will hide | |
lineWidth: 2, // => line width in pixels | |
fill: false, // => true to fill the area from the line to the x axis, false for (transparent) no fill | |
fillColor: null, // => fill color | |
fillOpacity: 0.4 // => opacity of the fill color, set to 1 for a solid fill, 0 hides the fill | |
}, | |
bars: { | |
show: false, // => setting to true will show bars, false will hide | |
lineWidth: 2, // => in pixels | |
barWidth: 1, // => in units of the x axis | |
fill: true, // => true to fill the area from the line to the x axis, false for (transparent) no fill | |
fillColor: null, // => fill color | |
fillOpacity: 0.4, // => opacity of the fill color, set to 1 for a solid fill, 0 hides the fill | |
horizontal: false, | |
stacked: false | |
}, | |
candles: { | |
show: false, // => setting to true will show candle sticks, false will hide | |
lineWidth: 1, // => in pixels | |
wickLineWidth: 1, // => in pixels | |
candleWidth: 0.6, // => in units of the x axis | |
fill: true, // => true to fill the area from the line to the x axis, false for (transparent) no fill | |
upFillColor: '#00A8F0',// => up sticks fill color | |
downFillColor: '#CB4B4B',// => down sticks fill color | |
fillOpacity: 0.5, // => opacity of the fill color, set to 1 for a solid fill, 0 hides the fill | |
barcharts: false // => draw as barcharts (not standard bars but financial barcharts) | |
}, | |
pie: { | |
show: false, // => setting to true will show bars, false will hide | |
lineWidth: 1, // => in pixels | |
fill: true, // => true to fill the area from the line to the x axis, false for (transparent) no fill | |
fillColor: null, // => fill color | |
fillOpacity: 0.6, // => opacity of the fill color, set to 1 for a solid fill, 0 hides the fill | |
explode: 6, | |
sizeRatio: 0.6, | |
startAngle: Math.PI/4, | |
labelFormatter: Flotr.defaultPieLabelFormatter, | |
pie3D: false, | |
pie3DviewAngle: (Math.PI/2 * 0.8), | |
pie3DspliceThickness: 20 | |
}, | |
grid: { | |
color: '#545454', // => primary color used for outline and labels | |
backgroundColor: null, // => null for transparent, else color | |
tickColor: '#DDDDDD', // => color used for the ticks | |
labelMargin: 3, // => margin in pixels | |
verticalLines: true, // => whether to show gridlines in vertical direction | |
horizontalLines: true, // => whether to show gridlines in horizontal direction | |
outlineWidth: 2 // => width of the grid outline/border in pixels | |
}, | |
selection: { | |
mode: null, // => one of null, 'x', 'y' or 'xy' | |
color: '#B6D9FF', // => selection box color | |
fps: 20 // => frames-per-second | |
}, | |
mouse: { | |
track: false, // => true to track the mouse, no tracking otherwise | |
position: 'se', // => position of the value box (default south-east) | |
relative: false, // => next to the mouse cursor | |
trackFormatter: Flotr.defaultTrackFormatter, // => formats the values in the value box | |
margin: 5, // => margin in pixels of the valuebox | |
lineColor: '#FF3F19', // => line color of points that are drawn when mouse comes near a value of a series | |
trackDecimals: 1, // => decimals for the track values | |
sensibility: 2, // => the lower this number, the more precise you have to aim to show a value | |
radius: 3 // => radius of the track point | |
}, | |
radarChartMode: false, // => true to render radar grid / and setup scaling for radar chart | |
shadowSize: 4, // => size of the 'fake' shadow | |
defaultType: 'lines', // => default series type | |
HtmlText: true, // => wether to draw the text using HTML or on the canvas | |
fontSize: 7.5, // => canvas' text font size | |
spreadsheet: { | |
show: false, // => show the data grid using two tabs | |
tabGraphLabel: 'Graph', | |
tabDataLabel: 'Data', | |
toolbarDownload: 'Download CSV', // @todo: add language support | |
toolbarSelectAll: 'Select all' | |
} | |
} | |
options.x2axis = Object.extend(Object.clone(options.xaxis), options.x2axis); | |
options.y2axis = Object.extend(Object.clone(options.yaxis), options.y2axis); | |
this.options = Flotr.merge((opts || {}), options); | |
this.axes = { | |
x: {options: this.options.xaxis, n: 1}, | |
x2: {options: this.options.x2axis, n: 2}, | |
y: {options: this.options.yaxis, n: 1}, | |
y2: {options: this.options.y2axis, n: 2} | |
}; | |
// Initialize some variables used throughout this function. | |
var assignedColors = [], | |
colors = [], | |
ln = this.series.length, | |
neededColors = this.series.length, | |
oc = this.options.colors, | |
usedColors = [], | |
variation = 0, | |
c, i, j, s, tooClose; | |
// Collect user-defined colors from series. | |
for(i = neededColors - 1; i > -1; --i){ | |
c = this.series[i].color; | |
if(c != null){ | |
--neededColors; | |
if(Object.isNumber(c)) assignedColors.push(c); | |
else usedColors.push(Flotr.parseColor(c)); | |
} | |
} | |
// Calculate the number of colors that need to be generated. | |
for(i = assignedColors.length - 1; i > -1; --i) | |
neededColors = Math.max(neededColors, assignedColors[i] + 1); | |
// Generate needed number of colors. | |
for(i = 0; colors.length < neededColors;){ | |
c = (oc.length == i) ? new Flotr.Color(100, 100, 100) : Flotr.parseColor(oc[i]); | |
// Make sure each serie gets a different color. | |
var sign = variation % 2 == 1 ? -1 : 1; | |
var factor = 1 + sign * Math.ceil(variation / 2) * 0.2; | |
c.scale(factor, factor, factor); | |
/** | |
* @todo if we're getting too close to something else, we should probably skip this one | |
*/ | |
colors.push(c); | |
if(++i >= oc.length){ | |
i = 0; | |
++variation; | |
} | |
} | |
// Fill the options with the generated colors. | |
for(i = 0, j = 0; i < ln; ++i){ | |
s = this.series[i]; | |
// Assign the color. | |
if(s.color == null){ | |
s.color = colors[j++].toString(); | |
}else if(Object.isNumber(s.color)){ | |
s.color = colors[s.color].toString(); | |
} | |
if (!s.xaxis) s.xaxis = this.axes.x; | |
if (s.xaxis == 1) s.xaxis = this.axes.x; | |
else if (s.xaxis == 2) s.xaxis = this.axes.x2; | |
if (!s.yaxis) s.yaxis = this.axes.y; | |
if (s.yaxis == 1) s.yaxis = this.axes.y; | |
else if (s.yaxis == 2) s.yaxis = this.axes.y2; | |
// Apply missing options to the series. | |
s.lines = Object.extend(Object.clone(this.options.lines), s.lines); | |
s.points = Object.extend(Object.clone(this.options.points), s.points); | |
s.bars = Object.extend(Object.clone(this.options.bars), s.bars); | |
s.candles = Object.extend(Object.clone(this.options.candles), s.candles); | |
s.pie = Object.extend(Object.clone(this.options.pie), s.pie); | |
s.radar = Object.extend(Object.clone(this.options.radar), s.radar); | |
s.mouse = Object.extend(Object.clone(this.options.mouse), s.mouse); | |
if(s.shadowSize == null) s.shadowSize = this.options.shadowSize; | |
} | |
}, | |
/** | |
* Initializes the canvas and it's overlay canvas element. When the browser is IE, this makes use | |
* of excanvas. The overlay canvas is inserted for displaying interactions. After the canvas elements | |
* are created, the elements are inserted into the container element. | |
*/ | |
constructCanvas: function(){ | |
var el = this.el, | |
size, c, oc; | |
this.canvas = el.select('.flotr-canvas')[0]; | |
this.overlay = el.select('.flotr-overlay')[0]; | |
el.childElements().invoke('remove'); | |
// For positioning labels and overlay. | |
el.setStyle({position:'relative', cursor:'default'}); | |
this.canvasWidth = el.getWidth(); | |
this.canvasHeight = el.getHeight(); | |
size = {'width': this.canvasWidth, 'height': this.canvasHeight}; | |
if(this.canvasWidth <= 0 || this.canvasHeight <= 0){ | |
throw 'Invalid dimensions for plot, width = ' + this.canvasWidth + ', height = ' + this.canvasHeight; | |
} | |
// Insert main canvas. | |
if (!this.canvas) { | |
c = this.canvas = new Element('canvas', size); | |
c.className = 'flotr-canvas'; | |
c = c.writeAttribute('style', 'position:absolute;left:0px;top:0px;'); | |
} else { | |
c = this.canvas.writeAttribute(size); | |
} | |
el.insert(c); | |
if(Prototype.Browser.IE){ | |
c = window.G_vmlCanvasManager.initElement(c); | |
} | |
this.ctx = c.getContext('2d'); | |
// Insert overlay canvas for interactive features. | |
if (!this.overlay) { | |
oc = this.overlay = new Element('canvas', size); | |
oc.className = 'flotr-overlay'; | |
oc = oc.writeAttribute('style', 'position:absolute;left:0px;top:0px;'); | |
} else { | |
oc = this.overlay.writeAttribute(size); | |
} | |
el.insert(oc); | |
if(Prototype.Browser.IE){ | |
oc = window.G_vmlCanvasManager.initElement(oc); | |
} | |
this.octx = oc.getContext('2d'); | |
// Enable text functions | |
if (window.CanvasText) { | |
CanvasText.enable(this.ctx); | |
CanvasText.enable(this.octx); | |
this.textEnabled = true; | |
} | |
}, | |
getTextDimensions: function(text, canvasStyle, HtmlStyle, className) { | |
if (!text) return {width:0, height:0}; | |
if (!this.options.HtmlText && this.textEnabled) { | |
var bounds = this.ctx.getTextBounds(text, canvasStyle); | |
return { | |
width: bounds.width+2, | |
height: bounds.height+6 | |
}; | |
} | |
else { | |
var dummyDiv = this.el.insert('<div style="position:absolute;top:-10000px;'+HtmlStyle+'" class="'+className+' flotr-dummy-div">' + text + '</div>').select(".flotr-dummy-div")[0]; | |
dim = dummyDiv.getDimensions(); | |
dummyDiv.remove(); | |
return dim; | |
} | |
}, | |
loadDataGrid: function(){ | |
if (this.seriesData) return this.seriesData; | |
var s = this.series; | |
var dg = []; | |
/* The data grid is a 2 dimensions array. There is a row for each X value. | |
* Each row contains the x value and the corresponding y value for each serie ('undefined' if there isn't one) | |
**/ | |
for(i = 0; i < s.length; ++i){ | |
s[i].data.each(function(v) { | |
var x = v[0], | |
y = v[1]; | |
if (r = dg.find(function(row) {return row[0] == x})) { | |
r[i+1] = y; | |
} | |
else { | |
var newRow = []; | |
newRow[0] = x; | |
newRow[i+1] = y | |
dg.push(newRow); | |
} | |
}); | |
} | |
// The data grid is sorted by x value | |
dg = dg.sortBy(function(v) { | |
return v[0]; | |
}); | |
return this.seriesData = dg; | |
}, | |
// @todo: make a tab manager (Flotr.Tabs) | |
showTab: function(tabName, onComplete){ | |
var elementsClassNames = 'canvas, .flotr-labels, .flotr-legend, .flotr-legend-bg, .flotr-title, .flotr-subtitle'; | |
switch(tabName) { | |
case 'graph': | |
this.datagrid.up().hide(); | |
this.el.select(elementsClassNames).invoke('show'); | |
this.tabs.data.removeClassName('selected'); | |
this.tabs.graph.addClassName('selected'); | |
break; | |
case 'data': | |
this.constructDataGrid(); | |
this.datagrid.up().show(); | |
this.el.select(elementsClassNames).invoke('hide'); | |
this.tabs.data.addClassName('selected'); | |
this.tabs.graph.removeClassName('selected'); | |
break; | |
} | |
}, | |
constructTabs: function(){ | |
var tabsContainer = new Element('div', {className:'flotr-tabs-group', style:'position:absolute;left:0px;top:'+this.canvasHeight+'px;width:'+this.canvasWidth+'px;'}); | |
this.el.insert({bottom: tabsContainer}); | |
this.tabs = { | |
graph: new Element('div', {className:'flotr-tab selected', style:'float:left;'}).update(this.options.spreadsheet.tabGraphLabel), | |
data: new Element('div', {className:'flotr-tab', style:'float:left;'}).update(this.options.spreadsheet.tabDataLabel) | |
} | |
tabsContainer.insert(this.tabs.graph).insert(this.tabs.data); | |
this.el.setStyle({height: this.canvasHeight+this.tabs.data.getHeight()+2+'px'}); | |
this.tabs.graph.observe('click', (function() {this.showTab('graph')}).bind(this)); | |
this.tabs.data.observe('click', (function() {this.showTab('data')}).bind(this)); | |
}, | |
// @todo: make a spreadsheet manager (Flotr.Spreadsheet) | |
constructDataGrid: function(){ | |
// If the data grid has already been built, nothing to do here | |
if (this.datagrid) return this.datagrid; | |
var i, j, | |
s = this.series, | |
datagrid = this.loadDataGrid(); | |
var t = this.datagrid = new Element('table', {className:'flotr-datagrid', style:'height:100px;'}); | |
var colgroup = ['<colgroup><col />']; | |
// First row : series' labels | |
var html = ['<tr class="first-row">']; | |
html.push('<th> </th>'); | |
for (i = 0; i < s.length; ++i) { | |
html.push('<th scope="col">'+(s[i].label || String.fromCharCode(65+i))+'</th>'); | |
colgroup.push('<col />'); | |
} | |
html.push('</tr>'); | |
// Data rows | |
for (j = 0; j < datagrid.length; ++j) { | |
html.push('<tr>'); | |
for (i = 0; i < s.length+1; ++i) { | |
var tag = 'td'; | |
var content = (datagrid[j][i] != null ? Math.round(datagrid[j][i]*100000)/100000 : ''); | |
if (i == 0) { | |
tag = 'th'; | |
var label; | |
if(this.options.xaxis.ticks) { | |
var tick = this.options.xaxis.ticks.find(function (x) { return x[0] == datagrid[j][i] }); | |
if (tick) label = tick[1]; | |
} | |
else { | |
label = this.options.xaxis.tickFormatter(content); | |
} | |
if (label) content = label; | |
} | |
html.push('<'+tag+(tag=='th'?' scope="row"':'')+'>'+content+'</'+tag+'>'); | |
} | |
html.push('</tr>'); | |
} | |
colgroup.push('</colgroup>'); | |
t.update(colgroup.join('')+html.join('')); | |
if (!Prototype.Browser.IE) { | |
t.select('td').each(function(td) { | |
td.observe('mouseover', function(e){ | |
td = e.element(); | |
var siblings = td.previousSiblings(); | |
t.select('th[scope=col]')[siblings.length-1].addClassName('hover'); | |
t.select('colgroup col')[siblings.length].addClassName('hover'); | |
}); | |
td.observe('mouseout', function(){ | |
t.select('colgroup col.hover, th.hover').each(function(e){e.removeClassName('hover')}); | |
}); | |
}); | |
} | |
var toolbar = new Element('div', {className: 'flotr-datagrid-toolbar'}). | |
insert(new Element('button', {type:'button', className:'flotr-datagrid-toolbar-button'}).update(this.options.spreadsheet.toolbarDownload).observe('click', this.downloadCSV.bind(this))). | |
insert(new Element('button', {type:'button', className:'flotr-datagrid-toolbar-button'}).update(this.options.spreadsheet.toolbarSelectAll).observe('click', this.selectAllData.bind(this))); | |
var container = new Element('div', {className:'flotr-datagrid-container', style:'left:0px;top:0px;width:'+this.canvasWidth+'px;height:'+this.canvasHeight+'px;overflow:auto;'}); | |
container.insert(toolbar); | |
t.wrap(container.hide()); | |
this.el.insert(container); | |
return t; | |
}, | |
selectAllData: function(){ | |
if (this.tabs) { | |
var selection, range, doc, win, node = this.constructDataGrid(); | |
this.showTab('data'); | |
// deferred to be able to select the table | |
(function () { | |
if ((doc = node.ownerDocument) && (win = doc.defaultView) && | |
win.getSelection && doc.createRange && | |
(selection = window.getSelection()) && | |
selection.removeAllRanges) { | |
range = doc.createRange(); | |
range.selectNode(node); | |
selection.removeAllRanges(); | |
selection.addRange(range); | |
} | |
else if (document.body && document.body.createTextRange && | |
(range = document.body.createTextRange())) { | |
range.moveToElementText(node); | |
range.select(); | |
} | |
}).defer(); | |
return true; | |
} | |
else return false; | |
}, | |
downloadCSV: function(){ | |
var i, csv = '"x"', | |
series = this.series, | |
dg = this.loadDataGrid(); | |
for (i = 0; i < series.length; ++i) { | |
csv += '%09"'+(series[i].label || String.fromCharCode(65+i))+'"'; // \t | |
} | |
csv += "%0D%0A"; // \r\n | |
for (i = 0; i < dg.length; ++i) { | |
if (this.options.xaxis.ticks) { | |
var tick = this.options.xaxis.ticks.find(function (x) { return x[0] == dg[i][0] }); | |
if (tick) dg[i][0] = tick[1]; | |
} else { | |
dg[i][0] = this.options.xaxis.tickFormatter(dg[i][0]); | |
} | |
csv += dg[i].join('%09')+"%0D%0A"; // \t and \r\n | |
} | |
if (Prototype.Browser.IE) { | |
csv = csv.gsub('%09', '\t').gsub('%0A', '\n').gsub('%0D', '\r'); | |
window.open().document.write(csv); | |
} | |
else { | |
window.open('data:text/csv,'+csv); | |
} | |
}, | |
/** | |
* Initializes event some handlers. | |
*/ | |
initEvents: function () { | |
//@todo: maybe stopObserving with only flotr functions | |
this.overlay.stopObserving(); | |
this.overlay.observe('mousedown', this.mouseDownHandler.bind(this)); | |
this.overlay.observe('mousemove', this.mouseMoveHandler.bind(this)); | |
this.overlay.observe('click', this.clickHandler.bind(this)); | |
}, | |
/** | |
* Function determines the min and max values for the xaxis and yaxis. | |
*/ | |
findDataRanges: function(){ | |
var s = this.series, | |
a = this.axes; | |
a.x.datamin = 0; a.x.datamax = 0; | |
a.x2.datamin = 0; a.x2.datamax = 0; | |
a.y.datamin = 0; a.y.datamax = 0; | |
a.y2.datamin = 0; a.y2.datamax = 0; | |
if(s.length > 0){ | |
var i, j, h, x, y, data, xaxis, yaxis; | |
// Get datamin, datamax start values | |
for(i = 0; i < s.length; ++i) { | |
data = s[i].data, | |
xaxis = s[i].xaxis, | |
yaxis = s[i].yaxis; | |
if (data.length > 0 && !s[i].hide) { | |
if (!xaxis.used) xaxis.datamin = xaxis.datamax = data[0][0]; | |
if (!yaxis.used) yaxis.datamin = yaxis.datamax = data[0][1]; | |
xaxis.used = true; | |
yaxis.used = true; | |
for(h = data.length - 1; h > -1; --h){ | |
x = data[h][0]; | |
if(x < xaxis.datamin) xaxis.datamin = x; | |
else if(x > xaxis.datamax) xaxis.datamax = x; | |
for(j = 1; j < data[h].length; j++){ | |
y = data[h][j]; | |
if(y < yaxis.datamin) yaxis.datamin = y; | |
else if(y > yaxis.datamax) yaxis.datamax = y; | |
} | |
} | |
} | |
if (this.options.radarChartMode) { | |
xaxis.datamin = yaxis.datamin = - yaxis.datamax; | |
xaxis.datamax = yaxis.datamax; | |
if (!this.options.radarChartSides) this.options.radarChartSides = data.length; | |
} | |
} | |
} | |
this.findXAxesValues(); | |
this.calculateRange(a.x); | |
this.extendXRangeIfNeededByBar(a.x); | |
if (a.x2.used) { | |
this.calculateRange(a.x2); | |
this.extendXRangeIfNeededByBar(a.x2); | |
} | |
this.calculateRange(a.y); | |
this.extendYRangeIfNeededByBar(a.y); | |
if (a.y2.used) { | |
this.calculateRange(a.y2); | |
this.extendYRangeIfNeededByBar(a.y2); | |
} | |
}, | |
/** | |
* Calculates the range of an axis to apply autoscaling. | |
*/ | |
calculateRange: function(axis){ | |
var o = axis.options, | |
min = o.min != null ? o.min : axis.datamin, | |
max = o.max != null ? o.max : axis.datamax, | |
margin; | |
if(max - min == 0.0){ | |
var widen = (max == 0.0) ? 1.0 : 0.01; | |
min -= widen; | |
max += widen; | |
} | |
axis.tickSize = Flotr.getTickSize(o.noTicks, ((this.options.radarChartMode) ? 0 : min), max, o.tickDecimals); | |
// Autoscaling. | |
if(o.min == null){ | |
// Add a margin. | |
margin = o.autoscaleMargin; | |
if(margin != 0){ | |
min -= axis.tickSize * margin; | |
// Make sure we don't go below zero if all values are positive. | |
if(min < 0 && axis.datamin >= 0) min = 0; | |
min = axis.tickSize * Math.floor(min / axis.tickSize); | |
} | |
} | |
if(o.max == null){ | |
margin = o.autoscaleMargin; | |
if(margin != 0){ | |
max += axis.tickSize * margin; | |
if(max > 0 && axis.datamax <= 0) max = 0; | |
max = axis.tickSize * Math.ceil(max / axis.tickSize); | |
} | |
} | |
axis.min = min; | |
axis.max = max; | |
}, | |
/** | |
* Bar series autoscaling in x direction. | |
*/ | |
extendXRangeIfNeededByBar: function(axis){ | |
if(axis.options.max == null){ | |
var newmax = axis.max, | |
i, s, b, c, | |
stackedSums = [], | |
lastSerie = null; | |
for(i = 0; i < this.series.length; ++i){ | |
s = this.series[i]; | |
b = s.bars; | |
c = s.candles; | |
if(s.axis == axis && (b.show || c.show)) { | |
if (!b.horizontal && (b.barWidth + axis.datamax > newmax) || (c.candleWidth + axis.datamax > newmax)){ | |
newmax = axis.max + s.bars.barWidth; | |
} | |
if(b.stacked && b.horizontal){ | |
for (j = 0; j < s.data.length; j++) { | |
if (s.bars.show && s.bars.stacked) { | |
var x = s.data[j][0]; | |
stackedSums[x] = (stackedSums[x] || 0) + s.data[j][1]; | |
lastSerie = s; | |
} | |
} | |
for (j = 0; j < stackedSums.length; j++) { | |
newmax = Math.max(stackedSums[j], newmax); | |
} | |
} | |
} | |
} | |
axis.lastSerie = lastSerie; | |
axis.max = newmax; | |
} | |
}, | |
/** | |
* Bar series autoscaling in y direction. | |
*/ | |
extendYRangeIfNeededByBar: function(axis){ | |
if(axis.options.max == null){ | |
var newmax = axis.max, | |
i, s, b, c, | |
stackedSums = [], | |
lastSerie = null; | |
for(i = 0; i < this.series.length; ++i){ | |
s = this.series[i]; | |
b = s.bars; | |
c = s.candles; | |
if (s.yaxis == axis && b.show && !s.hide) { | |
if (b.horizontal && (b.barWidth + axis.datamax > newmax) || (c.candleWidth + axis.datamax > newmax)){ | |
newmax = axis.max + b.barWidth; | |
} | |
if(b.stacked && !b.horizontal){ | |
for (j = 0; j < s.data.length; j++) { | |
if (s.bars.show && s.bars.stacked) { | |
var x = s.data[j][0]; | |
stackedSums[x] = (stackedSums[x] || 0) + s.data[j][1]; | |
lastSerie = s; | |
} | |
} | |
for (j = 0; j < stackedSums.length; j++) { | |
newmax = Math.max(stackedSums[j], newmax); | |
} | |
} | |
} | |
} | |
axis.lastSerie = lastSerie; | |
axis.max = newmax; | |
} | |
}, | |
/** | |
* Find every values of the x axes | |
*/ | |
findXAxesValues: function(){ | |
for(i = this.series.length-1; i > -1 ; --i){ | |
s = this.series[i]; | |
s.xaxis.values = s.xaxis.values || []; | |
for (j = s.data.length-1; j > -1 ; --j){ | |
s.xaxis.values[s.data[j][0]] = {}; | |
} | |
} | |
}, | |
/** | |
* Calculate axis ticks. | |
* @param {Object} axis - axis object | |
* @param {Object} o - axis options | |
*/ | |
calculateTicks: function(axis){ | |
var o = axis.options, i, v; | |
axis.ticks = []; | |
if(o.ticks){ | |
var ticks = o.ticks, t, label; | |
if(Object.isFunction(ticks)){ | |
ticks = ticks({min: axis.min, max: axis.max}); | |
} | |
// Clean up the user-supplied ticks, copy them over. | |
for(i = 0; i < ticks.length; ++i){ | |
t = ticks[i]; | |
if(typeof(t) == 'object'){ | |
v = t[0]; | |
label = (t.length > 1) ? t[1] : o.tickFormatter(v); | |
}else{ | |
v = t; | |
label = o.tickFormatter(v); | |
} | |
axis.ticks[i] = { v: v, label: label }; | |
} | |
} | |
else { | |
// Round to nearest multiple of tick size. | |
var start = axis.tickSize * Math.ceil(axis.min / axis.tickSize), | |
decimals; | |
// Then store all possible ticks. | |
for(i = 0; start + i * axis.tickSize <= axis.max; ++i){ | |
v = start + i * axis.tickSize; | |
// Round (this is always needed to fix numerical instability). | |
decimals = o.tickDecimals; | |
if(decimals == null) decimals = 1 - Math.floor(Math.log(axis.tickSize) / Math.LN10); | |
if(decimals < 0) decimals = 0; | |
v = v.toFixed(decimals); | |
axis.ticks.push({ v: v, label: o.tickFormatter(v) }); | |
} | |
} | |
}, | |
/** | |
* Calculates axis label sizes. | |
*/ | |
calculateSpacing: function(){ | |
var a = this.axes, | |
options = this.options, | |
series = this.series, | |
margin = options.grid.labelMargin, | |
x = a.x, | |
x2 = a.x2, | |
y = a.y, | |
y2 = a.y2, | |
maxOutset = 2, | |
i, j, l, dim; | |
// Labels width and height | |
[x, x2, y, y2].each(function(axis) { | |
var maxLabel = ''; | |
if (axis.options.showLabels) { | |
for(i = 0; i < axis.ticks.length; ++i){ | |
l = axis.ticks[i].label.length; | |
if(l > maxLabel.length){ | |
maxLabel = axis.ticks[i].label; | |
} | |
} | |
} | |
axis.maxLabel = this.getTextDimensions(maxLabel, {size:options.fontSize, angle: Flotr.toRad(axis.options.labelsAngle)}, 'font-size:smaller;', 'flotr-grid-label'); | |
axis.titleSize = this.getTextDimensions(axis.options.title, {size: options.fontSize*1.2, angle: Flotr.toRad(axis.options.titleAngle)}, 'font-weight:bold;', 'flotr-axis-title'); | |
}, this); | |
// Title height | |
dim = this.getTextDimensions(options.title, {size: options.fontSize*1.5}, 'font-size:1em;font-weight:bold;', 'flotr-title'); | |
this.titleHeight = dim.height; | |
// Subtitle height | |
dim = this.getTextDimensions(options.subtitle, {size: options.fontSize}, 'font-size:smaller;', 'flotr-subtitle'); | |
this.subtitleHeight = dim.height; | |
// Grid outline line width. | |
if(options.show){ | |
maxOutset = Math.max(maxOutset, options.points.radius + options.points.lineWidth/2); | |
} | |
for(j = 0; j < options.length; ++j){ | |
if (series[j].points.show){ | |
maxOutset = Math.max(maxOutset, series[j].points.radius + series[j].points.lineWidth/2); | |
} | |
} | |
var p = this.plotOffset = {left: 0, right: 0, top: 0, bottom: 0}; | |
p.left = p.right = p.top = p.bottom = maxOutset; | |
p.bottom += (x.options.showLabels ? (x.maxLabel.height + margin) : 0) + | |
(x.options.title ? (x.titleSize.height + margin) : 0); | |
p.top += (x2.options.showLabels ? (x2.maxLabel.height + margin) : 0) + | |
(x2.options.title ? (x2.titleSize.height + margin) : 0) + this.subtitleHeight + this.titleHeight + | |
this.options.radarChartMode ? (y.options.showLabels ? (y.maxLabel.height + margin) : 0) : 0; | |
p.left += (y.options.showLabels ? (y.maxLabel.width + margin) : 0) + | |
(y.options.title ? (y.titleSize.width + margin) : 0); | |
p.right += (y2.options.showLabels ? (y2.maxLabel.width + margin) : 0) + | |
(y2.options.title ? (y2.titleSize.width + margin) : 0) + | |
this.options.radarChartMode ? (x.options.showLabels ? (x.maxLabel.width + margin) : 0) : 0; | |
p.top = Math.floor(p.top); // In order the outline not to be blured | |
this.plotWidth = this.canvasWidth - p.left - p.right; | |
this.plotHeight = this.canvasHeight - p.bottom - p.top; | |
x.scale = this.plotWidth / (x.max - x.min); | |
x2.scale = this.plotWidth / (x2.max - x2.min); | |
y.scale = this.plotHeight / (y.max - y.min); | |
y2.scale = this.plotHeight / (y2.max - y2.min); | |
}, | |
/** | |
* Draws grid, labels and series. | |
*/ | |
draw: function() { | |
this.drawGrid(); | |
this.drawLabels(); | |
this.drawTitles(); | |
if(this.series.length){ | |
this.el.fire('flotr:beforedraw', [this.series, this]); | |
for(var i = 0; i < this.series.length; i++){ | |
if (!this.series[i].hide) | |
this.drawSeries(this.series[i]); | |
} | |
} | |
this.el.fire('flotr:afterdraw', [this.series, this]); | |
}, | |
/** | |
* Translates absolute horizontal x coordinates to relative coordinates. | |
* @param {Integer} x - absolute integer x coordinate | |
* @return {Integer} translated relative x coordinate | |
*/ | |
tHoz: function(x, axis){ | |
axis = axis || this.axes.x; | |
return (x - axis.min) * axis.scale; | |
}, | |
/** | |
* Translates absolute vertical x coordinates to relative coordinates. | |
* @param {Integer} y - absolute integer y coordinate | |
* @return {Integer} translated relative y coordinate | |
*/ | |
tVert: function(y, axis){ | |
axis = axis || this.axes.y; | |
return this.plotHeight - (y - axis.min) * axis.scale; | |
}, | |
/** | |
* Draws a grid for the graph. | |
*/ | |
drawGrid: function(){ | |
if (this.options.radarChartMode) { // If we are in radar chart mode call drawRadarGrid instead and exit | |
this.drawRadarGrid(); | |
return; | |
} | |
var v, o = this.options, | |
ctx = this.ctx; | |
if(o.grid.verticalLines || o.grid.horizontalLines){ | |
this.el.fire('flotr:beforegrid', [this.axes.x, this.axes.y, o, this]); | |
} | |
ctx.save(); | |
ctx.translate(this.plotOffset.left, this.plotOffset.top); | |
// Draw grid background, if present in options. | |
if(o.grid.backgroundColor != null){ | |
ctx.fillStyle = o.grid.backgroundColor; | |
ctx.fillRect(0, 0, this.plotWidth, this.plotHeight); | |
} | |
// Draw grid lines in vertical direction. | |
ctx.lineWidth = 1; | |
ctx.strokeStyle = o.grid.tickColor; | |
ctx.beginPath(); | |
if(o.grid.verticalLines){ | |
for(var i = 0; i < this.axes.x.ticks.length; ++i){ | |
v = this.axes.x.ticks[i].v; | |
// Don't show lines on upper and lower bounds. | |
if ((v == this.axes.x.min || v == this.axes.x.max) && o.grid.outlineWidth != 0) | |
continue; | |
ctx.moveTo(Math.floor(this.tHoz(v)) + ctx.lineWidth/2, 0); | |
ctx.lineTo(Math.floor(this.tHoz(v)) + ctx.lineWidth/2, this.plotHeight); | |
} | |
} | |
// Draw grid lines in horizontal direction. | |
if(o.grid.horizontalLines){ | |
for(var j = 0; j < this.axes.y.ticks.length; ++j){ | |
v = this.axes.y.ticks[j].v; | |
// Don't show lines on upper and lower bounds. | |
if ((v == this.axes.y.min || v == this.axes.y.max) && o.grid.outlineWidth != 0) | |
continue; | |
ctx.moveTo(0, Math.floor(this.tVert(v)) + ctx.lineWidth/2); | |
ctx.lineTo(this.plotWidth, Math.floor(this.tVert(v)) + ctx.lineWidth/2); | |
} | |
} | |
ctx.stroke(); | |
// Draw axis/grid border. | |
if(o.grid.outlineWidth != 0) { | |
ctx.lineWidth = o.grid.outlineWidth; | |
ctx.strokeStyle = o.grid.color; | |
ctx.lineJoin = 'round'; | |
ctx.strokeRect(0, 0, this.plotWidth, this.plotHeight); | |
} | |
ctx.restore(); | |
if(o.grid.verticalLines || o.grid.horizontalLines){ | |
this.el.fire('flotr:aftergrid', [this.axes.x, this.axes.y, o, this]); | |
} | |
}, | |
/** | |
* Draws a grid for the graph. | |
*/ | |
drawRadarGrid: function(){ | |
var v, o = this.options, | |
ctx = this.ctx; | |
var sides = this.options.radarChartSides, | |
degreesInRadiansForAngle = Math.PI * 2 / sides, | |
nintyDegrees = Math.PI / 2; | |
if(o.grid.verticalLines || o.grid.horizontalLines){ | |
this.el.fire('flotr:beforegrid', [this.axes.x, this.axes.y, o, this]); | |
} | |
ctx.save(); | |
ctx.translate(this.plotOffset.left, this.plotOffset.top); | |
ctx.lineJoin = 'round'; | |
// Draw grid background, if present in options. | |
if(o.grid.backgroundColor != null){ | |
ctx.fillStyle = o.grid.backgroundColor; | |
ctx.fillRect(0, 0, this.plotWidth, this.plotHeight); | |
} | |
// Draw grid lines | |
var regPoly = {}; | |
regPoly.xaxis = {}; | |
regPoly.yaxis = {}; | |
regPoly.xaxis.min = regPoly.yaxis.min = this.axes.x.min; | |
regPoly.xaxis.max = regPoly.yaxis.max = this.axes.x.max; | |
regPoly.xaxis.scale = this.plotWidth / (this.axes.x.max - this.axes.x.min); | |
regPoly.yaxis.scale = this.plotHeight / (this.axes.x.max - this.axes.x.min); | |
ctx.lineWidth = 1; | |
ctx.strokeStyle = o.grid.tickColor; | |
if(o.grid.horizontalLines){ | |
for(var j = 0; j < this.axes.y.ticks.length; ++j){ | |
v = this.axes.y.ticks[j].v; | |
if (v < 0) continue; | |
// Don't show lines on upper and lower bounds. | |
if ((v == this.axes.y.min || v == this.axes.y.max) && o.grid.outlineWidth != 0) | |
continue; | |
regPoly.data = new Array(); | |
for (i = 0; i < sides; i++) { | |
angle = nintyDegrees + (degreesInRadiansForAngle * i); | |
regPoly.data[i] = [v * Math.cos(angle), v * Math.sin(angle)] | |
} | |
regPoly.data[sides] = regPoly.data[0]; | |
this.plotLine(regPoly,0); | |
} | |
} | |
// Draw axis/grid border. | |
if(o.grid.outlineWidth != 0) { | |
ctx.lineWidth = o.grid.outlineWidth; | |
ctx.strokeStyle = o.grid.color; | |
regPoly.data = new Array(); | |
var radius = this.axes.x.max; | |
for (i = 0; i < sides; i++) { | |
angle = nintyDegrees + (degreesInRadiansForAngle * i); | |
regPoly.data[i] = [radius * Math.cos(angle), radius * Math.sin(angle)] | |
} | |
regPoly.data[sides] = regPoly.data[0]; | |
this.plotLine(regPoly,0); | |
} | |
ctx.lineWidth = 1; | |
ctx.strokeStyle = o.grid.tickColor; | |
ctx.beginPath(); | |
if(o.grid.verticalLines){ | |
for(var i = 0; i < sides; ++i){ | |
ctx.moveTo(Math.floor(this.tHoz(0)) + ctx.lineWidth/2, | |
Math.floor(this.tVert(0)) + ctx.lineWidth/2); | |
ctx.lineTo(Math.floor(this.tHoz(regPoly.data[i][0])) + ctx.lineWidth/2, | |
Math.floor(this.tVert(regPoly.data[i][1])) + ctx.lineWidth/2); | |
} | |
} | |
ctx.stroke(); | |
ctx.restore(); | |
if(o.grid.verticalLines || o.grid.horizontalLines){ | |
this.el.fire('flotr:aftergrid', [this.axes.x, this.axes.y, o, this]); | |
} | |
}, | |
/** | |
* Draws labels aroung radar chart | |
*/ | |
drawRadarLabels:function(){ | |
var ctx = this.ctx, | |
options = this.options, | |
axis = this.axes.x, | |
tick, minY = 0, maxY = 0, | |
xOffset, yOffset; | |
var style = { | |
size: options.fontSize, | |
adjustAlign: true | |
}; | |
style.color = axis.options.color || options.grid.color; | |
style.angle = Flotr.toRad(axis.options.labelsAngle); | |
var radius = axis.max * 1, | |
closeTo = axis.max * 0.1, | |
sides = this.options.radarChartSides, | |
degreesInRadiansForAngle = Math.PI * 2 / sides, | |
nintyDegrees = Math.PI / 2, | |
posdata = new Array(); | |
for (i = 0; i < sides; i++) { | |
angle = nintyDegrees + (degreesInRadiansForAngle * i); | |
posdata[i] = [radius * Math.cos(angle), radius * Math.sin(angle)]; | |
if (minY > posdata[i][1]) minY = posdata[i][1]; | |
if (maxY < posdata[i][1]) maxY = posdata[i][1]; | |
} | |
for (i = 0; i < sides; i++) { | |
tick = axis.ticks[i]; | |
if(!tick.label || tick.label.length == 0) continue; | |
yOffset = 0; | |
if (posdata[i][0] > 0) { | |
style.halign = 'l'; | |
xOffset = options.grid.labelMargin; | |
} else { | |
style.halign = 'r'; | |
xOffset = - options.grid.labelMargin; | |
} | |
style.valign = 'm'; | |
if ((posdata[i][1] + closeTo) >= minY && (posdata[i][1] - closeTo) <= minY) { | |
style.valign = 't' ; | |
style.halign = 'c'; | |
yOffset = options.grid.labelMargin; | |
}; | |
if (posdata[i][1] == maxY) { | |
style.valign = 'b' ; | |
style.halign = 'c'; | |
yOffset = - options.grid.labelMargin; | |
} | |
ctx.drawText( | |
tick.label, | |
this.plotOffset.left + this.tHoz(posdata[i][0]) + xOffset, | |
this.plotOffset.top + this.tVert(posdata[i][1]) + yOffset, | |
style | |
); | |
} | |
}, | |
/** | |
* Draws labels for x and y axis. | |
*/ | |
drawLabels: function(){ | |
// Construct fixed width label boxes, which can be styled easily. | |
var noLabels = 0, axis, | |
xBoxWidth, i, html, tick, | |
options = this.options, | |
ctx = this.ctx, | |
a = this.axes; | |
for(i = 0; i < a.x.ticks.length; ++i){ | |
if (a.x.ticks[i].label) { | |
++noLabels; | |
} | |
} | |
xBoxWidth = this.plotWidth / noLabels; | |
if (!options.HtmlText && this.textEnabled) { | |
var style = { | |
size: options.fontSize, | |
adjustAlign: true | |
}; | |
// Add x labels. | |
if (options.radarChartMode) { | |
this.drawRadarLabels();} else { | |
axis = a.x; | |
style.color = axis.options.color || options.grid.color; | |
for(i = 0; i < axis.ticks.length && axis.options.showLabels && axis.used; ++i){ | |
tick = axis.ticks[i]; | |
if(!tick.label || tick.label.length == 0) continue; | |
style.angle = Flotr.toRad(axis.options.labelsAngle); | |
style.halign = 'c'; | |
style.valign = 't'; | |
ctx.drawText( | |
tick.label, | |
this.plotOffset.left + this.tHoz(tick.v, axis), | |
this.plotOffset.top + this.plotHeight + options.grid.labelMargin, | |
style | |
); | |
}} | |
// Add x2 labels. | |
axis = a.x2; | |
style.color = axis.options.color || options.grid.color; | |
for(i = 0; i < axis.ticks.length && axis.options.showLabels && axis.used; ++i){ | |
tick = axis.ticks[i]; | |
if(!tick.label || tick.label.length == 0) continue; | |
style.angle = Flotr.toRad(axis.options.labelsAngle); | |
style.halign = 'c'; | |
style.valign = 'b'; | |
ctx.drawText( | |
tick.label, | |
this.plotOffset.left + this.tHoz(tick.v, axis), | |
this.plotOffset.top + options.grid.labelMargin, | |
style | |
); | |
} | |
// Add y labels. | |
axis = a.y; | |
style.color = axis.options.color || options.grid.color; | |
for(i = 0; i < axis.ticks.length && axis.options.showLabels && axis.used; ++i){ | |
tick = axis.ticks[i]; | |
if (!tick.label || tick.label.length == 0 || (tick.v < 0 && this.options.radarChartMode)) continue; | |
style.angle = Flotr.toRad(axis.options.labelsAngle); | |
style.halign = 'r'; | |
style.valign = 'm'; | |
ctx.drawText( | |
tick.label, | |
this.plotOffset.left + (this.options.radarChartMode ? this.tHoz(0) : 0) - options.grid.labelMargin, | |
this.plotOffset.top + this.tVert(tick.v, axis), | |
style | |
); | |
} | |
// Add y2 labels. | |
axis = a.y2; | |
style.color = axis.options.color || options.grid.color; | |
for(i = 0; i < axis.ticks.length && axis.options.showLabels && axis.used; ++i){ | |
tick = axis.ticks[i]; | |
if (!tick.label || tick.label.length == 0) continue; | |
style.angle = Flotr.toRad(axis.options.labelsAngle); | |
style.halign = 'l'; | |
style.valign = 'm'; | |
ctx.drawText( | |
tick.label, | |
this.plotOffset.left + this.plotWidth + options.grid.labelMargin, | |
this.plotOffset.top + this.tVert(tick.v, axis), | |
style | |
); | |
ctx.save(); | |
ctx.strokeStyle = style.color; | |
ctx.beginPath(); | |
ctx.moveTo(this.plotOffset.left + this.plotWidth - 8, this.plotOffset.top + this.tVert(tick.v, axis)); | |
ctx.lineTo(this.plotOffset.left + this.plotWidth, this.plotOffset.top + this.tVert(tick.v, axis)); | |
ctx.stroke(); | |
ctx.restore(); | |
} | |
} | |
else if (a.x.options.showLabels || | |
a.x2.options.showLabels || | |
a.y.options.showLabels || | |
a.y2.options.showLabels) { | |
html = ['<div style="font-size:smaller;color:' + options.grid.color + ';" class="flotr-labels">']; | |
// Add x labels. | |
axis = a.x; | |
if (axis.options.showLabels){ | |
for(i = 0; i < axis.ticks.length; ++i){ | |
tick = axis.ticks[i]; | |
if(!tick.label || tick.label.length == 0) continue; | |
html.push('<div style="position:absolute;top:' + (this.plotOffset.top + this.plotHeight + options.grid.labelMargin) + 'px;left:' + (this.plotOffset.left + this.tHoz(tick.v, axis) - xBoxWidth/2) + 'px;width:' + xBoxWidth + 'px;text-align:center;'+(axis.options.color?('color:'+axis.options.color+';'):'')+'" class="flotr-grid-label">' + tick.label + '</div>'); | |
} | |
} | |
// Add x2 labels. | |
axis = a.x2; | |
if (axis.options.showLabels && axis.used){ | |
for(i = 0; i < axis.ticks.length; ++i){ | |
tick = axis.ticks[i]; | |
if(!tick.label || tick.label.length == 0) continue; | |
html.push('<div style="position:absolute;top:' + (this.plotOffset.top - options.grid.labelMargin - axis.maxLabel.height) + 'px;left:' + (this.plotOffset.left + this.tHoz(tick.v, axis) - xBoxWidth/2) + 'px;width:' + xBoxWidth + 'px;text-align:center;'+(axis.options.color?('color:'+axis.options.color+';'):'')+'" class="flotr-grid-label">' + tick.label + '</div>'); | |
} | |
} | |
// Add y labels. | |
axis = a.y; | |
if (axis.options.showLabels){ | |
for(i = 0; i < axis.ticks.length; ++i){ | |
tick = axis.ticks[i]; | |
if (!tick.label || tick.label.length == 0) continue; | |
html.push('<div style="position:absolute;top:' + (this.plotOffset.top + this.tVert(tick.v, axis) - axis.maxLabel.height/2) + 'px;left:0;width:' + (this.plotOffset.left - options.grid.labelMargin) + 'px;text-align:right;'+(axis.options.color?('color:'+axis.options.color+';'):'')+'" class="flotr-grid-label">' + tick.label + '</div>'); | |
} | |
} | |
// Add y2 labels. | |
axis = a.y2; | |
if (axis.options.showLabels && axis.used){ | |
ctx.save(); | |
ctx.strokeStyle = axis.options.color || options.grid.color; | |
ctx.beginPath(); | |
for(i = 0; i < axis.ticks.length; ++i){ | |
tick = axis.ticks[i]; | |
if (!tick.label || tick.label.length == 0) continue; | |
html.push('<div style="position:absolute;top:' + (this.plotOffset.top + this.tVert(tick.v, axis) - axis.maxLabel.height/2) + 'px;right:0;width:' + (this.plotOffset.right - options.grid.labelMargin) + 'px;text-align:left;'+(axis.options.color?('color:'+axis.options.color+';'):'')+'" class="flotr-grid-label">' + tick.label + '</div>'); | |
ctx.moveTo(this.plotOffset.left + this.plotWidth - 8, this.plotOffset.top + this.tVert(tick.v, axis)); | |
ctx.lineTo(this.plotOffset.left + this.plotWidth, this.plotOffset.top + this.tVert(tick.v, axis)); | |
} | |
ctx.stroke(); | |
ctx.restore(); | |
} | |
html.push('</div>'); | |
this.el.insert(html.join('')); | |
} | |
}, | |
/** | |
* Draws the title and the subtitle | |
*/ | |
drawTitles: function(){ | |
var html, | |
options = this.options, | |
margin = options.grid.labelMargin, | |
ctx = this.ctx, | |
a = this.axes; | |
if (!options.HtmlText && this.textEnabled) { | |
var style = { | |
size: options.fontSize, | |
color: options.grid.color, | |
halign: 'c' | |
}; | |
// Add subtitle | |
if (options.subtitle){ | |
ctx.drawText( | |
options.subtitle, | |
this.plotOffset.left + this.plotWidth/2, | |
this.titleHeight + this.subtitleHeight - 2, | |
style | |
); | |
} | |
style.weight = 1.5; | |
style.size *= 1.5; | |
// Add title | |
if (options.title){ | |
ctx.drawText( | |
options.title, | |
this.plotOffset.left + this.plotWidth/2, | |
this.titleHeight - 2, | |
style | |
); | |
} | |
style.weight = 1.8; | |
style.size *= 0.8; | |
style.adjustAlign = true; | |
// Add x axis title | |
if (a.x.options.title && a.x.used){ | |
style.halign = 'c'; | |
style.valign = 't'; | |
style.angle = Flotr.toRad(a.x.options.titleAngle); | |
ctx.drawText( | |
a.x.options.title, | |
this.plotOffset.left + this.plotWidth/2, | |
this.plotOffset.top + a.x.maxLabel.height + this.plotHeight + 2 * margin, | |
style | |
); | |
} | |
// Add x2 axis title | |
if (a.x2.options.title && a.x2.used){ | |
style.halign = 'c'; | |
style.valign = 'b'; | |
style.angle = Flotr.toRad(a.x2.options.titleAngle); | |
ctx.drawText( | |
a.x2.options.title, | |
this.plotOffset.left + this.plotWidth/2, | |
this.plotOffset.top - a.x2.maxLabel.height - 2 * margin, | |
style | |
); | |
} | |
// Add y axis title | |
if (a.y.options.title && a.y.used){ | |
style.halign = 'r'; | |
style.valign = 'm'; | |
style.angle = Flotr.toRad(a.y.options.titleAngle); | |
ctx.drawText( | |
a.y.options.title, | |
this.plotOffset.left - a.y.maxLabel.width - 2 * margin, | |
this.plotOffset.top + this.plotHeight / 2, | |
style | |
); | |
} | |
// Add y2 axis title | |
if (a.y2.options.title && a.y2.used){ | |
style.halign = 'l'; | |
style.valign = 'm'; | |
style.angle = Flotr.toRad(a.y2.options.titleAngle); | |
ctx.drawText( | |
a.y2.options.title, | |
this.plotOffset.left + this.plotWidth + a.y2.maxLabel.width + 2 * margin, | |
this.plotOffset.top + this.plotHeight / 2, | |
style | |
); | |
} | |
} | |
else { | |
html = ['<div style="color:'+options.grid.color+';" class="flotr-titles">']; | |
// Add title | |
if (options.title){ | |
html.push('<div style="position:absolute;top:0;left:'+this.plotOffset.left+'px;font-size:1em;font-weight:bold;text-align:center;width:'+this.plotWidth+'px;" class="flotr-title">'+options.title+'</div>'); | |
} | |
// Add subtitle | |
if (options.subtitle){ | |
html.push('<div style="position:absolute;top:'+this.titleHeight+'px;left:'+this.plotOffset.left+'px;font-size:smaller;text-align:center;width:'+this.plotWidth+'px;" class="flotr-subtitle">'+options.subtitle+'</div>'); | |
} | |
html.push('</div>'); | |
html.push('<div class="flotr-axis-title" style="font-weight:bold;">'); | |
// Add x axis title | |
if (a.x.options.title && a.x.used){ | |
html.push('<div style="position:absolute;top:' + (this.plotOffset.top + this.plotHeight + options.grid.labelMargin + a.x.titleSize.height) + 'px;left:' + this.plotOffset.left + 'px;width:' + this.plotWidth + 'px;text-align:center;" class="flotr-axis-title">' + a.x.options.title + '</div>'); | |
} | |
// Add x2 axis title | |
if (a.x2.options.title && a.x2.used){ | |
html.push('<div style="position:absolute;top:0;left:' + this.plotOffset.left + 'px;width:' + this.plotWidth + 'px;text-align:center;" class="flotr-axis-title">' + a.x2.options.title + '</div>'); | |
} | |
// Add y axis title | |
if (a.y.options.title && a.y.used){ | |
html.push('<div style="position:absolute;top:' + (this.plotOffset.top + this.plotHeight/2 - a.y.titleSize.height/2) + 'px;left:0;text-align:right;" class="flotr-axis-title">' + a.y.options.title + '</div>'); | |
} | |
// Add y2 axis title | |
if (a.y2.options.title && a.y2.used){ | |
html.push('<div style="position:absolute;top:' + (this.plotOffset.top + this.plotHeight/2 - a.y.titleSize.height/2) + 'px;right:0;text-align:right;" class="flotr-axis-title">' + a.y2.options.title + '</div>'); | |
} | |
html.push('</div>'); | |
this.el.insert(html.join('')); | |
} | |
}, | |
/** | |
* Actually draws the graph. | |
* @param {Object} series - series to draw | |
*/ | |
drawSeries: function(series){ | |
series = series || this.series; | |
var drawn = false; | |
for(var type in Flotr._registeredTypes){ | |
if(series[type] && series[type].show){ | |
this[Flotr._registeredTypes[type]](series); | |
drawn = true; | |
} | |
} | |
if(!drawn){ | |
this[Flotr._registeredTypes[this.options.defaultType]](series); | |
} | |
}, | |
plotLine: function(series, offset){ | |
var ctx = this.ctx, | |
xa = series.xaxis, | |
ya = series.yaxis, | |
tHoz = this.tHoz.bind(this), | |
tVert = this.tVert.bind(this), | |
data = series.data; | |
if(data.length < 2) return; | |
var prevx = tHoz(data[0][0], xa), | |
prevy = tVert(data[0][1], ya) + offset; | |
ctx.beginPath(); | |
ctx.moveTo(prevx, prevy); | |
for(var i = 0; i < data.length - 1; ++i){ | |
var x1 = data[i][0], y1 = data[i][1], | |
x2 = data[i+1][0], y2 = data[i+1][1]; | |
// To allow empty values | |
if (y1 === null || y2 === null) continue; | |
/** | |
* Clip with ymin. | |
*/ | |
if(y1 <= y2 && y1 < ya.min){ | |
/** | |
* Line segment is outside the drawing area. | |
*/ | |
if(y2 < ya.min) continue; | |
/** | |
* Compute new intersection point. | |
*/ | |
x1 = (ya.min - y1) / (y2 - y1) * (x2 - x1) + x1; | |
y1 = ya.min; | |
}else if(y2 <= y1 && y2 < ya.min){ | |
if(y1 < ya.min) continue; | |
x2 = (ya.min - y1) / (y2 - y1) * (x2 - x1) + x1; | |
y2 = ya.min; | |
} | |
/** | |
* Clip with ymax. | |
*/ | |
if(y1 >= y2 && y1 > ya.max) { | |
if(y2 > ya.max) continue; | |
x1 = (ya.max - y1) / (y2 - y1) * (x2 - x1) + x1; | |
y1 = ya.max; | |
} | |
else if(y2 >= y1 && y2 > ya.max){ | |
if(y1 > ya.max) continue; | |
x2 = (ya.max - y1) / (y2 - y1) * (x2 - x1) + x1; | |
y2 = ya.max; | |
} | |
/** | |
* Clip with xmin. | |
*/ | |
if(x1 <= x2 && x1 < xa.min){ | |
if(x2 < xa.min) continue; | |
y1 = (xa.min - x1) / (x2 - x1) * (y2 - y1) + y1; | |
x1 = xa.min; | |
}else if(x2 <= x1 && x2 < xa.min){ | |
if(x1 < xa.min) continue; | |
y2 = (xa.min - x1) / (x2 - x1) * (y2 - y1) + y1; | |
x2 = xa.min; | |
} | |
/** | |
* Clip with xmax. | |
*/ | |
if(x1 >= x2 && x1 > xa.max){ | |
if (x2 > xa.max) continue; | |
y1 = (xa.max - x1) / (x2 - x1) * (y2 - y1) + y1; | |
x1 = xa.max; | |
}else if(x2 >= x1 && x2 > xa.max){ | |
if(x1 > xa.max) continue; | |
y2 = (xa.max - x1) / (x2 - x1) * (y2 - y1) + y1; | |
x2 = xa.max; | |
} | |
if(prevx != tHoz(x1, xa) || prevy != tVert(y1, ya) + offset) | |
ctx.moveTo(tHoz(x1, xa), tVert(y1, ya) + offset); | |
prevx = tHoz(x2, xa); | |
prevy = tVert(y2, ya) + offset; | |
ctx.lineTo(prevx, prevy); | |
} | |
ctx.stroke(); | |
}, | |
/** | |
* Function used to fill | |
* @param {Object} data | |
*/ | |
plotLineArea: function(series, offset){ | |
var data = series.data; | |
if(data.length < 2) return; | |
var top, lastX = 0, | |
ctx = this.ctx, | |
xa = series.xaxis, | |
ya = series.yaxis, | |
tHoz = this.tHoz.bind(this), | |
tVert = this.tVert.bind(this), | |
bottom = Math.min(Math.max(0, ya.min), ya.max), | |
first = true; | |
ctx.beginPath(); | |
for(var i = 0; i < data.length - 1; ++i){ | |
var x1 = data[i][0], y1 = data[i][1], | |
x2 = data[i+1][0], y2 = data[i+1][1]; | |
if(x1 <= x2 && x1 < xa.min){ | |
if(x2 < xa.min) continue; | |
y1 = (xa.min - x1) / (x2 - x1) * (y2 - y1) + y1; | |
x1 = xa.min; | |
}else if(x2 <= x1 && x2 < xa.min){ | |
if(x1 < xa.min) continue; | |
y2 = (xa.min - x1) / (x2 - x1) * (y2 - y1) + y1; | |
x2 = xa.min; | |
} | |
if(x1 >= x2 && x1 > xa.max){ | |
if(x2 > xa.max) continue; | |
y1 = (xa.max - x1) / (x2 - x1) * (y2 - y1) + y1; | |
x1 = xa.max; | |
}else if(x2 >= x1 && x2 > xa.max){ | |
if (x1 > xa.max) continue; | |
y2 = (xa.max - x1) / (x2 - x1) * (y2 - y1) + y1; | |
x2 = xa.max; | |
} | |
if(first){ | |
ctx.moveTo(tHoz(x1, xa), tVert(bottom, ya) + offset); | |
first = false; | |
} | |
/** | |
* Now check the case where both is outside. | |
*/ | |
if(y1 >= ya.max && y2 >= ya.max){ | |
ctx.lineTo(tHoz(x1, xa), tVert(ya.max, ya) + offset); | |
ctx.lineTo(tHoz(x2, xa), tVert(ya.max, ya) + offset); | |
continue; | |
}else if(y1 <= ya.min && y2 <= ya.min){ | |
ctx.lineTo(tHoz(x1, xa), tVert(ya.min, ya) + offset); | |
ctx.lineTo(tHoz(x2, xa), tVert(ya.min, ya) + offset); | |
continue; | |
} | |
/** | |
* Else it's a bit more complicated, there might | |
* be two rectangles and two triangles we need to fill | |
* in; to find these keep track of the current x values. | |
*/ | |
var x1old = x1, x2old = x2; | |
/** | |
* And clip the y values, without shortcutting. | |
* Clip with ymin. | |
*/ | |
if(y1 <= y2 && y1 < ya.min && y2 >= ya.min){ | |
x1 = (ya.min - y1) / (y2 - y1) * (x2 - x1) + x1; | |
y1 = ya.min; | |
}else if(y2 <= y1 && y2 < ya.min && y1 >= ya.min){ | |
x2 = (ya.min - y1) / (y2 - y1) * (x2 - x1) + x1; | |
y2 = ya.min; | |
} | |
/** | |
* Clip with ymax. | |
*/ | |
if(y1 >= y2 && y1 > ya.max && y2 <= ya.max){ | |
x1 = (ya.max - y1) / (y2 - y1) * (x2 - x1) + x1; | |
y1 = ya.max; | |
}else if(y2 >= y1 && y2 > ya.max && y1 <= ya.max){ | |
x2 = (ya.max - y1) / (y2 - y1) * (x2 - x1) + x1; | |
y2 = ya.max; | |
} | |
/** | |
* If the x value was changed we got a rectangle to fill. | |
*/ | |
if(x1 != x1old){ | |
top = (y1 <= ya.min) ? top = ya.min : ya.max; | |
ctx.lineTo(tHoz(x1old, xa), tVert(top, ya) + offset); | |
ctx.lineTo(tHoz(x1, xa), tVert(top, ya) + offset); | |
} | |
/** | |
* Fill the triangles. | |
*/ | |
ctx.lineTo(tHoz(x1, xa), tVert(y1, ya) + offset); | |
ctx.lineTo(tHoz(x2, xa), tVert(y2, ya) + offset); | |
/** | |
* Fill the other rectangle if it's there. | |
*/ | |
if(x2 != x2old){ | |
top = (y2 <= ya.min) ? ya.min : ya.max; | |
ctx.lineTo(tHoz(x2old, xa), tVert(top, ya) + offset); | |
ctx.lineTo(tHoz(x2, xa), tVert(top, ya) + offset); | |
} | |
lastX = Math.max(x2, x2old); | |
} | |
ctx.lineTo(tHoz(lastX, xa), tVert(bottom, ya) + offset); | |
ctx.closePath(); | |
ctx.fill(); | |
}, | |
/** | |
* Function: (private) drawSeriesLines | |
* | |
* Function draws lines series in the canvas element. | |
* | |
* Parameters: | |
* series - Series with options.lines.show = true. | |
* | |
* Returns: | |
* void | |
*/ | |
drawSeriesLines: function(series){ | |
series = series || this.series; | |
var ctx = this.ctx; | |
ctx.save(); | |
ctx.translate(this.plotOffset.left, this.plotOffset.top); | |
ctx.lineJoin = 'round'; | |
var lw = series.lines.lineWidth; | |
var sw = series.shadowSize; | |
if(sw > 0){ | |
ctx.lineWidth = sw / 2; | |
var offset = lw/2 + ctx.lineWidth/2; | |
ctx.strokeStyle = "rgba(0,0,0,0.1)"; | |
this.plotLine(series, offset + sw/2); | |
ctx.strokeStyle = "rgba(0,0,0,0.2)"; | |
this.plotLine(series, offset); | |
if(series.lines.fill) { | |
ctx.fillStyle = "rgba(0,0,0,0.05)"; | |
this.plotLineArea(series, offset + sw/2); | |
} | |
} | |
ctx.lineWidth = lw; | |
ctx.strokeStyle = series.color; | |
if(series.lines.fill){ | |
ctx.fillStyle = series.lines.fillColor != null ? series.lines.fillColor : Flotr.parseColor(series.color).scale(null, null, null, series.lines.fillOpacity).toString(); | |
this.plotLineArea(series, 0); | |
} | |
this.plotLine(series, 0); | |
ctx.restore(); | |
}, | |
/** | |
* Function: drawSeriesPoints | |
* | |
* Function draws point series in the canvas element. | |
* | |
* Parameters: | |
* series - Series with options.points.show = true. | |
* | |
* Returns: | |
* void | |
*/ | |
drawSeriesPoints: function(series) { | |
var ctx = this.ctx; | |
ctx.save(); | |
ctx.translate(this.plotOffset.left, this.plotOffset.top); | |
var lw = series.lines.lineWidth; | |
var sw = series.shadowSize; | |
if(sw > 0){ | |
ctx.lineWidth = sw / 2; | |
ctx.strokeStyle = 'rgba(0,0,0,0.1)'; | |
this.plotPointShadows(series, sw/2 + ctx.lineWidth/2, series.points.radius); | |
ctx.strokeStyle = 'rgba(0,0,0,0.2)'; | |
this.plotPointShadows(series, ctx.lineWidth/2, series.points.radius); | |
} | |
ctx.lineWidth = series.points.lineWidth; | |
ctx.strokeStyle = series.color; | |
ctx.fillStyle = series.points.fillColor != null ? series.points.fillColor : series.color; | |
this.plotPoints(series, series.points.radius, series.points.fill); | |
ctx.restore(); | |
}, | |
plotPoints: function (series, radius, fill) { | |
var xa = series.xaxis, | |
ya = series.yaxis, | |
ctx = this.ctx, i, | |
data = series.data; | |
for(i = data.length - 1; i > -1; --i){ | |
var x = data[i][0], y = data[i][1]; | |
if(x < xa.min || x > xa.max || y < ya.min || y > ya.max) | |
continue; | |
ctx.beginPath(); | |
ctx.arc(this.tHoz(x, xa), this.tVert(y, ya), radius, 0, 2 * Math.PI, true); | |
if(fill) ctx.fill(); | |
ctx.stroke(); | |
} | |
}, | |
plotPointShadows: function(series, offset, radius){ | |
var xa = series.xaxis, | |
ya = series.yaxis, | |
ctx = this.ctx, i, | |
data = series.data; | |
for(i = data.length - 1; i > -1; --i){ | |
var x = data[i][0], y = data[i][1]; | |
if (x < xa.min || x > xa.max || y < ya.min || y > ya.max) | |
continue; | |
ctx.beginPath(); | |
ctx.arc(this.tHoz(x, xa), this.tVert(y, ya) + offset, radius, 0, Math.PI, false); | |
ctx.stroke(); | |
} | |
}, | |
/** | |
* Function: drawSeriesBars | |
* | |
* Function draws bar series in the canvas element. | |
* | |
* Parameters: | |
* series - Series with options.bars.show = true. | |
* | |
* Returns: | |
* void | |
*/ | |
drawSeriesBars: function(series) { | |
var ctx = this.ctx, | |
bw = series.bars.barWidth, | |
lw = Math.min(series.bars.lineWidth, bw); | |
ctx.save(); | |
ctx.translate(this.plotOffset.left, this.plotOffset.top); | |
ctx.lineJoin = 'miter'; | |
/** | |
* @todo linewidth not interpreted the right way. | |
*/ | |
ctx.lineWidth = lw; | |
ctx.strokeStyle = series.color; | |
this.plotBarsShadows(series, bw, 0, series.bars.fill); | |
if(series.bars.fill){ | |
ctx.fillStyle = series.bars.fillColor != null ? series.bars.fillColor : Flotr.parseColor(series.color).scale(null, null, null, series.bars.fillOpacity).toString(); | |
} | |
this.plotBars(series, bw, 0, series.bars.fill); | |
ctx.restore(); | |
}, | |
plotBars: function(series, barWidth, offset, fill){ | |
var data = series.data; | |
if(data.length < 1) return; | |
var xa = series.xaxis, | |
ya = series.yaxis, | |
ctx = this.ctx, | |
tHoz = this.tHoz.bind(this), | |
tVert = this.tVert.bind(this); | |
for(var i = 0; i < data.length; i++){ | |
var x = data[i][0], | |
y = data[i][1]; | |
var drawLeft = true, drawTop = true, drawRight = true; | |
// Stacked bars | |
var stackOffset = 0; | |
if(series.bars.stacked) { | |
xa.values.each(function(o, v) { | |
if (v == x) { | |
stackOffset = o.stack || 0; | |
o.stack = stackOffset + y; | |
} | |
}); | |
} | |
// @todo: fix horizontal bars support | |
// Horizontal bars | |
if(series.bars.horizontal) | |
var left = stackOffset, right = x + stackOffset, bottom = y, top = y + barWidth; | |
else | |
var left = x, right = x + barWidth, bottom = stackOffset, top = y + stackOffset; | |
if(right < xa.min || left > xa.max || top < ya.min || bottom > ya.max) | |
continue; | |
if(left < xa.min){ | |
left = xa.min; | |
drawLeft = false; | |
} | |
if(right > xa.max){ | |
right = xa.max; | |
if (xa.lastSerie != series && series.bars.horizontal) | |
drawTop = false; | |
} | |
if(bottom < ya.min) | |
bottom = ya.min; | |
if(top > ya.max){ | |
top = ya.max; | |
if (ya.lastSerie != series && !series.bars.horizontal) | |
drawTop = false; | |
} | |
/** | |
* Fill the bar. | |
*/ | |
if(fill){ | |
ctx.beginPath(); | |
ctx.moveTo(tHoz(left, xa), tVert(bottom, ya) + offset); | |
ctx.lineTo(tHoz(left, xa), tVert(top, ya) + offset); | |
ctx.lineTo(tHoz(right, xa), tVert(top, ya) + offset); | |
ctx.lineTo(tHoz(right, xa), tVert(bottom, ya) + offset); | |
ctx.fill(); | |
} | |
/** | |
* Draw bar outline/border. | |
*/ | |
if(series.bars.lineWidth != 0 && (drawLeft || drawRight || drawTop)){ | |
ctx.beginPath(); | |
ctx.moveTo(tHoz(left, xa), tVert(bottom, ya) + offset); | |
ctx[drawLeft ?'lineTo':'moveTo'](tHoz(left, xa), tVert(top, ya) + offset); | |
ctx[drawTop ?'lineTo':'moveTo'](tHoz(right, xa), tVert(top, ya) + offset); | |
ctx[drawRight?'lineTo':'moveTo'](tHoz(right, xa), tVert(bottom, ya) + offset); | |
ctx.stroke(); | |
} | |
} | |
}, | |
plotBarsShadows: function(series, barWidth, offset){ | |
var data = series.data; | |
if(data.length < 1) return; | |
var xa = series.xaxis, | |
ya = series.yaxis, | |
ctx = this.ctx, | |
tHoz = this.tHoz.bind(this), | |
tVert = this.tVert.bind(this), | |
sw = this.options.shadowSize; | |
for(var i = 0; i < data.length; i++){ | |
var x = data[i][0], | |
y = data[i][1]; | |
// Stacked bars | |
var stackOffset = 0; | |
if(series.bars.stacked) { | |
xa.values.each(function(o, v) { | |
if (v == x) { | |
stackOffset = o.stackShadow || 0; | |
o.stackShadow = stackOffset + y; | |
} | |
}); | |
} | |
// Horizontal bars | |
if(series.bars.horizontal) | |
var left = stackOffset, right = x + stackOffset, bottom = y, top = y + barWidth; | |
else | |
var left = x, right = x + barWidth, bottom = stackOffset, top = y + stackOffset; | |
if(right < xa.min || left > xa.max || top < ya.min || bottom > ya.max) | |
continue; | |
if(left < xa.min) left = xa.min; | |
if(right > xa.max) right = xa.max; | |
if(bottom < ya.min) bottom = ya.min; | |
if(top > ya.max) top = ya.max; | |
var width = tHoz(right, xa)-tHoz(left, xa)-((tHoz(right, xa)+sw <= this.plotWidth) ? 0 : sw); | |
var height = Math.max(0, tVert(bottom, ya)-tVert(top, ya)-((tVert(bottom, ya)+sw <= this.plotHeight) ? 0 : sw)); | |
ctx.fillStyle = 'rgba(0,0,0,0.05)'; | |
ctx.fillRect(Math.min(tHoz(left, xa)+sw, this.plotWidth), Math.min(tVert(top, ya)+sw, this.plotWidth), width, height); | |
} | |
}, | |
/** | |
* Function: drawSeriesCandles | |
* | |
* Function draws candles series in the canvas element. | |
* | |
* Parameters: | |
* series - Series with options.candles.show = true. | |
* | |
* Returns: | |
* void | |
*/ | |
drawSeriesCandles: function(series) { | |
var ctx = this.ctx, | |
bw = series.candles.candleWidth; | |
ctx.save(); | |
ctx.translate(this.plotOffset.left, this.plotOffset.top); | |
ctx.lineJoin = 'miter'; | |
/** | |
* @todo linewidth not interpreted the right way. | |
*/ | |
ctx.lineWidth = series.candles.lineWidth; | |
this.plotCandlesShadows(series, bw/2); | |
this.plotCandles(series, bw/2); | |
ctx.restore(); | |
}, | |
plotCandles: function(series, offset){ | |
var data = series.data; | |
if(data.length < 1) return; | |
var xa = series.xaxis, | |
ya = series.yaxis, | |
ctx = this.ctx, | |
tHoz = this.tHoz.bind(this), | |
tVert = this.tVert.bind(this); | |
for(var i = 0; i < data.length; i++){ | |
var d = data[i], | |
x = d[0], | |
open = d[1], | |
high = d[2], | |
low = d[3], | |
close = d[4]; | |
var left = x, | |
right = x + series.candles.candleWidth, | |
bottom = Math.max(ya.min, low), | |
top = Math.min(ya.max, high), | |
bottom2 = Math.max(ya.min, Math.min(open, close)), | |
top2 = Math.min(ya.max, Math.max(open, close)); | |
if(right < xa.min || left > xa.max || top < ya.min || bottom > ya.max) | |
continue; | |
var color = series.candles[open>close?'downFillColor':'upFillColor']; | |
/** | |
* Fill the candle. | |
*/ | |
if(series.candles.fill && !series.candles.barcharts){ | |
ctx.fillStyle = Flotr.parseColor(color).scale(null, null, null, series.candles.fillOpacity).toString(); | |
ctx.fillRect(tHoz(left, xa), tVert(top2, ya) + offset, tHoz(right, xa) - tHoz(left, xa), tVert(bottom2, ya) - tVert(top2, ya)); | |
} | |
/** | |
* Draw candle outline/border, high, low. | |
*/ | |
if(series.candles.lineWidth || series.candles.wickLineWidth){ | |
var x, y, pixelOffset = (series.candles.wickLineWidth % 2) / 2; | |
x = Math.floor(tHoz((left + right) / 2), xa) + pixelOffset; | |
ctx.save(); | |
ctx.strokeStyle = color; | |
ctx.lineWidth = series.candles.wickLineWidth; | |
ctx.lineCap = 'butt'; | |
if (series.candles.barcharts) { | |
ctx.beginPath(); | |
ctx.moveTo(x, Math.floor(tVert(top, ya) + offset)); | |
ctx.lineTo(x, Math.floor(tVert(bottom, ya) + offset)); | |
y = Math.floor(tVert(open, ya) + offset)+0.5; | |
ctx.moveTo(Math.floor(tHoz(left, xa))+pixelOffset, y); | |
ctx.lineTo(x, y); | |
y = Math.floor(tVert(close, ya) + offset)+0.5; | |
ctx.moveTo(Math.floor(tHoz(right, xa))+pixelOffset, y); | |
ctx.lineTo(x, y); | |
} | |
else { | |
ctx.strokeRect(tHoz(left, xa), tVert(top2, ya) + offset, tHoz(right, xa) - tHoz(left, xa), tVert(bottom2, ya) - tVert(top2, ya)); | |
ctx.beginPath(); | |
ctx.moveTo(x, Math.floor(tVert(top2, ya) + offset)); | |
ctx.lineTo(x, Math.floor(tVert(top, ya) + offset)); | |
ctx.moveTo(x, Math.floor(tVert(bottom2, ya) + offset)); | |
ctx.lineTo(x, Math.floor(tVert(bottom, ya) + offset)); | |
} | |
ctx.stroke(); | |
ctx.restore(); | |
} | |
} | |
}, | |
plotCandlesShadows: function(series, offset){ | |
var data = series.data; | |
if(data.length < 1 || series.candles.barcharts) return; | |
var xa = series.xaxis, | |
ya = series.yaxis, | |
tHoz = this.tHoz.bind(this), | |
tVert = this.tVert.bind(this), | |
sw = this.options.shadowSize; | |
for(var i = 0; i < data.length; i++){ | |
var d = data[i], | |
x = d[0], | |
open = d[1], | |
high = d[2], | |
low = d[3], | |
close = d[4]; | |
var left = x, | |
right = x + series.candles.candleWidth, | |
bottom = Math.max(ya.min, Math.min(open, close)), | |
top = Math.min(ya.max, Math.max(open, close)); | |
if(right < xa.min || left > xa.max || top < ya.min || bottom > ya.max) | |
continue; | |
var width = tHoz(right, xa)-tHoz(left, xa)-((tHoz(right, xa)+sw <= this.plotWidth) ? 0 : sw); | |
var height = Math.max(0, tVert(bottom, ya)-tVert(top, ya)-((tVert(bottom, ya)+sw <= this.plotHeight) ? 0 : sw)); | |
this.ctx.fillStyle = 'rgba(0,0,0,0.05)'; | |
this.ctx.fillRect(Math.min(tHoz(left, xa)+sw, this.plotWidth), Math.min(tVert(top, ya)+sw, this.plotWidth), width, height); | |
} | |
}, | |
/** | |
* Function: drawSeriesRadar | |
* | |
* Function draws a radar chart on the canvas element. | |
* | |
* Parameters: | |
* series - Series with options.radar.show = true. | |
* | |
* Returns: | |
* void | |
*/ | |
drawSeriesRadar: function(series) { | |
var ctx = this.ctx, | |
options = this.options, sides= series.data.length; | |
var degreesInRadiansForAngle = Math.PI * 2 / sides, | |
nintyDegrees = Math.PI / 2; | |
var poly = {}; | |
/* | |
Draw radar grid | |
poly.xaxis = series.xaxis; | |
poly.yaxis = series.yaxis; | |
ctx.save(); | |
ctx.translate(this.plotOffset.left, this.plotOffset.top); | |
ctx.lineJoin = 'round'; | |
for (radius = 20; radius <= 100; radius += 20) { | |
poly.data = new Array(); | |
for (i = 0; i < sides; i++) { | |
angle = nintyDegrees + (degreesInRadiansForAngle * i); | |
poly.data[i] = [radius * Math.cos(angle), radius * Math.sin(angle)] | |
} | |
poly.data[sides] = poly.data[0]; | |
this.plotLine(poly,0);} | |
var outside = poly.data; | |
for (i = 0; i < sides; i++) { | |
poly.data = new Array(); | |
poly.data[0] = [0,0]; | |
poly.data[1] = outside[i]; | |
this.plotLine(poly,0); | |
} | |
*/ | |
/* | |
Convert Series data into X, Y co-ordinates | |
*/ | |
if (!series.dataInRadarFormat) { | |
poly.data = new Array(); | |
for (i = 0; i < sides; i++) { | |
angle = nintyDegrees + (degreesInRadiansForAngle * i); | |
poly.data[i] = [series.data[i][1] * Math.cos(angle), series.data[i][1] * Math.sin(angle), series.data[i][0], series.data[i][1]] | |
} | |
poly.data[sides] = poly.data[0]; | |
series.data = poly.data; | |
series.lines = series.radar; | |
series.lines.show = false; | |
series.dataInRadarFormat = true; | |
} | |
this.drawSeriesLines(series); | |
}, | |
/** | |
* Function: drawSeriesPie | |
* | |
* Function draws a pie in the canvas element. | |
* | |
* Parameters: | |
* series - Series with options.pie.show = true. | |
* | |
* Returns: | |
* void | |
*/ | |
drawSeriesPie: function(series) { | |
if (!this.options.pie.drawn) { | |
var ctx = this.ctx, | |
options = this.options, | |
lw = series.pie.lineWidth, | |
sw = series.shadowSize, | |
data = series.data, | |
radius = (Math.min(this.canvasWidth, this.canvasHeight) * series.pie.sizeRatio) / 2, | |
html = []; | |
var vScale = 1;//Math.cos(series.pie.viewAngle); | |
var plotTickness = Math.sin(series.pie.viewAngle)*series.pie.spliceThickness / vScale; | |
var style = { | |
size: options.fontSize*1.2, | |
color: options.grid.color, | |
weight: 1.5 | |
}; | |
var center = { | |
x: (this.canvasWidth+this.plotOffset.left)/2, | |
y: (this.canvasHeight-this.plotOffset.bottom)/2 | |
}; | |
// Pie portions | |
var portions = this.series.collect(function(hash, index){ | |
if (hash.pie.show) | |
return { | |
name: (hash.label || hash.data[0][1]), | |
value: [index, hash.data[0][1]], | |
explode: hash.pie.explode | |
}; | |
}); | |
// Sum of the portions' angles | |
var sum = portions.pluck('value').pluck(1).inject(0, function(acc, n) { return acc + n; }); | |
var fraction = 0.0, | |
angle = series.pie.startAngle, | |
value = 0.0; | |
var slices = portions.collect(function(slice){ | |
angle += fraction; | |
value = parseFloat(slice.value[1]); // @warning : won't support null values !! | |
fraction = value/sum; | |
return { | |
name: slice.name, | |
fraction: fraction, | |
x: slice.value[0], | |
y: value, | |
explode: slice.explode, | |
startAngle: 2 * angle * Math.PI, | |
endAngle: 2 * (angle + fraction) * Math.PI | |
}; | |
}); | |
ctx.save(); | |
if(sw > 0){ | |
slices.each(function (slice) { | |
var bisection = (slice.startAngle + slice.endAngle) / 2; | |
var xOffset = center.x + Math.cos(bisection) * slice.explode + sw; | |
var yOffset = center.y + Math.sin(bisection) * slice.explode + sw; | |
this.plotSlice(xOffset, yOffset, radius, slice.startAngle, slice.endAngle, false, vScale); | |
ctx.fillStyle = 'rgba(0,0,0,0.1)'; | |
ctx.fill(); | |
}, this); | |
} | |
if (options.HtmlText) { | |
html = ['<div style="color:' + this.options.grid.color + '" class="flotr-labels">']; | |
} | |
slices.each(function (slice, index) { | |
var bisection = (slice.startAngle + slice.endAngle) / 2; | |
var color = options.colors[index]; | |
var xOffset = center.x + Math.cos(bisection) * slice.explode; | |
var yOffset = center.y + Math.sin(bisection) * slice.explode; | |
this.plotSlice(xOffset, yOffset, radius, slice.startAngle, slice.endAngle, false, vScale); | |
if(series.pie.fill){ | |
ctx.fillStyle = Flotr.parseColor(color).scale(null, null, null, series.pie.fillOpacity).toString(); | |
ctx.fill(); | |
} | |
ctx.lineWidth = lw; | |
ctx.strokeStyle = color; | |
ctx.stroke(); | |
/*ctx.save(); | |
ctx.scale(1, vScale); | |
ctx.moveTo(xOffset, yOffset); | |
ctx.beginPath(); | |
ctx.lineTo(xOffset, yOffset+plotTickness); | |
ctx.lineTo(xOffset+Math.cos(slice.startAngle)*radius, yOffset+Math.sin(slice.startAngle)*radius+plotTickness); | |
ctx.lineTo(xOffset+Math.cos(slice.startAngle)*radius, yOffset+Math.sin(slice.startAngle)*radius); | |
ctx.lineTo(xOffset, yOffset); | |
ctx.closePath(); | |
ctx.fill();ctx.stroke(); | |
ctx.moveTo(xOffset, yOffset); | |
ctx.beginPath(); | |
ctx.lineTo(xOffset, yOffset+plotTickness); | |
ctx.lineTo(xOffset+Math.cos(slice.endAngle)*radius, yOffset+Math.sin(slice.endAngle)*radius+plotTickness); | |
ctx.lineTo(xOffset+Math.cos(slice.endAngle)*radius, yOffset+Math.sin(slice.endAngle)*radius); | |
ctx.lineTo(xOffset, yOffset); | |
ctx.closePath(); | |
ctx.fill();ctx.stroke(); | |
ctx.moveTo(xOffset+Math.cos(slice.startAngle)*radius, yOffset+Math.sin(slice.startAngle)*radius); | |
ctx.beginPath(); | |
ctx.lineTo(xOffset+Math.cos(slice.startAngle)*radius, yOffset+Math.sin(slice.startAngle)*radius+plotTickness); | |
ctx.arc(xOffset, yOffset+plotTickness, radius, slice.startAngle, slice.endAngle, false); | |
ctx.lineTo(xOffset+Math.cos(slice.endAngle)*radius, yOffset+Math.sin(slice.endAngle)*radius); | |
ctx.arc(xOffset, yOffset, radius, slice.endAngle, slice.startAngle, true); | |
ctx.closePath(); | |
ctx.fill();ctx.stroke(); | |
ctx.scale(1, 1/vScale); | |
this.plotSlice(xOffset, yOffset+plotTickness, radius, slice.startAngle, slice.endAngle, false, vScale); | |
ctx.stroke(); | |
if(series.pie.fill){ | |
ctx.fillStyle = Flotr.parseColor(color).scale(null, null, null, series.pie.fillOpacity).toString(); | |
ctx.fill(); | |
} | |
ctx.restore();*/ | |
var label = options.pie.labelFormatter(slice); | |
var textAlignRight = (Math.cos(bisection) < 0); | |
var distX = xOffset + Math.cos(bisection) * (series.pie.explode + radius); | |
var distY = yOffset + Math.sin(bisection) * (series.pie.explode + radius); | |
if (slice.fraction && label) { | |
if (options.HtmlText) { | |
var divStyle = 'position:absolute;top:' + (distY - 5) + 'px;'; //@todo: change | |
if (textAlignRight) { | |
divStyle += 'right:'+(this.canvasWidth - distX)+'px;text-align:right;'; | |
} | |
else { | |
divStyle += 'left:'+distX+'px;text-align:left;'; | |
} | |
html.push('<div style="' + divStyle + '" class="flotr-grid-label">' + label + '</div>'); | |
} | |
else { | |
style.halign = textAlignRight ? 'r' : 'l'; | |
ctx.drawText( | |
label, | |
distX, | |
distY + style.size / 2, | |
style | |
); | |
} | |
} | |
}, this); | |
if (options.HtmlText) { | |
html.push('</div>'); | |
this.el.insert(html.join('')); | |
} | |
ctx.restore(); | |
options.pie.drawn = true; | |
} | |
}, | |
plotSlice: function(x, y, radius, startAngle, endAngle, fill, vScale) { | |
var ctx = this.ctx; | |
vScale = vScale || 1; | |
ctx.save(); | |
ctx.scale(1, vScale); | |
ctx.beginPath(); | |
ctx.moveTo(x, y); | |
ctx.arc (x, y, radius, startAngle, endAngle, fill); | |
ctx.lineTo(x, y); | |
ctx.closePath(); | |
ctx.restore(); | |
}, | |
plotPie: function() {}, | |
/** | |
* Function: insertLegend | |
* | |
* Function adds a legend div to the canvas container or draws it on the canvas. | |
* | |
* Parameters: | |
* none | |
* | |
* Returns: | |
* void | |
*/ | |
insertLegend: function(){ | |
if(!this.options.legend.show) | |
return; | |
var series = this.series, | |
plotOffset = this.plotOffset, | |
options = this.options, | |
fragments = [], | |
rowStarted = false, | |
ctx = this.ctx, | |
i; | |
var noLegendItems = series.findAll(function(s) {return (s.label && !s.hide)}).size(); | |
if (noLegendItems) { | |
if (!options.HtmlText && this.textEnabled) { | |
var style = { | |
size: options.fontSize*1.1, | |
color: options.grid.color | |
}; | |
// @todo: take css into account | |
//var dummyDiv = this.el.insert('<div class="flotr-legend" style="position:absolute;top:-10000px;"></div>'); | |
var p = options.legend.position, | |
m = options.legend.margin, | |
lbw = options.legend.labelBoxWidth, | |
lbh = options.legend.labelBoxHeight, | |
lbm = options.legend.labelBoxMargin, | |
offsetX = plotOffset.left + m, | |
offsetY = plotOffset.top + m; | |
// We calculate the labels' max width | |
var labelMaxWidth = 0; | |
for(i = series.length - 1; i > -1; --i){ | |
if(!series[i].label || series[i].hide) continue; | |
var label = options.legend.labelFormatter(series[i].label); | |
labelMaxWidth = Math.max(labelMaxWidth, ctx.measureText(label, style)); | |
} | |
var legendWidth = Math.round(lbw + lbm*3 + labelMaxWidth), | |
legendHeight = Math.round(noLegendItems*(lbm+lbh) + lbm); | |
if(p.charAt(0) == 's') offsetY = plotOffset.top + this.plotHeight - (m + legendHeight); | |
if(p.charAt(1) == 'e') offsetX = plotOffset.left + this.plotWidth - (m + legendWidth); | |
// Legend box | |
var color = Flotr.parseColor(options.legend.backgroundColor || 'rgb(240,240,240)').scale(null, null, null, options.legend.backgroundOpacity || 0.1).toString(); | |
ctx.fillStyle = color; | |
ctx.fillRect(offsetX, offsetY, legendWidth, legendHeight); | |
ctx.strokeStyle = options.legend.labelBoxBorderColor; | |
ctx.strokeRect(Flotr.toPixel(offsetX), Flotr.toPixel(offsetY), legendWidth, legendHeight); | |
// Legend labels | |
var x = offsetX + lbm; | |
var y = offsetY + lbm; | |
for(i = 0; i < series.length; i++){ | |
if(!series[i].label || series[i].hide) continue; | |
var label = options.legend.labelFormatter(series[i].label); | |
ctx.fillStyle = series[i].color; | |
ctx.fillRect(x, y, lbw-1, lbh-1); | |
ctx.strokeStyle = options.legend.labelBoxBorderColor; | |
ctx.lineWidth = 1; | |
ctx.strokeRect(Math.ceil(x)-1.5, Math.ceil(y)-1.5, lbw+2, lbh+2); | |
// Legend text | |
ctx.drawText( | |
label, | |
x + lbw + lbm, | |
y + (lbh + style.size - ctx.fontDescent(style))/2, | |
style | |
); | |
y += lbh + lbm; | |
} | |
} | |
else { | |
for(i = 0; i < series.length; ++i){ | |
if(!series[i].label || series[i].hide) continue; | |
if(i % options.legend.noColumns == 0){ | |
fragments.push(rowStarted ? '</tr><tr>' : '<tr>'); | |
rowStarted = true; | |
} | |
var label = options.legend.labelFormatter(series[i].label); | |
fragments.push('<td class="flotr-legend-color-box"><div style="border:1px solid ' + options.legend.labelBoxBorderColor + ';padding:1px"><div style="width:' + options.legend.labelBoxWidth + 'px;height:' + options.legend.labelBoxHeight + 'px;background-color:' + series[i].color + '"></div></div></td>' + | |
'<td class="flotr-legend-label">' + label + '</td>'); | |
} | |
if(rowStarted) fragments.push('</tr>'); | |
if(fragments.length > 0){ | |
var table = '<table style="font-size:smaller;color:' + options.grid.color + '">' + fragments.join("") + '</table>'; | |
if(options.legend.container != null){ | |
$(options.legend.container).update(table); | |
}else{ | |
var pos = ''; | |
var p = options.legend.position, m = options.legend.margin; | |
if(p.charAt(0) == 'n') pos += 'top:' + (m + plotOffset.top) + 'px;'; | |
else if(p.charAt(0) == 's') pos += 'bottom:' + (m + plotOffset.bottom) + 'px;'; | |
if(p.charAt(1) == 'e') pos += 'right:' + (m + plotOffset.right) + 'px;'; | |
else if(p.charAt(1) == 'w') pos += 'left:' + (m + plotOffset.left) + 'px;'; | |
var div = this.el.insert('<div class="flotr-legend" style="position:absolute;z-index:2;' + pos +'">' + table + '</div>').select('div.flotr-legend').first(); | |
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){ | |
var tmp = (options.grid.backgroundColor != null) ? options.grid.backgroundColor : Flotr.extractColor(div); | |
c = Flotr.parseColor(tmp).adjust(null, null, null, 1).toString(); | |
} | |
this.el.insert('<div class="flotr-legend-bg" style="position:absolute;width:' + div.getWidth() + 'px;height:' + div.getHeight() + 'px;' + pos +'background-color:' + c + ';"> </div>').select('div.flotr-legend-bg').first().setStyle({ | |
'opacity': options.legend.backgroundOpacity | |
}); | |
} | |
} | |
} | |
} | |
} | |
}, | |
/** | |
* Function: getEventPosition | |
* | |
* Calculates the coordinates from a mouse event object. | |
* | |
* Parameters: | |
* event - Mouse Event object. | |
* | |
* Returns: | |
* Object with x and y coordinates of the mouse. | |
*/ | |
getEventPosition: function (event){ | |
var offset = this.overlay.cumulativeOffset(), | |
rx = (event.pageX - offset.left - this.plotOffset.left), | |
ry = (event.pageY - offset.top - this.plotOffset.top), | |
ax = 0, ay = 0 | |
if(event.pageX == null && event.clientX != null){ | |
var de = document.documentElement, b = document.body; | |
ax = event.clientX + (de && de.scrollLeft || b.scrollLeft || 0); | |
ay = event.clientY + (de && de.scrollTop || b.scrollTop || 0); | |
}else{ | |
ax = event.pageX; | |
ay = event.pageY; | |
} | |
return { | |
x: this.axes.x.min + rx / this.axes.x.scale, | |
x2: this.axes.x2.min + rx / this.axes.x2.scale, | |
y: this.axes.y.max - ry / this.axes.y.scale, | |
y2: this.axes.y2.max - ry / this.axes.y2.scale, | |
relX: rx, | |
relY: ry, | |
absX: ax, | |
absY: ay | |
}; | |
}, | |
/** | |
* Function: clickHandler | |
* | |
* Handler observes the 'click' event and fires the 'flotr:click' event. | |
* | |
* Parameters: | |
* event - 'click' Event object. | |
* | |
* Returns: | |
* void | |
*/ | |
clickHandler: function(event){ | |
if(this.ignoreClick){ | |
this.ignoreClick = false; | |
return; | |
} | |
this.el.fire('flotr:click', [this.getEventPosition(event), this]); | |
}, | |
/** | |
* Function: mouseMoveHandler | |
* | |
* Handler observes mouse movement over the graph area. Fires the | |
* 'flotr:mousemove' event. | |
* | |
* Parameters: | |
* event - 'mousemove' Event object. | |
* | |
* Returns: | |
* void | |
*/ | |
mouseMoveHandler: function(event){ | |
var pos = this.getEventPosition(event); | |
this.lastMousePos.pageX = pos.absX; | |
this.lastMousePos.pageY = pos.absY; | |
if(this.selectionInterval == null && (this.options.mouse.track || this.series.any(function(s){return s.mouse && s.mouse.track;}))){ | |
this.hit(pos); | |
} | |
this.el.fire('flotr:mousemove', [event, pos, this]); | |
}, | |
/** | |
* Function: mouseDownHandler | |
* | |
* Handler observes the 'mousedown' event. | |
* | |
* Parameters: | |
* event - 'mousedown' Event object. | |
* | |
* Returns: | |
* void | |
*/ | |
mouseDownHandler: function (event){ | |
if(event.isRightClick()) { | |
event.stop(); | |
var overlay = this.overlay; | |
overlay.hide(); | |
function cancelContextMenu () { | |
overlay.show(); | |
$(document).stopObserving('mousemove', cancelContextMenu); | |
} | |
$(document).observe('mousemove', cancelContextMenu); | |
return; | |
} | |
if(!this.options.selection.mode || !event.isLeftClick()) return; | |
this.setSelectionPos(this.selection.first, event); | |
if(this.selectionInterval != null){ | |
clearInterval(this.selectionInterval); | |
} | |
this.lastMousePos.pageX = null; | |
this.selectionInterval = setInterval(this.updateSelection.bind(this), 1000/this.options.selection.fps); | |
this.mouseUpHandler = this.mouseUpHandler.bind(this); | |
$(document).observe('mouseup', this.mouseUpHandler); | |
}, | |
/** | |
* Function: (private) fireSelectEvent | |
* | |
* Fires the 'flotr:select' event when the user made a selection. | |
* | |
* Parameters: | |
* none | |
* | |
* Returns: | |
* void | |
*/ | |
fireSelectEvent: function(){ | |
var a = this.axes, selection = this.selection, | |
x1 = (selection.first.x <= selection.second.x) ? selection.first.x : selection.second.x, | |
x2 = (selection.first.x <= selection.second.x) ? selection.second.x : selection.first.x, | |
y1 = (selection.first.y >= selection.second.y) ? selection.first.y : selection.second.y, | |
y2 = (selection.first.y >= selection.second.y) ? selection.second.y : selection.first.y; | |
x1 = a.x.min + x1 / a.x.scale; | |
x2 = a.x.min + x2 / a.x.scale; | |
y1 = a.y.max - y1 / a.y.scale; | |
y2 = a.y.max - y2 / a.y.scale; | |
this.el.fire('flotr:select', [{x1:x1, y1:y1, x2:x2, y2:y2}, this]); | |
}, | |
/** | |
* Function: (private) mouseUpHandler | |
* | |
* Handler observes the mouseup event for the document. | |
* | |
* Parameters: | |
* event - 'mouseup' Event object. | |
* | |
* Returns: | |
* void | |
*/ | |
mouseUpHandler: function(event){ | |
$(document).stopObserving('mouseup', this.mouseUpHandler); | |
event.stop(); | |
if(this.selectionInterval != null){ | |
clearInterval(this.selectionInterval); | |
this.selectionInterval = null; | |
} | |
this.setSelectionPos(this.selection.second, event); | |
this.clearSelection(); | |
if(this.selectionIsSane()){ | |
this.drawSelection(); | |
this.fireSelectEvent(); | |
this.ignoreClick = true; | |
} | |
}, | |
/** | |
* Function: setSelectionPos | |
* | |
* Calculates the position of the selection. | |
* | |
* Parameters: | |
* pos - Position object. | |
* event - Event object. | |
* | |
* Returns: | |
* void | |
*/ | |
setSelectionPos: function(pos, event) { | |
var options = this.options, | |
offset = $(this.overlay).cumulativeOffset(); | |
if(options.selection.mode.indexOf('x') == -1){ | |
pos.x = (pos == this.selection.first) ? 0 : this.plotWidth; | |
}else{ | |
pos.x = event.pageX - offset.left - this.plotOffset.left; | |
pos.x = Math.min(Math.max(0, pos.x), this.plotWidth); | |
} | |
if (options.selection.mode.indexOf('y') == -1){ | |
pos.y = (pos == this.selection.first) ? 0 : this.plotHeight; | |
}else{ | |
pos.y = event.pageY - offset.top - this.plotOffset.top; | |
pos.y = Math.min(Math.max(0, pos.y), this.plotHeight); | |
} | |
}, | |
/** | |
* Function: updateSelection | |
* | |
* Updates (draws) the selection box. | |
* | |
* Parameters: | |
* none | |
* | |
* Returns: | |
* void | |
*/ | |
updateSelection: function(){ | |
if(this.lastMousePos.pageX == null) return; | |
this.setSelectionPos(this.selection.second, this.lastMousePos); | |
this.clearSelection(); | |
if(this.selectionIsSane()) this.drawSelection(); | |
}, | |
/** | |
* Function: clearSelection | |
* | |
* Removes the selection box from the overlay canvas. | |
* | |
* Parameters: | |
* none | |
* | |
* Returns: | |
* void | |
*/ | |
clearSelection: function() { | |
if(this.prevSelection == null) return; | |
var prevSelection = this.prevSelection, | |
octx = this.octx, | |
plotOffset = this.plotOffset, | |
x = Math.min(prevSelection.first.x, prevSelection.second.x), | |
y = Math.min(prevSelection.first.y, prevSelection.second.y), | |
w = Math.abs(prevSelection.second.x - prevSelection.first.x), | |
h = Math.abs(prevSelection.second.y - prevSelection.first.y); | |
octx.clearRect(x + plotOffset.left - octx.lineWidth, | |
y + plotOffset.top - octx.lineWidth, | |
w + octx.lineWidth*2, | |
h + octx.lineWidth*2); | |
this.prevSelection = null; | |
}, | |
/** | |
* Function: setSelection | |
* | |
* Allows the user the manually select an area. | |
* | |
* Parameters: | |
* area - Object with coordinates to select. | |
* | |
* Returns: | |
* void | |
*/ | |
setSelection: function(area){ | |
var options = this.options, | |
xa = this.axes.x, | |
ya = this.axes.y, | |
vertScale = yaxis.scale, | |
hozScale = xaxis.scale, | |
selX = options.selection.mode.indexOf('x') != -1, | |
selY = options.selection.mode.indexOf('y') != -1; | |
this.clearSelection(); | |
this.selection.first.y = selX ? 0 : (ya.max - area.y1) * vertScale; | |
this.selection.second.y = selX ? this.plotHeight : (ya.max - area.y2) * vertScale; | |
this.selection.first.x = selY ? 0 : (area.x1 - xa.min) * hozScale; | |
this.selection.second.x = selY ? this.plotWidth : (area.x2 - xa.min) * hozScale; | |
this.drawSelection(); | |
this.fireSelectEvent(); | |
}, | |
/** | |
* Function: (private) drawSelection | |
* | |
* Draws the selection box. | |
* | |
* Parameters: | |
* none | |
* | |
* Returns: | |
* void | |
*/ | |
drawSelection: function() { | |
var prevSelection = this.prevSelection, | |
selection = this.selection, | |
octx = this.octx, | |
options = this.options, | |
plotOffset = this.plotOffset; | |
if(prevSelection != null && | |
selection.first.x == prevSelection.first.x && | |
selection.first.y == prevSelection.first.y && | |
selection.second.x == prevSelection.second.x && | |
selection.second.y == prevSelection.second.y) | |
return; | |
octx.strokeStyle = Flotr.parseColor(options.selection.color).scale(null, null, null, 0.8).toString(); | |
octx.lineWidth = 1; | |
octx.lineJoin = 'round'; | |
octx.fillStyle = Flotr.parseColor(options.selection.color).scale(null, null, null, 0.4).toString(); | |
this.prevSelection = { | |
first: { x: selection.first.x, y: selection.first.y }, | |
second: { x: selection.second.x, y: selection.second.y } | |
}; | |
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); | |
octx.fillRect(x + plotOffset.left, y + plotOffset.top, w, h); | |
octx.strokeRect(x + plotOffset.left, y + plotOffset.top, w, h); | |
}, | |
/** | |
* Function: (private) selectionIsSane | |
* | |
* Determines whether or not the selection is sane and should be drawn. | |
* | |
* Parameters: | |
* none | |
* | |
* Returns: | |
* boolean - True when sane, false otherwise. | |
*/ | |
selectionIsSane: function(){ | |
var selection = this.selection; | |
return Math.abs(selection.second.x - selection.first.x) >= 5 && | |
Math.abs(selection.second.y - selection.first.y) >= 5; | |
}, | |
/** | |
* Function: clearHit | |
* | |
* Removes the mouse tracking point from the overlay. | |
* | |
* Parameters: | |
* none | |
* | |
* Returns: | |
* void | |
*/ | |
clearHit: function(){ | |
if(this.prevHit){ | |
var options = this.options, | |
plotOffset = this.plotOffset, | |
prevHit = this.prevHit; | |
this.octx.clearRect( | |
this.tHoz(prevHit.x) + plotOffset.left - options.points.radius*2, | |
this.tVert(prevHit.y) + plotOffset.top - options.points.radius*2, | |
options.points.radius*3 + options.points.lineWidth*3, | |
options.points.radius*3 + options.points.lineWidth*3 | |
); | |
this.prevHit = null; | |
} | |
}, | |
/** | |
* Function: hit | |
* | |
* Retrieves the nearest data point from the mouse cursor. If it's within | |
* a certain range, draw a point on the overlay canvas and display the x and y | |
* value of the data. | |
* | |
* Parameters: | |
* mouse - Object that holds the relative x and y coordinates of the cursor. | |
* | |
* Returns: | |
* void | |
*/ | |
hit: function(mouse){ | |
var series = this.series, | |
options = this.options, | |
prevHit = this.prevHit, | |
plotOffset = this.plotOffset, | |
octx = this.octx, | |
data, xsens, ysens, | |
/** | |
* Nearest data element. | |
*/ | |
i, n = { | |
dist:Number.MAX_VALUE, | |
x:null, | |
y:null, | |
relX:mouse.relX, | |
relY:mouse.relY, | |
absX:mouse.absX, | |
absY:mouse.absY, | |
mouse:null, | |
radarData:null | |
}; | |
for(i = 0; i < series.length; i++){ | |
s = series[i]; | |
if(!s.mouse.track) continue; | |
data = s.data; | |
xsens = (s.xaxis.scale*s.mouse.sensibility); | |
ysens = (s.yaxis.scale*s.mouse.sensibility); | |
for(var j = 0, xpow, ypow; j < data.length; j++){ | |
if (data[j][1] === null) continue; | |
xpow = Math.pow(s.xaxis.scale*(data[j][0] - mouse.x), 2); | |
ypow = Math.pow(s.yaxis.scale*(data[j][1] - mouse.y), 2); | |
if(xpow < xsens && ypow < ysens && Math.sqrt(xpow+ypow) < n.dist){ | |
n.dist = Math.sqrt(xpow+ypow); | |
n.x = data[j][0]; | |
n.y = data[j][1]; | |
n.radarLabel = data[j][2]; | |
n.radarData = data[j][3]; | |
n.mouse = s.mouse; | |
} | |
} | |
} | |
if(n.mouse && n.mouse.track && !prevHit || (prevHit && (n.x != prevHit.x || n.y != prevHit.y))){ | |
var mt = this.mouseTrack || this.el.select(".flotr-mouse-value")[0], | |
pos = '', | |
p = options.mouse.position, | |
m = options.mouse.margin, | |
elStyle = 'opacity:0.7;background-color:#000;color:#fff;display:none;position:absolute;padding:2px 8px;-moz-border-radius:4px;border-radius:4px;white-space:nowrap;'; | |
if (!options.mouse.relative) { // absolute to the canvas | |
if(p.charAt(0) == 'n') pos += 'top:' + (m + plotOffset.top) + 'px;'; | |
else if(p.charAt(0) == 's') pos += 'bottom:' + (m + plotOffset.bottom) + 'px;'; | |
if(p.charAt(1) == 'e') pos += 'right:' + (m + plotOffset.right) + 'px;'; | |
else if(p.charAt(1) == 'w') pos += 'left:' + (m + plotOffset.left) + 'px;'; | |
} | |
else { // relative to the mouse | |
if(p.charAt(0) == 'n') pos += 'bottom:' + (m - plotOffset.top - this.tVert(n.y) + this.canvasHeight) + 'px;'; | |
else if(p.charAt(0) == 's') pos += 'top:' + (m + plotOffset.top + this.tVert(n.y)) + 'px;'; | |
if(p.charAt(1) == 'e') pos += 'left:' + (m + plotOffset.left + this.tHoz(n.x)) + 'px;'; | |
else if(p.charAt(1) == 'w') pos += 'right:' + (m - plotOffset.left - this.tHoz(n.x) + this.canvasWidth) + 'px;'; | |
} | |
elStyle += pos; | |
if(!mt){ | |
this.el.insert('<div class="flotr-mouse-value" style="'+elStyle+'"></div>'); | |
mt = this.mouseTrack = this.el.select('.flotr-mouse-value').first(); | |
} | |
else { | |
this.mouseTrack = mt.setStyle(elStyle); | |
} | |
if(n.x !== null && n.y !== null){ | |
mt.show(); | |
this.clearHit(); | |
if(n.mouse.lineColor != null){ | |
octx.save(); | |
octx.translate(plotOffset.left, plotOffset.top); | |
octx.lineWidth = options.points.lineWidth; | |
octx.strokeStyle = n.mouse.lineColor; | |
octx.fillStyle = '#ffffff'; | |
octx.beginPath(); | |
octx.arc(this.tHoz(n.x), this.tVert(n.y), options.mouse.radius, 0, 2 * Math.PI, true); | |
octx.fill(); | |
octx.stroke(); | |
octx.restore(); | |
} | |
this.prevHit = n; | |
var decimals = n.mouse.trackDecimals; | |
if(decimals == null || decimals < 0) decimals = 0; | |
mt.innerHTML = n.mouse.trackFormatter({x: n.x.toFixed(decimals), y: n.y.toFixed(decimals), | |
radarLabel: n.radarLabel, radarData: n.radarData.toFixed(decimals)}); | |
mt.fire('flotr:hit', [n, this]); | |
} | |
else if(prevHit){ | |
mt.hide(); | |
this.clearHit(); | |
} | |
} | |
}, | |
saveImage: function (type, width, height, replaceCanvas) { | |
var image = null; | |
switch (type) { | |
case 'jpeg': | |
case 'jpg': image = Canvas2Image.saveAsJPEG(this.canvas, replaceCanvas, width, height); break; | |
default: | |
case 'png': image = Canvas2Image.saveAsPNG(this.canvas, replaceCanvas, width, height); break; | |
case 'bmp': image = Canvas2Image.saveAsBMP(this.canvas, replaceCanvas, width, height); break; | |
} | |
if (Object.isElement(image) && replaceCanvas) { | |
this.restoreCanvas(); | |
this.canvas.hide(); | |
this.overlay.hide(); | |
this.el.insert(image.setStyle({position: 'absolute'})); | |
} | |
}, | |
restoreCanvas: function() { | |
this.canvas.show(); | |
this.overlay.show(); | |
this.el.select('img').invoke('remove'); | |
} | |
}); | |
Flotr.Color = Class.create({ | |
initialize: function(r, g, b, a){ | |
this.rgba = ['r','g','b','a']; | |
var x = 4; | |
while(-1<--x){ | |
this[this.rgba[x]] = arguments[x] || ((x==3) ? 1.0 : 0); | |
} | |
this.normalize(); | |
}, | |
adjust: function(rd, gd, bd, ad) { | |
var x = 4; | |
while(-1<--x){ | |
if(arguments[x] != null) | |
this[this.rgba[x]] += arguments[x]; | |
} | |
return this.normalize(); | |
}, | |
clone: function(){ | |
return new Flotr.Color(this.r, this.b, this.g, this.a); | |
}, | |
limit: function(val,minVal,maxVal){ | |
return Math.max(Math.min(val, maxVal), minVal); | |
}, | |
normalize: function(){ | |
var limit = this.limit; | |
this.r = limit(parseInt(this.r), 0, 255); | |
this.g = limit(parseInt(this.g), 0, 255); | |
this.b = limit(parseInt(this.b), 0, 255); | |
this.a = limit(this.a, 0, 1); | |
return this; | |
}, | |
scale: function(rf, gf, bf, af){ | |
var x = 4; | |
while(-1<--x){ | |
if(arguments[x] != null) | |
this[this.rgba[x]] *= arguments[x]; | |
} | |
return this.normalize(); | |
}, | |
distance: function(color){ | |
if (!color) return; | |
color = new Flotr.parseColor(color); | |
var dist = 0; | |
var x = 3; | |
while(-1<--x){ | |
dist += Math.abs(this[this.rgba[x]] - color[this.rgba[x]]); | |
} | |
return dist; | |
}, | |
toString: function(){ | |
return (this.a >= 1.0) ? 'rgb('+[this.r,this.g,this.b].join(',')+')' : 'rgba('+[this.r,this.g,this.b,this.a].join(',')+')'; | |
} | |
}); | |
Flotr.Color.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] | |
}; | |
// not used yet | |
Flotr.Date = { | |
format: function(d, format) { | |
if (!d) return; | |
var leftPad = function(n) { | |
n = n.toString(); | |
return n.length == 1 ? "0" + n : n; | |
}; | |
var r = []; | |
var escape = false; | |
for (var i = 0; i < format.length; ++i) { | |
var c = format.charAt(i); | |
if (escape) { | |
switch (c) { | |
case 'h': c = d.getUTCHours().toString(); break; | |
case 'H': c = leftPad(d.getUTCHours()); break; | |
case 'M': c = leftPad(d.getUTCMinutes()); break; | |
case 'S': c = leftPad(d.getUTCSeconds()); break; | |
case 'd': c = d.getUTCDate().toString(); break; | |
case 'm': c = (d.getUTCMonth() + 1).toString(); break; | |
case 'y': c = d.getUTCFullYear().toString(); break; | |
case 'b': c = Flotr.Date.monthNames[d.getUTCMonth()]; break; | |
} | |
r.push(c); | |
escape = false; | |
} | |
else { | |
if (c == "%") | |
escape = true; | |
else | |
r.push(c); | |
} | |
} | |
return r.join(""); | |
}, | |
timeUnits: { | |
"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 | |
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"] | |
], | |
monthNames: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] | |
}; | |
/* Copyright (C) 1999 Masanao Izumo <iz@onicos.co.jp> | |
* Version: 1.0 | |
* LastModified: Dec 25 1999 | |
* This library is free. You can redistribute it and/or modify it. | |
*/ | |
/* | |
* Interfaces: | |
* b64 = base64encode(data); | |
* data = base64decode(b64); | |
*/ | |
(function() { | |
var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; | |
var base64DecodeChars = [ | |
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, | |
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, | |
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, | |
52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, | |
-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, | |
15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, | |
-1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, | |
41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1]; | |
function base64encode(str) { | |
var out, i, len; | |
var c1, c2, c3; | |
len = str.length; | |
i = 0; | |
out = ""; | |
while(i < len) { | |
c1 = str.charCodeAt(i++) & 0xff; | |
if(i == len) | |
{ | |
out += base64EncodeChars.charAt(c1 >> 2); | |
out += base64EncodeChars.charAt((c1 & 0x3) << 4); | |
out += "=="; | |
break; | |
} | |
c2 = str.charCodeAt(i++); | |
if(i == len) | |
{ | |
out += base64EncodeChars.charAt(c1 >> 2); | |
out += base64EncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4)); | |
out += base64EncodeChars.charAt((c2 & 0xF) << 2); | |
out += "="; | |
break; | |
} | |
c3 = str.charCodeAt(i++); | |
out += base64EncodeChars.charAt(c1 >> 2); | |
out += base64EncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4)); | |
out += base64EncodeChars.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >>6)); | |
out += base64EncodeChars.charAt(c3 & 0x3F); | |
} | |
return out; | |
} | |
function base64decode(str) { | |
var c1, c2, c3, c4; | |
var i, len, out; | |
len = str.length; | |
i = 0; | |
out = ""; | |
while(i < len) { | |
/* c1 */ | |
do { | |
c1 = base64DecodeChars[str.charCodeAt(i++) & 0xff]; | |
} while(i < len && c1 == -1); | |
if(c1 == -1) | |
break; | |
/* c2 */ | |
do { | |
c2 = base64DecodeChars[str.charCodeAt(i++) & 0xff]; | |
} while(i < len && c2 == -1); | |
if(c2 == -1) | |
break; | |
out += String.fromCharCode((c1 << 2) | ((c2 & 0x30) >> 4)); | |
/* c3 */ | |
do { | |
c3 = str.charCodeAt(i++) & 0xff; | |
if(c3 == 61) | |
return out; | |
c3 = base64DecodeChars[c3]; | |
} while(i < len && c3 == -1); | |
if(c3 == -1) | |
break; | |
out += String.fromCharCode(((c2 & 0XF) << 4) | ((c3 & 0x3C) >> 2)); | |
/* c4 */ | |
do { | |
c4 = str.charCodeAt(i++) & 0xff; | |
if(c4 == 61) | |
return out; | |
c4 = base64DecodeChars[c4]; | |
} while(i < len && c4 == -1); | |
if(c4 == -1) | |
break; | |
out += String.fromCharCode(((c3 & 0x03) << 6) | c4); | |
} | |
return out; | |
} | |
if (!window.btoa) window.btoa = base64encode; | |
if (!window.atob) window.atob = base64decode; | |
})(); |
/* | |
* Canvas2Image v0.1 | |
* Copyright (c) 2008 Jacob Seidelin, cupboy@gmail.com | |
* MIT License [http://www.opensource.org/licenses/mit-license.php] | |
*/ | |
var Canvas2Image = (function() { | |
// check if we have canvas support | |
var oCanvas = document.createElement("canvas"); | |
// no canvas, bail out. | |
if (!oCanvas.getContext) { | |
return { | |
saveAsBMP : function(){}, | |
saveAsPNG : function(){}, | |
saveAsJPEG : function(){} | |
} | |
} | |
var bHasImageData = !!(oCanvas.getContext("2d").getImageData); | |
var bHasDataURL = !!(oCanvas.toDataURL); | |
var bHasBase64 = !!(window.btoa); | |
var strDownloadMime = "image/octet-stream"; | |
// ok, we're good | |
var readCanvasData = function(oCanvas) { | |
var iWidth = parseInt(oCanvas.width); | |
var iHeight = parseInt(oCanvas.height); | |
return oCanvas.getContext("2d").getImageData(0,0,iWidth,iHeight); | |
} | |
// base64 encodes either a string or an array of charcodes | |
var encodeData = function(data) { | |
var strData = ""; | |
if (typeof data == "string") { | |
strData = data; | |
} else { | |
var aData = data; | |
for (var i = 0; i < aData.length; i++) { | |
strData += String.fromCharCode(aData[i]); | |
} | |
} | |
return btoa(strData); | |
} | |
// creates a base64 encoded string containing BMP data | |
// takes an imagedata object as argument | |
var createBMP = function(oData) { | |
var aHeader = []; | |
var iWidth = oData.width; | |
var iHeight = oData.height; | |
aHeader.push(0x42); // magic 1 | |
aHeader.push(0x4D); | |
var iFileSize = iWidth*iHeight*3 + 54; // total header size = 54 bytes | |
aHeader.push(iFileSize % 256); iFileSize = Math.floor(iFileSize / 256); | |
aHeader.push(iFileSize % 256); iFileSize = Math.floor(iFileSize / 256); | |
aHeader.push(iFileSize % 256); iFileSize = Math.floor(iFileSize / 256); | |
aHeader.push(iFileSize % 256); | |
aHeader.push(0); // reserved | |
aHeader.push(0); | |
aHeader.push(0); // reserved | |
aHeader.push(0); | |
aHeader.push(54); // data offset | |
aHeader.push(0); | |
aHeader.push(0); | |
aHeader.push(0); | |
var aInfoHeader = []; | |
aInfoHeader.push(40); // info header size | |
aInfoHeader.push(0); | |
aInfoHeader.push(0); | |
aInfoHeader.push(0); | |
var iImageWidth = iWidth; | |
aInfoHeader.push(iImageWidth % 256); iImageWidth = Math.floor(iImageWidth / 256); | |
aInfoHeader.push(iImageWidth % 256); iImageWidth = Math.floor(iImageWidth / 256); | |
aInfoHeader.push(iImageWidth % 256); iImageWidth = Math.floor(iImageWidth / 256); | |
aInfoHeader.push(iImageWidth % 256); | |
var iImageHeight = iHeight; | |
aInfoHeader.push(iImageHeight % 256); iImageHeight = Math.floor(iImageHeight / 256); | |
aInfoHeader.push(iImageHeight % 256); iImageHeight = Math.floor(iImageHeight / 256); | |
aInfoHeader.push(iImageHeight % 256); iImageHeight = Math.floor(iImageHeight / 256); | |
aInfoHeader.push(iImageHeight % 256); | |
aInfoHeader.push(1); // num of planes | |
aInfoHeader.push(0); | |
aInfoHeader.push(24); // num of bits per pixel | |
aInfoHeader.push(0); | |
aInfoHeader.push(0); // compression = none | |
aInfoHeader.push(0); | |
aInfoHeader.push(0); | |
aInfoHeader.push(0); | |
var iDataSize = iWidth*iHeight*3; | |
aInfoHeader.push(iDataSize % 256); iDataSize = Math.floor(iDataSize / 256); | |
aInfoHeader.push(iDataSize % 256); iDataSize = Math.floor(iDataSize / 256); | |
aInfoHeader.push(iDataSize % 256); iDataSize = Math.floor(iDataSize / 256); | |
aInfoHeader.push(iDataSize % 256); | |
for (var i = 0; i < 16; i++) { | |
aInfoHeader.push(0); // these bytes not used | |
} | |
var iPadding = (4 - ((iWidth * 3) % 4)) % 4; | |
var aImgData = oData.data; | |
var strPixelData = ""; | |
var y = iHeight; | |
do { | |
var iOffsetY = iWidth*(y-1)*4; | |
var strPixelRow = ""; | |
for (var x=0;x<iWidth;x++) { | |
var iOffsetX = 4*x; | |
strPixelRow += String.fromCharCode(aImgData[iOffsetY+iOffsetX+2]); | |
strPixelRow += String.fromCharCode(aImgData[iOffsetY+iOffsetX+1]); | |
strPixelRow += String.fromCharCode(aImgData[iOffsetY+iOffsetX]); | |
} | |
for (var c=0;c<iPadding;c++) { | |
strPixelRow += String.fromCharCode(0); | |
} | |
strPixelData += strPixelRow; | |
} while (--y); | |
return encodeData(aHeader.concat(aInfoHeader)) + encodeData(strPixelData); | |
} | |
// sends the generated file to the client | |
var saveFile = function(strData) { | |
if (!window.open(strData)) { | |
document.location.href = strData; | |
} | |
} | |
var makeDataURI = function(strData, strMime) { | |
return "data:" + strMime + ";base64," + strData; | |
} | |
// generates a <img> object containing the imagedata | |
var makeImageObject = function(strSource) { | |
var oImgElement = document.createElement("img"); | |
oImgElement.src = strSource; | |
return oImgElement; | |
} | |
var scaleCanvas = function(oCanvas, iWidth, iHeight) { | |
if (iWidth && iHeight) { | |
var oSaveCanvas = document.createElement("canvas"); | |
oSaveCanvas.width = iWidth; | |
oSaveCanvas.height = iHeight; | |
oSaveCanvas.style.width = iWidth+"px"; | |
oSaveCanvas.style.height = iHeight+"px"; | |
var oSaveCtx = oSaveCanvas.getContext("2d"); | |
oSaveCtx.drawImage(oCanvas, 0, 0, oCanvas.width, oCanvas.height, 0, 0, iWidth, iWidth); | |
return oSaveCanvas; | |
} | |
return oCanvas; | |
} | |
return { | |
saveAsPNG : function(oCanvas, bReturnImg, iWidth, iHeight) { | |
if (!bHasDataURL) { | |
return false; | |
} | |
var oScaledCanvas = scaleCanvas(oCanvas, iWidth, iHeight); | |
var strData = oScaledCanvas.toDataURL("image/png"); | |
if (bReturnImg) { | |
return makeImageObject(strData); | |
} else { | |
saveFile(strData.replace("image/png", strDownloadMime)); | |
} | |
return true; | |
}, | |
saveAsJPEG : function(oCanvas, bReturnImg, iWidth, iHeight) { | |
if (!bHasDataURL) { | |
return false; | |
} | |
var oScaledCanvas = scaleCanvas(oCanvas, iWidth, iHeight); | |
var strMime = "image/jpeg"; | |
var strData = oScaledCanvas.toDataURL(strMime); | |
// check if browser actually supports jpeg by looking for the mime type in the data uri. | |
// if not, return false | |
if (strData.indexOf(strMime) != 5) { | |
return false; | |
} | |
if (bReturnImg) { | |
return makeImageObject(strData); | |
} else { | |
saveFile(strData.replace(strMime, strDownloadMime)); | |
} | |
return true; | |
}, | |
saveAsBMP : function(oCanvas, bReturnImg, iWidth, iHeight) { | |
if (!(bHasImageData && bHasBase64)) { | |
return false; | |
} | |
var oScaledCanvas = scaleCanvas(oCanvas, iWidth, iHeight); | |
var oData = readCanvasData(oScaledCanvas); | |
var strImgData = createBMP(oData); | |
if (bReturnImg) { | |
return makeImageObject(makeDataURI(strImgData, "image/bmp")); | |
} else { | |
saveFile(makeDataURI(strImgData, strDownloadMime)); | |
} | |
return true; | |
} | |
}; | |
})(); |
/** | |
* This code is released to the public domain by Jim Studt, 2007. | |
* He may keep some sort of up to date copy at http://www.federated.com/~jim/canvastext/ | |
* A partial support for accentuated letters as been added too. | |
*/ | |
var CanvasText = { | |
/** The letters definition. It is a list of letters, | |
* with their width, and the coordinates of points compositing them. | |
* The syntax for the points is : [x, y], null value means "pen up" | |
*/ | |
letters: { | |
'\n':{ width: -1, points: [] }, | |
' ': { width: 10, points: [] }, | |
'!': { width: 10, points: [[5,21],[5,7],null,[5,2],[4,1],[5,0],[6,1],[5,2]] }, | |
'"': { width: 16, points: [[4,21],[4,14],null,[12,21],[12,14]] }, | |
'#': { width: 21, points: [[11,25],[4,-7],null,[17,25],[10,-7],null,[4,12],[18,12],null,[3,6],[17,6]] }, | |
'$': { width: 20, points: [[8,25],[8,-4],null,[12,25],[12,-4],null,[17,18],[15,20],[12,21],[8,21],[5,20],[3,18],[3,16],[4,14],[5,13],[7,12],[13,10],[15,9],[16,8],[17,6],[17,3],[15,1],[12,0],[8,0],[5,1],[3,3]] }, | |
'%': { width: 24, points: [[21,21],[3,0],null,[8,21],[10,19],[10,17],[9,15],[7,14],[5,14],[3,16],[3,18],[4,20],[6,21],[8,21],null,[17,7],[15,6],[14,4],[14,2],[16,0],[18,0],[20,1],[21,3],[21,5],[19,7],[17,7]] }, | |
'&': { width: 26, points: [[23,12],[23,13],[22,14],[21,14],[20,13],[19,11],[17,6],[15,3],[13,1],[11,0],[7,0],[5,1],[4,2],[3,4],[3,6],[4,8],[5,9],[12,13],[13,14],[14,16],[14,18],[13,20],[11,21],[9,20],[8,18],[8,16],[9,13],[11,10],[16,3],[18,1],[20,0],[22,0],[23,1],[23,2]] }, | |
'\'':{ width: 10, points: [[5,19],[4,20],[5,21],[6,20],[6,18],[5,16],[4,15]] }, | |
'(': { width: 14, points: [[11,25],[9,23],[7,20],[5,16],[4,11],[4,7],[5,2],[7,-2],[9,-5],[11,-7]] }, | |
')': { width: 14, points: [[3,25],[5,23],[7,20],[9,16],[10,11],[10,7],[9,2],[7,-2],[5,-5],[3,-7]] }, | |
'*': { width: 16, points: [[8,21],[8,9],null,[3,18],[13,12],null,[13,18],[3,12]] }, | |
'+': { width: 26, points: [[13,18],[13,0],null,[4,9],[22,9]] }, | |
',': { width: 10, points: [[6,1],[5,0],[4,1],[5,2],[6,1],[6,-1],[5,-3],[4,-4]] }, | |
'-': { width: 26, points: [[4,9],[22,9]] }, | |
'.': { width: 10, points: [[5,2],[4,1],[5,0],[6,1],[5,2]] }, | |
'/': { width: 22, points: [[20,25],[2,-7]] }, | |
'0': { width: 20, points: [[9,21],[6,20],[4,17],[3,12],[3,9],[4,4],[6,1],[9,0],[11,0],[14,1],[16,4],[17,9],[17,12],[16,17],[14,20],[11,21],[9,21]] }, | |
'1': { width: 20, points: [[6,17],[8,18],[11,21],[11,0]] }, | |
'2': { width: 20, points: [[4,16],[4,17],[5,19],[6,20],[8,21],[12,21],[14,20],[15,19],[16,17],[16,15],[15,13],[13,10],[3,0],[17,0]] }, | |
'3': { width: 20, points: [[5,21],[16,21],[10,13],[13,13],[15,12],[16,11],[17,8],[17,6],[16,3],[14,1],[11,0],[8,0],[5,1],[4,2],[3,4]] }, | |
'4': { width: 20, points: [[13,21],[3,7],[18,7],null,[13,21],[13,0]] }, | |
'5': { width: 20, points: [[15,21],[5,21],[4,12],[5,13],[8,14],[11,14],[14,13],[16,11],[17,8],[17,6],[16,3],[14,1],[11,0],[8,0],[5,1],[4,2],[3,4]] }, | |
'6': { width: 20, points: [[16,18],[15,20],[12,21],[10,21],[7,20],[5,17],[4,12],[4,7],[5,3],[7,1],[10,0],[11,0],[14,1],[16,3],[17,6],[17,7],[16,10],[14,12],[11,13],[10,13],[7,12],[5,10],[4,7]] }, | |
'7': { width: 20, points: [[17,21],[7,0],null,[3,21],[17,21]] }, | |
'8': { width: 20, points: [[8,21],[5,20],[4,18],[4,16],[5,14],[7,13],[11,12],[14,11],[16,9],[17,7],[17,4],[16,2],[15,1],[12,0],[8,0],[5,1],[4,2],[3,4],[3,7],[4,9],[6,11],[9,12],[13,13],[15,14],[16,16],[16,18],[15,20],[12,21],[8,21]] }, | |
'9': { width: 20, points: [[16,14],[15,11],[13,9],[10,8],[9,8],[6,9],[4,11],[3,14],[3,15],[4,18],[6,20],[9,21],[10,21],[13,20],[15,18],[16,14],[16,9],[15,4],[13,1],[10,0],[8,0],[5,1],[4,3]] }, | |
':': { width: 10, points: [[5,14],[4,13],[5,12],[6,13],[5,14],null,[5,2],[4,1],[5,0],[6,1],[5,2]] }, | |
';': { width: 10, points: [[5,14],[4,13],[5,12],[6,13],[5,14],null,[6,1],[5,0],[4,1],[5,2],[6,1],[6,-1],[5,-3],[4,-4]] }, | |
'<': { width: 24, points: [[20,18],[4,9],[20,0]] }, | |
'=': { width: 26, points: [[4,12],[22,12],null,[4,6],[22,6]] }, | |
'>': { width: 24, points: [[4,18],[20,9],[4,0]] }, | |
'?': { width: 18, points: [[3,16],[3,17],[4,19],[5,20],[7,21],[11,21],[13,20],[14,19],[15,17],[15,15],[14,13],[13,12],[9,10],[9,7],null,[9,2],[8,1],[9,0],[10,1],[9,2]] }, | |
'@': { width: 27, points: [[18,13],[17,15],[15,16],[12,16],[10,15],[9,14],[8,11],[8,8],[9,6],[11,5],[14,5],[16,6],[17,8],null,[12,16],[10,14],[9,11],[9,8],[10,6],[11,5],null,[18,16],[17,8],[17,6],[19,5],[21,5],[23,7],[24,10],[24,12],[23,15],[22,17],[20,19],[18,20],[15,21],[12,21],[9,20],[7,19],[5,17],[4,15],[3,12],[3,9],[4,6],[5,4],[7,2],[9,1],[12,0],[15,0],[18,1],[20,2],[21,3],null,[19,16],[18,8],[18,6],[19,5]] }, | |
'A': { width: 18, points: [[9,21],[1,0],null,[9,21],[17,0],null,[4,7],[14,7]] }, | |
'B': { width: 21, points: [[4,21],[4,0],null,[4,21],[13,21],[16,20],[17,19],[18,17],[18,15],[17,13],[16,12],[13,11],null,[4,11],[13,11],[16,10],[17,9],[18,7],[18,4],[17,2],[16,1],[13,0],[4,0]] }, | |
'C': { width: 21, points: [[18,16],[17,18],[15,20],[13,21],[9,21],[7,20],[5,18],[4,16],[3,13],[3,8],[4,5],[5,3],[7,1],[9,0],[13,0],[15,1],[17,3],[18,5]] }, | |
'D': { width: 21, points: [[4,21],[4,0],null,[4,21],[11,21],[14,20],[16,18],[17,16],[18,13],[18,8],[17,5],[16,3],[14,1],[11,0],[4,0]] }, | |
'E': { width: 19, points: [[4,21],[4,0],null,[4,21],[17,21],null,[4,11],[12,11],null,[4,0],[17,0]] }, | |
'F': { width: 18, points: [[4,21],[4,0],null,[4,21],[17,21],null,[4,11],[12,11]] }, | |
'G': { width: 21, points: [[18,16],[17,18],[15,20],[13,21],[9,21],[7,20],[5,18],[4,16],[3,13],[3,8],[4,5],[5,3],[7,1],[9,0],[13,0],[15,1],[17,3],[18,5],[18,8],null,[13,8],[18,8]] }, | |
'H': { width: 22, points: [[4,21],[4,0],null,[18,21],[18,0],null,[4,11],[18,11]] }, | |
'I': { width: 8, points: [[4,21],[4,0]] }, | |
'J': { width: 16, points: [[12,21],[12,5],[11,2],[10,1],[8,0],[6,0],[4,1],[3,2],[2,5],[2,7]] }, | |
'K': { width: 21, points: [[4,21],[4,0],null,[18,21],[4,7],null,[9,12],[18,0]] }, | |
'L': { width: 17, points: [[4,21],[4,0],null,[4,0],[16,0]] }, | |
'M': { width: 24, points: [[4,21],[4,0],null,[4,21],[12,0],null,[20,21],[12,0],null,[20,21],[20,0]] }, | |
'N': { width: 22, points: [[4,21],[4,0],null,[4,21],[18,0],null,[18,21],[18,0]] }, | |
'O': { width: 22, points: [[9,21],[7,20],[5,18],[4,16],[3,13],[3,8],[4,5],[5,3],[7,1],[9,0],[13,0],[15,1],[17,3],[18,5],[19,8],[19,13],[18,16],[17,18],[15,20],[13,21],[9,21]] }, | |
'P': { width: 21, points: [[4,21],[4,0],null,[4,21],[13,21],[16,20],[17,19],[18,17],[18,14],[17,12],[16,11],[13,10],[4,10]] }, | |
'Q': { width: 22, points: [[9,21],[7,20],[5,18],[4,16],[3,13],[3,8],[4,5],[5,3],[7,1],[9,0],[13,0],[15,1],[17,3],[18,5],[19,8],[19,13],[18,16],[17,18],[15,20],[13,21],[9,21],null,[12,4],[18,-2]] }, | |
'R': { width: 21, points: [[4,21],[4,0],null,[4,21],[13,21],[16,20],[17,19],[18,17],[18,15],[17,13],[16,12],[13,11],[4,11],null,[11,11],[18,0]] }, | |
'S': { width: 20, points: [[17,18],[15,20],[12,21],[8,21],[5,20],[3,18],[3,16],[4,14],[5,13],[7,12],[13,10],[15,9],[16,8],[17,6],[17,3],[15,1],[12,0],[8,0],[5,1],[3,3]] }, | |
'T': { width: 16, points: [[8,21],[8,0],null,[1,21],[15,21]] }, | |
'U': { width: 22, points: [[4,21],[4,6],[5,3],[7,1],[10,0],[12,0],[15,1],[17,3],[18,6],[18,21]] }, | |
'V': { width: 18, points: [[1,21],[9,0],null,[17,21],[9,0]] }, | |
'W': { width: 24, points: [[2,21],[7,0],null,[12,21],[7,0],null,[12,21],[17,0],null,[22,21],[17,0]] }, | |
'X': { width: 20, points: [[3,21],[17,0],null,[17,21],[3,0]] }, | |
'Y': { width: 18, points: [[1,21],[9,11],[9,0],null,[17,21],[9,11]] }, | |
'Z': { width: 20, points: [[17,21],[3,0],null,[3,21],[17,21],null,[3,0],[17,0]] }, | |
'[': { width: 14, points: [[4,25],[4,-7],null,[5,25],[5,-7],null,[4,25],[11,25],null,[4,-7],[11,-7]] }, | |
'\\':{ width: 14, points: [[0,21],[14,-3]] }, | |
']': { width: 14, points: [[9,25],[9,-7],null,[10,25],[10,-7],null,[3,25],[10,25],null,[3,-7],[10,-7]] }, | |
'^': { width: 14, points: [[3,10],[8,18],[13,10]] }, | |
'_': { width: 16, points: [[0,-2],[16,-2]] }, | |
'`': { width: 10, points: [[6,21],[5,20],[4,18],[4,16],[5,15],[6,16],[5,17]] }, | |
'a': { width: 19, points: [[15,14],[15,0],null,[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]] }, | |
'b': { width: 19, points: [[4,21],[4,0],null,[4,11],[6,13],[8,14],[11,14],[13,13],[15,11],[16,8],[16,6],[15,3],[13,1],[11,0],[8,0],[6,1],[4,3]] }, | |
'c': { width: 18, points: [[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]] }, | |
'd': { width: 19, points: [[15,21],[15,0],null,[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]] }, | |
'e': { width: 18, points: [[3,8],[15,8],[15,10],[14,12],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]] }, | |
'f': { width: 12, points: [[10,21],[8,21],[6,20],[5,17],[5,0],null,[2,14],[9,14]] }, | |
'g': { width: 19, points: [[15,14],[15,-2],[14,-5],[13,-6],[11,-7],[8,-7],[6,-6],null,[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]] }, | |
'h': { width: 19, points: [[4,21],[4,0],null,[4,10],[7,13],[9,14],[12,14],[14,13],[15,10],[15,0]] }, | |
'i': { width: 8, points: [[3,21],[4,20],[5,21],[4,22],[3,21],null,[4,14],[4,0]] }, | |
'j': { width: 10, points: [[5,21],[6,20],[7,21],[6,22],[5,21],null,[6,14],[6,-3],[5,-6],[3,-7],[1,-7]] }, | |
'k': { width: 17, points: [[4,21],[4,0],null,[14,14],[4,4],null,[8,8],[15,0]] }, | |
'l': { width: 8, points: [[4,21],[4,0]] }, | |
'm': { width: 30, points: [[4,14],[4,0],null,[4,10],[7,13],[9,14],[12,14],[14,13],[15,10],[15,0],null,[15,10],[18,13],[20,14],[23,14],[25,13],[26,10],[26,0]] }, | |
'n': { width: 19, points: [[4,14],[4,0],null,[4,10],[7,13],[9,14],[12,14],[14,13],[15,10],[15,0]] }, | |
'o': { width: 19, points: [[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3],[16,6],[16,8],[15,11],[13,13],[11,14],[8,14]] }, | |
'p': { width: 19, points: [[4,14],[4,-7],null,[4,11],[6,13],[8,14],[11,14],[13,13],[15,11],[16,8],[16,6],[15,3],[13,1],[11,0],[8,0],[6,1],[4,3]] }, | |
'q': { width: 19, points: [[15,14],[15,-7],null,[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]] }, | |
'r': { width: 13, points: [[4,14],[4,0],null,[4,8],[5,11],[7,13],[9,14],[12,14]] }, | |
's': { width: 17, points: [[14,11],[13,13],[10,14],[7,14],[4,13],[3,11],[4,9],[6,8],[11,7],[13,6],[14,4],[14,3],[13,1],[10,0],[7,0],[4,1],[3,3]] }, | |
't': { width: 12, points: [[5,21],[5,4],[6,1],[8,0],[10,0],null,[2,14],[9,14]] }, | |
'u': { width: 19, points: [[4,14],[4,4],[5,1],[7,0],[10,0],[12,1],[15,4],null,[15,14],[15,0]] }, | |
'v': { width: 16, points: [[2,14],[8,0],null,[14,14],[8,0]] }, | |
'w': { width: 22, points: [[3,14],[7,0],null,[11,14],[7,0],null,[11,14],[15,0],null,[19,14],[15,0]] }, | |
'x': { width: 17, points: [[3,14],[14,0],null,[14,14],[3,0]] }, | |
'y': { width: 16, points: [[2,14],[8,0],null,[14,14],[8,0],[6,-4],[4,-6],[2,-7],[1,-7]] }, | |
'z': { width: 17, points: [[14,14],[3,0],null,[3,14],[14,14],null,[3,0],[14,0]] }, | |
'{': { width: 14, points: [[9,25],[7,24],[6,23],[5,21],[5,19],[6,17],[7,16],[8,14],[8,12],[6,10],null,[7,24],[6,22],[6,20],[7,18],[8,17],[9,15],[9,13],[8,11],[4,9],[8,7],[9,5],[9,3],[8,1],[7,0],[6,-2],[6,-4],[7,-6],null,[6,8],[8,6],[8,4],[7,2],[6,1],[5,-1],[5,-3],[6,-5],[7,-6],[9,-7]] }, | |
'|': { width: 8, points: [[4,25],[4,-7]] }, | |
'}': { width: 14, points: [[5,25],[7,24],[8,23],[9,21],[9,19],[8,17],[7,16],[6,14],[6,12],[8,10],null,[7,24],[8,22],[8,20],[7,18],[6,17],[5,15],[5,13],[6,11],[10,9],[6,7],[5,5],[5,3],[6,1],[7,0],[8,-2],[8,-4],[7,-6],null,[8,8],[6,6],[6,4],[7,2],[8,1],[9,-1],[9,-3],[8,-5],[7,-6],[5,-7]] }, | |
'~': { width: 24, points: [[3,6],[3,8],[4,11],[6,12],[8,12],[10,11],[14,8],[16,7],[18,7],[20,8],[21,10],null,[3,8],[4,10],[6,11],[8,11],[10,10],[14,7],[16,6],[18,6],[20,7],[21,10],[21,12]] }, | |
}, | |
specialchars: { | |
'pi': { width: 19, points: [[6,14],[6,0],null,[14,14],[14,0],null,[2,13],[6,16],[13,13],[17,16]] } | |
}, | |
/** Diacritics, used to draw accentuated letters */ | |
diacritics: { | |
'`': { entity: 'grave', points: [[7,22],[12,19]] }, | |
'^': { entity: 'circ', points: [[5.5,19],[9.5,23],[12.5,19]] }, | |
'~': { entity: 'tilde', points: [[4,18],[7,22],[10,18],[13,22]] } | |
}, | |
/** The default font styling */ | |
style: { | |
size: 8, // font height in pixels | |
font: null, // not yet implemented | |
color: '#000000', // | |
weight: 1, // float, 1 for 'normal' | |
halign: 'l', // l: left, r: right, c: center | |
valign: 'b', // t: top, m: middle, b: bottom | |
adjustAlign: false, // modifies the alignments if the angle is different from 0 to make the spin point always at the good position | |
angle: 0, // in radians, anticlockwise | |
tracking: 1, // space between the letters, float, 1 for 'normal' | |
boundingBoxColor: '#ff0000', //null // color of the bounding box (null to hide), can be used for debug and font drawing | |
originPointColor: '#000000' //null // color of the bounding box (null to hide), can be used for debug and font drawing | |
}, | |
debug: false, | |
_bufferLexemes: {}, | |
/** Get the letter data corresponding to a char | |
* @param {String} ch - The char | |
*/ | |
letter: function(ch) { | |
return CanvasText.letters[ch]; | |
}, | |
parseLexemes: function(str) { | |
if (CanvasText._bufferLexemes[str]) | |
return CanvasText._bufferLexemes[str]; | |
var i, c, matches = str.match(/&[A-Za-z]{2,5};|\s|./g); | |
var result = [], chars = []; | |
for (i = 0; i < matches.length; i++) { | |
c = matches[i]; | |
if (c.length == 1) | |
chars.push(c); | |
else { | |
var entity = c.substring(1, c.length-1); | |
if (CanvasText.specialchars[entity]) | |
chars.push(entity); | |
else | |
chars = chars.concat(c.toArray()); | |
} | |
} | |
for (i = 0; i < chars.length; i++) { | |
c = chars[i]; | |
if (c = CanvasText.letters[c] || CanvasText.specialchars[c]) | |
result.push(c); | |
} | |
return CanvasText._bufferLexemes[str] = result.compact(); | |
}, | |
/** Get the font ascent for a given style | |
* @param {Object} style - The reference style | |
*/ | |
ascent: function(style) { | |
style = style || {}; | |
return (style.size || CanvasText.style.size); | |
}, | |
/** Get the font descent for a given style | |
* @param {Object} style - The reference style | |
* */ | |
descent: function(style) { | |
style = style || {}; | |
return 7.0*(style.size || CanvasText.style.size)/25.0; | |
}, | |
/** Measure the text horizontal size | |
* @param {String} str - The text | |
* @param {Object} style - Text style | |
* */ | |
measure: function(str, style) { | |
if (!str) return; | |
style = style || {}; | |
var i, width, lexemes = CanvasText.parseLexemes(str), | |
total = 0; | |
for (i = lexemes.length-1; i > -1; --i) { | |
c = lexemes[i]; | |
width = (c.diacritic) ? CanvasText.letter(c.letter).width : c.width; | |
total += width * (style.tracking || CanvasText.style.tracking) * (style.size || CanvasText.style.size) / 25.0; | |
} | |
return total; | |
}, | |
getDimensions: function(str, style) { | |
var width = CanvasText.measure(str, style), | |
height = style.size || CanvasText.style.size, | |
angle = style.angle || CanvasText.style.angle; | |
if (style.angle == 0) return {width: width, height: height}; | |
return { | |
width: Math.abs(Math.cos(angle) * width) + Math.abs(Math.sin(angle) * height), | |
height: Math.abs(Math.sin(angle) * width) + Math.abs(Math.cos(angle) * height) | |
} | |
}, | |
getBestAlign: function(angle, style) { | |
angle += CanvasText.getAngleFromAlign(style.halign, style.valign); | |
var a = {h:'c', v:'m'}; | |
if (Math.round(Math.cos(angle)*1000)/1000 != 0) | |
a.h = (Math.cos(angle) > 0 ? 'r' : 'l'); | |
if (Math.round(Math.sin(angle)*1000)/1000 != 0) | |
a.v = (Math.sin(angle) > 0 ? 't' : 'b'); | |
return a; | |
}, | |
getAngleFromAlign: function(halign, valign) { | |
var pi = Math.PI, table = { | |
'rm': 0, | |
'rt': pi/4, | |
'ct': pi/2, | |
'lt': 3*(pi/4), | |
'lm': pi, | |
'lb': -3*(pi/4), | |
'cb': -pi/2, | |
'rb': -pi/4, | |
'cm': 0 | |
} | |
return table[halign+valign]; | |
}, | |
/** Draws serie of points at given coordinates | |
* @param {Canvas context} ctx - The canvas context | |
* @param {Array} points - The points to draw | |
* @param {Number} x - The X coordinate | |
* @param {Number} y - The Y coordinate | |
* @param {Number} mag - The scale | |
*/ | |
drawPoints: function (ctx, points, x, y, mag, offset) { | |
var i, a, penUp = true, needStroke = 0; | |
offset = offset || {x:0, y:0}; | |
ctx.beginPath(); | |
for (i = 0; i < points.length; i++) { | |
a = points[i]; | |
if (!a) { | |
penUp = true; | |
continue; | |
} | |
if (penUp) { | |
ctx.moveTo(x + a[0]*mag + offset.x, y - a[1]*mag + offset.y); | |
penUp = false; | |
} | |
else { | |
ctx.lineTo(x + a[0]*mag + offset.x, y - a[1]*mag + offset.y); | |
} | |
} | |
ctx.stroke(); | |
}, | |
/** Draws a text at given coordinates and with a given style | |
* @param {Canvas context} ctx - The canvas context | |
* @param {String} str - The text to draw | |
* @param {Number} xOrig - The X coordinate | |
* @param {Number} yOrig - The Y coordinate | |
* @param {Object} style - The font style | |
*/ | |
draw: function(ctx, str, xOrig, yOrig, style) { | |
if (!str) return; | |
style = style || CanvasText.style; | |
style.halign = style.halign || CanvasText.style.halign; | |
style.valign = style.valign || CanvasText.style.valign; | |
style.angle = style.angle || CanvasText.style.angle; | |
style.size = style.size || CanvasText.style.size; | |
style.adjustAlign = style.adjustAlign || CanvasText.style.adjustAlign; | |
var i, c, total = 0, | |
mag = style.size / 25.0, | |
x = 0, y = 0, | |
lexemes = CanvasText.parseLexemes(str); | |
var offset = {x:0, y:0}, | |
measure = CanvasText.measure(str, style), | |
align; | |
if (style.adjustAlign) { | |
align = CanvasText.getBestAlign(style.angle, style); | |
style.halign = align.h; | |
style.valign = align.v; | |
} | |
switch (style.halign) { | |
case 'l': break; | |
case 'c': offset.x = -measure / 2; break; | |
case 'r': offset.x = -measure; break; | |
} | |
switch (style.valign) { | |
case 'b': break; | |
case 'm': offset.y = style.size / 2; break; | |
case 't': offset.y = style.size; break; | |
} | |
ctx.save(); | |
ctx.translate(xOrig, yOrig); | |
ctx.rotate(style.angle); | |
ctx.lineCap = "round"; | |
ctx.lineWidth = 2.0 * mag * (style.weight || CanvasText.style.weight); | |
ctx.strokeStyle = style.color || CanvasText.style.color; | |
for (i = 0; i < lexemes.length; i++) { | |
c = lexemes[i]; | |
if (c.width == -1) { | |
x = 0; | |
y = style.size * 1.4; | |
continue; | |
} | |
var points = c.points, | |
width = c.width; | |
if (c.diacritic) { | |
var dia = CanvasText.diacritics[c.diacritic]; | |
var char = CanvasText.letter(c.letter); | |
CanvasText.drawPoints(ctx, dia.points, x, y - (c.letter.toUpperCase() == c.letter ? 3 : 0), mag, offset); | |
points = char.points; | |
width = char.width; | |
} | |
CanvasText.drawPoints(ctx, points, x, y, mag, offset); | |
if (CanvasText.debug) { | |
ctx.save(); | |
ctx.lineJoin = "miter"; | |
ctx.lineWidth = 0.5; | |
ctx.strokeStyle = (style.boundingBoxColor || CanvasText.style.boundingBoxColor); | |
ctx.strokeRect(x+offset.x, y+offset.y, width*mag, -style.size); | |
ctx.fillStyle = (style.originPointColor || CanvasText.style.originPointColor); | |
ctx.beginPath(); | |
ctx.arc(0, 0, 1.5, 0, Math.PI*2, true); | |
ctx.fill(); | |
ctx.restore(); | |
} | |
x += width*mag*(style.tracking || CanvasText.style.tracking); | |
} | |
ctx.restore(); | |
return total; | |
}, | |
/** Enables the text function for a Canvas context | |
* @param {Canvas context} ctx - The canvas context | |
*/ | |
enable: function(ctx) { | |
ctx.drawText = function(text, x, y, style) { return CanvasText.draw(ctx, text, x, y, style); }; | |
ctx.measureText = function(text, style) { return CanvasText.measure(text, style); }; | |
ctx.getTextBounds = function(text, style) { return CanvasText.getDimensions(text, style); }; | |
ctx.fontAscent = function(style) { return CanvasText.ascent(style); }; | |
ctx.fontDescent = function(style) { return CanvasText.descent(style); }; | |
} | |
}; |
// 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 are not implemented. | |
// * 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. | |
// * 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))); | |
}; | |
} | |
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) { | |
// 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}' + | |
'g_vml_\\:*{behavior:url(#default#VML)}' + | |
'g_o_\\:*{behavior:url(#default#VML)}'; | |
} | |
// 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; | |
// 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.style.width = el.attributes.width.nodeValue + 'px'; | |
el.getContext().clearRect(); | |
break; | |
case 'height': | |
el.style.height = el.attributes.height.nodeValue + 'px'; | |
el.getContext().clearRect(); | |
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 dec2hex = []; | |
for (var i = 0; i < 16; i++) { | |
for (var j = 0; j < 16; j++) { | |
dec2hex[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.arcScaleX_ = o1.arcScaleX_; | |
o2.arcScaleY_ = o1.arcScaleY_; | |
o2.lineScale_ = o1.lineScale_; | |
} | |
function processStyle(styleString) { | |
var str, alpha = 1; | |
styleString = String(styleString); | |
if (styleString.substring(0, 3) == 'rgb') { | |
var start = styleString.indexOf('(', 3); | |
var end = styleString.indexOf(')', start + 1); | |
var guts = styleString.substring(start + 1, end).split(','); | |
str = '#'; | |
for (var i = 0; i < 3; i++) { | |
str += dec2hex[Number(guts[i])]; | |
} | |
if (guts.length == 4 && styleString.substr(3, 1) == 'a') { | |
alpha = guts[3]; | |
} | |
} else { | |
str = styleString; | |
} | |
return {color: str, alpha: alpha}; | |
} | |
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.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() { | |
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]) { | |
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 lineStr = []; | |
var lineOpen = false; | |
var a = processStyle(aFill ? this.fillStyle : this.strokeStyle); | |
var color = a.color; | |
var opacity = a.alpha * this.globalAlpha; | |
var W = 10; | |
var H = 10; | |
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; | |
var min = {x: null, y: null}; | |
var max = {x: null, y: null}; | |
for (var i = 0; i < this.currentPath_.length; i++) { | |
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) { | |
var lineWidth = this.lineScale_ * this.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="', this.lineJoin, '"', | |
' miterlimit="', this.miterLimit, '"', | |
' endcap="', processLineCap(this.lineCap), '"', | |
' weight="', lineWidth, 'px"', | |
' color="', color, '" />' | |
); | |
} else if (typeof this.fillStyle == 'object') { | |
var fillStyle = this.fillStyle; | |
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_ / this.arcScaleX_; | |
var y0 = fillStyle.y0_ / this.arcScaleY_; | |
var x1 = fillStyle.x1_ / this.arcScaleX_; | |
var y1 = fillStyle.y1_ / this.arcScaleY_; | |
var p0 = this.getCoords_(x0, y0); | |
var p1 = this.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 = this.getCoords_(fillStyle.x0_, fillStyle.y0_); | |
var width = max.x - min.x; | |
var height = max.y - min.y; | |
focus = { | |
x: (p0.x - min.x) / width, | |
y: (p0.y - min.y) / height | |
}; | |
width /= this.arcScaleX_ * Z; | |
height /= this.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 * this.globalAlpha; | |
var opacity2 = stops[length - 1].alpha * this.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 { | |
lineStr.push('<g_vml_:fill color="', color, '" opacity="', opacity, | |
'" />'); | |
} | |
lineStr.push('</g_vml_:shape>'); | |
this.element_.insertAdjacentHTML('beforeEnd', lineStr.join('')); | |
}; | |
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() { | |
copyState(this.aStack_.pop(), this); | |
this.m_ = this.mStack_.pop(); | |
}; | |
contextPrototype.translate = function(aX, aY) { | |
var m1 = [ | |
[1, 0, 0], | |
[0, 1, 0], | |
[aX, aY, 1] | |
]; | |
this.m_ = matrixMultiply(m1, this.m_); | |
}; | |
contextPrototype.rotate = function(aRot) { | |
var c = mc(aRot); | |
var s = ms(aRot); | |
var m1 = [ | |
[c, s, 0], | |
[-s, c, 0], | |
[0, 0, 1] | |
]; | |
this.m_ = matrixMultiply(m1, this.m_); | |
}; | |
contextPrototype.scale = function(aX, aY) { | |
this.arcScaleX_ *= aX; | |
this.arcScaleY_ *= aY; | |
var m1 = [ | |
[aX, 0, 0], | |
[0, aY, 0], | |
[0, 0, 1] | |
]; | |
var m = this.m_ = matrixMultiply(m1, this.m_); | |
// 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]; | |
this.lineScale_ = sqrt(abs(det)); | |
}; | |
/******** STUBS ********/ | |
contextPrototype.clip = function() { | |
// TODO: Implement | |
}; | |
contextPrototype.arcTo = function() { | |
// TODO: Implement | |
}; | |
contextPrototype.createPattern = function() { | |
return new CanvasPattern_; | |
}; | |
// 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_() {} | |
// set up externs | |
G_vmlCanvasManager = G_vmlCanvasManager_; | |
CanvasRenderingContext2D = CanvasRenderingContext2D_; | |
CanvasGradient = CanvasGradient_; | |
CanvasPattern = CanvasPattern_; | |
})(); | |
} // if | |
/* Prototype JavaScript framework, version 1.6.0.2 | |
* (c) 2005-2008 Sam Stephenson | |
* | |
* Prototype is freely distributable under the terms of an MIT-style license. | |
* For details, see the Prototype web site: http://www.prototypejs.org/ | |
* | |
*--------------------------------------------------------------------------*/ | |
var Prototype = { | |
Version: '1.6.0.2', | |
Browser: { | |
IE: !!(window.attachEvent && !window.opera), | |
Opera: !!window.opera, | |
WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1, | |
Gecko: navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('KHTML') == -1, | |
MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/) | |
}, | |
BrowserFeatures: { | |
XPath: !!document.evaluate, | |
ElementExtensions: !!window.HTMLElement, | |
SpecificElementExtensions: | |
document.createElement('div').__proto__ && | |
document.createElement('div').__proto__ !== | |
document.createElement('form').__proto__ | |
}, | |
ScriptFragment: '<script[^>]*>([\\S\\s]*?)<\/script>', | |
JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/, | |
emptyFunction: function() { }, | |
K: function(x) { return x } | |
}; | |
if (Prototype.Browser.MobileSafari) | |
Prototype.BrowserFeatures.SpecificElementExtensions = false; | |
/* Based on Alex Arnell's inheritance implementation. */ | |
var Class = { | |
create: function() { | |
var parent = null, properties = $A(arguments); | |
if (Object.isFunction(properties[0])) | |
parent = properties.shift(); | |
function klass() { | |
this.initialize.apply(this, arguments); | |
} | |
Object.extend(klass, Class.Methods); | |
klass.superclass = parent; | |
klass.subclasses = []; | |
if (parent) { | |
var subclass = function() { }; | |
subclass.prototype = parent.prototype; | |
klass.prototype = new subclass; | |
parent.subclasses.push(klass); | |
} | |
for (var i = 0; i < properties.length; i++) | |
klass.addMethods(properties[i]); | |
if (!klass.prototype.initialize) | |
klass.prototype.initialize = Prototype.emptyFunction; | |
klass.prototype.constructor = klass; | |
return klass; | |
} | |
}; | |
Class.Methods = { | |
addMethods: function(source) { | |
var ancestor = this.superclass && this.superclass.prototype; | |
var properties = Object.keys(source); | |
if (!Object.keys({ toString: true }).length) | |
properties.push("toString", "valueOf"); | |
for (var i = 0, length = properties.length; i < length; i++) { | |
var property = properties[i], value = source[property]; | |
if (ancestor && Object.isFunction(value) && | |
value.argumentNames().first() == "$super") { | |
var method = value, value = Object.extend((function(m) { | |
return function() { return ancestor[m].apply(this, arguments) }; | |
})(property).wrap(method), { | |
valueOf: function() { return method }, | |
toString: function() { return method.toString() } | |
}); | |
} | |
this.prototype[property] = value; | |
} | |
return this; | |
} | |
}; | |
var Abstract = { }; | |
Object.extend = function(destination, source) { | |
for (var property in source) | |
destination[property] = source[property]; | |
return destination; | |
}; | |
Object.extend(Object, { | |
inspect: function(object) { | |
try { | |
if (Object.isUndefined(object)) return 'undefined'; | |
if (object === null) return 'null'; | |
return object.inspect ? object.inspect() : String(object); | |
} catch (e) { | |
if (e instanceof RangeError) return '...'; | |
throw e; | |
} | |
}, | |
toJSON: function(object) { | |
var type = typeof object; | |
switch (type) { | |
case 'undefined': | |
case 'function': | |
case 'unknown': return; | |
case 'boolean': return object.toString(); | |
} | |
if (object === null) return 'null'; | |
if (object.toJSON) return object.toJSON(); | |
if (Object.isElement(object)) return; | |
var results = []; | |
for (var property in object) { | |
var value = Object.toJSON(object[property]); | |
if (!Object.isUndefined(value)) | |
results.push(property.toJSON() + ': ' + value); | |
} | |
return '{' + results.join(', ') + '}'; | |
}, | |
toQueryString: function(object) { | |
return $H(object).toQueryString(); | |
}, | |
toHTML: function(object) { | |
return object && object.toHTML ? object.toHTML() : String.interpret(object); | |
}, | |
keys: function(object) { | |
var keys = []; | |
for (var property in object) | |
keys.push(property); | |
return keys; | |
}, | |
values: function(object) { | |
var values = []; | |
for (var property in object) | |
values.push(object[property]); | |
return values; | |
}, | |
clone: function(object) { | |
return Object.extend({ }, object); | |
}, | |
isElement: function(object) { | |
return object && object.nodeType == 1; | |
}, | |
isArray: function(object) { | |
return object != null && typeof object == "object" && | |
'splice' in object && 'join' in object; | |
}, | |
isHash: function(object) { | |
return object instanceof Hash; | |
}, | |
isFunction: function(object) { | |
return typeof object == "function"; | |
}, | |
isString: function(object) { | |
return typeof object == "string"; | |
}, | |
isNumber: function(object) { | |
return typeof object == "number"; | |
}, | |
isUndefined: function(object) { | |
return typeof object == "undefined"; | |
} | |
}); | |
Object.extend(Function.prototype, { | |
argumentNames: function() { | |
var names = this.toString().match(/^[\s\(]*function[^(]*\((.*?)\)/)[1].split(",").invoke("strip"); | |
return names.length == 1 && !names[0] ? [] : names; | |
}, | |
bind: function() { | |
if (arguments.length < 2 && Object.isUndefined(arguments[0])) return this; | |
var __method = this, args = $A(arguments), object = args.shift(); | |
return function() { | |
return __method.apply(object, args.concat($A(arguments))); | |
} | |
}, | |
bindAsEventListener: function() { | |
var __method = this, args = $A(arguments), object = args.shift(); | |
return function(event) { | |
return __method.apply(object, [event || window.event].concat(args)); | |
} | |
}, | |
curry: function() { | |
if (!arguments.length) return this; | |
var __method = this, args = $A(arguments); | |
return function() { | |
return __method.apply(this, args.concat($A(arguments))); | |
} | |
}, | |
delay: function() { | |
var __method = this, args = $A(arguments), timeout = args.shift() * 1000; | |
return window.setTimeout(function() { | |
return __method.apply(__method, args); | |
}, timeout); | |
}, | |
wrap: function(wrapper) { | |
var __method = this; | |
return function() { | |
return wrapper.apply(this, [__method.bind(this)].concat($A(arguments))); | |
} | |
}, | |
methodize: function() { | |
if (this._methodized) return this._methodized; | |
var __method = this; | |
return this._methodized = function() { | |
return __method.apply(null, [this].concat($A(arguments))); | |
}; | |
} | |
}); | |
Function.prototype.defer = Function.prototype.delay.curry(0.01); | |
Date.prototype.toJSON = function() { | |
return '"' + this.getUTCFullYear() + '-' + | |
(this.getUTCMonth() + 1).toPaddedString(2) + '-' + | |
this.getUTCDate().toPaddedString(2) + 'T' + | |
this.getUTCHours().toPaddedString(2) + ':' + | |
this.getUTCMinutes().toPaddedString(2) + ':' + | |
this.getUTCSeconds().toPaddedString(2) + 'Z"'; | |
}; | |
var Try = { | |
these: function() { | |
var returnValue; | |
for (var i = 0, length = arguments.length; i < length; i++) { | |
var lambda = arguments[i]; | |
try { | |
returnValue = lambda(); | |
break; | |
} catch (e) { } | |
} | |
return returnValue; | |
} | |
}; | |
RegExp.prototype.match = RegExp.prototype.test; | |
RegExp.escape = function(str) { | |
return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1'); | |
}; | |
/*--------------------------------------------------------------------------*/ | |
var PeriodicalExecuter = Class.create({ | |
initialize: function(callback, frequency) { | |
this.callback = callback; | |
this.frequency = frequency; | |
this.currentlyExecuting = false; | |
this.registerCallback(); | |
}, | |
registerCallback: function() { | |
this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); | |
}, | |
execute: function() { | |
this.callback(this); | |
}, | |
stop: function() { | |
if (!this.timer) return; | |
clearInterval(this.timer); | |
this.timer = null; | |
}, | |
onTimerEvent: function() { | |
if (!this.currentlyExecuting) { | |
try { | |
this.currentlyExecuting = true; | |
this.execute(); | |
} finally { | |
this.currentlyExecuting = false; | |
} | |
} | |
} | |
}); | |
Object.extend(String, { | |
interpret: function(value) { | |
return value == null ? '' : String(value); | |
}, | |
specialChar: { | |
'\b': '\\b', | |
'\t': '\\t', | |
'\n': '\\n', | |
'\f': '\\f', | |
'\r': '\\r', | |
'\\': '\\\\' | |
} | |
}); | |
Object.extend(String.prototype, { | |
gsub: function(pattern, replacement) { | |
var result = '', source = this, match; | |
replacement = arguments.callee.prepareReplacement(replacement); | |
while (source.length > 0) { | |
if (match = source.match(pattern)) { | |
result += source.slice(0, match.index); | |
result += String.interpret(replacement(match)); | |
source = source.slice(match.index + match[0].length); | |
} else { | |
result += source, source = ''; | |
} | |
} | |
return result; | |
}, | |
sub: function(pattern, replacement, count) { | |
replacement = this.gsub.prepareReplacement(replacement); | |
count = Object.isUndefined(count) ? 1 : count; | |
return this.gsub(pattern, function(match) { | |
if (--count < 0) return match[0]; | |
return replacement(match); | |
}); | |
}, | |
scan: function(pattern, iterator) { | |
this.gsub(pattern, iterator); | |
return String(this); | |
}, | |
truncate: function(length, truncation) { | |
length = length || 30; | |
truncation = Object.isUndefined(truncation) ? '...' : truncation; | |
return this.length > length ? | |
this.slice(0, length - truncation.length) + truncation : String(this); | |
}, | |
strip: function() { | |
return this.replace(/^\s+/, '').replace(/\s+$/, ''); | |
}, | |
stripTags: function() { | |
return this.replace(/<\/?[^>]+>/gi, ''); | |
}, | |
stripScripts: function() { | |
return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), ''); | |
}, | |
extractScripts: function() { | |
var matchAll = new RegExp(Prototype.ScriptFragment, 'img'); | |
var matchOne = new RegExp(Prototype.ScriptFragment, 'im'); | |
return (this.match(matchAll) || []).map(function(scriptTag) { | |
return (scriptTag.match(matchOne) || ['', ''])[1]; | |
}); | |
}, | |
evalScripts: function() { | |
return this.extractScripts().map(function(script) { return eval(script) }); | |
}, | |
escapeHTML: function() { | |
var self = arguments.callee; | |
self.text.data = this; | |
return self.div.innerHTML; | |
}, | |
unescapeHTML: function() { | |
var div = new Element('div'); | |
div.innerHTML = this.stripTags(); | |
return div.childNodes[0] ? (div.childNodes.length > 1 ? | |
$A(div.childNodes).inject('', function(memo, node) { return memo+node.nodeValue }) : | |
div.childNodes[0].nodeValue) : ''; | |
}, | |
toQueryParams: function(separator) { | |
var match = this.strip().match(/([^?#]*)(#.*)?$/); | |
if (!match) return { }; | |
return match[1].split(separator || '&').inject({ }, function(hash, pair) { | |
if ((pair = pair.split('='))[0]) { | |
var key = decodeURIComponent(pair.shift()); | |
var value = pair.length > 1 ? pair.join('=') : pair[0]; | |
if (value != undefined) value = decodeURIComponent(value); | |
if (key in hash) { | |
if (!Object.isArray(hash[key])) hash[key] = [hash[key]]; | |
hash[key].push(value); | |
} | |
else hash[key] = value; | |
} | |
return hash; | |
}); | |
}, | |
toArray: function() { | |
return this.split(''); | |
}, | |
succ: function() { | |
return this.slice(0, this.length - 1) + | |
String.fromCharCode(this.charCodeAt(this.length - 1) + 1); | |
}, | |
times: function(count) { | |
return count < 1 ? '' : new Array(count + 1).join(this); | |
}, | |
camelize: function() { | |
var parts = this.split('-'), len = parts.length; | |
if (len == 1) return parts[0]; | |
var camelized = this.charAt(0) == '-' | |
? parts[0].charAt(0).toUpperCase() + parts[0].substring(1) | |
: parts[0]; | |
for (var i = 1; i < len; i++) | |
camelized += parts[i].charAt(0).toUpperCase() + parts[i].substring(1); | |
return camelized; | |
}, | |
capitalize: function() { | |
return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase(); | |
}, | |
underscore: function() { | |
return this.gsub(/::/, '/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{1}_#{2}').gsub(/-/,'_').toLowerCase(); | |
}, | |
dasherize: function() { | |
return this.gsub(/_/,'-'); | |
}, | |
inspect: function(useDoubleQuotes) { | |
var escapedString = this.gsub(/[\x00-\x1f\\]/, function(match) { | |
var character = String.specialChar[match[0]]; | |
return character ? character : '\\u00' + match[0].charCodeAt().toPaddedString(2, 16); | |
}); | |
if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') + '"'; | |
return "'" + escapedString.replace(/'/g, '\\\'') + "'"; | |
}, | |
toJSON: function() { | |
return this.inspect(true); | |
}, | |
unfilterJSON: function(filter) { | |
return this.sub(filter || Prototype.JSONFilter, '#{1}'); | |
}, | |
isJSON: function() { | |
var str = this; | |
if (str.blank()) return false; | |
str = this.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, ''); | |
return (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str); | |
}, | |
evalJSON: function(sanitize) { | |
var json = this.unfilterJSON(); | |
try { | |
if (!sanitize || json.isJSON()) return eval('(' + json + ')'); | |
} catch (e) { } | |
throw new SyntaxError('Badly formed JSON string: ' + this.inspect()); | |
}, | |
include: function(pattern) { | |
return this.indexOf(pattern) > -1; | |
}, | |
startsWith: function(pattern) { | |
return this.indexOf(pattern) === 0; | |
}, | |
endsWith: function(pattern) { | |
var d = this.length - pattern.length; | |
return d >= 0 && this.lastIndexOf(pattern) === d; | |
}, | |
empty: function() { | |
return this == ''; | |
}, | |
blank: function() { | |
return /^\s*$/.test(this); | |
}, | |
interpolate: function(object, pattern) { | |
return new Template(this, pattern).evaluate(object); | |
} | |
}); | |
if (Prototype.Browser.WebKit || Prototype.Browser.IE) Object.extend(String.prototype, { | |
escapeHTML: function() { | |
return this.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>'); | |
}, | |
unescapeHTML: function() { | |
return this.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>'); | |
} | |
}); | |
String.prototype.gsub.prepareReplacement = function(replacement) { | |
if (Object.isFunction(replacement)) return replacement; | |
var template = new Template(replacement); | |
return function(match) { return template.evaluate(match) }; | |
}; | |
String.prototype.parseQuery = String.prototype.toQueryParams; | |
Object.extend(String.prototype.escapeHTML, { | |
div: document.createElement('div'), | |
text: document.createTextNode('') | |
}); | |
with (String.prototype.escapeHTML) div.appendChild(text); | |
var Template = Class.create({ | |
initialize: function(template, pattern) { | |
this.template = template.toString(); | |
this.pattern = pattern || Template.Pattern; | |
}, | |
evaluate: function(object) { | |
if (Object.isFunction(object.toTemplateReplacements)) | |
object = object.toTemplateReplacements(); | |
return this.template.gsub(this.pattern, function(match) { | |
if (object == null) return ''; | |
var before = match[1] || ''; | |
if (before == '\\') return match[2]; | |
var ctx = object, expr = match[3]; | |
var pattern = /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/; | |
match = pattern.exec(expr); | |
if (match == null) return before; | |
while (match != null) { | |
var comp = match[1].startsWith('[') ? match[2].gsub('\\\\]', ']') : match[1]; | |
ctx = ctx[comp]; | |
if (null == ctx || '' == match[3]) break; | |
expr = expr.substring('[' == match[3] ? match[1].length : match[0].length); | |
match = pattern.exec(expr); | |
} | |
return before + String.interpret(ctx); | |
}); | |
} | |
}); | |
Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/; | |
var $break = { }; | |
var Enumerable = { | |
each: function(iterator, context) { | |
var index = 0; | |
iterator = iterator.bind(context); | |
try { | |
this._each(function(value) { | |
iterator(value, index++); | |
}); | |
} catch (e) { | |
if (e != $break) throw e; | |
} | |
return this; | |
}, | |
eachSlice: function(number, iterator, context) { | |
iterator = iterator ? iterator.bind(context) : Prototype.K; | |
var index = -number, slices = [], array = this.toArray(); | |
while ((index += number) < array.length) | |
slices.push(array.slice(index, index+number)); | |
return slices.collect(iterator, context); | |
}, | |
all: function(iterator, context) { | |
iterator = iterator ? iterator.bind(context) : Prototype.K; | |
var result = true; | |
this.each(function(value, index) { | |
result = result && !!iterator(value, index); | |
if (!result) throw $break; | |
}); | |
return result; | |
}, | |
any: function(iterator, context) { | |
iterator = iterator ? iterator.bind(context) : Prototype.K; | |
var result = false; | |
this.each(function(value, index) { | |
if (result = !!iterator(value, index)) | |
throw $break; | |
}); | |
return result; | |
}, | |
collect: function(iterator, context) { | |
iterator = iterator ? iterator.bind(context) : Prototype.K; | |
var results = []; | |
this.each(function(value, index) { | |
results.push(iterator(value, index)); | |
}); | |
return results; | |
}, | |
detect: function(iterator, context) { | |
iterator = iterator.bind(context); | |
var result; | |
this.each(function(value, index) { | |
if (iterator(value, index)) { | |
result = value; | |
throw $break; | |
} | |
}); | |
return result; | |
}, | |
findAll: function(iterator, context) { | |
iterator = iterator.bind(context); | |
var results = []; | |
this.each(function(value, index) { | |
if (iterator(value, index)) | |
results.push(value); | |
}); | |
return results; | |
}, | |
grep: function(filter, iterator, context) { | |
iterator = iterator ? iterator.bind(context) : Prototype.K; | |
var results = []; | |
if (Object.isString(filter)) | |
filter = new RegExp(filter); | |
this.each(function(value, index) { | |
if (filter.match(value)) | |
results.push(iterator(value, index)); | |
}); | |
return results; | |
}, | |
include: function(object) { | |
if (Object.isFunction(this.indexOf)) | |
if (this.indexOf(object) != -1) return true; | |
var found = false; | |
this.each(function(value) { | |
if (value == object) { | |
found = true; | |
throw $break; | |
} | |
}); | |
return found; | |
}, | |
inGroupsOf: function(number, fillWith) { | |
fillWith = Object.isUndefined(fillWith) ? null : fillWith; | |
return this.eachSlice(number, function(slice) { | |
while(slice.length < number) slice.push(fillWith); | |
return slice; | |
}); | |
}, | |
inject: function(memo, iterator, context) { | |
iterator = iterator.bind(context); | |
this.each(function(value, index) { | |
memo = iterator(memo, value, index); | |
}); | |
return memo; | |
}, | |
invoke: function(method) { | |
var args = $A(arguments).slice(1); | |
return this.map(function(value) { | |
return value[method].apply(value, args); | |
}); | |
}, | |
max: function(iterator, context) { | |
iterator = iterator ? iterator.bind(context) : Prototype.K; | |
var result; | |
this.each(function(value, index) { | |
value = iterator(value, index); | |
if (result == null || value >= result) | |
result = value; | |
}); | |
return result; | |
}, | |
min: function(iterator, context) { | |
iterator = iterator ? iterator.bind(context) : Prototype.K; | |
var result; | |
this.each(function(value, index) { | |
value = iterator(value, index); | |
if (result == null || value < result) | |
result = value; | |
}); | |
return result; | |
}, | |
partition: function(iterator, context) { | |
iterator = iterator ? iterator.bind(context) : Prototype.K; | |
var trues = [], falses = []; | |
this.each(function(value, index) { | |
(iterator(value, index) ? | |
trues : falses).push(value); | |
}); | |
return [trues, falses]; | |
}, | |
pluck: function(property) { | |
var results = []; | |
this.each(function(value) { | |
results.push(value[property]); | |
}); | |
return results; | |
}, | |
reject: function(iterator, context) { | |
iterator = iterator.bind(context); | |
var results = []; | |
this.each(function(value, index) { | |
if (!iterator(value, index)) | |
results.push(value); | |
}); | |
return results; | |
}, | |
sortBy: function(iterator, context) { | |
iterator = iterator.bind(context); | |
return this.map(function(value, index) { | |
return {value: value, criteria: iterator(value, index)}; | |
}).sort(function(left, right) { | |
var a = left.criteria, b = right.criteria; | |
return a < b ? -1 : a > b ? 1 : 0; | |
}).pluck('value'); | |
}, | |
toArray: function() { | |
return this.map(); | |
}, | |
zip: function() { | |
var iterator = Prototype.K, args = $A(arguments); | |
if (Object.isFunction(args.last())) | |
iterator = args.pop(); | |
var collections = [this].concat(args).map($A); | |
return this.map(function(value, index) { | |
return iterator(collections.pluck(index)); | |
}); | |
}, | |
size: function() { | |
return this.toArray().length; | |
}, | |
inspect: function() { | |
return '#<Enumerable:' + this.toArray().inspect() + '>'; | |
} | |
}; | |
Object.extend(Enumerable, { | |
map: Enumerable.collect, | |
find: Enumerable.detect, | |
select: Enumerable.findAll, | |
filter: Enumerable.findAll, | |
member: Enumerable.include, | |
entries: Enumerable.toArray, | |
every: Enumerable.all, | |
some: Enumerable.any | |
}); | |
function $A(iterable) { | |
if (!iterable) return []; | |
if (iterable.toArray) return iterable.toArray(); | |
var length = iterable.length || 0, results = new Array(length); | |
while (length--) results[length] = iterable[length]; | |
return results; | |
} | |
if (Prototype.Browser.WebKit) { | |
$A = function(iterable) { | |
if (!iterable) return []; | |
if (!(Object.isFunction(iterable) && iterable == '[object NodeList]') && | |
iterable.toArray) return iterable.toArray(); | |
var length = iterable.length || 0, results = new Array(length); | |
while (length--) results[length] = iterable[length]; | |
return results; | |
}; | |
} | |
Array.from = $A; | |
Object.extend(Array.prototype, Enumerable); | |
if (!Array.prototype._reverse) Array.prototype._reverse = Array.prototype.reverse; | |
Object.extend(Array.prototype, { | |
_each: function(iterator) { | |
for (var i = 0, length = this.length; i < length; i++) | |
iterator(this[i]); | |
}, | |
clear: function() { | |
this.length = 0; | |
return this; | |
}, | |
first: function() { | |
return this[0]; | |
}, | |
last: function() { | |
return this[this.length - 1]; | |
}, | |
compact: function() { | |
return this.select(function(value) { | |
return value != null; | |
}); | |
}, | |
flatten: function() { | |
return this.inject([], function(array, value) { | |
return array.concat(Object.isArray(value) ? | |
value.flatten() : [value]); | |
}); | |
}, | |
without: function() { | |
var values = $A(arguments); | |
return this.select(function(value) { | |
return !values.include(value); | |
}); | |
}, | |
reverse: function(inline) { | |
return (inline !== false ? this : this.toArray())._reverse(); | |
}, | |
reduce: function() { | |
return this.length > 1 ? this : this[0]; | |
}, | |
uniq: function(sorted) { | |
return this.inject([], function(array, value, index) { | |
if (0 == index || (sorted ? array.last() != value : !array.include(value))) | |
array.push(value); | |
return array; | |
}); | |
}, | |
intersect: function(array) { | |
return this.uniq().findAll(function(item) { | |
return array.detect(function(value) { return item === value }); | |
}); | |
}, | |
clone: function() { | |
return [].concat(this); | |
}, | |
size: function() { | |
return this.length; | |
}, | |
inspect: function() { | |
return '[' + this.map(Object.inspect).join(', ') + ']'; | |
}, | |
toJSON: function() { | |
var results = []; | |
this.each(function(object) { | |
var value = Object.toJSON(object); | |
if (!Object.isUndefined(value)) results.push(value); | |
}); | |
return '[' + results.join(', ') + ']'; | |
} | |
}); | |
// use native browser JS 1.6 implementation if available | |
if (Object.isFunction(Array.prototype.forEach)) | |
Array.prototype._each = Array.prototype.forEach; | |
if (!Array.prototype.indexOf) Array.prototype.indexOf = function(item, i) { | |
i || (i = 0); | |
var length = this.length; | |
if (i < 0) i = length + i; | |
for (; i < length; i++) | |
if (this[i] === item) return i; | |
return -1; | |
}; | |
if (!Array.prototype.lastIndexOf) Array.prototype.lastIndexOf = function(item, i) { | |
i = isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1; | |
var n = this.slice(0, i).reverse().indexOf(item); | |
return (n < 0) ? n : i - n - 1; | |
}; | |
Array.prototype.toArray = Array.prototype.clone; | |
function $w(string) { | |
if (!Object.isString(string)) return []; | |
string = string.strip(); | |
return string ? string.split(/\s+/) : []; | |
} | |
if (Prototype.Browser.Opera){ | |
Array.prototype.concat = function() { | |
var array = []; | |
for (var i = 0, length = this.length; i < length; i++) array.push(this[i]); | |
for (var i = 0, length = arguments.length; i < length; i++) { | |
if (Object.isArray(arguments[i])) { | |
for (var j = 0, arrayLength = arguments[i].length; j < arrayLength; j++) | |
array.push(arguments[i][j]); | |
} else { | |
array.push(arguments[i]); | |
} | |
} | |
return array; | |
}; | |
} | |
Object.extend(Number.prototype, { | |
toColorPart: function() { | |
return this.toPaddedString(2, 16); | |
}, | |
succ: function() { | |
return this + 1; | |
}, | |
times: function(iterator) { | |
$R(0, this, true).each(iterator); | |
return this; | |
}, | |
toPaddedString: function(length, radix) { | |
var string = this.toString(radix || 10); | |
return '0'.times(length - string.length) + string; | |
}, | |
toJSON: function() { | |
return isFinite(this) ? this.toString() : 'null'; | |
} | |
}); | |
$w('abs round ceil floor').each(function(method){ | |
Number.prototype[method] = Math[method].methodize(); | |
}); | |
function $H(object) { | |
return new Hash(object); | |
}; | |
var Hash = Class.create(Enumerable, (function() { | |
function toQueryPair(key, value) { | |
if (Object.isUndefined(value)) return key; | |
return key + '=' + encodeURIComponent(String.interpret(value)); | |
} | |
return { | |
initialize: function(object) { | |
this._object = Object.isHash(object) ? object.toObject() : Object.clone(object); | |
}, | |
_each: function(iterator) { | |
for (var key in this._object) { | |
var value = this._object[key], pair = [key, value]; | |
pair.key = key; | |
pair.value = value; | |
iterator(pair); | |
} | |
}, | |
set: function(key, value) { | |
return this._object[key] = value; | |
}, | |
get: function(key) { | |
return this._object[key]; | |
}, | |
unset: function(key) { | |
var value = this._object[key]; | |
delete this._object[key]; | |
return value; | |
}, | |
toObject: function() { | |
return Object.clone(this._object); | |
}, | |
keys: function() { | |
return this.pluck('key'); | |
}, | |
values: function() { | |
return this.pluck('value'); | |
}, | |
index: function(value) { | |
var match = this.detect(function(pair) { | |
return pair.value === value; | |
}); | |
return match && match.key; | |
}, | |
merge: function(object) { | |
return this.clone().update(object); | |
}, | |
update: function(object) { | |
return new Hash(object).inject(this, function(result, pair) { | |
result.set(pair.key, pair.value); | |
return result; | |
}); | |
}, | |
toQueryString: function() { | |
return this.map(function(pair) { | |
var key = encodeURIComponent(pair.key), values = pair.value; | |
if (values && typeof values == 'object') { | |
if (Object.isArray(values)) | |
return values.map(toQueryPair.curry(key)).join('&'); | |
} | |
return toQueryPair(key, values); | |
}).join('&'); | |
}, | |
inspect: function() { | |
return '#<Hash:{' + this.map(function(pair) { | |
return pair.map(Object.inspect).join(': '); | |
}).join(', ') + '}>'; | |
}, | |
toJSON: function() { | |
return Object.toJSON(this.toObject()); | |
}, | |
clone: function() { | |
return new Hash(this); | |
} | |
} | |
})()); | |
Hash.prototype.toTemplateReplacements = Hash.prototype.toObject; | |
Hash.from = $H; | |
var ObjectRange = Class.create(Enumerable, { | |
initialize: function(start, end, exclusive) { | |
this.start = start; | |
this.end = end; | |
this.exclusive = exclusive; | |
}, | |
_each: function(iterator) { | |
var value = this.start; | |
while (this.include(value)) { | |
iterator(value); | |
value = value.succ(); | |
} | |
}, | |
include: function(value) { | |
if (value < this.start) | |
return false; | |
if (this.exclusive) | |
return value < this.end; | |
return value <= this.end; | |
} | |
}); | |
var $R = function(start, end, exclusive) { | |
return new ObjectRange(start, end, exclusive); | |
}; | |
var Ajax = { | |
getTransport: function() { | |
return Try.these( | |
function() {return new XMLHttpRequest()}, | |
function() {return new ActiveXObject('Msxml2.XMLHTTP')}, | |
function() {return new ActiveXObject('Microsoft.XMLHTTP')} | |
) || false; | |
}, | |
activeRequestCount: 0 | |
}; | |
Ajax.Responders = { | |
responders: [], | |
_each: function(iterator) { | |
this.responders._each(iterator); | |
}, | |
register: function(responder) { | |
if (!this.include(responder)) | |
this.responders.push(responder); | |
}, | |
unregister: function(responder) { | |
this.responders = this.responders.without(responder); | |
}, | |
dispatch: function(callback, request, transport, json) { | |
this.each(function(responder) { | |
if (Object.isFunction(responder[callback])) { | |
try { | |
responder[callback].apply(responder, [request, transport, json]); | |
} catch (e) { } | |
} | |
}); | |
} | |
}; | |
Object.extend(Ajax.Responders, Enumerable); | |
Ajax.Responders.register({ | |
onCreate: function() { Ajax.activeRequestCount++ }, | |
onComplete: function() { Ajax.activeRequestCount-- } | |
}); | |
Ajax.Base = Class.create({ | |
initialize: function(options) { | |
this.options = { | |
method: 'post', | |
asynchronous: true, | |
contentType: 'application/x-www-form-urlencoded', | |
encoding: 'UTF-8', | |
parameters: '', | |
evalJSON: true, | |
evalJS: true | |
}; | |
Object.extend(this.options, options || { }); | |
this.options.method = this.options.method.toLowerCase(); | |
if (Object.isString(this.options.parameters)) | |
this.options.parameters = this.options.parameters.toQueryParams(); | |
else if (Object.isHash(this.options.parameters)) | |
this.options.parameters = this.options.parameters.toObject(); | |
} | |
}); | |
Ajax.Request = Class.create(Ajax.Base, { | |
_complete: false, | |
initialize: function($super, url, options) { | |
$super(options); | |
this.transport = Ajax.getTransport(); | |
this.request(url); | |
}, | |
request: function(url) { | |
this.url = url; | |
this.method = this.options.method; | |
var params = Object.clone(this.options.parameters); | |
if (!['get', 'post'].include(this.method)) { | |
// simulate other verbs over post | |
params['_method'] = this.method; | |
this.method = 'post'; | |
} | |
this.parameters = params; | |
if (params = Object.toQueryString(params)) { | |
// when GET, append parameters to URL | |
if (this.method == 'get') | |
this.url += (this.url.include('?') ? '&' : '?') + params; | |
else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)) | |
params += '&_='; | |
} | |
try { | |
var response = new Ajax.Response(this); | |
if (this.options.onCreate) this.options.onCreate(response); | |
Ajax.Responders.dispatch('onCreate', this, response); | |
this.transport.open(this.method.toUpperCase(), this.url, | |
this.options.asynchronous); | |
if (this.options.asynchronous) this.respondToReadyState.bind(this).defer(1); | |
this.transport.onreadystatechange = this.onStateChange.bind(this); | |
this.setRequestHeaders(); | |
this.body = this.method == 'post' ? (this.options.postBody || params) : null; | |
this.transport.send(this.body); | |
/* Force Firefox to handle ready state 4 for synchronous requests */ | |
if (!this.options.asynchronous && this.transport.overrideMimeType) | |
this.onStateChange(); | |
} | |
catch (e) { | |
this.dispatchException(e); | |
} | |
}, | |
onStateChange: function() { | |
var readyState = this.transport.readyState; | |
if (readyState > 1 && !((readyState == 4) && this._complete)) | |
this.respondToReadyState(this.transport.readyState); | |
}, | |
setRequestHeaders: function() { | |
var headers = { | |
'X-Requested-With': 'XMLHttpRequest', | |
'X-Prototype-Version': Prototype.Version, | |
'Accept': 'text/javascript, text/html, application/xml, text/xml, */*' | |
}; | |
if (this.method == 'post') { | |
headers['Content-type'] = this.options.contentType + | |
(this.options.encoding ? '; charset=' + this.options.encoding : ''); | |
/* Force "Connection: close" for older Mozilla browsers to work | |
* around a bug where XMLHttpRequest sends an incorrect | |
* Content-length header. See Mozilla Bugzilla #246651. | |
*/ | |
if (this.transport.overrideMimeType && | |
(navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005) | |
headers['Connection'] = 'close'; | |
} | |
// user-defined headers | |
if (typeof this.options.requestHeaders == 'object') { | |
var extras = this.options.requestHeaders; | |
if (Object.isFunction(extras.push)) | |
for (var i = 0, length = extras.length; i < length; i += 2) | |
headers[extras[i]] = extras[i+1]; | |
else | |
$H(extras).each(function(pair) { headers[pair.key] = pair.value }); | |
} | |
for (var name in headers) | |
this.transport.setRequestHeader(name, headers[name]); | |
}, | |
success: function() { | |
var status = this.getStatus(); | |
return !status || (status >= 200 && status < 300); | |
}, | |
getStatus: function() { | |
try { | |
return this.transport.status || 0; | |
} catch (e) { return 0 } | |
}, | |
respondToReadyState: function(readyState) { | |
var state = Ajax.Request.Events[readyState], response = new Ajax.Response(this); | |
if (state == 'Complete') { | |
try { | |
this._complete = true; | |
(this.options['on' + response.status] | |
|| this.options['on' + (this.success() ? 'Success' : 'Failure')] | |
|| Prototype.emptyFunction)(response, response.headerJSON); | |
} catch (e) { | |
this.dispatchException(e); | |
} | |
var contentType = response.getHeader('Content-type'); | |
if (this.options.evalJS == 'force' | |
|| (this.options.evalJS && this.isSameOrigin() && contentType | |
&& contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))) | |
this.evalResponse(); | |
} | |
try { | |
(this.options['on' + state] || Prototype.emptyFunction)(response, response.headerJSON); | |
Ajax.Responders.dispatch('on' + state, this, response, response.headerJSON); | |
} catch (e) { | |
this.dispatchException(e); | |
} | |
if (state == 'Complete') { | |
// avoid memory leak in MSIE: clean up | |
this.transport.onreadystatechange = Prototype.emptyFunction; | |
} | |
}, | |
isSameOrigin: function() { | |
var m = this.url.match(/^\s*https?:\/\/[^\/]*/); | |
return !m || (m[0] == '#{protocol}//#{domain}#{port}'.interpolate({ | |
protocol: location.protocol, | |
domain: document.domain, | |
port: location.port ? ':' + location.port : '' | |
})); | |
}, | |
getHeader: function(name) { | |
try { | |
return this.transport.getResponseHeader(name) || null; | |
} catch (e) { return null } | |
}, | |
evalResponse: function() { | |
try { | |
return eval((this.transport.responseText || '').unfilterJSON()); | |
} catch (e) { | |
this.dispatchException(e); | |
} | |
}, | |
dispatchException: function(exception) { | |
(this.options.onException || Prototype.emptyFunction)(this, exception); | |
Ajax.Responders.dispatch('onException', this, exception); | |
} | |
}); | |
Ajax.Request.Events = | |
['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; | |
Ajax.Response = Class.create({ | |
initialize: function(request){ | |
this.request = request; | |
var transport = this.transport = request.transport, | |
readyState = this.readyState = transport.readyState; | |
if((readyState > 2 && !Prototype.Browser.IE) || readyState == 4) { | |
this.status = this.getStatus(); | |
this.statusText = this.getStatusText(); | |
this.responseText = String.interpret(transport.responseText); | |
this.headerJSON = this._getHeaderJSON(); | |
} | |
if(readyState == 4) { | |
var xml = transport.responseXML; | |
this.responseXML = Object.isUndefined(xml) ? null : xml; | |
this.responseJSON = this._getResponseJSON(); | |
} | |
}, | |
status: 0, | |
statusText: '', | |
getStatus: Ajax.Request.prototype.getStatus, | |
getStatusText: function() { | |
try { | |
return this.transport.statusText || ''; | |
} catch (e) { return '' } | |
}, | |
getHeader: Ajax.Request.prototype.getHeader, | |
getAllHeaders: function() { | |
try { | |
return this.getAllResponseHeaders(); | |
} catch (e) { return null } | |
}, | |
getResponseHeader: function(name) { | |
return this.transport.getResponseHeader(name); | |
}, | |
getAllResponseHeaders: function() { | |
return this.transport.getAllResponseHeaders(); | |
}, | |
_getHeaderJSON: function() { | |
var json = this.getHeader('X-JSON'); | |
if (!json) return null; | |
json = decodeURIComponent(escape(json)); | |
try { | |
return json.evalJSON(this.request.options.sanitizeJSON || | |
!this.request.isSameOrigin()); | |
} catch (e) { | |
this.request.dispatchException(e); | |
} | |
}, | |
_getResponseJSON: function() { | |
var options = this.request.options; | |
if (!options.evalJSON || (options.evalJSON != 'force' && | |
!(this.getHeader('Content-type') || '').include('application/json')) || | |
this.responseText.blank()) | |
return null; | |
try { | |
return this.responseText.evalJSON(options.sanitizeJSON || | |
!this.request.isSameOrigin()); | |
} catch (e) { | |
this.request.dispatchException(e); | |
} | |
} | |
}); | |
Ajax.Updater = Class.create(Ajax.Request, { | |
initialize: function($super, container, url, options) { | |
this.container = { | |
success: (container.success || container), | |
failure: (container.failure || (container.success ? null : container)) | |
}; | |
options = Object.clone(options); | |
var onComplete = options.onComplete; | |
options.onComplete = (function(response, json) { | |
this.updateContent(response.responseText); | |
if (Object.isFunction(onComplete)) onComplete(response, json); | |
}).bind(this); | |
$super(url, options); | |
}, | |
updateContent: function(responseText) { | |
var receiver = this.container[this.success() ? 'success' : 'failure'], | |
options = this.options; | |
if (!options.evalScripts) responseText = responseText.stripScripts(); | |
if (receiver = $(receiver)) { | |
if (options.insertion) { | |
if (Object.isString(options.insertion)) { | |
var insertion = { }; insertion[options.insertion] = responseText; | |
receiver.insert(insertion); | |
} | |
else options.insertion(receiver, responseText); | |
} | |
else receiver.update(responseText); | |
} | |
} | |
}); | |
Ajax.PeriodicalUpdater = Class.create(Ajax.Base, { | |
initialize: function($super, container, url, options) { | |
$super(options); | |
this.onComplete = this.options.onComplete; | |
this.frequency = (this.options.frequency || 2); | |
this.decay = (this.options.decay || 1); | |
this.updater = { }; | |
this.container = container; | |
this.url = url; | |
this.start(); | |
}, | |
start: function() { | |
this.options.onComplete = this.updateComplete.bind(this); | |
this.onTimerEvent(); | |
}, | |
stop: function() { | |
this.updater.options.onComplete = undefined; | |
clearTimeout(this.timer); | |
(this.onComplete || Prototype.emptyFunction).apply(this, arguments); | |
}, | |
updateComplete: function(response) { | |
if (this.options.decay) { | |
this.decay = (response.responseText == this.lastText ? | |
this.decay * this.options.decay : 1); | |
this.lastText = response.responseText; | |
} | |
this.timer = this.onTimerEvent.bind(this).delay(this.decay * this.frequency); | |
}, | |
onTimerEvent: function() { | |
this.updater = new Ajax.Updater(this.container, this.url, this.options); | |
} | |
}); | |
function $(element) { | |
if (arguments.length > 1) { | |
for (var i = 0, elements = [], length = arguments.length; i < length; i++) | |
elements.push($(arguments[i])); | |
return elements; | |
} | |
if (Object.isString(element)) | |
element = document.getElementById(element); | |
return Element.extend(element); | |
} | |
if (Prototype.BrowserFeatures.XPath) { | |
document._getElementsByXPath = function(expression, parentElement) { | |
var results = []; | |
var query = document.evaluate(expression, $(parentElement) || document, | |
null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); | |
for (var i = 0, length = query.snapshotLength; i < length; i++) | |
results.push(Element.extend(query.snapshotItem(i))); | |
return results; | |
}; | |
} | |
/*--------------------------------------------------------------------------*/ | |
if (!window.Node) var Node = { }; | |
if (!Node.ELEMENT_NODE) { | |
// DOM level 2 ECMAScript Language Binding | |
Object.extend(Node, { | |
ELEMENT_NODE: 1, | |
ATTRIBUTE_NODE: 2, | |
TEXT_NODE: 3, | |
CDATA_SECTION_NODE: 4, | |
ENTITY_REFERENCE_NODE: 5, | |
ENTITY_NODE: 6, | |
PROCESSING_INSTRUCTION_NODE: 7, | |
COMMENT_NODE: 8, | |
DOCUMENT_NODE: 9, | |
DOCUMENT_TYPE_NODE: 10, | |
DOCUMENT_FRAGMENT_NODE: 11, | |
NOTATION_NODE: 12 | |
}); | |
} | |
(function() { | |
var element = this.Element; | |
this.Element = function(tagName, attributes) { | |
attributes = attributes || { }; | |
tagName = tagName.toLowerCase(); | |
var cache = Element.cache; | |
if (Prototype.Browser.IE && attributes.name) { | |
tagName = '<' + tagName + ' name="' + attributes.name + '">'; | |
delete attributes.name; | |
return Element.writeAttribute(document.createElement(tagName), attributes); | |
} | |
if (!cache[tagName]) cache[tagName] = Element.extend(document.createElement(tagName)); | |
return Element.writeAttribute(cache[tagName].cloneNode(false), attributes); | |
}; | |
Object.extend(this.Element, element || { }); | |
}).call(window); | |
Element.cache = { }; | |
Element.Methods = { | |
visible: function(element) { | |
return $(element).style.display != 'none'; | |
}, | |
toggle: function(element) { | |
element = $(element); | |
Element[Element.visible(element) ? 'hide' : 'show'](element); | |
return element; | |
}, | |
hide: function(element) { | |
$(element).style.display = 'none'; | |
return element; | |
}, | |
show: function(element) { | |
$(element).style.display = ''; | |
return element; | |
}, | |
remove: function(element) { | |
element = $(element); | |
element.parentNode.removeChild(element); | |
return element; | |
}, | |
update: function(element, content) { | |
element = $(element); | |
if (content && content.toElement) content = content.toElement(); | |
if (Object.isElement(content)) return element.update().insert(content); | |
content = Object.toHTML(content); | |
element.innerHTML = content.stripScripts(); | |
content.evalScripts.bind(content).defer(); | |
return element; | |
}, | |
replace: function(element, content) { | |
element = $(element); | |
if (content && content.toElement) content = content.toElement(); | |
else if (!Object.isElement(content)) { | |
content = Object.toHTML(content); | |
var range = element.ownerDocument.createRange(); | |
range.selectNode(element); | |
content.evalScripts.bind(content).defer(); | |
content = range.createContextualFragment(content.stripScripts()); | |
} | |
element.parentNode.replaceChild(content, element); | |
return element; | |
}, | |
insert: function(element, insertions) { | |
element = $(element); | |
if (Object.isString(insertions) || Object.isNumber(insertions) || | |
Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML))) | |
insertions = {bottom:insertions}; | |
var content, insert, tagName, childNodes; | |
for (var position in insertions) { | |
content = insertions[position]; | |
position = position.toLowerCase(); | |
insert = Element._insertionTranslations[position]; | |
if (content && content.toElement) content = content.toElement(); | |
if (Object.isElement(content)) { | |
insert(element, content); | |
continue; | |
} | |
content = Object.toHTML(content); | |
tagName = ((position == 'before' || position == 'after') | |
? element.parentNode : element).tagName.toUpperCase(); | |
childNodes = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); | |
if (position == 'top' || position == 'after') childNodes.reverse(); | |
childNodes.each(insert.curry(element)); | |
content.evalScripts.bind(content).defer(); | |
} | |
return element; | |
}, | |
wrap: function(element, wrapper, attributes) { | |
element = $(element); | |
if (Object.isElement(wrapper)) | |
$(wrapper).writeAttribute(attributes || { }); | |
else if (Object.isString(wrapper)) wrapper = new Element(wrapper, attributes); | |
else wrapper = new Element('div', wrapper); | |
if (element.parentNode) | |
element.parentNode.replaceChild(wrapper, element); | |
wrapper.appendChild(element); | |
return wrapper; | |
}, | |
inspect: function(element) { | |
element = $(element); | |
var result = '<' + element.tagName.toLowerCase(); | |
$H({'id': 'id', 'className': 'class'}).each(function(pair) { | |
var property = pair.first(), attribute = pair.last(); | |
var value = (element[property] || '').toString(); | |
if (value) result += ' ' + attribute + '=' + value.inspect(true); | |
}); | |
return result + '>'; | |
}, | |
recursivelyCollect: function(element, property) { | |
element = $(element); | |
var elements = []; | |
while (element = element[property]) | |
if (element.nodeType == 1) | |
elements.push(Element.extend(element)); | |
return elements; | |
}, | |
ancestors: function(element) { | |
return $(element).recursivelyCollect('parentNode'); | |
}, | |
descendants: function(element) { | |
return $(element).select("*"); | |
}, | |
firstDescendant: function(element) { | |
element = $(element).firstChild; | |
while (element && element.nodeType != 1) element = element.nextSibling; | |
return $(element); | |
}, | |
immediateDescendants: function(element) { | |
if (!(element = $(element).firstChild)) return []; | |
while (element && element.nodeType != 1) element = element.nextSibling; | |
if (element) return [element].concat($(element).nextSiblings()); | |
return []; | |
}, | |
previousSiblings: function(element) { | |
return $(element).recursivelyCollect('previousSibling'); | |
}, | |
nextSiblings: function(element) { | |
return $(element).recursivelyCollect('nextSibling'); | |
}, | |
siblings: function(element) { | |
element = $(element); | |
return element.previousSiblings().reverse().concat(element.nextSiblings()); | |
}, | |
match: function(element, selector) { | |
if (Object.isString(selector)) | |
selector = new Selector(selector); | |
return selector.match($(element)); | |
}, | |
up: function(element, expression, index) { | |
element = $(element); | |
if (arguments.length == 1) return $(element.parentNode); | |
var ancestors = element.ancestors(); | |
return Object.isNumber(expression) ? ancestors[expression] : | |
Selector.findElement(ancestors, expression, index); | |
}, | |
down: function(element, expression, index) { | |
element = $(element); | |
if (arguments.length == 1) return element.firstDescendant(); | |
return Object.isNumber(expression) ? element.descendants()[expression] : | |
element.select(expression)[index || 0]; | |
}, | |
previous: function(element, expression, index) { | |
element = $(element); | |
if (arguments.length == 1) return $(Selector.handlers.previousElementSibling(element)); | |
var previousSiblings = element.previousSiblings(); | |
return Object.isNumber(expression) ? previousSiblings[expression] : | |
Selector.findElement(previousSiblings, expression, index); | |
}, | |
next: function(element, expression, index) { | |
element = $(element); | |
if (arguments.length == 1) return $(Selector.handlers.nextElementSibling(element)); | |
var nextSiblings = element.nextSiblings(); | |
return Object.isNumber(expression) ? nextSiblings[expression] : | |
Selector.findElement(nextSiblings, expression, index); | |
}, | |
select: function() { | |
var args = $A(arguments), element = $(args.shift()); | |
return Selector.findChildElements(element, args); | |
}, | |
adjacent: function() { | |
var args = $A(arguments), element = $(args.shift()); | |
return Selector.findChildElements(element.parentNode, args).without(element); | |
}, | |
identify: function(element) { | |
element = $(element); | |
var id = element.readAttribute('id'), self = arguments.callee; | |
if (id) return id; | |
do { id = 'anonymous_element_' + self.counter++ } while ($(id)); | |
element.writeAttribute('id', id); | |
return id; | |
}, | |
readAttribute: function(element, name) { | |
element = $(element); | |
if (Prototype.Browser.IE) { | |
var t = Element._attributeTranslations.read; | |
if (t.values[name]) return t.values[name](element, name); | |
if (t.names[name]) name = t.names[name]; | |
if (name.include(':')) { | |
return (!element.attributes || !element.attributes[name]) ? null : | |
element.attributes[name].value; | |
} | |
} | |
return element.getAttribute(name); | |
}, | |
writeAttribute: function(element, name, value) { | |
element = $(element); | |
var attributes = { }, t = Element._attributeTranslations.write; | |
if (typeof name == 'object') attributes = name; | |
else attributes[name] = Object.isUndefined(value) ? true : value; | |
for (var attr in attributes) { | |
name = t.names[attr] || attr; | |
value = attributes[attr]; | |
if (t.values[attr]) name = t.values[attr](element, value); | |
if (value === false || value === null) | |
element.removeAttribute(name); | |
else if (value === true) | |
element.setAttribute(name, name); | |
else element.setAttribute(name, value); | |
} | |
return element; | |
}, | |
getHeight: function(element) { | |
return $(element).getDimensions().height; | |
}, | |
getWidth: function(element) { | |
return $(element).getDimensions().width; | |
}, | |
classNames: function(element) { | |
return new Element.ClassNames(element); | |
}, | |
hasClassName: function(element, className) { | |
if (!(element = $(element))) return; | |
var elementClassName = element.className; | |
return (elementClassName.length > 0 && (elementClassName == className || | |
new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName))); | |
}, | |
addClassName: function(element, className) { | |
if (!(element = $(element))) return; | |
if (!element.hasClassName(className)) | |
element.className += (element.className ? ' ' : '') + className; | |
return element; | |
}, | |
removeClassName: function(element, className) { | |
if (!(element = $(element))) return; | |
element.className = element.className.replace( | |
new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip(); | |
return element; | |
}, | |
toggleClassName: function(element, className) { | |
if (!(element = $(element))) return; | |
return element[element.hasClassName(className) ? | |
'removeClassName' : 'addClassName'](className); | |
}, | |
// removes whitespace-only text node children | |
cleanWhitespace: function(element) { | |
element = $(element); | |
var node = element.firstChild; | |
while (node) { | |
var nextNode = node.nextSibling; | |
if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) | |
element.removeChild(node); | |
node = nextNode; | |
} | |
return element; | |
}, | |
empty: function(element) { | |
return $(element).innerHTML.blank(); | |
}, | |
descendantOf: function(element, ancestor) { | |
element = $(element), ancestor = $(ancestor); | |
var originalAncestor = ancestor; | |
if (element.compareDocumentPosition) | |
return (element.compareDocumentPosition(ancestor) & 8) === 8; | |
if (element.sourceIndex && !Prototype.Browser.Opera) { | |
var e = element.sourceIndex, a = ancestor.sourceIndex, | |
nextAncestor = ancestor.nextSibling; | |
if (!nextAncestor) { | |
do { ancestor = ancestor.parentNode; } | |
while (!(nextAncestor = ancestor.nextSibling) && ancestor.parentNode); | |
} | |
if (nextAncestor && nextAncestor.sourceIndex) | |
return (e > a && e < nextAncestor.sourceIndex); | |
} | |
while (element = element.parentNode) | |
if (element == originalAncestor) return true; | |
return false; | |
}, | |
scrollTo: function(element) { | |
element = $(element); | |
var pos = element.cumulativeOffset(); | |
window.scrollTo(pos[0], pos[1]); | |
return element; | |
}, | |
getStyle: function(element, style) { | |
element = $(element); | |
style = style == 'float' ? 'cssFloat' : style.camelize(); | |
var value = element.style[style]; | |
if (!value) { | |
var css = document.defaultView.getComputedStyle(element, null); | |
value = css ? css[style] : null; | |
} | |
if (style == 'opacity') return value ? parseFloat(value) : 1.0; | |
return value == 'auto' ? null : value; | |
}, | |
getOpacity: function(element) { | |
return $(element).getStyle('opacity'); | |
}, | |
setStyle: function(element, styles) { | |
element = $(element); | |
var elementStyle = element.style, match; | |
if (Object.isString(styles)) { | |
element.style.cssText += ';' + styles; | |
return styles.include('opacity') ? | |
element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : element; | |
} | |
for (var property in styles) | |
if (property == 'opacity') element.setOpacity(styles[property]); | |
else | |
elementStyle[(property == 'float' || property == 'cssFloat') ? | |
(Object.isUndefined(elementStyle.styleFloat) ? 'cssFloat' : 'styleFloat') : | |
property] = styles[property]; | |
return element; | |
}, | |
setOpacity: function(element, value) { | |
element = $(element); | |
element.style.opacity = (value == 1 || value === '') ? '' : | |
(value < 0.00001) ? 0 : value; | |
return element; | |
}, | |
getDimensions: function(element) { | |
element = $(element); | |
var display = $(element).getStyle('display'); | |
if (display != 'none' && display != null) // Safari bug | |
return {width: element.offsetWidth, height: element.offsetHeight}; | |
// All *Width and *Height properties give 0 on elements with display none, | |
// so enable the element temporarily | |
var els = element.style; | |
var originalVisibility = els.visibility; | |
var originalPosition = els.position; | |
var originalDisplay = els.display; | |
els.visibility = 'hidden'; | |
els.position = 'absolute'; | |
els.display = 'block'; | |
var originalWidth = element.clientWidth; | |
var originalHeight = element.clientHeight; | |
els.display = originalDisplay; | |
els.position = originalPosition; | |
els.visibility = originalVisibility; | |
return {width: originalWidth, height: originalHeight}; | |
}, | |
makePositioned: function(element) { | |
element = $(element); | |
var pos = Element.getStyle(element, 'position'); | |
if (pos == 'static' || !pos) { | |
element._madePositioned = true; | |
element.style.position = 'relative'; | |
// Opera returns the offset relative to the positioning context, when an | |
// element is position relative but top and left have not been defined | |
if (window.opera) { | |
element.style.top = 0; | |
element.style.left = 0; | |
} | |
} | |
return element; | |
}, | |
undoPositioned: function(element) { | |
element = $(element); | |
if (element._madePositioned) { | |
element._madePositioned = undefined; | |
element.style.position = | |
element.style.top = | |
element.style.left = | |
element.style.bottom = | |
element.style.right = ''; | |
} | |
return element; | |
}, | |
makeClipping: function(element) { | |
element = $(element); | |
if (element._overflow) return element; | |
element._overflow = Element.getStyle(element, 'overflow') || 'auto'; | |
if (element._overflow !== 'hidden') | |
element.style.overflow = 'hidden'; | |
return element; | |
}, | |
undoClipping: function(element) { | |
element = $(element); | |
if (!element._overflow) return element; | |
element.style.overflow = element._overflow == 'auto' ? '' : element._overflow; | |
element._overflow = null; | |
return element; | |
}, | |
cumulativeOffset: function(element) { | |
var valueT = 0, valueL = 0; | |
do { | |
valueT += element.offsetTop || 0; | |
valueL += element.offsetLeft || 0; | |
element = element.offsetParent; | |
} while (element); | |
return Element._returnOffset(valueL, valueT); | |
}, | |
positionedOffset: function(element) { | |
var valueT = 0, valueL = 0; | |
do { | |
valueT += element.offsetTop || 0; | |
valueL += element.offsetLeft || 0; | |
element = element.offsetParent; | |
if (element) { | |
if (element.tagName == 'BODY') break; | |
var p = Element.getStyle(element, 'position'); | |
if (p !== 'static') break; | |
} | |
} while (element); | |
return Element._returnOffset(valueL, valueT); | |
}, | |
absolutize: function(element) { | |
element = $(element); | |
if (element.getStyle('position') == 'absolute') return; | |
// Position.prepare(); // To be done manually by Scripty when it needs it. | |
var offsets = element.positionedOffset(); | |
var top = offsets[1]; | |
var left = offsets[0]; | |
var width = element.clientWidth; | |
var height = element.clientHeight; | |
element._originalLeft = left - parseFloat(element.style.left || 0); | |
element._originalTop = top - parseFloat(element.style.top || 0); | |
element._originalWidth = element.style.width; | |
element._originalHeight = element.style.height; | |
element.style.position = 'absolute'; | |
element.style.top = top + 'px'; | |
element.style.left = left + 'px'; | |
element.style.width = width + 'px'; | |
element.style.height = height + 'px'; | |
return element; | |
}, | |
relativize: function(element) { | |
element = $(element); | |
if (element.getStyle('position') == 'relative') return; | |
// Position.prepare(); // To be done manually by Scripty when it needs it. | |
element.style.position = 'relative'; | |
var top = parseFloat(element.style.top || 0) - (element._originalTop || 0); | |
var left = parseFloat(element.style.left || 0) - (element._originalLeft || 0); | |
element.style.top = top + 'px'; | |
element.style.left = left + 'px'; | |
element.style.height = element._originalHeight; | |
element.style.width = element._originalWidth; | |
return element; | |
}, | |
cumulativeScrollOffset: function(element) { | |
var valueT = 0, valueL = 0; | |
do { | |
valueT += element.scrollTop || 0; | |
valueL += element.scrollLeft || 0; | |
element = element.parentNode; | |
} while (element); | |
return Element._returnOffset(valueL, valueT); | |
}, | |
getOffsetParent: function(element) { | |
if (element.offsetParent) return $(element.offsetParent); | |
if (element == document.body) return $(element); | |
while ((element = element.parentNode) && element != document.body) | |
if (Element.getStyle(element, 'position') != 'static') | |
return $(element); | |
return $(document.body); | |
}, | |
viewportOffset: function(forElement) { | |
var valueT = 0, valueL = 0; | |
var element = forElement; | |
do { | |
valueT += element.offsetTop || 0; | |
valueL += element.offsetLeft || 0; | |
// Safari fix | |
if (element.offsetParent == document.body && | |
Element.getStyle(element, 'position') == 'absolute') break; | |
} while (element = element.offsetParent); | |
element = forElement; | |
do { | |
if (!Prototype.Browser.Opera || element.tagName == 'BODY') { | |
valueT -= element.scrollTop || 0; | |
valueL -= element.scrollLeft || 0; | |
} | |
} while (element = element.parentNode); | |
return Element._returnOffset(valueL, valueT); | |
}, | |
clonePosition: function(element, source) { | |
var options = Object.extend({ | |
setLeft: true, | |
setTop: true, | |
setWidth: true, | |
setHeight: true, | |
offsetTop: 0, | |
offsetLeft: 0 | |
}, arguments[2] || { }); | |
// find page position of source | |
source = $(source); | |
var p = source.viewportOffset(); | |
// find coordinate system to use | |
element = $(element); | |
var delta = [0, 0]; | |
var parent = null; | |
// delta [0,0] will do fine with position: fixed elements, | |
// position:absolute needs offsetParent deltas | |
if (Element.getStyle(element, 'position') == 'absolute') { | |
parent = element.getOffsetParent(); | |
delta = parent.viewportOffset(); | |
} | |
// correct by body offsets (fixes Safari) | |
if (parent == document.body) { | |
delta[0] -= document.body.offsetLeft; | |
delta[1] -= document.body.offsetTop; | |
} | |
// set position | |
if (options.setLeft) element.style.left = (p[0] - delta[0] + options.offsetLeft) + 'px'; | |
if (options.setTop) element.style.top = (p[1] - delta[1] + options.offsetTop) + 'px'; | |
if (options.setWidth) element.style.width = source.offsetWidth + 'px'; | |
if (options.setHeight) element.style.height = source.offsetHeight + 'px'; | |
return element; | |
} | |
}; | |
Element.Methods.identify.counter = 1; | |
Object.extend(Element.Methods, { | |
getElementsBySelector: Element.Methods.select, | |
childElements: Element.Methods.immediateDescendants | |
}); | |
Element._attributeTranslations = { | |
write: { | |
names: { | |
className: 'class', | |
htmlFor: 'for' | |
}, | |
values: { } | |
} | |
}; | |
if (Prototype.Browser.Opera) { | |
Element.Methods.getStyle = Element.Methods.getStyle.wrap( | |
function(proceed, element, style) { | |
switch (style) { | |
case 'left': case 'top': case 'right': case 'bottom': | |
if (proceed(element, 'position') === 'static') return null; | |
case 'height': case 'width': | |
// returns '0px' for hidden elements; we want it to return null | |
if (!Element.visible(element)) return null; | |
// returns the border-box dimensions rather than the content-box | |
// dimensions, so we subtract padding and borders from the value | |
var dim = parseInt(proceed(element, style), 10); | |
if (dim !== element['offset' + style.capitalize()]) | |
return dim + 'px'; | |
var properties; | |
if (style === 'height') { | |
properties = ['border-top-width', 'padding-top', | |
'padding-bottom', 'border-bottom-width']; | |
} | |
else { | |
properties = ['border-left-width', 'padding-left', | |
'padding-right', 'border-right-width']; | |
} | |
return properties.inject(dim, function(memo, property) { | |
var val = proceed(element, property); | |
return val === null ? memo : memo - parseInt(val, 10); | |
}) + 'px'; | |
default: return proceed(element, style); | |
} | |
} | |
); | |
Element.Methods.readAttribute = Element.Methods.readAttribute.wrap( | |
function(proceed, element, attribute) { | |
if (attribute === 'title') return element.title; | |
return proceed(element, attribute); | |
} | |
); | |
} | |
else if (Prototype.Browser.IE) { | |
// IE doesn't report offsets correctly for static elements, so we change them | |
// to "relative" to get the values, then change them back. | |
Element.Methods.getOffsetParent = Element.Methods.getOffsetParent.wrap( | |
function(proceed, element) { | |
element = $(element); | |
var position = element.getStyle('position'); | |
if (position !== 'static') return proceed(element); | |
element.setStyle({ position: 'relative' }); | |
var value = proceed(element); | |
element.setStyle({ position: position }); | |
return value; | |
} | |
); | |
$w('positionedOffset viewportOffset').each(function(method) { | |
Element.Methods[method] = Element.Methods[method].wrap( | |
function(proceed, element) { | |
element = $(element); | |
var position = element.getStyle('position'); | |
if (position !== 'static') return proceed(element); | |
// Trigger hasLayout on the offset parent so that IE6 reports | |
// accurate offsetTop and offsetLeft values for position: fixed. | |
var offsetParent = element.getOffsetParent(); | |
if (offsetParent && offsetParent.getStyle('position') === 'fixed') | |
offsetParent.setStyle({ zoom: 1 }); | |
element.setStyle({ position: 'relative' }); | |
var value = proceed(element); | |
element.setStyle({ position: position }); | |
return value; | |
} | |
); | |
}); | |
Element.Methods.getStyle = function(element, style) { | |
element = $(element); | |
style = (style == 'float' || style == 'cssFloat') ? 'styleFloat' : style.camelize(); | |
var value = element.style[style]; | |
if (!value && element.currentStyle) value = element.currentStyle[style]; | |
if (style == 'opacity') { | |
if (value = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/)) | |
if (value[1]) return parseFloat(value[1]) / 100; | |
return 1.0; | |
} | |
if (value == 'auto') { | |
if ((style == 'width' || style == 'height') && (element.getStyle('display') != 'none')) | |
return element['offset' + style.capitalize()] + 'px'; | |
return null; | |
} | |
return value; | |
}; | |
Element.Methods.setOpacity = function(element, value) { | |
function stripAlpha(filter){ | |
return filter.replace(/alpha\([^\)]*\)/gi,''); | |
} | |
element = $(element); | |
var currentStyle = element.currentStyle; | |
if ((currentStyle && !currentStyle.hasLayout) || | |
(!currentStyle && element.style.zoom == 'normal')) | |
element.style.zoom = 1; | |
var filter = element.getStyle('filter'), style = element.style; | |
if (value == 1 || value === '') { | |
(filter = stripAlpha(filter)) ? | |
style.filter = filter : style.removeAttribute('filter'); | |
return element; | |
} else if (value < 0.00001) value = 0; | |
style.filter = stripAlpha(filter) + | |
'alpha(opacity=' + (value * 100) + ')'; | |
return element; | |
}; | |
Element._attributeTranslations = { | |
read: { | |
names: { | |
'class': 'className', | |
'for': 'htmlFor' | |
}, | |
values: { | |
_getAttr: function(element, attribute) { | |
return element.getAttribute(attribute, 2); | |
}, | |
_getAttrNode: function(element, attribute) { | |
var node = element.getAttributeNode(attribute); | |
return node ? node.value : ""; | |
}, | |
_getEv: function(element, attribute) { | |
attribute = element.getAttribute(attribute); | |
return attribute ? attribute.toString().slice(23, -2) : null; | |
}, | |
_flag: function(element, attribute) { | |
return $(element).hasAttribute(attribute) ? attribute : null; | |
}, | |
style: function(element) { | |
return element.style.cssText.toLowerCase(); | |
}, | |
title: function(element) { | |
return element.title; | |
} | |
} | |
} | |
}; | |
Element._attributeTranslations.write = { | |
names: Object.extend({ | |
cellpadding: 'cellPadding', | |
cellspacing: 'cellSpacing' | |
}, Element._attributeTranslations.read.names), | |
values: { | |
checked: function(element, value) { | |
element.checked = !!value; | |
}, | |
style: function(element, value) { | |
element.style.cssText = value ? value : ''; | |
} | |
} | |
}; | |
Element._attributeTranslations.has = {}; | |
$w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' + | |
'encType maxLength readOnly longDesc').each(function(attr) { | |
Element._attributeTranslations.write.names[attr.toLowerCase()] = attr; | |
Element._attributeTranslations.has[attr.toLowerCase()] = attr; | |
}); | |
(function(v) { | |
Object.extend(v, { | |
href: v._getAttr, | |
src: v._getAttr, | |
type: v._getAttr, | |
action: v._getAttrNode, | |
disabled: v._flag, | |
checked: v._flag, | |
readonly: v._flag, | |
multiple: v._flag, | |
onload: v._getEv, | |
onunload: v._getEv, | |
onclick: v._getEv, | |
ondblclick: v._getEv, | |
onmousedown: v._getEv, | |
onmouseup: v._getEv, | |
onmouseover: v._getEv, | |
onmousemove: v._getEv, | |
onmouseout: v._getEv, | |
onfocus: v._getEv, | |
onblur: v._getEv, | |
onkeypress: v._getEv, | |
onkeydown: v._getEv, | |
onkeyup: v._getEv, | |
onsubmit: v._getEv, | |
onreset: v._getEv, | |
onselect: v._getEv, | |
onchange: v._getEv | |
}); | |
})(Element._attributeTranslations.read.values); | |
} | |
else if (Prototype.Browser.Gecko && /rv:1\.8\.0/.test(navigator.userAgent)) { | |
Element.Methods.setOpacity = function(element, value) { | |
element = $(element); | |
element.style.opacity = (value == 1) ? 0.999999 : | |
(value === '') ? '' : (value < 0.00001) ? 0 : value; | |
return element; | |
}; | |
} | |
else if (Prototype.Browser.WebKit) { | |
Element.Methods.setOpacity = function(element, value) { | |
element = $(element); | |
element.style.opacity = (value == 1 || value === '') ? '' : | |
(value < 0.00001) ? 0 : value; | |
if (value == 1) | |
if(element.tagName == 'IMG' && element.width) { | |
element.width++; element.width--; | |
} else try { | |
var n = document.createTextNode(' '); | |
element.appendChild(n); | |
element.removeChild(n); | |
} catch (e) { } | |
return element; | |
}; | |
// Safari returns margins on body which is incorrect if the child is absolutely | |
// positioned. For performance reasons, redefine Element#cumulativeOffset for | |
// KHTML/WebKit only. | |
Element.Methods.cumulativeOffset = function(element) { | |
var valueT = 0, valueL = 0; | |
do { | |
valueT += element.offsetTop || 0; | |
valueL += element.offsetLeft || 0; | |
if (element.offsetParent == document.body) | |
if (Element.getStyle(element, 'position') == 'absolute') break; | |
element = element.offsetParent; | |
} while (element); | |
return Element._returnOffset(valueL, valueT); | |
}; | |
} | |
if (Prototype.Browser.IE || Prototype.Browser.Opera) { | |
// IE and Opera are missing .innerHTML support for TABLE-related and SELECT elements | |
Element.Methods.update = function(element, content) { | |
element = $(element); | |
if (content && content.toElement) content = content.toElement(); | |
if (Object.isElement(content)) return element.update().insert(content); | |
content = Object.toHTML(content); | |
var tagName = element.tagName.toUpperCase(); | |
if (tagName in Element._insertionTranslations.tags) { | |
$A(element.childNodes).each(function(node) { element.removeChild(node) }); | |
Element._getContentFromAnonymousElement(tagName, content.stripScripts()) | |
.each(function(node) { element.appendChild(node) }); | |
} | |
else element.innerHTML = content.stripScripts(); | |
content.evalScripts.bind(content).defer(); | |
return element; | |
}; | |
} | |
if ('outerHTML' in document.createElement('div')) { | |
Element.Methods.replace = function(element, content) { | |
element = $(element); | |
if (content && content.toElement) content = content.toElement(); | |
if (Object.isElement(content)) { | |
element.parentNode.replaceChild(content, element); | |
return element; | |
} | |
content = Object.toHTML(content); | |
var parent = element.parentNode, tagName = parent.tagName.toUpperCase(); | |
if (Element._insertionTranslations.tags[tagName]) { | |
var nextSibling = element.next(); | |
var fragments = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); | |
parent.removeChild(element); | |
if (nextSibling) | |
fragments.each(function(node) { parent.insertBefore(node, nextSibling) }); | |
else | |
fragments.each(function(node) { parent.appendChild(node) }); | |
} | |
else element.outerHTML = content.stripScripts(); | |
content.evalScripts.bind(content).defer(); | |
return element; | |
}; | |
} | |
Element._returnOffset = function(l, t) { | |
var result = [l, t]; | |
result.left = l; | |
result.top = t; | |
return result; | |
}; | |
Element._getContentFromAnonymousElement = function(tagName, html) { | |
var div = new Element('div'), t = Element._insertionTranslations.tags[tagName]; | |
if (t) { | |
div.innerHTML = t[0] + html + t[1]; | |
t[2].times(function() { div = div.firstChild }); | |
} else div.innerHTML = html; | |
return $A(div.childNodes); | |
}; | |
Element._insertionTranslations = { | |
before: function(element, node) { | |
element.parentNode.insertBefore(node, element); | |
}, | |
top: function(element, node) { | |
element.insertBefore(node, element.firstChild); | |
}, | |
bottom: function(element, node) { | |
element.appendChild(node); | |
}, | |
after: function(element, node) { | |
element.parentNode.insertBefore(node, element.nextSibling); | |
}, | |
tags: { | |
TABLE: ['<table>', '</table>', 1], | |
TBODY: ['<table><tbody>', '</tbody></table>', 2], | |
TR: ['<table><tbody><tr>', '</tr></tbody></table>', 3], | |
TD: ['<table><tbody><tr><td>', '</td></tr></tbody></table>', 4], | |
SELECT: ['<select>', '</select>', 1] | |
} | |
}; | |
(function() { | |
Object.extend(this.tags, { | |
THEAD: this.tags.TBODY, | |
TFOOT: this.tags.TBODY, | |
TH: this.tags.TD | |
}); | |
}).call(Element._insertionTranslations); | |
Element.Methods.Simulated = { | |
hasAttribute: function(element, attribute) { | |
attribute = Element._attributeTranslations.has[attribute] || attribute; | |
var node = $(element).getAttributeNode(attribute); | |
return node && node.specified; | |
} | |
}; | |
Element.Methods.ByTag = { }; | |
Object.extend(Element, Element.Methods); | |
if (!Prototype.BrowserFeatures.ElementExtensions && | |
document.createElement('div').__proto__) { | |
window.HTMLElement = { }; | |
window.HTMLElement.prototype = document.createElement('div').__proto__; | |
Prototype.BrowserFeatures.ElementExtensions = true; | |
} | |
Element.extend = (function() { | |
if (Prototype.BrowserFeatures.SpecificElementExtensions) | |
return Prototype.K; | |
var Methods = { }, ByTag = Element.Methods.ByTag; | |
var extend = Object.extend(function(element) { | |
if (!element || element._extendedByPrototype || | |
element.nodeType != 1 || element == window) return element; | |
var methods = Object.clone(Methods), | |
tagName = element.tagName, property, value; | |
// extend methods for specific tags | |
if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]); | |
for (property in methods) { | |
value = methods[property]; | |
if (Object.isFunction(value) && !(property in element)) | |
element[property] = value.methodize(); | |
} | |
element._extendedByPrototype = Prototype.emptyFunction; | |
return element; | |
}, { | |
refresh: function() { | |
// extend methods for all tags (Safari doesn't need this) | |
if (!Prototype.BrowserFeatures.ElementExtensions) { | |
Object.extend(Methods, Element.Methods); | |
Object.extend(Methods, Element.Methods.Simulated); | |
} | |
} | |
}); | |
extend.refresh(); | |
return extend; | |
})(); | |
Element.hasAttribute = function(element, attribute) { | |
if (element.hasAttribute) return element.hasAttribute(attribute); | |
return Element.Methods.Simulated.hasAttribute(element, attribute); | |
}; | |
Element.addMethods = function(methods) { | |
var F = Prototype.BrowserFeatures, T = Element.Methods.ByTag; | |
if (!methods) { | |
Object.extend(Form, Form.Methods); | |
Object.extend(Form.Element, Form.Element.Methods); | |
Object.extend(Element.Methods.ByTag, { | |
"FORM": Object.clone(Form.Methods), | |
"INPUT": Object.clone(Form.Element.Methods), | |
"SELECT": Object.clone(Form.Element.Methods), | |
"TEXTAREA": Object.clone(Form.Element.Methods) | |
}); | |
} | |
if (arguments.length == 2) { | |
var tagName = methods; | |
methods = arguments[1]; | |
} | |
if (!tagName) Object.extend(Element.Methods, methods || { }); | |
else { | |
if (Object.isArray(tagName)) tagName.each(extend); | |
else extend(tagName); | |
} | |
function extend(tagName) { | |
tagName = tagName.toUpperCase(); | |
if (!Element.Methods.ByTag[tagName]) | |
Element.Methods.ByTag[tagName] = { }; | |
Object.extend(Element.Methods.ByTag[tagName], methods); | |
} | |
function copy(methods, destination, onlyIfAbsent) { | |
onlyIfAbsent = onlyIfAbsent || false; | |
for (var property in methods) { | |
var value = methods[property]; | |
if (!Object.isFunction(value)) continue; | |
if (!onlyIfAbsent || !(property in destination)) | |
destination[property] = value.methodize(); | |
} | |
} | |
function findDOMClass(tagName) { | |
var klass; | |
var trans = { | |
"OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph", | |
"FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": "DList", | |
"DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": "Heading", | |
"H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote", | |
"INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", "CAPTION": | |
"TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD": | |
"TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", "TR": | |
"TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET": | |
"FrameSet", "IFRAME": "IFrame" | |
}; | |
if (trans[tagName]) klass = 'HTML' + trans[tagName] + 'Element'; | |
if (window[klass]) return window[klass]; | |
klass = 'HTML' + tagName + 'Element'; | |
if (window[klass]) return window[klass]; | |
klass = 'HTML' + tagName.capitalize() + 'Element'; | |
if (window[klass]) return window[klass]; | |
window[klass] = { }; | |
window[klass].prototype = document.createElement(tagName).__proto__; | |
return window[klass]; | |
} | |
if (F.ElementExtensions) { | |
copy(Element.Methods, HTMLElement.prototype); | |
copy(Element.Methods.Simulated, HTMLElement.prototype, true); | |
} | |
if (F.SpecificElementExtensions) { | |
for (var tag in Element.Methods.ByTag) { | |
var klass = findDOMClass(tag); | |
if (Object.isUndefined(klass)) continue; | |
copy(T[tag], klass.prototype); | |
} | |
} | |
Object.extend(Element, Element.Methods); | |
delete Element.ByTag; | |
if (Element.extend.refresh) Element.extend.refresh(); | |
Element.cache = { }; | |
}; | |
document.viewport = { | |
getDimensions: function() { | |
var dimensions = { }; | |
var B = Prototype.Browser; | |
$w('width height').each(function(d) { | |
var D = d.capitalize(); | |
dimensions[d] = (B.WebKit && !document.evaluate) ? self['inner' + D] : | |
(B.Opera) ? document.body['client' + D] : document.documentElement['client' + D]; | |
}); | |
return dimensions; | |
}, | |
getWidth: function() { | |
return this.getDimensions().width; | |
}, | |
getHeight: function() { | |
return this.getDimensions().height; | |
}, | |
getScrollOffsets: function() { | |
return Element._returnOffset( | |
window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft, | |
window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop); | |
} | |
}; | |
/* Portions of the Selector class are derived from Jack Slocum’s DomQuery, | |
* part of YUI-Ext version 0.40, distributed under the terms of an MIT-style | |
* license. Please see http://www.yui-ext.com/ for more information. */ | |
var Selector = Class.create({ | |
initialize: function(expression) { | |
this.expression = expression.strip(); | |
this.compileMatcher(); | |
}, | |
shouldUseXPath: function() { | |
if (!Prototype.BrowserFeatures.XPath) return false; | |
var e = this.expression; | |
// Safari 3 chokes on :*-of-type and :empty | |
if (Prototype.Browser.WebKit && | |
(e.include("-of-type") || e.include(":empty"))) | |
return false; | |
// XPath can't do namespaced attributes, nor can it read | |
// the "checked" property from DOM nodes | |
if ((/(\[[\w-]*?:|:checked)/).test(this.expression)) | |
return false; | |
return true; | |
}, | |
compileMatcher: function() { | |
if (this.shouldUseXPath()) | |
return this.compileXPathMatcher(); | |
var e = this.expression, ps = Selector.patterns, h = Selector.handlers, | |
c = Selector.criteria, le, p, m; | |
if (Selector._cache[e]) { | |
this.matcher = Selector._cache[e]; | |
return; | |
} | |
this.matcher = ["this.matcher = function(root) {", | |
"var r = root, h = Selector.handlers, c = false, n;"]; | |
while (e && le != e && (/\S/).test(e)) { | |
le = e; | |
for (var i in ps) { | |
p = ps[i]; | |
if (m = e.match(p)) { | |
this.matcher.push(Object.isFunction(c[i]) ? c[i](m) : | |
new Template(c[i]).evaluate(m)); | |
e = e.replace(m[0], ''); | |
break; | |
} | |
} | |
} | |
this.matcher.push("return h.unique(n);\n}"); | |
eval(this.matcher.join('\n')); | |
Selector._cache[this.expression] = this.matcher; | |
}, | |
compileXPathMatcher: function() { | |
var e = this.expression, ps = Selector.patterns, | |
x = Selector.xpath, le, m; | |
if (Selector._cache[e]) { | |
this.xpath = Selector._cache[e]; return; | |
} | |
this.matcher = ['.//*']; | |
while (e && le != e && (/\S/).test(e)) { | |
le = e; | |
for (var i in ps) { | |
if (m = e.match(ps[i])) { | |
this.matcher.push(Object.isFunction(x[i]) ? x[i](m) : | |
new Template(x[i]).evaluate(m)); | |
e = e.replace(m[0], ''); | |
break; | |
} | |
} | |
} | |
this.xpath = this.matcher.join(''); | |
Selector._cache[this.expression] = this.xpath; | |
}, | |
findElements: function(root) { | |
root = root || document; | |
if (this.xpath) return document._getElementsByXPath(this.xpath, root); | |
return this.matcher(root); | |
}, | |
match: function(element) { | |
this.tokens = []; | |
var e = this.expression, ps = Selector.patterns, as = Selector.assertions; | |
var le, p, m; | |
while (e && le !== e && (/\S/).test(e)) { | |
le = e; | |
for (var i in ps) { | |
p = ps[i]; | |
if (m = e.match(p)) { | |
// use the Selector.assertions methods unless the selector | |
// is too complex. | |
if (as[i]) { | |
this.tokens.push([i, Object.clone(m)]); | |
e = e.replace(m[0], ''); | |
} else { | |
// reluctantly do a document-wide search | |
// and look for a match in the array | |
return this.findElements(document).include(element); | |
} | |
} | |
} | |
} | |
var match = true, name, matches; | |
for (var i = 0, token; token = this.tokens[i]; i++) { | |
name = token[0], matches = token[1]; | |
if (!Selector.assertions[name](element, matches)) { | |
match = false; break; | |
} | |
} | |
return match; | |
}, | |
toString: function() { | |
return this.expression; | |
}, | |
inspect: function() { | |
return "#<Selector:" + this.expression.inspect() + ">"; | |
} | |
}); | |
Object.extend(Selector, { | |
_cache: { }, | |
xpath: { | |
descendant: "//*", | |
child: "/*", | |
adjacent: "/following-sibling::*[1]", | |
laterSibling: '/following-sibling::*', | |
tagName: function(m) { | |
if (m[1] == '*') return ''; | |
return "[local-name()='" + m[1].toLowerCase() + | |
"' or local-name()='" + m[1].toUpperCase() + "']"; | |
}, | |
className: "[contains(concat(' ', @class, ' '), ' #{1} ')]", | |
id: "[@id='#{1}']", | |
attrPresence: function(m) { | |
m[1] = m[1].toLowerCase(); | |
return new Template("[@#{1}]").evaluate(m); | |
}, | |
attr: function(m) { | |
m[1] = m[1].toLowerCase(); | |
m[3] = m[5] || m[6]; | |
return new Template(Selector.xpath.operators[m[2]]).evaluate(m); | |
}, | |
pseudo: function(m) { | |
var h = Selector.xpath.pseudos[m[1]]; | |
if (!h) return ''; | |
if (Object.isFunction(h)) return h(m); | |
return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m); | |
}, | |
operators: { | |
'=': "[@#{1}='#{3}']", | |
'!=': "[@#{1}!='#{3}']", | |
'^=': "[starts-with(@#{1}, '#{3}')]", | |
'$=': "[substring(@#{1}, (string-length(@#{1}) - string-length('#{3}') + 1))='#{3}']", | |
'*=': "[contains(@#{1}, '#{3}')]", | |
'~=': "[contains(concat(' ', @#{1}, ' '), ' #{3} ')]", | |
'|=': "[contains(concat('-', @#{1}, '-'), '-#{3}-')]" | |
}, | |
pseudos: { | |
'first-child': '[not(preceding-sibling::*)]', | |
'last-child': '[not(following-sibling::*)]', | |
'only-child': '[not(preceding-sibling::* or following-sibling::*)]', | |
'empty': "[count(*) = 0 and (count(text()) = 0 or translate(text(), ' \t\r\n', '') = '')]", | |
'checked': "[@checked]", | |
'disabled': "[@disabled]", | |
'enabled': "[not(@disabled)]", | |
'not': function(m) { | |
var e = m[6], p = Selector.patterns, | |
x = Selector.xpath, le, v; | |
var exclusion = []; | |
while (e && le != e && (/\S/).test(e)) { | |
le = e; | |
for (var i in p) { | |
if (m = e.match(p[i])) { | |
v = Object.isFunction(x[i]) ? x[i](m) : new Template(x[i]).evaluate(m); | |
exclusion.push("(" + v.substring(1, v.length - 1) + ")"); | |
e = e.replace(m[0], ''); | |
break; | |
} | |
} | |
} | |
return "[not(" + exclusion.join(" and ") + ")]"; | |
}, | |
'nth-child': function(m) { | |
return Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ", m); | |
}, | |
'nth-last-child': function(m) { | |
return Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ", m); | |
}, | |
'nth-of-type': function(m) { | |
return Selector.xpath.pseudos.nth("position() ", m); | |
}, | |
'nth-last-of-type': function(m) { | |
return Selector.xpath.pseudos.nth("(last() + 1 - position()) ", m); | |
}, | |
'first-of-type': function(m) { | |
m[6] = "1"; return Selector.xpath.pseudos['nth-of-type'](m); | |
}, | |
'last-of-type': function(m) { | |
m[6] = "1"; return Selector.xpath.pseudos['nth-last-of-type'](m); | |
}, | |
'only-of-type': function(m) { | |
var p = Selector.xpath.pseudos; return p['first-of-type'](m) + p['last-of-type'](m); | |
}, | |
nth: function(fragment, m) { | |
var mm, formula = m[6], predicate; | |
if (formula == 'even') formula = '2n+0'; | |
if (formula == 'odd') formula = '2n+1'; | |
if (mm = formula.match(/^(\d+)$/)) // digit only | |
return '[' + fragment + "= " + mm[1] + ']'; | |
if (mm = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b | |
if (mm[1] == "-") mm[1] = -1; | |
var a = mm[1] ? Number(mm[1]) : 1; | |
var b = mm[2] ? Number(mm[2]) : 0; | |
predicate = "[((#{fragment} - #{b}) mod #{a} = 0) and " + | |
"((#{fragment} - #{b}) div #{a} >= 0)]"; | |
return new Template(predicate).evaluate({ | |
fragment: fragment, a: a, b: b }); | |
} | |
} | |
} | |
}, | |
criteria: { | |
tagName: 'n = h.tagName(n, r, "#{1}", c); c = false;', | |
className: 'n = h.className(n, r, "#{1}", c); c = false;', | |
id: 'n = h.id(n, r, "#{1}", c); c = false;', | |
attrPresence: 'n = h.attrPresence(n, r, "#{1}", c); c = false;', | |
attr: function(m) { | |
m[3] = (m[5] || m[6]); | |
return new Template('n = h.attr(n, r, "#{1}", "#{3}", "#{2}", c); c = false;').evaluate(m); | |
}, | |
pseudo: function(m) { | |
if (m[6]) m[6] = m[6].replace(/"/g, '\\"'); | |
return new Template('n = h.pseudo(n, "#{1}", "#{6}", r, c); c = false;').evaluate(m); | |
}, | |
descendant: 'c = "descendant";', | |
child: 'c = "child";', | |
adjacent: 'c = "adjacent";', | |
laterSibling: 'c = "laterSibling";' | |
}, | |
patterns: { | |
// combinators must be listed first | |
// (and descendant needs to be last combinator) | |
laterSibling: /^\s*~\s*/, | |
child: /^\s*>\s*/, | |
adjacent: /^\s*\+\s*/, | |
descendant: /^\s/, | |
// selectors follow | |
tagName: /^\s*(\*|[\w\-]+)(\b|$)?/, | |
id: /^#([\w\-\*]+)(\b|$)/, | |
className: /^\.([\w\-\*]+)(\b|$)/, | |
pseudo: | |
/^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis)abled|not)(\((.*?)\))?(\b|$|(?=\s|[:+~>]))/, | |
attrPresence: /^\[([\w]+)\]/, | |
attr: /\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=)\s*((['"])([^\4]*?)\4|([^'"][^\]]*?)))?\]/ | |
}, | |
// for Selector.match and Element#match | |
assertions: { | |
tagName: function(element, matches) { | |
return matches[1].toUpperCase() == element.tagName.toUpperCase(); | |
}, | |
className: function(element, matches) { | |
return Element.hasClassName(element, matches[1]); | |
}, | |
id: function(element, matches) { | |
return element.id === matches[1]; | |
}, | |
attrPresence: function(element, matches) { | |
return Element.hasAttribute(element, matches[1]); | |
}, | |
attr: function(element, matches) { | |
var nodeValue = Element.readAttribute(element, matches[1]); | |
return nodeValue && Selector.operators[matches[2]](nodeValue, matches[5] || matches[6]); | |
} | |
}, | |
handlers: { | |
// UTILITY FUNCTIONS | |
// joins two collections | |
concat: function(a, b) { | |
for (var i = 0, node; node = b[i]; i++) | |
a.push(node); | |
return a; | |
}, | |
// marks an array of nodes for counting | |
mark: function(nodes) { | |
var _true = Prototype.emptyFunction; | |
for (var i = 0, node; node = nodes[i]; i++) | |
node._countedByPrototype = _true; | |
return nodes; | |
}, | |
unmark: function(nodes) { | |
for (var i = 0, node; node = nodes[i]; i++) | |
node._countedByPrototype = undefined; | |
return nodes; | |
}, | |
// mark each child node with its position (for nth calls) | |
// "ofType" flag indicates whether we're indexing for nth-of-type | |
// rather than nth-child | |
index: function(parentNode, reverse, ofType) { | |
parentNode._countedByPrototype = Prototype.emptyFunction; | |
if (reverse) { | |
for (var nodes = parentNode.childNodes, i = nodes.length - 1, j = 1; i >= 0; i--) { | |
var node = nodes[i]; | |
if (node.nodeType == 1 && (!ofType || node._countedByPrototype)) node.nodeIndex = j++; | |
} | |
} else { | |
for (var i = 0, j = 1, nodes = parentNode.childNodes; node = nodes[i]; i++) | |
if (node.nodeType == 1 && (!ofType || node._countedByPrototype)) node.nodeIndex = j++; | |
} | |
}, | |
// filters out duplicates and extends all nodes | |
unique: function(nodes) { | |
if (nodes.length == 0) return nodes; | |
var results = [], n; | |
for (var i = 0, l = nodes.length; i < l; i++) | |
if (!(n = nodes[i])._countedByPrototype) { | |
n._countedByPrototype = Prototype.emptyFunction; | |
results.push(Element.extend(n)); | |
} | |
return Selector.handlers.unmark(results); | |
}, | |
// COMBINATOR FUNCTIONS | |
descendant: function(nodes) { | |
var h = Selector.handlers; | |
for (var i = 0, results = [], node; node = nodes[i]; i++) | |
h.concat(results, node.getElementsByTagName('*')); | |
return results; | |
}, | |
child: function(nodes) { | |
var h = Selector.handlers; | |
for (var i = 0, results = [], node; node = nodes[i]; i++) { | |
for (var j = 0, child; child = node.childNodes[j]; j++) | |
if (child.nodeType == 1 && child.tagName != '!') results.push(child); | |
} | |
return results; | |
}, | |
adjacent: function(nodes) { | |
for (var i = 0, results = [], node; node = nodes[i]; i++) { | |
var next = this.nextElementSibling(node); | |
if (next) results.push(next); | |
} | |
return results; | |
}, | |
laterSibling: function(nodes) { | |
var h = Selector.handlers; | |
for (var i = 0, results = [], node; node = nodes[i]; i++) | |
h.concat(results, Element.nextSiblings(node)); | |
return results; | |
}, | |
nextElementSibling: function(node) { | |
while (node = node.nextSibling) | |
if (node.nodeType == 1) return node; | |
return null; | |
}, | |
previousElementSibling: function(node) { | |
while (node = node.previousSibling) | |
if (node.nodeType == 1) return node; | |
return null; | |
}, | |
// TOKEN FUNCTIONS | |
tagName: function(nodes, root, tagName, combinator) { | |
var uTagName = tagName.toUpperCase(); | |
var results = [], h = Selector.handlers; | |
if (nodes) { | |
if (combinator) { | |
// fastlane for ordinary descendant combinators | |
if (combinator == "descendant") { | |
for (var i = 0, node; node = nodes[i]; i++) | |
h.concat(results, node.getElementsByTagName(tagName)); | |
return results; | |
} else nodes = this[combinator](nodes); | |
if (tagName == "*") return nodes; | |
} | |
for (var i = 0, node; node = nodes[i]; i++) | |
if (node.tagName.toUpperCase() === uTagName) results.push(node); | |
return results; | |
} else return root.getElementsByTagName(tagName); | |
}, | |
id: function(nodes, root, id, combinator) { | |
var targetNode = $(id), h = Selector.handlers; | |
if (!targetNode) return []; | |
if (!nodes && root == document) return [targetNode]; | |
if (nodes) { | |
if (combinator) { | |
if (combinator == 'child') { | |
for (var i = 0, node; node = nodes[i]; i++) | |
if (targetNode.parentNode == node) return [targetNode]; | |
} else if (combinator == 'descendant') { | |
for (var i = 0, node; node = nodes[i]; i++) | |
if (Element.descendantOf(targetNode, node)) return [targetNode]; | |
} else if (combinator == 'adjacent') { | |
for (var i = 0, node; node = nodes[i]; i++) | |
if (Selector.handlers.previousElementSibling(targetNode) == node) | |
return [targetNode]; | |
} else nodes = h[combinator](nodes); | |
} | |
for (var i = 0, node; node = nodes[i]; i++) | |
if (node == targetNode) return [targetNode]; | |
return []; | |
} | |
return (targetNode && Element.descendantOf(targetNode, root)) ? [targetNode] : []; | |
}, | |
className: function(nodes, root, className, combinator) { | |
if (nodes && combinator) nodes = this[combinator](nodes); | |
return Selector.handlers.byClassName(nodes, root, className); | |
}, | |
byClassName: function(nodes, root, className) { | |
if (!nodes) nodes = Selector.handlers.descendant([root]); | |
var needle = ' ' + className + ' '; | |
for (var i = 0, results = [], node, nodeClassName; node = nodes[i]; i++) { | |
nodeClassName = node.className; | |
if (nodeClassName.length == 0) continue; | |
if (nodeClassName == className || (' ' + nodeClassName + ' ').include(needle)) | |
results.push(node); | |
} | |
return results; | |
}, | |
attrPresence: function(nodes, root, attr, combinator) { | |
if (!nodes) nodes = root.getElementsByTagName("*"); | |
if (nodes && combinator) nodes = this[combinator](nodes); | |
var results = []; | |
for (var i = 0, node; node = nodes[i]; i++) | |
if (Element.hasAttribute(node, attr)) results.push(node); | |
return results; | |
}, | |
attr: function(nodes, root, attr, value, operator, combinator) { | |
if (!nodes) nodes = root.getElementsByTagName("*"); | |
if (nodes && combinator) nodes = this[combinator](nodes); | |
var handler = Selector.operators[operator], results = []; | |
for (var i = 0, node; node = nodes[i]; i++) { | |
var nodeValue = Element.readAttribute(node, attr); | |
if (nodeValue === null) continue; | |
if (handler(nodeValue, value)) results.push(node); | |
} | |
return results; | |
}, | |
pseudo: function(nodes, name, value, root, combinator) { | |
if (nodes && combinator) nodes = this[combinator](nodes); | |
if (!nodes) nodes = root.getElementsByTagName("*"); | |
return Selector.pseudos[name](nodes, value, root); | |
} | |
}, | |
pseudos: { | |
'first-child': function(nodes, value, root) { | |
for (var i = 0, results = [], node; node = nodes[i]; i++) { | |
if (Selector.handlers.previousElementSibling(node)) continue; | |
results.push(node); | |
} | |
return results; | |
}, | |
'last-child': function(nodes, value, root) { | |
for (var i = 0, results = [], node; node = nodes[i]; i++) { | |
if (Selector.handlers.nextElementSibling(node)) continue; | |
results.push(node); | |
} | |
return results; | |
}, | |
'only-child': function(nodes, value, root) { | |
var h = Selector.handlers; | |
for (var i = 0, results = [], node; node = nodes[i]; i++) | |
if (!h.previousElementSibling(node) && !h.nextElementSibling(node)) | |
results.push(node); | |
return results; | |
}, | |
'nth-child': function(nodes, formula, root) { | |
return Selector.pseudos.nth(nodes, formula, root); | |
}, | |
'nth-last-child': function(nodes, formula, root) { | |
return Selector.pseudos.nth(nodes, formula, root, true); | |
}, | |
'nth-of-type': function(nodes, formula, root) { | |
return Selector.pseudos.nth(nodes, formula, root, false, true); | |
}, | |
'nth-last-of-type': function(nodes, formula, root) { | |
return Selector.pseudos.nth(nodes, formula, root, true, true); | |
}, | |
'first-of-type': function(nodes, formula, root) { | |
return Selector.pseudos.nth(nodes, "1", root, false, true); | |
}, | |
'last-of-type': function(nodes, formula, root) { | |
return Selector.pseudos.nth(nodes, "1", root, true, true); | |
}, | |
'only-of-type': function(nodes, formula, root) { | |
var p = Selector.pseudos; | |
return p['last-of-type'](p['first-of-type'](nodes, formula, root), formula, root); | |
}, | |
// handles the an+b logic | |
getIndices: function(a, b, total) { | |
if (a == 0) return b > 0 ? [b] : []; | |
return $R(1, total).inject([], function(memo, i) { | |
if (0 == (i - b) % a && (i - b) / a >= 0) memo.push(i); | |
return memo; | |
}); | |
}, | |
// handles nth(-last)-child, nth(-last)-of-type, and (first|last)-of-type | |
nth: function(nodes, formula, root, reverse, ofType) { | |
if (nodes.length == 0) return []; | |
if (formula == 'even') formula = '2n+0'; | |
if (formula == 'odd') formula = '2n+1'; | |
var h = Selector.handlers, results = [], indexed = [], m; | |
h.mark(nodes); | |
for (var i = 0, node; node = nodes[i]; i++) { | |
if (!node.parentNode._countedByPrototype) { | |
h.index(node.parentNode, reverse, ofType); | |
indexed.push(node.parentNode); | |
} | |
} | |
if (formula.match(/^\d+$/)) { // just a number | |
formula = Number(formula); | |
for (var i = 0, node; node = nodes[i]; i++) | |
if (node.nodeIndex == formula) results.push(node); | |
} else if (m = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b | |
if (m[1] == "-") m[1] = -1; | |
var a = m[1] ? Number(m[1]) : 1; | |
var b = m[2] ? Number(m[2]) : 0; | |
var indices = Selector.pseudos.getIndices(a, b, nodes.length); | |
for (var i = 0, node, l = indices.length; node = nodes[i]; i++) { | |
for (var j = 0; j < l; j++) | |
if (node.nodeIndex == indices[j]) results.push(node); | |
} | |
} | |
h.unmark(nodes); | |
h.unmark(indexed); | |
return results; | |
}, | |
'empty': function(nodes, value, root) { | |
for (var i = 0, results = [], node; node = nodes[i]; i++) { | |
// IE treats comments as element nodes | |
if (node.tagName == '!' || (node.firstChild && !node.innerHTML.match(/^\s*$/))) continue; | |
results.push(node); | |
} | |
return results; | |
}, | |
'not': function(nodes, selector, root) { | |
var h = Selector.handlers, selectorType, m; | |
var exclusions = new Selector(selector).findElements(root); | |
h.mark(exclusions); | |
for (var i = 0, results = [], node; node = nodes[i]; i++) | |
if (!node._countedByPrototype) results.push(node); | |
h.unmark(exclusions); | |
return results; | |
}, | |
'enabled': function(nodes, value, root) { | |
for (var i = 0, results = [], node; node = nodes[i]; i++) | |
if (!node.disabled) results.push(node); | |
return results; | |
}, | |
'disabled': function(nodes, value, root) { | |
for (var i = 0, results = [], node; node = nodes[i]; i++) | |
if (node.disabled) results.push(node); | |
return results; | |
}, | |
'checked': function(nodes, value, root) { | |
for (var i = 0, results = [], node; node = nodes[i]; i++) | |
if (node.checked) results.push(node); | |
return results; | |
} | |
}, | |
operators: { | |
'=': function(nv, v) { return nv == v; }, | |
'!=': function(nv, v) { return nv != v; }, | |
'^=': function(nv, v) { return nv.startsWith(v); }, | |
'$=': function(nv, v) { return nv.endsWith(v); }, | |
'*=': function(nv, v) { return nv.include(v); }, | |
'~=': function(nv, v) { return (' ' + nv + ' ').include(' ' + v + ' '); }, | |
'|=': function(nv, v) { return ('-' + nv.toUpperCase() + '-').include('-' + v.toUpperCase() + '-'); } | |
}, | |
split: function(expression) { | |
var expressions = []; | |
expression.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/, function(m) { | |
expressions.push(m[1].strip()); | |
}); | |
return expressions; | |
}, | |
matchElements: function(elements, expression) { | |
var matches = $$(expression), h = Selector.handlers; | |
h.mark(matches); | |
for (var i = 0, results = [], element; element = elements[i]; i++) | |
if (element._countedByPrototype) results.push(element); | |
h.unmark(matches); | |
return results; | |
}, | |
findElement: function(elements, expression, index) { | |
if (Object.isNumber(expression)) { | |
index = expression; expression = false; | |
} | |
return Selector.matchElements(elements, expression || '*')[index || 0]; | |
}, | |
findChildElements: function(element, expressions) { | |
expressions = Selector.split(expressions.join(',')); | |
var results = [], h = Selector.handlers; | |
for (var i = 0, l = expressions.length, selector; i < l; i++) { | |
selector = new Selector(expressions[i].strip()); | |
h.concat(results, selector.findElements(element)); | |
} | |
return (l > 1) ? h.unique(results) : results; | |
} | |
}); | |
if (Prototype.Browser.IE) { | |
Object.extend(Selector.handlers, { | |
// IE returns comment nodes on getElementsByTagName("*"). | |
// Filter them out. | |
concat: function(a, b) { | |
for (var i = 0, node; node = b[i]; i++) | |
if (node.tagName !== "!") a.push(node); | |
return a; | |
}, | |
// IE improperly serializes _countedByPrototype in (inner|outer)HTML. | |
unmark: function(nodes) { | |
for (var i = 0, node; node = nodes[i]; i++) | |
node.removeAttribute('_countedByPrototype'); | |
return nodes; | |
} | |
}); | |
} | |
function $$() { | |
return Selector.findChildElements(document, $A(arguments)); | |
} | |
var Form = { | |
reset: function(form) { | |
$(form).reset(); | |
return form; | |
}, | |
serializeElements: function(elements, options) { | |
if (typeof options != 'object') options = { hash: !!options }; | |
else if (Object.isUndefined(options.hash)) options.hash = true; | |
var key, value, submitted = false, submit = options.submit; | |
var data = elements.inject({ }, function(result, element) { | |
if (!element.disabled && element.name) { | |
key = element.name; value = $(element).getValue(); | |
if (value != null && (element.type != 'submit' || (!submitted && | |
submit !== false && (!submit || key == submit) && (submitted = true)))) { | |
if (key in result) { | |
// a key is already present; construct an array of values | |
if (!Object.isArray(result[key])) result[key] = [result[key]]; | |
result[key].push(value); | |
} | |
else result[key] = value; | |
} | |
} | |
return result; | |
}); | |
return options.hash ? data : Object.toQueryString(data); | |
} | |
}; | |
Form.Methods = { | |
serialize: function(form, options) { | |
return Form.serializeElements(Form.getElements(form), options); | |
}, | |
getElements: function(form) { | |
return $A($(form).getElementsByTagName('*')).inject([], | |
function(elements, child) { | |
if (Form.Element.Serializers[child.tagName.toLowerCase()]) | |
elements.push(Element.extend(child)); | |
return elements; | |
} | |
); | |
}, | |
getInputs: function(form, typeName, name) { | |
form = $(form); | |
var inputs = form.getElementsByTagName('input'); | |
if (!typeName && !name) return $A(inputs).map(Element.extend); | |
for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) { | |
var input = inputs[i]; | |
if ((typeName && input.type != typeName) || (name && input.name != name)) | |
continue; | |
matchingInputs.push(Element.extend(input)); | |
} | |
return matchingInputs; | |
}, | |
disable: function(form) { | |
form = $(form); | |
Form.getElements(form).invoke('disable'); | |
return form; | |
}, | |
enable: function(form) { | |
form = $(form); | |
Form.getElements(form).invoke('enable'); | |
return form; | |
}, | |
findFirstElement: function(form) { | |
var elements = $(form).getElements().findAll(function(element) { | |
return 'hidden' != element.type && !element.disabled; | |
}); | |
var firstByIndex = elements.findAll(function(element) { | |
return element.hasAttribute('tabIndex') && element.tabIndex >= 0; | |
}).sortBy(function(element) { return element.tabIndex }).first(); | |
return firstByIndex ? firstByIndex : elements.find(function(element) { | |
return ['input', 'select', 'textarea'].include(element.tagName.toLowerCase()); | |
}); | |
}, | |
focusFirstElement: function(form) { | |
form = $(form); | |
form.findFirstElement().activate(); | |
return form; | |
}, | |
request: function(form, options) { | |
form = $(form), options = Object.clone(options || { }); | |
var params = options.parameters, action = form.readAttribute('action') || ''; | |
if (action.blank()) action = window.location.href; | |
options.parameters = form.serialize(true); | |
if (params) { | |
if (Object.isString(params)) params = params.toQueryParams(); | |
Object.extend(options.parameters, params); | |
} | |
if (form.hasAttribute('method') && !options.method) | |
options.method = form.method; | |
return new Ajax.Request(action, options); | |
} | |
}; | |
/*--------------------------------------------------------------------------*/ | |
Form.Element = { | |
focus: function(element) { | |
$(element).focus(); | |
return element; | |
}, | |
select: function(element) { | |
$(element).select(); | |
return element; | |
} | |
}; | |
Form.Element.Methods = { | |
serialize: function(element) { | |
element = $(element); | |
if (!element.disabled && element.name) { | |
var value = element.getValue(); | |
if (value != undefined) { | |
var pair = { }; | |
pair[element.name] = value; | |
return Object.toQueryString(pair); | |
} | |
} | |
return ''; | |
}, | |
getValue: function(element) { | |
element = $(element); | |
var method = element.tagName.toLowerCase(); | |
return Form.Element.Serializers[method](element); | |
}, | |
setValue: function(element, value) { | |
element = $(element); | |
var method = element.tagName.toLowerCase(); | |
Form.Element.Serializers[method](element, value); | |
return element; | |
}, | |
clear: function(element) { | |
$(element).value = ''; | |
return element; | |
}, | |
present: function(element) { | |
return $(element).value != ''; | |
}, | |
activate: function(element) { | |
element = $(element); | |
try { | |
element.focus(); | |
if (element.select && (element.tagName.toLowerCase() != 'input' || | |
!['button', 'reset', 'submit'].include(element.type))) |