You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@climate.apache.org by pr...@apache.org on 2013/08/27 07:35:49 UTC
svn commit: r1517753 [26/33] - in /incubator/climate/branches/rcmet-2.1.1:
./ src/ src/main/ src/main/python/ src/main/python/bin/
src/main/python/docs/ src/main/python/docs/_static/
src/main/python/docs/_templates/ src/main/python/rcmes/ src/main/pyth...
Added: incubator/climate/branches/rcmet-2.1.1/src/main/vm/src/cookbooks/python/recipes/package.rb
URL: http://svn.apache.org/viewvc/incubator/climate/branches/rcmet-2.1.1/src/main/vm/src/cookbooks/python/recipes/package.rb?rev=1517753&view=auto
==============================================================================
--- incubator/climate/branches/rcmet-2.1.1/src/main/vm/src/cookbooks/python/recipes/package.rb (added)
+++ incubator/climate/branches/rcmet-2.1.1/src/main/vm/src/cookbooks/python/recipes/package.rb Tue Aug 27 05:35:42 2013
@@ -0,0 +1,58 @@
+#
+# Author:: Seth Chisamore <sc...@opscode.com>
+# Cookbook Name:: python
+# Recipe:: package
+#
+# Copyright 2011, Opscode, 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.
+#
+
+# COOK-1016 Handle RHEL/CentOS namings of python packages, by installing EPEL repo & package
+# This implementation was determined a stopgap measure until CHEF-2410 is implemented and widespread.
+if node['platform'] == 'centos' || node['platform'] == 'redhat'
+ major_version = node['platform_version'].split('.').first.to_i
+ if major_version == 5
+ include_recipe 'yum::epel'
+ else
+ # Do nothing.
+ end
+end
+
+python_pkgs = if node['platform'] == 'centos' || node['platform'] == 'redhat'
+ major_version = node['platform_version'].split('.').first.to_i
+ if major_version == 6
+ ["python", "python-devel"]
+ else
+ ["python26", "python26-devel"]
+ end
+ else
+ value_for_platform(
+ ["debian","ubuntu"] => {
+ "default" => ["python","python-dev"]
+ },
+ ["fedora","amazon"] => {
+ "default" => ["python","python-devel"]
+ },
+ ["freebsd"] => {
+ "default" => ["python"]
+ },
+ "default" => ["python","python-dev"]
+ )
+ end
+
+python_pkgs.each do |pkg|
+ package pkg do
+ action :install
+ end
+end
Propchange: incubator/climate/branches/rcmet-2.1.1/src/main/vm/src/cookbooks/python/recipes/package.rb
------------------------------------------------------------------------------
svn:executable = *
Added: incubator/climate/branches/rcmet-2.1.1/src/main/vm/src/cookbooks/python/recipes/pip.rb
URL: http://svn.apache.org/viewvc/incubator/climate/branches/rcmet-2.1.1/src/main/vm/src/cookbooks/python/recipes/pip.rb?rev=1517753&view=auto
==============================================================================
--- incubator/climate/branches/rcmet-2.1.1/src/main/vm/src/cookbooks/python/recipes/pip.rb (added)
+++ incubator/climate/branches/rcmet-2.1.1/src/main/vm/src/cookbooks/python/recipes/pip.rb Tue Aug 27 05:35:42 2013
@@ -0,0 +1,41 @@
+#
+# Author:: Seth Chisamore <sc...@opscode.com>
+# Cookbook Name:: python
+# Recipe:: pip
+#
+# Copyright 2011, Opscode, 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.
+#
+
+python_bindir = "#{node['python']['prefix_dir']}/bin"
+pip_bindir = "#{node['python']['pip']['prefix_dir']}/bin"
+
+# Ubuntu's python-setuptools, python-pip and python-virtualenv packages
+# are broken...this feels like Rubygems!
+# http://stackoverflow.com/questions/4324558/whats-the-proper-way-to-install-pip-virtualenv-and-distribute-for-python
+# https://bitbucket.org/ianb/pip/issue/104/pip-uninstall-on-ubuntu-linux
+remote_file "#{Chef::Config[:file_cache_path]}/distribute_setup.py" do
+ source "http://python-distribute.org/distribute_setup.py"
+ mode "0644"
+ not_if { ::File.exists?("#{pip_bindir}/pip") }
+end
+
+bash "install-pip" do
+ cwd Chef::Config[:file_cache_path]
+ code <<-EOF
+ #{python_bindir}/python distribute_setup.py
+ #{pip_bindir}/easy_install pip
+ EOF
+ not_if { ::File.exists?("#{pip_bindir}/pip") }
+end
Propchange: incubator/climate/branches/rcmet-2.1.1/src/main/vm/src/cookbooks/python/recipes/pip.rb
------------------------------------------------------------------------------
svn:executable = *
Added: incubator/climate/branches/rcmet-2.1.1/src/main/vm/src/cookbooks/python/recipes/source.rb
URL: http://svn.apache.org/viewvc/incubator/climate/branches/rcmet-2.1.1/src/main/vm/src/cookbooks/python/recipes/source.rb?rev=1517753&view=auto
==============================================================================
--- incubator/climate/branches/rcmet-2.1.1/src/main/vm/src/cookbooks/python/recipes/source.rb (added)
+++ incubator/climate/branches/rcmet-2.1.1/src/main/vm/src/cookbooks/python/recipes/source.rb Tue Aug 27 05:35:42 2013
@@ -0,0 +1,52 @@
+#
+# Author:: Seth Chisamore <sc...@opscode.com>
+# Cookbook Name:: python
+# Recipe:: source
+#
+# Copyright 2011, Opscode, 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.
+#
+
+configure_options = node['python']['configure_options'].join(" ")
+
+packages = value_for_platform(
+ ["centos","redhat","fedora"] =>
+ {"default" => ["openssl-devel","bzip2-devel","zlib-devel","expat-devel","db4-devel","sqlite-devel","ncurses-devel","readline-devel"]},
+ "default" =>
+ ["libssl-dev","libbz2-dev","zlib1g-dev","libexpat1-dev","libdb4.8-dev","libsqlite3-dev","libncursesw5-dev","libncurses5-dev","libreadline-dev"]
+ )
+
+packages.each do |dev_pkg|
+ package dev_pkg
+end
+
+version = node['python']['version']
+install_path = "#{node['python']['prefix_dir']}/lib/python#{version.split(/(^\d+\.\d+)/)[1]}"
+
+remote_file "#{Chef::Config[:file_cache_path]}/Python-#{version}.tar.bz2" do
+ source "#{node['python']['url']}/#{version}/Python-#{version}.tar.bz2"
+ checksum node['python']['checksum']
+ mode "0644"
+ not_if { ::File.exists?(install_path) }
+end
+
+bash "build-and-install-python" do
+ cwd Chef::Config[:file_cache_path]
+ code <<-EOF
+ tar -jxvf Python-#{version}.tar.bz2
+ (cd Python-#{version} && ./configure #{configure_options})
+ (cd Python-#{version} && make && make install)
+ EOF
+ not_if { ::File.exists?(install_path) }
+end
Propchange: incubator/climate/branches/rcmet-2.1.1/src/main/vm/src/cookbooks/python/recipes/source.rb
------------------------------------------------------------------------------
svn:executable = *
Added: incubator/climate/branches/rcmet-2.1.1/src/main/vm/src/cookbooks/python/recipes/virtualenv.rb
URL: http://svn.apache.org/viewvc/incubator/climate/branches/rcmet-2.1.1/src/main/vm/src/cookbooks/python/recipes/virtualenv.rb?rev=1517753&view=auto
==============================================================================
--- incubator/climate/branches/rcmet-2.1.1/src/main/vm/src/cookbooks/python/recipes/virtualenv.rb (added)
+++ incubator/climate/branches/rcmet-2.1.1/src/main/vm/src/cookbooks/python/recipes/virtualenv.rb Tue Aug 27 05:35:42 2013
@@ -0,0 +1,25 @@
+#
+# Author:: Seth Chisamore <sc...@opscode.com>
+# Cookbook Name:: python
+# Recipe:: virtualenv
+#
+# Copyright 2011, Opscode, 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.
+#
+
+include_recipe "python::pip"
+
+python_pip "virtualenv" do
+ action :install
+end
Propchange: incubator/climate/branches/rcmet-2.1.1/src/main/vm/src/cookbooks/python/recipes/virtualenv.rb
------------------------------------------------------------------------------
svn:executable = *
Added: incubator/climate/branches/rcmet-2.1.1/src/main/vm/src/cookbooks/python/resources/pip.rb
URL: http://svn.apache.org/viewvc/incubator/climate/branches/rcmet-2.1.1/src/main/vm/src/cookbooks/python/resources/pip.rb?rev=1517753&view=auto
==============================================================================
--- incubator/climate/branches/rcmet-2.1.1/src/main/vm/src/cookbooks/python/resources/pip.rb (added)
+++ incubator/climate/branches/rcmet-2.1.1/src/main/vm/src/cookbooks/python/resources/pip.rb Tue Aug 27 05:35:42 2013
@@ -0,0 +1,27 @@
+#
+# Author:: Seth Chisamore <sc...@opscode.com>
+# Cookbook Name:: python
+# Resource:: pip
+#
+# Copyright:: 2011, Opscode, Inc <le...@opscode.com>
+#
+# 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.
+#
+
+actions :install, :upgrade, :remove, :purge
+
+attribute :package_name, :kind_of => String, :name_attribute => true
+attribute :version, :default => nil
+attribute :timeout, :default => nil
+attribute :virtualenv, :kind_of => String
+attribute :options, :kind_of => String
Propchange: incubator/climate/branches/rcmet-2.1.1/src/main/vm/src/cookbooks/python/resources/pip.rb
------------------------------------------------------------------------------
svn:executable = *
Added: incubator/climate/branches/rcmet-2.1.1/src/main/vm/src/cookbooks/python/resources/virtualenv.rb
URL: http://svn.apache.org/viewvc/incubator/climate/branches/rcmet-2.1.1/src/main/vm/src/cookbooks/python/resources/virtualenv.rb?rev=1517753&view=auto
==============================================================================
--- incubator/climate/branches/rcmet-2.1.1/src/main/vm/src/cookbooks/python/resources/virtualenv.rb (added)
+++ incubator/climate/branches/rcmet-2.1.1/src/main/vm/src/cookbooks/python/resources/virtualenv.rb Tue Aug 27 05:35:42 2013
@@ -0,0 +1,27 @@
+#
+# Author:: Seth Chisamore <sc...@opscode.com>
+# Cookbook Name:: python
+# Resource:: virtualenv
+#
+# Copyright:: 2011, Opscode, Inc <le...@opscode.com>
+#
+# 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.
+#
+
+actions :create, :delete
+
+attribute :path, :kind_of => String, :name_attribute => true
+attribute :interpreter, :default => 'python'
+attribute :owner, :regex => Chef::Config[:user_valid_regex]
+attribute :group, :regex => Chef::Config[:group_valid_regex]
+attribute :options, :kind_of => String
Propchange: incubator/climate/branches/rcmet-2.1.1/src/main/vm/src/cookbooks/python/resources/virtualenv.rb
------------------------------------------------------------------------------
svn:executable = *
Added: incubator/climate/branches/rcmet-2.1.1/src/main/vm/src/cookbooks/vagrant_main/recipes/default.rb
URL: http://svn.apache.org/viewvc/incubator/climate/branches/rcmet-2.1.1/src/main/vm/src/cookbooks/vagrant_main/recipes/default.rb?rev=1517753&view=auto
==============================================================================
--- incubator/climate/branches/rcmet-2.1.1/src/main/vm/src/cookbooks/vagrant_main/recipes/default.rb (added)
+++ incubator/climate/branches/rcmet-2.1.1/src/main/vm/src/cookbooks/vagrant_main/recipes/default.rb Tue Aug 27 05:35:42 2013
@@ -0,0 +1,56 @@
+# APT Package Management --------------------------------------------
+# Install the APT package management tool, and then install any
+# packages that we will need to have to complete the buildout.
+#
+include_recipe "apt"
+include_recipe "build-essential"
+gem_package "ruby-shadow" do
+ action :install
+end
+
+# User Creation -----------------------------------------------------
+# Create a user account for the 'rcmet' user
+#
+user "rcmet" do
+ comment "RCMET user"
+ uid 1001
+ #gid "users"
+ home "/usr/local/rcmet"
+ shell "/bin/bash"
+ #password "1bob1bob"
+end
+
+directory "/usr/local/rcmet" do
+ mode "0777"
+end
+
+
+# Python Environment Setup ------------------------------------------
+# Install Python and package management tools 'pip' and 'virtualenv'.
+# Then create a virtual environment in the 'rcmet' user's home
+# directory, into which all RCMET python code and dependencies can be
+# installed.
+#
+include_recipe "python"
+
+python_virtualenv "/usr/local/rcmet/python-env" do
+ owner "rcmet"
+ group "rcmet"
+ action :create
+end
+
+# Apache Web Server Configuration -----------------------------------
+# Install the Apache2 HTTPD Web Server, and configure a virtual host
+# for the RCMET web application.
+#
+include_recipe "apache2"
+
+execute "disable-default-site" do
+ command "sudo a2dissite default"
+ notifies :reload, resources(:service => "apache2"), :delayed
+end
+
+web_app "rcmet" do
+ template "rcmet.conf.erb"
+ notifies :reload, resources(:service => "apache2"), :delayed
+end
Propchange: incubator/climate/branches/rcmet-2.1.1/src/main/vm/src/cookbooks/vagrant_main/recipes/default.rb
------------------------------------------------------------------------------
svn:executable = *
Added: incubator/climate/branches/rcmet-2.1.1/src/main/vm/src/cookbooks/vagrant_main/templates/default/project.conf.erb
URL: http://svn.apache.org/viewvc/incubator/climate/branches/rcmet-2.1.1/src/main/vm/src/cookbooks/vagrant_main/templates/default/project.conf.erb?rev=1517753&view=auto
==============================================================================
--- incubator/climate/branches/rcmet-2.1.1/src/main/vm/src/cookbooks/vagrant_main/templates/default/project.conf.erb (added)
+++ incubator/climate/branches/rcmet-2.1.1/src/main/vm/src/cookbooks/vagrant_main/templates/default/project.conf.erb Tue Aug 27 05:35:42 2013
@@ -0,0 +1,3 @@
+<VirtualHost *:80>
+ DocumentRoot <%= @node[:vagrant][:directory] %>
+</VirtualHost>
\ No newline at end of file
Propchange: incubator/climate/branches/rcmet-2.1.1/src/main/vm/src/cookbooks/vagrant_main/templates/default/project.conf.erb
------------------------------------------------------------------------------
svn:executable = *
Added: incubator/climate/branches/rcmet-2.1.1/src/main/vm/src/cookbooks/vagrant_main/templates/default/rcmet.conf.erb
URL: http://svn.apache.org/viewvc/incubator/climate/branches/rcmet-2.1.1/src/main/vm/src/cookbooks/vagrant_main/templates/default/rcmet.conf.erb?rev=1517753&view=auto
==============================================================================
--- incubator/climate/branches/rcmet-2.1.1/src/main/vm/src/cookbooks/vagrant_main/templates/default/rcmet.conf.erb (added)
+++ incubator/climate/branches/rcmet-2.1.1/src/main/vm/src/cookbooks/vagrant_main/templates/default/rcmet.conf.erb Tue Aug 27 05:35:42 2013
@@ -0,0 +1,3 @@
+<VirtualHost *:80>
+ DocumentRoot <%= @node[:vagrant][:directory] %>/env/www
+</VirtualHost>
\ No newline at end of file
Propchange: incubator/climate/branches/rcmet-2.1.1/src/main/vm/src/cookbooks/vagrant_main/templates/default/rcmet.conf.erb
------------------------------------------------------------------------------
svn:executable = *
Added: incubator/climate/branches/rcmet-2.1.1/src/main/vm/src/scripts/ncl/wget-download.sh
URL: http://svn.apache.org/viewvc/incubator/climate/branches/rcmet-2.1.1/src/main/vm/src/scripts/ncl/wget-download.sh?rev=1517753&view=auto
==============================================================================
--- incubator/climate/branches/rcmet-2.1.1/src/main/vm/src/scripts/ncl/wget-download.sh (added)
+++ incubator/climate/branches/rcmet-2.1.1/src/main/vm/src/scripts/ncl/wget-download.sh Tue Aug 27 05:35:42 2013
@@ -0,0 +1,263 @@
+#!/bin/bash
+#
+# ESG Federation download script
+#
+# Template version
+version=0.4.3
+# Generated by Gateway: ESG-NCAR
+#
+# Script generated user OpenID: https://www.earthsystemgrid.org/myopenid/ahart
+#
+
+CACHE_FILE=.md5_results
+
+##############################################################################
+#
+# Your download selection includes data secured using ESG
+# certificate-based security. In order to access the download URLs
+# you must first obtain a credentials file from your home Gateway's
+# MyProxy server.
+#
+# If you don't already have a myproxy client you can download the
+# MyProxyLogon Java client from
+# http://www.earthsystemgrid.org//webstart/myProxyLogon/MyProxyLogon-ESG.jar
+#
+# Then execute it as follows:
+# $ java -jar MyProxyLogon-ESG.jar -h vetswebprod.ucar.edu -p 7512 -u <username>
+#
+# Further information is available at
+# http://www.earthsystemgrid.org//help/download-help.htm
+#
+##############################################################################
+
+##############################################################################
+#
+# Script defaults
+#
+
+# ESG_HOME should point to the directory containing ESG credentials.
+# Default is $HOME/.esg.
+ESG_HOME=${ESG_HOME:-$HOME/.esg}
+ESG_CREDENTIALS=${X509_USER_PROXY:-$ESG_HOME/credentials.pem}
+ESG_CERT_DIR=${X509_CERT_DIR:-$ESG_HOME/certificates}
+COOKIE_JAR=$ESG_HOME/cookies
+CERT_EXPIRATION_WARNING=$((60 * 60 * 1)) #One hour (in seconds)
+
+# Configure checking of server SSL certificates.
+# Disabling server certificate checking can resolve problems with myproxy
+# servers being out of sync with datanodes.
+CHECK_SERVER_CERT=${CHECK_SERVER_CERT:-Yes}
+
+
+
+usage() {
+ echo "Usage: $(basename $0) [flags]"
+ echo "Flags is one of:"
+ sed -n '/^while getopts/,/^done/ s/^\([^)]*\)[^#]*#\(.*$\)/\1 \2/p' $0
+}
+#defaults
+debug=0
+clean_work=1
+
+#parse flags
+while getopts ':c:pdvqo:' OPT; do
+ case $OPT in
+ c) ESG_CREDENTIALS="$OPTARG";; #<cert> : use this certificate for authentication.
+ p) clean_work=0;; # : preserve data that failed checksum
+ o) output="$OPTARG";; #<file> : Write output for DML in the given file
+ d) debug=1;; # : display debug information
+ v) verbose=1;; # : be more verbose
+ q) quiet=1;; # : be less verbose
+ \?) echo "Unknown option '$OPTARG'" >&2 && usage && exit 1;;
+ \:) echo "Missing parameter for flag '$OPTARG'" >&2 && usage && exit 1;;
+ esac
+done
+shift $(($OPTIND - 1))
+
+if [[ "$output" ]]; then
+ #check and prepare the file
+ if [[ -f "$output" ]]; then
+ read -p "Overwrite existing file $output? (y/N) " answ
+ case $answ in y|Y|yes|Yes);; *) echo "Aborting then..."; exit 0;; esac
+ fi
+ : > "$output" || { echo "Can't write file $output"; break; }
+fi
+
+##############################################################################
+
+# Retrieve ESG credentials (not done yet)
+get_credentials() {
+ cat <<EOF
+Your download selection includes data secured using ESG
+certificate-based security. In order to access the download URLs
+you must first obtain a credentials file from your home Gateway's
+MyProxy server at vetswebprod.ucar.edu:7512
+
+If you don't already have a myproxy client you can download the
+MyProxyLogon Java client from
+ http://www.earthsystemgrid.org//webstart/myProxyLogon/MyProxyLogon-ESG.jar
+
+Then execute it as follows:
+ $ java -jar MyProxyLogon-ESG.jar -u <username> -h vetswebprod.ucar.edu -p 7512
+Further information is available at
+ http://www.earthsystemgrid.org//help/download-help.htm
+
+EOF
+ exit 1
+}
+
+# check the certificate validity
+check_cert() {
+ #chek openssl and certificate
+ if (which openssl &>/dev/null); then
+ if ! openssl x509 -checkend 0 -noout -in $ESG_CERT; then
+ echo "The Certificate has expired, please renew."
+ return 1
+ else
+ if ! openssl x509 -checkend $CERT_EXPIRATION_WARNING -noout -in $ESG_CERT; then
+ echo "The certificate expires in less than $((CERT_EXPIRATION_WARNING / 60 / 60)) hour(s), please renew."
+ return 2
+ fi
+ fi
+ fi
+}
+
+#
+# Detect ESG credentials
+#
+find_credentials() {
+
+ if [[ -f "$ESG_CREDENTIALS" ]]; then
+ # file found, proceed.
+ ESG_CERT="$ESG_CREDENTIALS"
+ ESG_KEY="$ESG_CREDENTIALS"
+ elif [[ -f "$X509_USER_CERT" && -f "$X509_USER_KEY" ]]; then
+ # second try, use these certificates.
+ ESG_CERT="$X509_USER_CERT"
+ ESG_KEY="$X509_USER_KEY"
+ else
+ # If credentials are not present exit
+ echo "No ESG Credentials found in $ESG_CREDENTIALS" >&2
+ get_credentials
+ fi
+
+
+ #chek openssl and certificate
+ if (which openssl &>/dev/null); then
+ if ( openssl version | grep 'OpenSSL 1\.0' ); then
+ echo '** WARNING: ESGF Host certificate checking might not be compatible with OpenSSL 1.0+'
+ fi
+ check_cert || { (($?==1)); exit 1; }
+ fi
+
+ if [[ $CHECK_SERVER_CERT == "Yes" ]]; then
+ [[ -d "$ESG_CERT_DIR" ]] || { echo "CA certs not found. Aborting."; exit 1; }
+ PKI_WGET_OPTS="--ca-directory=$ESG_CERT_DIR"
+ fi
+
+ #some wget version complain if there's no file present
+ [[ -f $COOKIE_JAR ]] || touch $COOKIE_JAR
+
+ PKI_WGET_OPTS="$PKI_WGET_OPTS --certificate=$ESG_CERT --private-key=$ESG_KEY --save-cookies=$COOKIE_JAR --load-cookies=$COOKIE_JAR"
+
+}
+
+check_chksum() {
+ local file="$1"
+ local chk_type=$2
+ local chk_value=$3
+ local local_chksum
+
+ case $chk_type in
+ md5) local_chksum=$(md5sum $file | cut -f1 -d" ");;
+ *) echo "Can't verify checksum." && return 0;;
+ esac
+
+ #verify
+ ((debug)) && echo "local:$local_chksum vs remote:$chk_value"
+ diff -q <(echo $local_chksum) <(echo $chk_value) >/dev/null
+}
+
+download() {
+ wget="wget -c $PKI_WGET_OPTS"
+ ((quiet)) && wget="$wget -q" || { ((!verbose)) && wget="$wget -nv"; }
+
+ while read line
+ do
+ # read csv here document into proper variables
+ eval $(awk -F "' '" '{$0=substr($0,2,length($0)-2); $3=tolower($3); print "file=\""$1"\";url=\""$2"\";chksum_type=\""$3"\";chksum=\""$4"\""}' <(echo $line) )
+
+ #Process the file
+ echo -n "$file ..."
+
+ #are we just writing a file?
+ if [ "$output" ]; then
+ echo "$file - $url" >> $output
+ echo ""
+ continue
+ fi
+
+ while : ; do
+ #if we have the file, check if it's already processed.
+ [ -f $file ] && cached="$(grep $file $CACHE_FILE)" || unset cached
+
+ #check it wasn't modified
+ if [[ -n "$cached" && "$(stat -c %Y $file)" == $(echo "$cached" | cut -d ' ' -f2) ]]; then
+ echo "Already downloaded and verified"
+ break
+ fi
+
+ # (if we had the file size, we could check before trying to complete)
+ echo "Downloading"
+ $wget -O "$file" $url || { failed=1; break; }
+
+ #check if file is there
+ if [[ -f $file ]]; then
+ ((debug)) && echo file found
+ if ! check_chksum "$file" $chksum_type $chksum; then
+ echo " $chksum_type failed!"
+ if ((clean_work)); then
+ rm $file
+ #try again
+ echo -n " re-downloading..."
+ continue
+ else
+ echo " don't use -p or remove manually."
+ fi
+ else
+ echo " $chksum_type ok. done!"
+ echo $file $(stat -c %Y $file) $chksum >> $CACHE_FILE
+ fi
+ fi
+ #done!
+ break
+ done
+
+ if ((failed)); then
+ echo "download failed"
+ # most common failure is certificate expiration, so check this
+ check_cert
+ unset failed
+ fi
+
+ done <<EOF--dataset.file.url.chksum_type.chksum
+'ncl_ncarg-6.1.0.Linux_Debian_x86_64_gcc432.tar.gz' 'http://www.earthsystemgrid.org//download/fileTokenDownload.htm?fileAccessPointId=425ef002-12f9-4087-8df0-dfd60304469a&authzToken=3648d4cf-d81c-474d-9779-bd0d6f91b832&gateway=ESG-NCAR' '' ''
+'ncl_ncarg-6.1.0.Linux_Debian_x86_64_gcc445.tar.gz' 'http://www.earthsystemgrid.org//download/fileTokenDownload.htm?fileAccessPointId=afb26ae5-6a93-4801-b0fb-7bad630e922f&authzToken=c866c5c8-ea30-4682-b1ce-1040e2fa377c&gateway=ESG-NCAR' '' ''
+EOF--dataset.file.url.chksum_type.chksum
+
+}
+
+
+#
+# MAIN
+#
+echo "Running $(basename $0) version: $version"
+
+find_credentials
+#do we have old results? Create the file if not
+[ ! -f $CACHE_FILE ] && echo "#filename mtime checksum" > $CACHE_FILE
+
+download
+
+#remove duplicates (if any)
+{ rm $CACHE_FILE && tac | awk '!x[$1]++' | tac > $CACHE_FILE; } < $CACHE_FILE
Propchange: incubator/climate/branches/rcmet-2.1.1/src/main/vm/src/scripts/ncl/wget-download.sh
------------------------------------------------------------------------------
svn:executable = *
Added: incubator/climate/branches/rcmet-2.1.1/src/main/webapp/.htaccess
URL: http://svn.apache.org/viewvc/incubator/climate/branches/rcmet-2.1.1/src/main/webapp/.htaccess?rev=1517753&view=auto
==============================================================================
--- incubator/climate/branches/rcmet-2.1.1/src/main/webapp/.htaccess (added)
+++ incubator/climate/branches/rcmet-2.1.1/src/main/webapp/.htaccess Tue Aug 27 05:35:42 2013
@@ -0,0 +1,45 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+#
+
+# Rewrite rules for OODT Balance web applications.
+#
+# Enable the rewrite engine
+RewriteEngine On
+
+# Make sure that the value for RewriteBase exactly matches the
+# value for site_root in config.ini. This value should point to the
+# location (relative to the server's document root) of the
+# Balance webapp directory (the directory containing config.ini). For
+# example, if the application lives at the server's document root, then
+# RewriteBase should be set to '/'. If, on the other hand, the application
+# has been installed into a subdirectory 'foo' underneath the server's
+# document root, RewriteBase (and site_root in config.ini) should be set
+# to '/foo/'
+RewriteBase /
+
+# This section forwards all requests to the Balance application's front
+# controller. Unless you are modifying the low-level behavior of the
+# Balance application framework, there should be no need to make any
+# modifications below this line. -----------------------------------------
+#
+# Send all other non-static requests to the main controller
+RewriteCond %{REQUEST_URI} !/static/(.*)$
+RewriteCond %{REQUEST_URI} !/scripts/(.*)$
+RewriteCond %{REQUEST_URI} !/global/(.*)$
+RewriteCond %{REQUEST_URI} !index\.php/.+$
+RewriteRule ^(.+)$ ./index\.php/$1 [L,NC]
+
Propchange: incubator/climate/branches/rcmet-2.1.1/src/main/webapp/.htaccess
------------------------------------------------------------------------------
svn:executable = *
Added: incubator/climate/branches/rcmet-2.1.1/src/main/webapp/classes/RCMETWizardTask.class.php
URL: http://svn.apache.org/viewvc/incubator/climate/branches/rcmet-2.1.1/src/main/webapp/classes/RCMETWizardTask.class.php?rev=1517753&view=auto
==============================================================================
--- incubator/climate/branches/rcmet-2.1.1/src/main/webapp/classes/RCMETWizardTask.class.php (added)
+++ incubator/climate/branches/rcmet-2.1.1/src/main/webapp/classes/RCMETWizardTask.class.php Tue Aug 27 05:35:42 2013
@@ -0,0 +1,125 @@
+<?php
+require_once(HOME . '/classes/WizardTask.class.php');
+
+class RCMETWizardTask extends WizardTask {
+
+ public $modelFilePaths = array();
+ public $modelVars = array();
+ public $modelBounds = array();
+
+ public $modelParameter = '';
+ public $observationalParameter = '';
+ public $observationalParameterId = '';
+ public $observationalDataset = '';
+ public $observationalDatasetId = '';
+
+ // Time Range
+ public $rangeStart;
+ public $rangeEnd;
+
+ // Regrid
+ public $spatialRegridOption;
+ public $temporalRegridOption;
+
+ // Options
+ public $computeAreaAverages;
+
+ // Metrics
+ public $metric;
+
+ // Plot Options
+
+ public function dictTemporalRegrid($key) {
+
+ $dict = array(
+ "full" => "Time mean for full period",
+ "annual" => "Annual Means",
+ "monthly" => "Monthly Means",
+ "daily" => "Daily means (from sub-daily data)"
+ );
+ return (isset($dict[$key]))
+ ? $dict[$key]
+ : false;
+ }
+
+ public function dictSpatialRegrid($key) {
+
+ $dict = array(
+ "model" => "Use the model data grid",
+ "obs" => "Use the observational data grid",
+ "regular" => "Monthly Means"
+ );
+ return (isset($dict[$key]))
+ ? $dict[$key]
+ : false;
+ }
+
+ public function dictMetrics($key) {
+ $dict = array(
+ "bias" => "Bias: mean bias across full time range",
+ "mae" => "Mean Absolute Error: across full time range",
+ "difference" => "Difference: calculated at each time unit",
+ "acc" => "Anomaly Correlation",
+ "patcor" => "Pattern Correlation",
+ "pdf" => "Probability Distribution Function similarity score",
+ "rms" => "RMS Error"
+ );
+ return (isset($dict[$key]))
+ ? $dict[$key]
+ : false;
+ }
+
+ public function getTimeRange($observationalDatasetId) {
+ $dsTimes = array(
+ "1" => array('1989-01-01 00:00:00','2009-12-31 00:00:00'), // ERA-Interim
+ "2" => array('2002-08-31 00:00:00','2010-01-01 00:00:00'), // AIRS
+ "3" => array('1998-01-01 00:00:00','2010-01-01 00:00:00'), // TRMM
+ "4" => array('1948-01-01 00:00:00','2010-01-01 00:00:00'), // URD
+ "5" => array('2000-02-24 00:00:00','2010-05-30 00:00:00'), // MODIS
+ "6" => array('1901-01-01 00:00:00','2006-12-01 00:00:00')); // CRU
+
+ if (isset($dsTimes[$observationalDatasetId]))
+ return $dsTimes[$observationalDatasetId];
+ else
+ return false;
+ }
+
+ public function computeOverlap($modelStart,$modelEnd,$obsStart,$obsEnd) {
+ $mstart = strtotime($modelStart);
+ $mend = strtotime($modelEnd);
+ $ostart = strtotime($obsStart);
+ $oend = strtotime($obsEnd);
+
+ // The "later" of the two start times is the beginning of the overlap
+ $rangeStart = ($mstart > $ostart) ? $mstart : $ostart;
+
+ // The "earlier" of the two end times is the end of the overlap
+ $rangeEnd = ($mend < $oend) ? $mend : $oend;
+
+ // Format the return values
+ return array(date('Y-m-d H:i:s',$rangeStart),
+ date('Y-m-d H:i:s',$rangeEnd));
+ }
+
+
+
+ public function __construct () {
+
+ parent::__construct();
+
+ $this->steps = array(
+ // URL_NAME HUMAN_READABLE
+ array("selectModelFiles", "Select Model Files"),
+ array("selectLatLonVars", "Select Latitude and Longitude Variables"),
+ array("selectTimeVars", "Select Time Variable"),
+ array("selectModelVar", "Select Model Variable"),
+ array("selectObservationalData", "Select Observational Data"),
+ array("selectTimeRange", "Select Time Range for Calculation"),
+ array("selectRegrid", "Select Regridding Options"),
+ array("selectOptionalTasks","Select Optional Calculation Tasks"),
+ array("selectMetricOptions","Select Metrics"),
+ array("selectPlotOptions", "Select Plot Options"),
+ array("generatePlots", "Generate Plots"),
+ );
+ }
+}
\ No newline at end of file
Propchange: incubator/climate/branches/rcmet-2.1.1/src/main/webapp/classes/RCMETWizardTask.class.php
------------------------------------------------------------------------------
svn:executable = *
Added: incubator/climate/branches/rcmet-2.1.1/src/main/webapp/classes/WizardTask.class.php
URL: http://svn.apache.org/viewvc/incubator/climate/branches/rcmet-2.1.1/src/main/webapp/classes/WizardTask.class.php?rev=1517753&view=auto
==============================================================================
--- incubator/climate/branches/rcmet-2.1.1/src/main/webapp/classes/WizardTask.class.php (added)
+++ incubator/climate/branches/rcmet-2.1.1/src/main/webapp/classes/WizardTask.class.php Tue Aug 27 05:35:42 2013
@@ -0,0 +1,55 @@
+<?php
+class WizardTask {
+
+ public $currentStep = '';
+ public $steps = array();
+
+ public function __construct() {}
+
+ public function save() {
+ $_SESSION['wizardTask'] = serialize($this);
+ }
+
+ public function setStep($which) {
+ $this->currentStep = $which;
+ }
+
+ public function firstStep() {
+ $this->goToStep($this->steps[0][0]);
+ }
+
+ public function nextStep() {
+ for($i=0;$i<count($this->steps);$i++) {
+ if (strtolower($this->steps[$i][0]) == strtolower($this->currentStep)) {
+ return (isset($this->steps[$i + 1]))
+ ? $this->goToStep($this->steps[$i+1][0])
+ : false;
+ }
+ }
+ }
+
+ public function previousStep($current) {
+ for($i=0;$i<count($this->steps);$i++) {
+ if (strtolower($this->steps[$i]) == strtolower($this->currentStep)) {
+ return (isset($this->steps[$i - 1]))
+ ? $this->goToStep($this->steps[$i - 1][0])
+ : false;
+ }
+ }
+ }
+
+ protected function goToStep($step) {
+ $this->save();
+ header("Location: " . SITE_ROOT . "/wizard/step/" . $step);
+ exit();
+ }
+
+ public function showPreviousNextLinks() {
+ for($i=1;$i<count($this->steps);$i++) {
+ if (strtolower($this->steps[$i][0]) == strtolower($this->currentStep)) {
+ echo "<div class='box nav'>Back to <a href='".SITE_ROOT
+ ."/wizard/step/{$this->steps[$i-1][0]}'>{$this->steps[$i-1][1]}</a></div>";
+ }
+ }
+ }
+}
\ No newline at end of file
Propchange: incubator/climate/branches/rcmet-2.1.1/src/main/webapp/classes/WizardTask.class.php
------------------------------------------------------------------------------
svn:executable = *
Added: incubator/climate/branches/rcmet-2.1.1/src/main/webapp/config.ini
URL: http://svn.apache.org/viewvc/incubator/climate/branches/rcmet-2.1.1/src/main/webapp/config.ini?rev=1517753&view=auto
==============================================================================
--- incubator/climate/branches/rcmet-2.1.1/src/main/webapp/config.ini (added)
+++ incubator/climate/branches/rcmet-2.1.1/src/main/webapp/config.ini Tue Aug 27 05:35:42 2013
@@ -0,0 +1,66 @@
+; OODT Balance
+; Web Application Base Framework
+;
+; Application Configuration File. This file should be called 'config.ini' and
+; should reside in the root directory of your site. This file follows standard
+; ini file conventions. Lines beginning with ';' are comments and are ignored.
+;
+
+[Application Environment]
+
+; site_root
+; If the site lives at the document root of the server, this will be '/'. On
+; the other hand, if the site lives in a sub-directory of the document root,
+; this will be the full path (starting from the document root) to the root
+; directory of the site. Always start with a slash (/) and always omit the
+; trailing slash.
+;
+; examples:
+; (document root) http://domain.com/ (site_root: '/')
+; (subdirectory) http://domain.com/apps/site (site_root: '/apps/site')
+;
+; Note: The value for site_root should always match the value for 'RewriteBase'
+; in the .htaccess file located in the site's root directory.
+;
+site_root = /
+
+
+[Application Content]
+
+; views_dir
+; This is the directory inside your site root where your application's views
+; reside. This should be a relative path (./). If you have set things up
+; according to the instructions, the framework will use the location of this
+; file (config.ini) as the base.
+;
+; Note: The value provided is simply an example. It is up to you to provide
+; valid paths.
+views_dir = ./views
+
+; header_file_path
+; This is the file that contains a site-wide header code/layout to be included
+; in each view. This should be a relative path (./). If you have set things up
+; according to the instructions, the framework will use the location of this
+; file (config.ini) as the base.
+;
+; Note: The value provided is simply an example. It is up to you to provide
+; valid paths.
+header_file_path = ./views/common/header.php
+
+; footer_file_path
+; This is the file that contains a site-wide footer code/layout to be included
+; in each view. This should be a relative path (./). If you have set things up
+; according to the instructions, the framework will use the location of this
+; file (config.ini) as the base.
+;
+; Note: The value provided is simply an example. It is up to you to provide
+; valid paths.
+footer_file_path = ./views/common/footer.php
+
+
+[RCMET_CONFIG]
+rcmet_working_directory = /path/to/working/directory
+rcmet_cache_directory = /path/to/cache/directory
+rcmet_service_url_base = http://host:port
+rcmet_service_use_curl = false
+rcmed_query_api_url_base = http://rcmes.jpl.nasa.gov/query-api
\ No newline at end of file
Propchange: incubator/climate/branches/rcmet-2.1.1/src/main/webapp/config.ini
------------------------------------------------------------------------------
svn:executable = *
Added: incubator/climate/branches/rcmet-2.1.1/src/main/webapp/hooks.php
URL: http://svn.apache.org/viewvc/incubator/climate/branches/rcmet-2.1.1/src/main/webapp/hooks.php?rev=1517753&view=auto
==============================================================================
--- incubator/climate/branches/rcmet-2.1.1/src/main/webapp/hooks.php (added)
+++ incubator/climate/branches/rcmet-2.1.1/src/main/webapp/hooks.php Tue Aug 27 05:35:42 2013
@@ -0,0 +1,83 @@
+<?php
+/**
+ * Copyright (c) 2010, California Institute of Technology.
+ * ALL RIGHTS RESERVED. U.S. Government sponsorship acknowledged.
+ *
+ * $Id$
+ *
+ *
+ * OODT Balance
+ * Web Application Base Framework
+ */
+/**
+ * HOOKS.PHP
+ *
+ * Hooks provide the ability, as the name implies, to hook into various parts of
+ * the view rendering process and insert customizations. The contents of these
+ * functions are run at the appropriate time *EVERY* time a view is rendered, i.e.
+ * the content of the hooks is not by default view-specific but rather will be
+ * applied to all views. (However, there is nothing that prevents developers from
+ * inserting conditional logic inside a hook that then causes view-specific
+ * them to exhibit view-specific behavior).
+ *
+ * As an example, consider a hook that adds the amount of time Balance took to render
+ * the page as an inline HTML comment at the bottom of each page after it has been sent:
+ *
+ * function hook_after_send() {
+ * $timeStart = $GLOBALS['balance_request_start'];
+ * $timeNow = microtime(true);
+ * $elapsed = $timeNow - $timeStart;
+ * echo "<!-- page rendered in {$elapsed} seconds -->";
+ * }
+ *
+ *
+ * Take a look at the docblock descriptions of each hook to get a sense of where
+ * in the view rendering process the hook is invoked.
+ *
+ * @author ahart
+ */
+
+/**
+ * hook_before_header
+ *
+ * This hook is executed before the contents of the header file are processed.
+ */
+function hook_before_header() {}
+
+/**
+ * hook_before_view
+ *
+ * This hook is executed before the contents of the main view are processed.
+ */
+function hook_before_view() {}
+
+/**
+ * hook_before_footer
+ *
+ * This hook is executed before the contents of the footer are processed
+ */
+function hook_before_footer() {}
+
+/**
+ * hook_before_send
+ *
+ * This hook is after all of the view components (header, view, footer) have been
+ * processed but before the processed results are sent out across the wire to the
+ * browser. HTTP headers have not yet been sent to the browser.
+ */
+function hook_before_send() {}
+
+/**
+ * hook_after_send
+ *
+ * This hook is after all of the view components (header, view, footer) have been
+ * processed and sent out across the wire to the browser. It can be used for logging
+ * or analytics purposes, or to append a common trailer to all content.
+ */
+function hook_after_send() {
+ $timeStart = $GLOBALS['balance_request_start'];
+ $timeEnd = microtime(true);
+ $elapsed = $timeEnd - $timeStart;
+
+ echo "\r\n<!-- page rendered in {$elapsed} seconds -->";
+}
\ No newline at end of file
Propchange: incubator/climate/branches/rcmet-2.1.1/src/main/webapp/hooks.php
------------------------------------------------------------------------------
svn:executable = *
Added: incubator/climate/branches/rcmet-2.1.1/src/main/webapp/index.php
URL: http://svn.apache.org/viewvc/incubator/climate/branches/rcmet-2.1.1/src/main/webapp/index.php?rev=1517753&view=auto
==============================================================================
--- incubator/climate/branches/rcmet-2.1.1/src/main/webapp/index.php (added)
+++ incubator/climate/branches/rcmet-2.1.1/src/main/webapp/index.php Tue Aug 27 05:35:42 2013
@@ -0,0 +1,48 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
+/*
+ * OODT Balance
+ * Web Application Base Framework
+ *
+ * Front-controller
+ * This file handles the marshalling of requests to the appropriate
+ * application view.
+ *
+ */
+define ("DEBUG", true); // Change this to `false` when no longer debugging
+
+// Application root directory path (should never need to change this)
+define ("HOME", dirname(__FILE__));
+
+/* Set up application environment ***************************************/
+require_once("Org/Apache/Oodt/Balance/Boot/bootstrap.php");
+
+/* Initialize the application with the settings from config.ini *********/
+$app = $GLOBALS['app'] = App::Create(parse_ini_file(HOME . '/config.ini'));
+
+/* Initialize any globally required modules here ************************/
+// Example:
+// To load a module 'foo', located at ./modules/foo, on every request:
+// App::Get()->loadModule('foo');
+
+/* Generate and send a response to the browser **************************/
+$response = $app->getResponse()->send();
+
+/* Clean up after ourselves *********************************************/
+$app->cleanup();
Propchange: incubator/climate/branches/rcmet-2.1.1/src/main/webapp/index.php
------------------------------------------------------------------------------
svn:executable = *
Added: incubator/climate/branches/rcmet-2.1.1/src/main/webapp/scripts/dirlist.php
URL: http://svn.apache.org/viewvc/incubator/climate/branches/rcmet-2.1.1/src/main/webapp/scripts/dirlist.php?rev=1517753&view=auto
==============================================================================
--- incubator/climate/branches/rcmet-2.1.1/src/main/webapp/scripts/dirlist.php (added)
+++ incubator/climate/branches/rcmet-2.1.1/src/main/webapp/scripts/dirlist.php Tue Aug 27 05:35:42 2013
@@ -0,0 +1,25 @@
+<?php
+if (file_exists($_GET['path'])) {
+ echo json_encode(getDirectoryList($_GET['path']));
+} else {
+ echo json_encode(array());
+}
+
+function getDirectoryList ($directory) {
+ // create an array to hold directory list
+ $results = array();
+ // create a handler for the directory
+ $handler = opendir($directory);
+ // open directory and walk through the filenames
+ while ($file = readdir($handler)) {
+ // if file isn't this directory or its parent, add it to the results
+ if ($file[0] != '.') {
+ $results[] = is_dir($directory . '/' . $file) ? "{$file}/" : $file;
+ }
+ }
+ // tidy up: close the handler
+ closedir($handler);
+ // done!
+ sort($results);
+ return $results;
+}
Propchange: incubator/climate/branches/rcmet-2.1.1/src/main/webapp/scripts/dirlist.php
------------------------------------------------------------------------------
svn:executable = *
Added: incubator/climate/branches/rcmet-2.1.1/src/main/webapp/scripts/plotView.php
URL: http://svn.apache.org/viewvc/incubator/climate/branches/rcmet-2.1.1/src/main/webapp/scripts/plotView.php?rev=1517753&view=auto
==============================================================================
--- incubator/climate/branches/rcmet-2.1.1/src/main/webapp/scripts/plotView.php (added)
+++ incubator/climate/branches/rcmet-2.1.1/src/main/webapp/scripts/plotView.php Tue Aug 27 05:35:42 2013
@@ -0,0 +1,13 @@
+<?php
+/**
+ * Serve a .png from the specified path
+ */
+if (isset($_REQUEST['path'])) {
+
+ $im = imagecreatefrompng($_REQUEST['path']);
+
+ header('Content-type: image/png');
+
+ imagepng($im);
+ imagedestroy($im);
+}
\ No newline at end of file
Propchange: incubator/climate/branches/rcmet-2.1.1/src/main/webapp/scripts/plotView.php
------------------------------------------------------------------------------
svn:executable = *
Added: incubator/climate/branches/rcmet-2.1.1/src/main/webapp/scripts/plots.php
URL: http://svn.apache.org/viewvc/incubator/climate/branches/rcmet-2.1.1/src/main/webapp/scripts/plots.php?rev=1517753&view=auto
==============================================================================
--- incubator/climate/branches/rcmet-2.1.1/src/main/webapp/scripts/plots.php (added)
+++ incubator/climate/branches/rcmet-2.1.1/src/main/webapp/scripts/plots.php Tue Aug 27 05:35:42 2013
@@ -0,0 +1,35 @@
+<?php
+
+switch (strtoupper($_REQUEST['action'])) {
+
+ case "GENERATE":
+ $url = App::Get()->settings['rcmet_service_url_base'] . '/rcmes/run/';
+ $postFields = http_build_query($_REQUEST);
+
+ if (isset(App::Get()->settings['rcmet_service_use_curl'])
+ && App::Get()->settings['rcmet_service_use_curl'] == true) {
+ $ch = curl_init();
+ curl_setopt($ch,CURLOPT_URL,$url);
+ curl_setopt($ch,CURLOPT_POST, 1);
+ curl_setopt($ch,CURLOPT_POSTFIELDS,$postFields);
+ curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
+ $response = curl_exec($ch);
+ curl_close($ch);
+ } else {
+ $params = array('http' => array(
+ 'method' => 'POST',
+ 'content' => $postFields));
+ $ctx = stream_context_create($params);
+ $fp = @fopen($url, 'rb', false, $ctx);
+ $response = @stream_get_contents($fp);
+ }
+
+ echo $response;
+ break;
+ default:
+ echo "{}";
+ break;
+
+}
+
+exit();
\ No newline at end of file
Propchange: incubator/climate/branches/rcmet-2.1.1/src/main/webapp/scripts/plots.php
------------------------------------------------------------------------------
svn:executable = *
Added: incubator/climate/branches/rcmet-2.1.1/src/main/webapp/scripts/rcmed.php
URL: http://svn.apache.org/viewvc/incubator/climate/branches/rcmet-2.1.1/src/main/webapp/scripts/rcmed.php?rev=1517753&view=auto
==============================================================================
--- incubator/climate/branches/rcmet-2.1.1/src/main/webapp/scripts/rcmed.php (added)
+++ incubator/climate/branches/rcmet-2.1.1/src/main/webapp/scripts/rcmed.php Tue Aug 27 05:35:42 2013
@@ -0,0 +1,23 @@
+<?php
+
+/***
+ * Fetch various information from the RCMED query API. Serves as a workaround
+ * for cross-domain ajax calls.
+ */
+$action = $_REQUEST['action'];
+
+switch (strtoupper($action)) {
+ case "DATASETS":
+ echo file_get_contents(
+ App::Get()->settings['rcmed_query_api_url_base'] . "/datasets.php");
+ break;
+ case "PARAMETERS":
+ $dataset = $_REQUEST['dataset'];
+ echo file_get_contents(
+ App::Get()->settings['rcmed_query_api_url_base'] . '/parameters.php?dataset=' . $dataset);
+ break;
+ default:
+ echo "{}";
+}
+
+exit;
\ No newline at end of file
Propchange: incubator/climate/branches/rcmet-2.1.1/src/main/webapp/scripts/rcmed.php
------------------------------------------------------------------------------
svn:executable = *
Added: incubator/climate/branches/rcmet-2.1.1/src/main/webapp/static/bootstrap/css/bootstrap-responsive.css
URL: http://svn.apache.org/viewvc/incubator/climate/branches/rcmet-2.1.1/src/main/webapp/static/bootstrap/css/bootstrap-responsive.css?rev=1517753&view=auto
==============================================================================
--- incubator/climate/branches/rcmet-2.1.1/src/main/webapp/static/bootstrap/css/bootstrap-responsive.css (added)
+++ incubator/climate/branches/rcmet-2.1.1/src/main/webapp/static/bootstrap/css/bootstrap-responsive.css Tue Aug 27 05:35:42 2013
@@ -0,0 +1,1040 @@
+/*!
+ * Bootstrap Responsive v2.1.0
+ *
+ * Copyright 2012 Twitter, Inc
+ * Licensed under the Apache License v2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Designed and built with all the love in the world @twitter by @mdo and @fat.
+ */
+
+.clearfix {
+ *zoom: 1;
+}
+
+.clearfix:before,
+.clearfix:after {
+ display: table;
+ line-height: 0;
+ content: "";
+}
+
+.clearfix:after {
+ clear: both;
+}
+
+.hide-text {
+ font: 0/0 a;
+ color: transparent;
+ text-shadow: none;
+ background-color: transparent;
+ border: 0;
+}
+
+.input-block-level {
+ display: block;
+ width: 100%;
+ min-height: 30px;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+
+.hidden {
+ display: none;
+ visibility: hidden;
+}
+
+.visible-phone {
+ display: none !important;
+}
+
+.visible-tablet {
+ display: none !important;
+}
+
+.hidden-desktop {
+ display: none !important;
+}
+
+.visible-desktop {
+ display: inherit !important;
+}
+
+@media (min-width: 768px) and (max-width: 979px) {
+ .hidden-desktop {
+ display: inherit !important;
+ }
+ .visible-desktop {
+ display: none !important ;
+ }
+ .visible-tablet {
+ display: inherit !important;
+ }
+ .hidden-tablet {
+ display: none !important;
+ }
+}
+
+@media (max-width: 767px) {
+ .hidden-desktop {
+ display: inherit !important;
+ }
+ .visible-desktop {
+ display: none !important;
+ }
+ .visible-phone {
+ display: inherit !important;
+ }
+ .hidden-phone {
+ display: none !important;
+ }
+}
+
+@media (min-width: 1200px) {
+ .row {
+ margin-left: -30px;
+ *zoom: 1;
+ }
+ .row:before,
+ .row:after {
+ display: table;
+ line-height: 0;
+ content: "";
+ }
+ .row:after {
+ clear: both;
+ }
+ [class*="span"] {
+ float: left;
+ margin-left: 30px;
+ }
+ .container,
+ .navbar-static-top .container,
+ .navbar-fixed-top .container,
+ .navbar-fixed-bottom .container {
+ width: 1170px;
+ }
+ .span12 {
+ width: 1170px;
+ }
+ .span11 {
+ width: 1070px;
+ }
+ .span10 {
+ width: 970px;
+ }
+ .span9 {
+ width: 870px;
+ }
+ .span8 {
+ width: 770px;
+ }
+ .span7 {
+ width: 670px;
+ }
+ .span6 {
+ width: 570px;
+ }
+ .span5 {
+ width: 470px;
+ }
+ .span4 {
+ width: 370px;
+ }
+ .span3 {
+ width: 270px;
+ }
+ .span2 {
+ width: 170px;
+ }
+ .span1 {
+ width: 70px;
+ }
+ .offset12 {
+ margin-left: 1230px;
+ }
+ .offset11 {
+ margin-left: 1130px;
+ }
+ .offset10 {
+ margin-left: 1030px;
+ }
+ .offset9 {
+ margin-left: 930px;
+ }
+ .offset8 {
+ margin-left: 830px;
+ }
+ .offset7 {
+ margin-left: 730px;
+ }
+ .offset6 {
+ margin-left: 630px;
+ }
+ .offset5 {
+ margin-left: 530px;
+ }
+ .offset4 {
+ margin-left: 430px;
+ }
+ .offset3 {
+ margin-left: 330px;
+ }
+ .offset2 {
+ margin-left: 230px;
+ }
+ .offset1 {
+ margin-left: 130px;
+ }
+ .row-fluid {
+ width: 100%;
+ *zoom: 1;
+ }
+ .row-fluid:before,
+ .row-fluid:after {
+ display: table;
+ line-height: 0;
+ content: "";
+ }
+ .row-fluid:after {
+ clear: both;
+ }
+ .row-fluid [class*="span"] {
+ display: block;
+ float: left;
+ width: 100%;
+ min-height: 30px;
+ margin-left: 2.564102564102564%;
+ *margin-left: 2.5109110747408616%;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ }
+ .row-fluid [class*="span"]:first-child {
+ margin-left: 0;
+ }
+ .row-fluid .span12 {
+ width: 100%;
+ *width: 99.94680851063829%;
+ }
+ .row-fluid .span11 {
+ width: 91.45299145299145%;
+ *width: 91.39979996362975%;
+ }
+ .row-fluid .span10 {
+ width: 82.90598290598291%;
+ *width: 82.8527914166212%;
+ }
+ .row-fluid .span9 {
+ width: 74.35897435897436%;
+ *width: 74.30578286961266%;
+ }
+ .row-fluid .span8 {
+ width: 65.81196581196582%;
+ *width: 65.75877432260411%;
+ }
+ .row-fluid .span7 {
+ width: 57.26495726495726%;
+ *width: 57.21176577559556%;
+ }
+ .row-fluid .span6 {
+ width: 48.717948717948715%;
+ *width: 48.664757228587014%;
+ }
+ .row-fluid .span5 {
+ width: 40.17094017094017%;
+ *width: 40.11774868157847%;
+ }
+ .row-fluid .span4 {
+ width: 31.623931623931625%;
+ *width: 31.570740134569924%;
+ }
+ .row-fluid .span3 {
+ width: 23.076923076923077%;
+ *width: 23.023731587561375%;
+ }
+ .row-fluid .span2 {
+ width: 14.52991452991453%;
+ *width: 14.476723040552828%;
+ }
+ .row-fluid .span1 {
+ width: 5.982905982905983%;
+ *width: 5.929714493544281%;
+ }
+ .row-fluid .offset12 {
+ margin-left: 105.12820512820512%;
+ *margin-left: 105.02182214948171%;
+ }
+ .row-fluid .offset12:first-child {
+ margin-left: 102.56410256410257%;
+ *margin-left: 102.45771958537915%;
+ }
+ .row-fluid .offset11 {
+ margin-left: 96.58119658119658%;
+ *margin-left: 96.47481360247316%;
+ }
+ .row-fluid .offset11:first-child {
+ margin-left: 94.01709401709402%;
+ *margin-left: 93.91071103837061%;
+ }
+ .row-fluid .offset10 {
+ margin-left: 88.03418803418803%;
+ *margin-left: 87.92780505546462%;
+ }
+ .row-fluid .offset10:first-child {
+ margin-left: 85.47008547008548%;
+ *margin-left: 85.36370249136206%;
+ }
+ .row-fluid .offset9 {
+ margin-left: 79.48717948717949%;
+ *margin-left: 79.38079650845607%;
+ }
+ .row-fluid .offset9:first-child {
+ margin-left: 76.92307692307693%;
+ *margin-left: 76.81669394435352%;
+ }
+ .row-fluid .offset8 {
+ margin-left: 70.94017094017094%;
+ *margin-left: 70.83378796144753%;
+ }
+ .row-fluid .offset8:first-child {
+ margin-left: 68.37606837606839%;
+ *margin-left: 68.26968539734497%;
+ }
+ .row-fluid .offset7 {
+ margin-left: 62.393162393162385%;
+ *margin-left: 62.28677941443899%;
+ }
+ .row-fluid .offset7:first-child {
+ margin-left: 59.82905982905982%;
+ *margin-left: 59.72267685033642%;
+ }
+ .row-fluid .offset6 {
+ margin-left: 53.84615384615384%;
+ *margin-left: 53.739770867430444%;
+ }
+ .row-fluid .offset6:first-child {
+ margin-left: 51.28205128205128%;
+ *margin-left: 51.175668303327875%;
+ }
+ .row-fluid .offset5 {
+ margin-left: 45.299145299145295%;
+ *margin-left: 45.1927623204219%;
+ }
+ .row-fluid .offset5:first-child {
+ margin-left: 42.73504273504273%;
+ *margin-left: 42.62865975631933%;
+ }
+ .row-fluid .offset4 {
+ margin-left: 36.75213675213675%;
+ *margin-left: 36.645753773413354%;
+ }
+ .row-fluid .offset4:first-child {
+ margin-left: 34.18803418803419%;
+ *margin-left: 34.081651209310785%;
+ }
+ .row-fluid .offset3 {
+ margin-left: 28.205128205128204%;
+ *margin-left: 28.0987452264048%;
+ }
+ .row-fluid .offset3:first-child {
+ margin-left: 25.641025641025642%;
+ *margin-left: 25.53464266230224%;
+ }
+ .row-fluid .offset2 {
+ margin-left: 19.65811965811966%;
+ *margin-left: 19.551736679396257%;
+ }
+ .row-fluid .offset2:first-child {
+ margin-left: 17.094017094017094%;
+ *margin-left: 16.98763411529369%;
+ }
+ .row-fluid .offset1 {
+ margin-left: 11.11111111111111%;
+ *margin-left: 11.004728132387708%;
+ }
+ .row-fluid .offset1:first-child {
+ margin-left: 8.547008547008547%;
+ *margin-left: 8.440625568285142%;
+ }
+ input,
+ textarea,
+ .uneditable-input {
+ margin-left: 0;
+ }
+ .controls-row [class*="span"] + [class*="span"] {
+ margin-left: 30px;
+ }
+ input.span12,
+ textarea.span12,
+ .uneditable-input.span12 {
+ width: 1156px;
+ }
+ input.span11,
+ textarea.span11,
+ .uneditable-input.span11 {
+ width: 1056px;
+ }
+ input.span10,
+ textarea.span10,
+ .uneditable-input.span10 {
+ width: 956px;
+ }
+ input.span9,
+ textarea.span9,
+ .uneditable-input.span9 {
+ width: 856px;
+ }
+ input.span8,
+ textarea.span8,
+ .uneditable-input.span8 {
+ width: 756px;
+ }
+ input.span7,
+ textarea.span7,
+ .uneditable-input.span7 {
+ width: 656px;
+ }
+ input.span6,
+ textarea.span6,
+ .uneditable-input.span6 {
+ width: 556px;
+ }
+ input.span5,
+ textarea.span5,
+ .uneditable-input.span5 {
+ width: 456px;
+ }
+ input.span4,
+ textarea.span4,
+ .uneditable-input.span4 {
+ width: 356px;
+ }
+ input.span3,
+ textarea.span3,
+ .uneditable-input.span3 {
+ width: 256px;
+ }
+ input.span2,
+ textarea.span2,
+ .uneditable-input.span2 {
+ width: 156px;
+ }
+ input.span1,
+ textarea.span1,
+ .uneditable-input.span1 {
+ width: 56px;
+ }
+ .thumbnails {
+ margin-left: -30px;
+ }
+ .thumbnails > li {
+ margin-left: 30px;
+ }
+ .row-fluid .thumbnails {
+ margin-left: 0;
+ }
+}
+
+@media (min-width: 768px) and (max-width: 979px) {
+ .row {
+ margin-left: -20px;
+ *zoom: 1;
+ }
+ .row:before,
+ .row:after {
+ display: table;
+ line-height: 0;
+ content: "";
+ }
+ .row:after {
+ clear: both;
+ }
+ [class*="span"] {
+ float: left;
+ margin-left: 20px;
+ }
+ .container,
+ .navbar-static-top .container,
+ .navbar-fixed-top .container,
+ .navbar-fixed-bottom .container {
+ width: 724px;
+ }
+ .span12 {
+ width: 724px;
+ }
+ .span11 {
+ width: 662px;
+ }
+ .span10 {
+ width: 600px;
+ }
+ .span9 {
+ width: 538px;
+ }
+ .span8 {
+ width: 476px;
+ }
+ .span7 {
+ width: 414px;
+ }
+ .span6 {
+ width: 352px;
+ }
+ .span5 {
+ width: 290px;
+ }
+ .span4 {
+ width: 228px;
+ }
+ .span3 {
+ width: 166px;
+ }
+ .span2 {
+ width: 104px;
+ }
+ .span1 {
+ width: 42px;
+ }
+ .offset12 {
+ margin-left: 764px;
+ }
+ .offset11 {
+ margin-left: 702px;
+ }
+ .offset10 {
+ margin-left: 640px;
+ }
+ .offset9 {
+ margin-left: 578px;
+ }
+ .offset8 {
+ margin-left: 516px;
+ }
+ .offset7 {
+ margin-left: 454px;
+ }
+ .offset6 {
+ margin-left: 392px;
+ }
+ .offset5 {
+ margin-left: 330px;
+ }
+ .offset4 {
+ margin-left: 268px;
+ }
+ .offset3 {
+ margin-left: 206px;
+ }
+ .offset2 {
+ margin-left: 144px;
+ }
+ .offset1 {
+ margin-left: 82px;
+ }
+ .row-fluid {
+ width: 100%;
+ *zoom: 1;
+ }
+ .row-fluid:before,
+ .row-fluid:after {
+ display: table;
+ line-height: 0;
+ content: "";
+ }
+ .row-fluid:after {
+ clear: both;
+ }
+ .row-fluid [class*="span"] {
+ display: block;
+ float: left;
+ width: 100%;
+ min-height: 30px;
+ margin-left: 2.7624309392265194%;
+ *margin-left: 2.709239449864817%;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ }
+ .row-fluid [class*="span"]:first-child {
+ margin-left: 0;
+ }
+ .row-fluid .span12 {
+ width: 100%;
+ *width: 99.94680851063829%;
+ }
+ .row-fluid .span11 {
+ width: 91.43646408839778%;
+ *width: 91.38327259903608%;
+ }
+ .row-fluid .span10 {
+ width: 82.87292817679558%;
+ *width: 82.81973668743387%;
+ }
+ .row-fluid .span9 {
+ width: 74.30939226519337%;
+ *width: 74.25620077583166%;
+ }
+ .row-fluid .span8 {
+ width: 65.74585635359117%;
+ *width: 65.69266486422946%;
+ }
+ .row-fluid .span7 {
+ width: 57.18232044198895%;
+ *width: 57.12912895262725%;
+ }
+ .row-fluid .span6 {
+ width: 48.61878453038674%;
+ *width: 48.56559304102504%;
+ }
+ .row-fluid .span5 {
+ width: 40.05524861878453%;
+ *width: 40.00205712942283%;
+ }
+ .row-fluid .span4 {
+ width: 31.491712707182323%;
+ *width: 31.43852121782062%;
+ }
+ .row-fluid .span3 {
+ width: 22.92817679558011%;
+ *width: 22.87498530621841%;
+ }
+ .row-fluid .span2 {
+ width: 14.3646408839779%;
+ *width: 14.311449394616199%;
+ }
+ .row-fluid .span1 {
+ width: 5.801104972375691%;
+ *width: 5.747913483013988%;
+ }
+ .row-fluid .offset12 {
+ margin-left: 105.52486187845304%;
+ *margin-left: 105.41847889972962%;
+ }
+ .row-fluid .offset12:first-child {
+ margin-left: 102.76243093922652%;
+ *margin-left: 102.6560479605031%;
+ }
+ .row-fluid .offset11 {
+ margin-left: 96.96132596685082%;
+ *margin-left: 96.8549429881274%;
+ }
+ .row-fluid .offset11:first-child {
+ margin-left: 94.1988950276243%;
+ *margin-left: 94.09251204890089%;
+ }
+ .row-fluid .offset10 {
+ margin-left: 88.39779005524862%;
+ *margin-left: 88.2914070765252%;
+ }
+ .row-fluid .offset10:first-child {
+ margin-left: 85.6353591160221%;
+ *margin-left: 85.52897613729868%;
+ }
+ .row-fluid .offset9 {
+ margin-left: 79.8342541436464%;
+ *margin-left: 79.72787116492299%;
+ }
+ .row-fluid .offset9:first-child {
+ margin-left: 77.07182320441989%;
+ *margin-left: 76.96544022569647%;
+ }
+ .row-fluid .offset8 {
+ margin-left: 71.2707182320442%;
+ *margin-left: 71.16433525332079%;
+ }
+ .row-fluid .offset8:first-child {
+ margin-left: 68.50828729281768%;
+ *margin-left: 68.40190431409427%;
+ }
+ .row-fluid .offset7 {
+ margin-left: 62.70718232044199%;
+ *margin-left: 62.600799341718584%;
+ }
+ .row-fluid .offset7:first-child {
+ margin-left: 59.94475138121547%;
+ *margin-left: 59.838368402492065%;
+ }
+ .row-fluid .offset6 {
+ margin-left: 54.14364640883978%;
+ *margin-left: 54.037263430116376%;
+ }
+ .row-fluid .offset6:first-child {
+ margin-left: 51.38121546961326%;
+ *margin-left: 51.27483249088986%;
+ }
+ .row-fluid .offset5 {
+ margin-left: 45.58011049723757%;
+ *margin-left: 45.47372751851417%;
+ }
+ .row-fluid .offset5:first-child {
+ margin-left: 42.81767955801105%;
+ *margin-left: 42.71129657928765%;
+ }
+ .row-fluid .offset4 {
+ margin-left: 37.01657458563536%;
+ *margin-left: 36.91019160691196%;
+ }
+ .row-fluid .offset4:first-child {
+ margin-left: 34.25414364640884%;
+ *margin-left: 34.14776066768544%;
+ }
+ .row-fluid .offset3 {
+ margin-left: 28.45303867403315%;
+ *margin-left: 28.346655695309746%;
+ }
+ .row-fluid .offset3:first-child {
+ margin-left: 25.69060773480663%;
+ *margin-left: 25.584224756083227%;
+ }
+ .row-fluid .offset2 {
+ margin-left: 19.88950276243094%;
+ *margin-left: 19.783119783707537%;
+ }
+ .row-fluid .offset2:first-child {
+ margin-left: 17.12707182320442%;
+ *margin-left: 17.02068884448102%;
+ }
+ .row-fluid .offset1 {
+ margin-left: 11.32596685082873%;
+ *margin-left: 11.219583872105325%;
+ }
+ .row-fluid .offset1:first-child {
+ margin-left: 8.56353591160221%;
+ *margin-left: 8.457152932878806%;
+ }
+ input,
+ textarea,
+ .uneditable-input {
+ margin-left: 0;
+ }
+ .controls-row [class*="span"] + [class*="span"] {
+ margin-left: 20px;
+ }
+ input.span12,
+ textarea.span12,
+ .uneditable-input.span12 {
+ width: 710px;
+ }
+ input.span11,
+ textarea.span11,
+ .uneditable-input.span11 {
+ width: 648px;
+ }
+ input.span10,
+ textarea.span10,
+ .uneditable-input.span10 {
+ width: 586px;
+ }
+ input.span9,
+ textarea.span9,
+ .uneditable-input.span9 {
+ width: 524px;
+ }
+ input.span8,
+ textarea.span8,
+ .uneditable-input.span8 {
+ width: 462px;
+ }
+ input.span7,
+ textarea.span7,
+ .uneditable-input.span7 {
+ width: 400px;
+ }
+ input.span6,
+ textarea.span6,
+ .uneditable-input.span6 {
+ width: 338px;
+ }
+ input.span5,
+ textarea.span5,
+ .uneditable-input.span5 {
+ width: 276px;
+ }
+ input.span4,
+ textarea.span4,
+ .uneditable-input.span4 {
+ width: 214px;
+ }
+ input.span3,
+ textarea.span3,
+ .uneditable-input.span3 {
+ width: 152px;
+ }
+ input.span2,
+ textarea.span2,
+ .uneditable-input.span2 {
+ width: 90px;
+ }
+ input.span1,
+ textarea.span1,
+ .uneditable-input.span1 {
+ width: 28px;
+ }
+}
+
+@media (max-width: 767px) {
+ body {
+ padding-right: 20px;
+ padding-left: 20px;
+ }
+ .navbar-fixed-top,
+ .navbar-fixed-bottom {
+ margin-right: -20px;
+ margin-left: -20px;
+ }
+ .container-fluid {
+ padding: 0;
+ }
+ .dl-horizontal dt {
+ float: none;
+ width: auto;
+ clear: none;
+ text-align: left;
+ }
+ .dl-horizontal dd {
+ margin-left: 0;
+ }
+ .container {
+ width: auto;
+ }
+ .row-fluid {
+ width: 100%;
+ }
+ .row,
+ .thumbnails {
+ margin-left: 0;
+ }
+ .thumbnails > li {
+ float: none;
+ margin-left: 0;
+ }
+ [class*="span"],
+ .row-fluid [class*="span"] {
+ display: block;
+ float: none;
+ width: auto;
+ margin-left: 0;
+ }
+ .span12,
+ .row-fluid .span12 {
+ width: 100%;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ }
+ .input-large,
+ .input-xlarge,
+ .input-xxlarge,
+ input[class*="span"],
+ select[class*="span"],
+ textarea[class*="span"],
+ .uneditable-input {
+ display: block;
+ width: 100%;
+ min-height: 30px;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ }
+ .input-prepend input,
+ .input-append input,
+ .input-prepend input[class*="span"],
+ .input-append input[class*="span"] {
+ display: inline-block;
+ width: auto;
+ }
+ .modal {
+ position: fixed;
+ top: 20px;
+ right: 20px;
+ left: 20px;
+ width: auto;
+ margin: 0;
+ }
+ .modal.fade.in {
+ top: auto;
+ }
+}
+
+@media (max-width: 480px) {
+ .nav-collapse {
+ -webkit-transform: translate3d(0, 0, 0);
+ }
+ .page-header h1 small {
+ display: block;
+ line-height: 20px;
+ }
+ input[type="checkbox"],
+ input[type="radio"] {
+ border: 1px solid #ccc;
+ }
+ .form-horizontal .control-group > label {
+ float: none;
+ width: auto;
+ padding-top: 0;
+ text-align: left;
+ }
+ .form-horizontal .controls {
+ margin-left: 0;
+ }
+ .form-horizontal .control-list {
+ padding-top: 0;
+ }
+ .form-horizontal .form-actions {
+ padding-right: 10px;
+ padding-left: 10px;
+ }
+ .modal {
+ top: 10px;
+ right: 10px;
+ left: 10px;
+ }
+ .modal-header .close {
+ padding: 10px;
+ margin: -10px;
+ }
+ .carousel-caption {
+ position: static;
+ }
+}
+
+@media (max-width: 979px) {
+ body {
+ padding-top: 0;
+ }
+ .navbar-fixed-top,
+ .navbar-fixed-bottom {
+ position: static;
+ }
+ .navbar-fixed-top {
+ margin-bottom: 20px;
+ }
+ .navbar-fixed-bottom {
+ margin-top: 20px;
+ }
+ .navbar-fixed-top .navbar-inner,
+ .navbar-fixed-bottom .navbar-inner {
+ padding: 5px;
+ }
+ .navbar .container {
+ width: auto;
+ padding: 0;
+ }
+ .navbar .brand {
+ padding-right: 10px;
+ padding-left: 10px;
+ margin: 0 0 0 -5px;
+ }
+ .nav-collapse {
+ clear: both;
+ }
+ .nav-collapse .nav {
+ float: none;
+ margin: 0 0 10px;
+ }
+ .nav-collapse .nav > li {
+ float: none;
+ }
+ .nav-collapse .nav > li > a {
+ margin-bottom: 2px;
+ }
+ .nav-collapse .nav > .divider-vertical {
+ display: none;
+ }
+ .nav-collapse .nav .nav-header {
+ color: #555555;
+ text-shadow: none;
+ }
+ .nav-collapse .nav > li > a,
+ .nav-collapse .dropdown-menu a {
+ padding: 9px 15px;
+ font-weight: bold;
+ color: #555555;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ }
+ .nav-collapse .btn {
+ padding: 4px 10px 4px;
+ font-weight: normal;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ }
+ .nav-collapse .dropdown-menu li + li a {
+ margin-bottom: 2px;
+ }
+ .nav-collapse .nav > li > a:hover,
+ .nav-collapse .dropdown-menu a:hover {
+ background-color: #f2f2f2;
+ }
+ .navbar-inverse .nav-collapse .nav > li > a:hover,
+ .navbar-inverse .nav-collapse .dropdown-menu a:hover {
+ background-color: #111111;
+ }
+ .nav-collapse.in .btn-group {
+ padding: 0;
+ margin-top: 5px;
+ }
+ .nav-collapse .dropdown-menu {
+ position: static;
+ top: auto;
+ left: auto;
+ display: block;
+ float: none;
+ max-width: none;
+ padding: 0;
+ margin: 0 15px;
+ background-color: transparent;
+ border: none;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+ -webkit-box-shadow: none;
+ -moz-box-shadow: none;
+ box-shadow: none;
+ }
+ .nav-collapse .dropdown-menu:before,
+ .nav-collapse .dropdown-menu:after {
+ display: none;
+ }
+ .nav-collapse .dropdown-menu .divider {
+ display: none;
+ }
+ .nav-collapse .navbar-form,
+ .nav-collapse .navbar-search {
+ float: none;
+ padding: 10px 15px;
+ margin: 10px 0;
+ border-top: 1px solid #f2f2f2;
+ border-bottom: 1px solid #f2f2f2;
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
+ -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
+ }
+ .navbar .nav-collapse .nav.pull-right {
+ float: none;
+ margin-left: 0;
+ }
+ .nav-collapse,
+ .nav-collapse.collapse {
+ height: 0;
+ overflow: hidden;
+ }
+ .navbar .btn-navbar {
+ display: block;
+ }
+ .navbar-static .navbar-inner {
+ padding-right: 10px;
+ padding-left: 10px;
+ }
+}
+
+@media (min-width: 980px) {
+ .nav-collapse.collapse {
+ height: auto !important;
+ overflow: visible !important;
+ }
+}
Propchange: incubator/climate/branches/rcmet-2.1.1/src/main/webapp/static/bootstrap/css/bootstrap-responsive.css
------------------------------------------------------------------------------
svn:executable = *
Added: incubator/climate/branches/rcmet-2.1.1/src/main/webapp/static/bootstrap/css/bootstrap-responsive.min.css
URL: http://svn.apache.org/viewvc/incubator/climate/branches/rcmet-2.1.1/src/main/webapp/static/bootstrap/css/bootstrap-responsive.min.css?rev=1517753&view=auto
==============================================================================
--- incubator/climate/branches/rcmet-2.1.1/src/main/webapp/static/bootstrap/css/bootstrap-responsive.min.css (added)
+++ incubator/climate/branches/rcmet-2.1.1/src/main/webapp/static/bootstrap/css/bootstrap-responsive.min.css Tue Aug 27 05:35:42 2013
@@ -0,0 +1,9 @@
+/*!
+ * Bootstrap Responsive v2.1.0
+ *
+ * Copyright 2012 Twitter, Inc
+ * Licensed under the Apache License v2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Designed and built with all the love in the world @twitter by @mdo and @fat.
+ */.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.hidden{display:none;visibility:hidden}.visible-phone{display:none!important}.visible-tablet{display:none!important}.hidden-desktop{display:none!important}.visible-desktop{display:inherit!important}@media(min-width:768px) and (max-width:979px){.hidden-desktop{display:inherit!important}.visible-desktop{display:none!important}.visible-tablet{display:inherit!important}.hidden-tablet{display:none!important}}@media(max-width:767px){.hidden-desktop{display:inherit!important}.visible-desktop{display:none!important}.visible-phone{display:inherit!important}.hidden-phone{display:none!important}}@media(min-width:1200px){.row{margin-left:-30px;*zo
om:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;margin-left:30px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:1170px}.span12{width:1170px}.span11{width:1070px}.span10{width:970px}.span9{width:870px}.span8{width:770px}.span7{width:670px}.span6{width:570px}.span5{width:470px}.span4{width:370px}.span3{width:270px}.span2{width:170px}.span1{width:70px}.offset12{margin-left:1230px}.offset11{margin-left:1130px}.offset10{margin-left:1030px}.offset9{margin-left:930px}.offset8{margin-left:830px}.offset7{margin-left:730px}.offset6{margin-left:630px}.offset5{margin-left:530px}.offset4{margin-left:430px}.offset3{margin-left:330px}.offset2{margin-left:230px}.offset1{margin-left:130px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;wid
th:100%;min-height:30px;margin-left:2.564102564102564%;*margin-left:2.5109110747408616%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.45299145299145%;*width:91.39979996362975%}.row-fluid .span10{width:82.90598290598291%;*width:82.8527914166212%}.row-fluid .span9{width:74.35897435897436%;*width:74.30578286961266%}.row-fluid .span8{width:65.81196581196582%;*width:65.75877432260411%}.row-fluid .span7{width:57.26495726495726%;*width:57.21176577559556%}.row-fluid .span6{width:48.717948717948715%;*width:48.664757228587014%}.row-fluid .span5{width:40.17094017094017%;*width:40.11774868157847%}.row-fluid .span4{width:31.623931623931625%;*width:31.570740134569924%}.row-fluid .span3{width:23.076923076923077%;*width:23.023731587561375%}.row-fluid .span2{width:14.52991452991453%;*width:14.476723040552828%}.row-fluid .span1{width
:5.982905982905983%;*width:5.929714493544281%}.row-fluid .offset12{margin-left:105.12820512820512%;*margin-left:105.02182214948171%}.row-fluid .offset12:first-child{margin-left:102.56410256410257%;*margin-left:102.45771958537915%}.row-fluid .offset11{margin-left:96.58119658119658%;*margin-left:96.47481360247316%}.row-fluid .offset11:first-child{margin-left:94.01709401709402%;*margin-left:93.91071103837061%}.row-fluid .offset10{margin-left:88.03418803418803%;*margin-left:87.92780505546462%}.row-fluid .offset10:first-child{margin-left:85.47008547008548%;*margin-left:85.36370249136206%}.row-fluid .offset9{margin-left:79.48717948717949%;*margin-left:79.38079650845607%}.row-fluid .offset9:first-child{margin-left:76.92307692307693%;*margin-left:76.81669394435352%}.row-fluid .offset8{margin-left:70.94017094017094%;*margin-left:70.83378796144753%}.row-fluid .offset8:first-child{margin-left:68.37606837606839%;*margin-left:68.26968539734497%}.row-fluid .offset7{margin-left:62.393162393162385%
;*margin-left:62.28677941443899%}.row-fluid .offset7:first-child{margin-left:59.82905982905982%;*margin-left:59.72267685033642%}.row-fluid .offset6{margin-left:53.84615384615384%;*margin-left:53.739770867430444%}.row-fluid .offset6:first-child{margin-left:51.28205128205128%;*margin-left:51.175668303327875%}.row-fluid .offset5{margin-left:45.299145299145295%;*margin-left:45.1927623204219%}.row-fluid .offset5:first-child{margin-left:42.73504273504273%;*margin-left:42.62865975631933%}.row-fluid .offset4{margin-left:36.75213675213675%;*margin-left:36.645753773413354%}.row-fluid .offset4:first-child{margin-left:34.18803418803419%;*margin-left:34.081651209310785%}.row-fluid .offset3{margin-left:28.205128205128204%;*margin-left:28.0987452264048%}.row-fluid .offset3:first-child{margin-left:25.641025641025642%;*margin-left:25.53464266230224%}.row-fluid .offset2{margin-left:19.65811965811966%;*margin-left:19.551736679396257%}.row-fluid .offset2:first-child{margin-left:17.094017094017094%;*mar
gin-left:16.98763411529369%}.row-fluid .offset1{margin-left:11.11111111111111%;*margin-left:11.004728132387708%}.row-fluid .offset1:first-child{margin-left:8.547008547008547%;*margin-left:8.440625568285142%}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:30px}input.span12,textarea.span12,.uneditable-input.span12{width:1156px}input.span11,textarea.span11,.uneditable-input.span11{width:1056px}input.span10,textarea.span10,.uneditable-input.span10{width:956px}input.span9,textarea.span9,.uneditable-input.span9{width:856px}input.span8,textarea.span8,.uneditable-input.span8{width:756px}input.span7,textarea.span7,.uneditable-input.span7{width:656px}input.span6,textarea.span6,.uneditable-input.span6{width:556px}input.span5,textarea.span5,.uneditable-input.span5{width:456px}input.span4,textarea.span4,.uneditable-input.span4{width:356px}input.span3,textarea.span3,.uneditable-input.span3{width:256px}input.span2,textarea.span2,.uneditable-
input.span2{width:156px}input.span1,textarea.span1,.uneditable-input.span1{width:56px}.thumbnails{margin-left:-30px}.thumbnails>li{margin-left:30px}.row-fluid .thumbnails{margin-left:0}}@media(min-width:768px) and (max-width:979px){.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;margin-left:20px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:724px}.span12{width:724px}.span11{width:662px}.span10{width:600px}.span9{width:538px}.span8{width:476px}.span7{width:414px}.span6{width:352px}.span5{width:290px}.span4{width:228px}.span3{width:166px}.span2{width:104px}.span1{width:42px}.offset12{margin-left:764px}.offset11{margin-left:702px}.offset10{margin-left:640px}.offset9{margin-left:578px}.offset8{margin-left:516px}.offset7{margin-left:454px}.offset6{margin-left:392px}.offset5{margin-left:330px}.offset4{margin-left:268px}.offset3{margin-
left:206px}.offset2{margin-left:144px}.offset1{margin-left:82px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.7624309392265194%;*margin-left:2.709239449864817%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.43646408839778%;*width:91.38327259903608%}.row-fluid .span10{width:82.87292817679558%;*width:82.81973668743387%}.row-fluid .span9{width:74.30939226519337%;*width:74.25620077583166%}.row-fluid .span8{width:65.74585635359117%;*width:65.69266486422946%}.row-fluid .span7{width:57.18232044198895%;*width:57.12912895262725%}.row-fluid .span6{width:48.61878453038674%;*width:48.56559304102504%}.row-fluid .span5{width:40.05524861878453%;*width:40.0
0205712942283%}.row-fluid .span4{width:31.491712707182323%;*width:31.43852121782062%}.row-fluid .span3{width:22.92817679558011%;*width:22.87498530621841%}.row-fluid .span2{width:14.3646408839779%;*width:14.311449394616199%}.row-fluid .span1{width:5.801104972375691%;*width:5.747913483013988%}.row-fluid .offset12{margin-left:105.52486187845304%;*margin-left:105.41847889972962%}.row-fluid .offset12:first-child{margin-left:102.76243093922652%;*margin-left:102.6560479605031%}.row-fluid .offset11{margin-left:96.96132596685082%;*margin-left:96.8549429881274%}.row-fluid .offset11:first-child{margin-left:94.1988950276243%;*margin-left:94.09251204890089%}.row-fluid .offset10{margin-left:88.39779005524862%;*margin-left:88.2914070765252%}.row-fluid .offset10:first-child{margin-left:85.6353591160221%;*margin-left:85.52897613729868%}.row-fluid .offset9{margin-left:79.8342541436464%;*margin-left:79.72787116492299%}.row-fluid .offset9:first-child{margin-left:77.07182320441989%;*margin-left:76.96544
022569647%}.row-fluid .offset8{margin-left:71.2707182320442%;*margin-left:71.16433525332079%}.row-fluid .offset8:first-child{margin-left:68.50828729281768%;*margin-left:68.40190431409427%}.row-fluid .offset7{margin-left:62.70718232044199%;*margin-left:62.600799341718584%}.row-fluid .offset7:first-child{margin-left:59.94475138121547%;*margin-left:59.838368402492065%}.row-fluid .offset6{margin-left:54.14364640883978%;*margin-left:54.037263430116376%}.row-fluid .offset6:first-child{margin-left:51.38121546961326%;*margin-left:51.27483249088986%}.row-fluid .offset5{margin-left:45.58011049723757%;*margin-left:45.47372751851417%}.row-fluid .offset5:first-child{margin-left:42.81767955801105%;*margin-left:42.71129657928765%}.row-fluid .offset4{margin-left:37.01657458563536%;*margin-left:36.91019160691196%}.row-fluid .offset4:first-child{margin-left:34.25414364640884%;*margin-left:34.14776066768544%}.row-fluid .offset3{margin-left:28.45303867403315%;*margin-left:28.346655695309746%}.row-fluid
.offset3:first-child{margin-left:25.69060773480663%;*margin-left:25.584224756083227%}.row-fluid .offset2{margin-left:19.88950276243094%;*margin-left:19.783119783707537%}.row-fluid .offset2:first-child{margin-left:17.12707182320442%;*margin-left:17.02068884448102%}.row-fluid .offset1{margin-left:11.32596685082873%;*margin-left:11.219583872105325%}.row-fluid .offset1:first-child{margin-left:8.56353591160221%;*margin-left:8.457152932878806%}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:20px}input.span12,textarea.span12,.uneditable-input.span12{width:710px}input.span11,textarea.span11,.uneditable-input.span11{width:648px}input.span10,textarea.span10,.uneditable-input.span10{width:586px}input.span9,textarea.span9,.uneditable-input.span9{width:524px}input.span8,textarea.span8,.uneditable-input.span8{width:462px}input.span7,textarea.span7,.uneditable-input.span7{width:400px}input.span6,textarea.span6,.uneditable-input.span6{width:
338px}input.span5,textarea.span5,.uneditable-input.span5{width:276px}input.span4,textarea.span4,.uneditable-input.span4{width:214px}input.span3,textarea.span3,.uneditable-input.span3{width:152px}input.span2,textarea.span2,.uneditable-input.span2{width:90px}input.span1,textarea.span1,.uneditable-input.span1{width:28px}}@media(max-width:767px){body{padding-right:20px;padding-left:20px}.navbar-fixed-top,.navbar-fixed-bottom{margin-right:-20px;margin-left:-20px}.container-fluid{padding:0}.dl-horizontal dt{float:none;width:auto;clear:none;text-align:left}.dl-horizontal dd{margin-left:0}.container{width:auto}.row-fluid{width:100%}.row,.thumbnails{margin-left:0}.thumbnails>li{float:none;margin-left:0}[class*="span"],.row-fluid [class*="span"]{display:block;float:none;width:auto;margin-left:0}.span12,.row-fluid .span12{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.input-large,.input-xlarge,.input-xxlarge,input[class*="span"],select[class*="span"]
,textarea[class*="span"],.uneditable-input{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.input-prepend input,.input-append input,.input-prepend input[class*="span"],.input-append input[class*="span"]{display:inline-block;width:auto}.modal{position:fixed;top:20px;right:20px;left:20px;width:auto;margin:0}.modal.fade.in{top:auto}}@media(max-width:480px){.nav-collapse{-webkit-transform:translate3d(0,0,0)}.page-header h1 small{display:block;line-height:20px}input[type="checkbox"],input[type="radio"]{border:1px solid #ccc}.form-horizontal .control-group>label{float:none;width:auto;padding-top:0;text-align:left}.form-horizontal .controls{margin-left:0}.form-horizontal .control-list{padding-top:0}.form-horizontal .form-actions{padding-right:10px;padding-left:10px}.modal{top:10px;right:10px;left:10px}.modal-header .close{padding:10px;margin:-10px}.carousel-caption{position:static}}@media(max-width:979px){body{padding-
top:0}.navbar-fixed-top,.navbar-fixed-bottom{position:static}.navbar-fixed-top{margin-bottom:20px}.navbar-fixed-bottom{margin-top:20px}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding:5px}.navbar .container{width:auto;padding:0}.navbar .brand{padding-right:10px;padding-left:10px;margin:0 0 0 -5px}.nav-collapse{clear:both}.nav-collapse .nav{float:none;margin:0 0 10px}.nav-collapse .nav>li{float:none}.nav-collapse .nav>li>a{margin-bottom:2px}.nav-collapse .nav>.divider-vertical{display:none}.nav-collapse .nav .nav-header{color:#555;text-shadow:none}.nav-collapse .nav>li>a,.nav-collapse .dropdown-menu a{padding:9px 15px;font-weight:bold;color:#555;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.nav-collapse .btn{padding:4px 10px 4px;font-weight:normal;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.nav-collapse .dropdown-menu li+li a{margin-bottom:2px}.nav-collapse .nav>li>a:hover,.nav-collapse .dropdown-menu a:hover{bac
kground-color:#f2f2f2}.navbar-inverse .nav-collapse .nav>li>a:hover,.navbar-inverse .nav-collapse .dropdown-menu a:hover{background-color:#111}.nav-collapse.in .btn-group{padding:0;margin-top:5px}.nav-collapse .dropdown-menu{position:static;top:auto;left:auto;display:block;float:none;max-width:none;padding:0;margin:0 15px;background-color:transparent;border:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.nav-collapse .dropdown-menu:before,.nav-collapse .dropdown-menu:after{display:none}.nav-collapse .dropdown-menu .divider{display:none}.nav-collapse .navbar-form,.nav-collapse .navbar-search{float:none;padding:10px 15px;margin:10px 0;border-top:1px solid #f2f2f2;border-bottom:1px solid #f2f2f2;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1p
x 0 rgba(255,255,255,0.1)}.navbar .nav-collapse .nav.pull-right{float:none;margin-left:0}.nav-collapse,.nav-collapse.collapse{height:0;overflow:hidden}.navbar .btn-navbar{display:block}.navbar-static .navbar-inner{padding-right:10px;padding-left:10px}}@media(min-width:980px){.nav-collapse.collapse{height:auto!important;overflow:visible!important}}