From f585d90c0ecac0b2f633b024e05774ead54ce570 Mon Sep 17 00:00:00 2001 From: diatomsRcool Date: Wed, 23 Sep 2020 11:03:25 -0400 Subject: [PATCH 001/332] adding collections process terms (#165) * adding collections process terms No JIRA :( --- .../resources/rdf/tbox/filegraph/vivo.owl | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/home/src/main/resources/rdf/tbox/filegraph/vivo.owl b/home/src/main/resources/rdf/tbox/filegraph/vivo.owl index 205cb2e6..1dd529cb 100644 --- a/home/src/main/resources/rdf/tbox/filegraph/vivo.owl +++ b/home/src/main/resources/rdf/tbox/filegraph/vivo.owl @@ -5982,6 +5982,32 @@ To enable other Gender/Sex codes to be used, this dataproperty has range URI. Th + + + + Data Collection Process + + Observing and recording the presence or absence of butterflies during a transect walk.; A trip camera capture of an image of a jaguar is an observation, because it is "selected" by the camera as worthy of obsevation simply by virtue of moving in front of the camera.; Seeing three pelicans flying overhead on Christmas day and report them as part of the Christmas Bird Count. + + A process in which a person or machine sees or detects a material entity and selects it as worthy of observation, and which has as output an information content entity about the selected material entity. + Under development + A collection process in which an information content entity is collected for research or scholarly purposes. The immediate use case is recording observations of taxa (presence/absence). Need to figure out how this relates to OBI assay OBI:0000070. maybe has broader synonym OBI:0000070 + + + + + + + + Taxonomic Identification Process + + Using a key to identify a plant in the field.; Using DNA barcoding to identify a plant species.; Associating a museum specimen with a specific taxonomic concept based on its characters.; Using BLAST to identify the taxa present in an environmental (metagenomic) sample. + + A curation process in which a taxonomic name is appied to a biological entity to denote membership in a taxon. + + + + @@ -9754,6 +9780,20 @@ This class allows for linking an author to a publication while indicating inform + + + + + Georeferenced + + A curation process in which a material entity is annotated with geo-coordinates to indicate the location of a collection + Under development + PERSON: Anne Thessen + Georeferencing Process + + + + @@ -9846,6 +9886,21 @@ This class allows for linking an author to a publication while indicating inform + + + + + Identified + + A curation process in which a term is appied to a material entity to denote its type or kind + Under development + PERSON: Anne Thessen + This is intended to apply to a wide variety of material entities, not just biological specimens. + Identification Process + + + + @@ -10028,6 +10083,21 @@ This class allows for linking an author to a publication while indicating inform + + + + + Measured + + A curation process in which data are collected about a specimen in a collection + Under development + PERSON: Anne Thessen + possibly has broader synonym OBI assay OBI:0000070 because all measurement processes will be assays, but not all assays will be performed on a material entity in a collection + Measurement Process + + + + From 17dd020835a19b8d0b47c96cb33b7b94e8f65264 Mon Sep 17 00:00:00 2001 From: Andrew Woods Date: Wed, 30 Sep 2020 16:47:52 -0400 Subject: [PATCH 002/332] Non-functional change to comment in example.applicationSetup.n3 Related to: https://jira.lyrasis.org/browse/VIVO-1741 --- home/src/main/resources/config/example.applicationSetup.n3 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/home/src/main/resources/config/example.applicationSetup.n3 b/home/src/main/resources/config/example.applicationSetup.n3 index 7b5dfb39..0acd91f0 100644 --- a/home/src/main/resources/config/example.applicationSetup.n3 +++ b/home/src/main/resources/config/example.applicationSetup.n3 @@ -82,10 +82,10 @@ # ---------------------------- # # Content triples source module: holds data contents -# The SDB-based implementation is the default option. It reads its parameters +# The TDB-based implementation is the default option. It reads its parameters # from the runtime.properties file, for backward compatibility. # -# Other implementations are based on a local TDB instance, a "standard" SPARQL +# Other implementations are based on an SDB instance, a "standard" SPARQL # endpoint, or a Virtuoso endpoint, with parameters as shown. # From c54f8a105b3ce553e9596fa2e9f354f589b9db67 Mon Sep 17 00:00:00 2001 From: "L.O" <53535673+lb-ov@users.noreply.github.com> Date: Wed, 6 Jan 2021 14:31:09 -0600 Subject: [PATCH 003/332] Update orcidConfirm.ftl (#199) Fix i18n property used on ORCID confirmation step 2 button. Related to https://jira.lyrasis.org/browse/VIVO-1945 --- .../webapp/templates/freemarker/body/orcid/orcidConfirm.ftl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webapp/src/main/webapp/templates/freemarker/body/orcid/orcidConfirm.ftl b/webapp/src/main/webapp/templates/freemarker/body/orcid/orcidConfirm.ftl index 1f33e623..1adfa40c 100644 --- a/webapp/src/main/webapp/templates/freemarker/body/orcid/orcidConfirm.ftl +++ b/webapp/src/main/webapp/templates/freemarker/body/orcid/orcidConfirm.ftl @@ -125,7 +125,7 @@ span.completed {

<#if continueAppears> - ${i18n().orcid_button_step1}<#else>${i18n().orcid_button_step1}" class="submit"/> + ${i18n().orcid_button_step1}<#else>${i18n().orcid_button_step2}" class="submit"/> or ${i18n().orcid_return_to_vivo} From 01776ee6927a483c43bb0b9b300b20d8c7bf87df Mon Sep 17 00:00:00 2001 From: Andrew Woods <149283+awoods@users.noreply.github.com> Date: Fri, 5 Feb 2021 11:56:50 -0500 Subject: [PATCH 004/332] Enable war deployment model (#197) * Add 'home' files into build war artifact Related to: https://jira.lyrasis.org/browse/VIVO-1443 * Disable copying exploded war to Tomcat dir - hardcode vivo.all.log file name - must now set system property: -Dvivo-dir=/opt/vivo/home/ Related to: https://jira.lyrasis.org/browse/VIVO-1443 * Ensure build does not remove and re-add VIVO_HOME/rdf Related to: https://jira.lyrasis.org/browse/VIVO-1443 * Remove unnecessary profile from installer/pom.xml Related to: https://jira.lyrasis.org/browse/VIVO-1443 * Rename example config files to have 'default' prefix Related to: https://jira.lyrasis.org/browse/VIVO-1443 * Require common properties to be in JNDI Properties include: - vitro/home - vitro/appName - vitro/rootUserAddress - vitro/defaultNamespace Related to: https://jira.lyrasis.org/browse/VIVO-1443 * VIVO-1443: app name (#2) * Non-functional change to comment in example.applicationSetup.n3 Related to: https://jira.lyrasis.org/browse/VIVO-1741 * Update orcidConfirm.ftl (#199) * remove example-settings.xml * simplify war name and afford override during build * default app name to vivo and pass into context.xml Co-authored-by: Andrew Woods Co-authored-by: L.O <53535673+lb-ov@users.noreply.github.com> Co-authored-by: Andrew Woods Co-authored-by: William Welling Co-authored-by: L.O <53535673+lb-ov@users.noreply.github.com> --- ...onSetup.n3 => default.applicationSetup.n3} | 0 ....properties => default.runtime.properties} | 30 +-- installer/example-settings.xml | 21 --- installer/home/pom.xml | 82 ++------ installer/home/src/main/assembly/home.xml | 1 + installer/pom.xml | 52 +---- installer/webapp/pom.xml | 178 +++++++----------- .../main/webResources/META-INF/context.xml | 43 +++++ .../WEB-INF/classes/log4j.properties | 2 +- pom.xml | 1 + 10 files changed, 134 insertions(+), 276 deletions(-) rename home/src/main/resources/config/{example.applicationSetup.n3 => default.applicationSetup.n3} (100%) rename home/src/main/resources/config/{example.runtime.properties => default.runtime.properties} (93%) delete mode 100644 installer/example-settings.xml diff --git a/home/src/main/resources/config/example.applicationSetup.n3 b/home/src/main/resources/config/default.applicationSetup.n3 similarity index 100% rename from home/src/main/resources/config/example.applicationSetup.n3 rename to home/src/main/resources/config/default.applicationSetup.n3 diff --git a/home/src/main/resources/config/example.runtime.properties b/home/src/main/resources/config/default.runtime.properties similarity index 93% rename from home/src/main/resources/config/example.runtime.properties rename to home/src/main/resources/config/default.runtime.properties index b0fb959e..f55ffa9f 100644 --- a/home/src/main/resources/config/example.runtime.properties +++ b/home/src/main/resources/config/default.runtime.properties @@ -19,27 +19,6 @@ # BASIC PROPERTIES # ----------------------------------------------------------------------------- - # - # This namespace will be used when generating URIs for objects created in the - # editor. In order to serve linked data, the default namespace must be composed - # as follows (optional elements in parentheses): - # - # scheme + server_name (+ port) (+ servlet_context) + "/individual/" - # - # For example, Cornell's default namespace is: - # - # http://vivo.cornell.edu/individual/ - # -Vitro.defaultNamespace = http://vivo.mydomain.edu/individual/ - - # - # The email address of the root user for the VIVO application. The password - # for this user is initially set to "rootPassword", but you will be asked to - # change the password the first time you log in. - # -rootUser.emailAddress = vivo_root@mydomain.edu - - # # Argon2 password hashing parameters for time, memory and parallelism required to # compute a hash. @@ -79,13 +58,12 @@ email.replyTo = vivoAdmin@mydomain.edu # # URL of Solr context used in local VIVO search. This will usually consist of: # scheme + server_name + port + vivo_webapp_name + "solr" - # In the standard installation, the Solr context will be on the same server as VIVO, - # and in the same Tomcat instance. The path will be the VIVO webapp.name (specified - # in build.properties) + "solr" + # In the standard installation, the Solr context will be on the same server as VIVO + # as a standalone service. # Example: - # vitro.local.solr.url = http://localhost:8080/vivosolr + # vitro.local.solr.url = http://localhost:8983/solr/vivocore # -vitro.local.solr.url = http://localhost:8080/vivosolr +vitro.local.solr.url = http://localhost:8983/solr/vivocore # ----------------------------------------------------------------------------- diff --git a/installer/example-settings.xml b/installer/example-settings.xml deleted file mode 100644 index 0007c79c..00000000 --- a/installer/example-settings.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - defaults - - vivo - - /usr/local/vivo/home - /usr/local/tomcat - - wilma - - - - - - defaults - - diff --git a/installer/home/pom.xml b/installer/home/pom.xml index b0a9deee..19ffe5e5 100644 --- a/installer/home/pom.xml +++ b/installer/home/pom.xml @@ -23,80 +23,24 @@ wilma - - - install - - vivo-dir - - - - - maven-assembly-plugin - - - src/main/assembly/home.xml - - false - - - - package - - single - - - - - - maven-antrun-plugin - - - remove-webapp - verify - - run - - - - - - - - - - - maven-resources-plugin - - - install - install - - copy-resources - - - ${vivo-dir} - - - ${project.build.directory}/${project.build.finalName} - - - - - - - - - - - - maven-install-plugin + maven-assembly-plugin - true + + src/main/assembly/home.xml + + false + + + package + + single + + + diff --git a/installer/home/src/main/assembly/home.xml b/installer/home/src/main/assembly/home.xml index 6de97e21..34f447c0 100644 --- a/installer/home/src/main/assembly/home.xml +++ b/installer/home/src/main/assembly/home.xml @@ -4,6 +4,7 @@ home dir + tar false diff --git a/installer/pom.xml b/installer/pom.xml index ceb494bd..26535206 100644 --- a/installer/pom.xml +++ b/installer/pom.xml @@ -13,6 +13,7 @@ VIVO Installer + vivo ${project.version} true UTF-8 @@ -28,12 +29,6 @@ UTF-8 - - maven-install-plugin - - true - - org.apache.maven.plugins maven-gpg-plugin @@ -157,12 +152,6 @@ - - maven-dependency-plugin - - true - - maven-resources-plugin 2.6 @@ -186,45 +175,6 @@ - - maven-war-plugin - - - default-war - - - - - - - - - install - - vivo-dir - - - - - maven-enforcer-plugin - - - enforce-properties - validate - - enforce - - - - - app-name - You must provide an application name (app-name) - - - - - - diff --git a/installer/webapp/pom.xml b/installer/webapp/pom.xml index ca682a1d..49ea060b 100644 --- a/installer/webapp/pom.xml +++ b/installer/webapp/pom.xml @@ -19,116 +19,9 @@ VIVO Install Web App - - - package - - app-name - - - ${app-name} - - - org.apache.maven.plugins - maven-war-plugin - - - - true - - - false - - - org.vivoweb - vivo-webapp - war - - - - - - - src/main/webResources - true - - - - - - - - - install - - tomcat-dir - - - - - maven-antrun-plugin - - - remove-webapp - verify - - run - - - - - - - - - - - org.apache.maven.plugins - maven-dependency-plugin - - - install - install - - unpack - - - - - ${project.groupId} - ${project.artifactId} - ${project.version} - war - true - ${tomcat-dir}/webapps/${project.build.finalName} - - - - - - - - - - - + ${app-name} - - maven-install-plugin - - true - - maven-clean-plugin @@ -139,6 +32,75 @@ + + org.apache.maven.plugins + maven-dependency-plugin + + + false + + + + include-home + process-resources + + copy + + + + + org.vivoweb + vivo-installer-home + ${project.version} + tar + vivo-home.tar + ${project.build.directory}/home-files + + + + + + + + org.apache.maven.plugins + maven-war-plugin + + + + true + + + false + + + org.vivoweb + vivo-webapp + war + + + + + + + src/main/webResources + true + + + ${project.build.directory}/home-files/ + WEB-INF/resources/home-files/ + + + + diff --git a/installer/webapp/src/main/webResources/META-INF/context.xml b/installer/webapp/src/main/webResources/META-INF/context.xml index f4af100a..ea944913 100644 --- a/installer/webapp/src/main/webResources/META-INF/context.xml +++ b/installer/webapp/src/main/webResources/META-INF/context.xml @@ -1,9 +1,52 @@ + + + + + + + + + + + diff --git a/installer/webapp/src/main/webResources/WEB-INF/classes/log4j.properties b/installer/webapp/src/main/webResources/WEB-INF/classes/log4j.properties index 7bd470d5..17c0c8ff 100644 --- a/installer/webapp/src/main/webResources/WEB-INF/classes/log4j.properties +++ b/installer/webapp/src/main/webResources/WEB-INF/classes/log4j.properties @@ -24,7 +24,7 @@ # debug.log4j.properties exists will be used instead, if it exists, but is not stored in Subversion. log4j.appender.AllAppender=org.apache.log4j.RollingFileAppender -log4j.appender.AllAppender.File= ${catalina.base}/logs/${app-name}.all.log +log4j.appender.AllAppender.File= ${catalina.base}/logs/vivo.all.log log4j.appender.AllAppender.MaxFileSize=10MB log4j.appender.AllAppender.MaxBackupIndex=10 log4j.appender.AllAppender.layout=org.apache.log4j.PatternLayout diff --git a/pom.xml b/pom.xml index 63dc7825..050bf25e 100644 --- a/pom.xml +++ b/pom.xml @@ -56,6 +56,7 @@ + vivo ${project.version} ${basedir} yyyy-MM-dd HH:mm:ss From 6dbc31cc9dcce323610e32e150487295bb1dc533 Mon Sep 17 00:00:00 2001 From: William Welling Date: Tue, 9 Feb 2021 14:01:29 -0600 Subject: [PATCH 005/332] VIVO-1960: GitHub Build Action (#217) * add build workflow * remove travis * update readme badge Partially resolves: https://jira.lyrasis.org/browse/VIVO-1960 --- .github/workflows/build.yml | 31 +++++++++++++++++++++++++++++++ .travis.yml | 22 ---------------------- README.md | 2 +- 3 files changed, 32 insertions(+), 23 deletions(-) create mode 100644 .github/workflows/build.yml delete mode 100644 .travis.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..3f19448c --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,31 @@ +name: Build + +on: [ push, pull_request, workflow_dispatch ] + +jobs: + build: + runs-on: ubuntu-latest + + env: + MAVEN_OPTS: -Xmx1024M + + steps: + - uses: actions/checkout@v2 + + - name: Clone Vitro + run: git clone https://github.com/vivo-project/Vitro.git ../Vitro + + - name: Maven Cache + uses: actions/cache@v2 + with: + path: ~/.m2/repository + key: ${{ runner.os }}-cache-m2-${{ hashFiles('**/pom.xml') }} + restore-keys: ${{ runner.os }}-cache-m2- + + - name: Setup Java + uses: actions/setup-java@v1 + with: + java-version: 1.8 + + - name: Maven Build + run: mvn clean package -Dmaven.test.skip=false diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 6e4a4255..00000000 --- a/.travis.yml +++ /dev/null @@ -1,22 +0,0 @@ -language: java -dist: trusty -sudo: false - -jdk: - - openjdk8 - - oraclejdk8 - -env: - # Give Maven 1GB of memory to work with - - MAVEN_OPTS=-Xmx1024M - -cache: - directories: - - .autoconf - - $HOME/.m2 - -install: - - git clone https://github.com/vivo-project/Vitro.git ../Vitro - -script: - - "mvn clean package -Dmaven.test.skip=false" diff --git a/README.md b/README.md index b7f894a6..ffd09438 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # VIVO: Connect, Share, Discover -[![Build Status](https://travis-ci.org/vivo-project/VIVO.png?branch=develop)](https://travis-ci.org/vivo-project/VIVO) [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.2639714.svg)](https://doi.org/10.5281/zenodo.2639713) +[![Build](https://github.com/vivo-project/VIVO/workflows/Build/badge.svg)](https://github.com/vivo-project/VIVO/actions?query=workflow%3ABuild) [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.2639714.svg)](https://doi.org/10.5281/zenodo.2639713) VIVO is an open source semantic web tool for research discovery -- finding people and the research they do. From f97972e5aa9e94f7a45ce837b9aa0a72836776d7 Mon Sep 17 00:00:00 2001 From: William Welling Date: Tue, 9 Feb 2021 16:46:21 -0600 Subject: [PATCH 006/332] VIVO-1960: GitHub Actions Continued (#218) * add build workflow * remove travis * remove unnecessary vitro cache * update readme badge * run tests during CI build * build CI use java 11 * add repositories to distribution management * deploy from main branch and update readme Follow-on to: https://jira.lyrasis.org/browse/VIVO-1960 --- .github/workflows/build.yml | 4 ++-- .github/workflows/deploy.yml | 41 ++++++++++++++++++++++++++++++++++++ README.md | 2 +- installer/pom.xml | 18 +++++++--------- pom.xml | 2 +- 5 files changed, 53 insertions(+), 14 deletions(-) create mode 100644 .github/workflows/deploy.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3f19448c..09b5b3bd 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -25,7 +25,7 @@ jobs: - name: Setup Java uses: actions/setup-java@v1 with: - java-version: 1.8 + java-version: 11 - name: Maven Build - run: mvn clean package -Dmaven.test.skip=false + run: mvn clean install diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 00000000..6e2acd7e --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,41 @@ +name: Deploy + +on: + push: + branches: + - main + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-latest + + env: + MAVEN_OPTS: -Xmx1024M + + steps: + - uses: actions/checkout@v2 + + - name: Clone Vitro + run: git clone https://github.com/vivo-project/Vitro.git ../Vitro + + - name: Maven Cache + uses: actions/cache@v2 + with: + path: ~/.m2/repository + key: ${{ runner.os }}-cache-m2-${{ hashFiles('**/pom.xml') }} + restore-keys: ${{ runner.os }}-cache-m2- + + - name: Setup Java + uses: actions/setup-java@v1 + with: + java-version: 11 + server-id: ossrh + server-username: MAVEN_USERNAME + server-password: MAVEN_PASSWORD + + - name: Maven Deploy + run: mvn --batch-mode deploy + env: + MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} + MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }} diff --git a/README.md b/README.md index ffd09438..a77727e9 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # VIVO: Connect, Share, Discover -[![Build](https://github.com/vivo-project/VIVO/workflows/Build/badge.svg)](https://github.com/vivo-project/VIVO/actions?query=workflow%3ABuild) [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.2639714.svg)](https://doi.org/10.5281/zenodo.2639713) +[![Build](https://github.com/vivo-project/VIVO/workflows/Build/badge.svg)](https://github.com/vivo-project/VIVO/actions?query=workflow%3ABuild) [![Deploy](https://github.com/vivo-project/VIVO/workflows/Deploy/badge.svg)](https://github.com/vivo-project/VIVO/actions?query=workflow%3ADeploy) [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.2639714.svg)](https://doi.org/10.5281/zenodo.2639713) VIVO is an open source semantic web tool for research discovery -- finding people and the research they do. diff --git a/installer/pom.xml b/installer/pom.xml index 26535206..75ca4250 100644 --- a/installer/pom.xml +++ b/installer/pom.xml @@ -36,12 +36,6 @@ true - - maven-deploy-plugin - - true - - @@ -65,10 +59,6 @@ maven-dependency-plugin 2.10 - - maven-deploy-plugin - 2.7 - maven-enforcer-plugin 1.4.1 @@ -185,6 +175,14 @@ vivo-installer http://vivo-project.github.io/ + + ossrh + https://oss.sonatype.org/content/repositories/snapshots + + + ossrh + https://oss.sonatype.org/service/local/staging/deploy/maven2/ + diff --git a/pom.xml b/pom.xml index 050bf25e..dfd2c427 100644 --- a/pom.xml +++ b/pom.xml @@ -538,6 +538,6 @@ ossrh https://oss.sonatype.org/service/local/staging/deploy/maven2/ - + From 268ffa1cd75caa9dd9ecdc96ae9d37403ad55527 Mon Sep 17 00:00:00 2001 From: Andrew Woods <149283+awoods@users.noreply.github.com> Date: Wed, 10 Feb 2021 12:02:20 -0500 Subject: [PATCH 007/332] Sprint i18n with main (#215) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Layer uqam updates onto master (minus trailing whitespace) * Update AddOrganizerRoleToPersonGenerator.java Removed extraneous whitespace * My whitespace (#153) * Update AddPublicationToPersonGenerator.java * Removed extraneous whitespace AND move RootUserPolicy.java from VIVO to Vitro * Fixed whitespace in: AddAttendeeRoleToPersonGenerator.java * Fixed indentations for AddOutreachProviderRoleToPersonGenerator.java * Fixed indentations * Removed extraneous whitespace (#158) * Removed extraneous whitespace * Fix bug introduced in cleaning up whitespace * Tagging UQAM comments with the following tags -Add-Feature -Optimization -Linguistic-Management -Bug-Correction * Update AddReviewerRoleToPersonGenerator.java * Added an internationalization correction to be considered in the vivo-i18n-core that was forgotten when sprint-i18n was created. * Fix typo in AddReviewerRoleToPersonGenerator Resolves: https://jira.lyrasis.org/browse/VIVO-1774 * Fix typo in AddOutreachProviderRoleToPersonGenerator Resolves: https://jira.lyrasis.org/browse/VIVO-1775 * Include language dependencies in build all of the time (#168) Move "LocaleSelectionSetup" higher in the startup list so that the Vitro:RDFFilesLoader has the locale info available on its startup Part of resolution to: https://jira.lyrasis.org/browse/VIVO-1836 Co-authored-by: Andrew Woods * Made modifications to publicationToPersonUtils.js so that multilangua… (#170) * Made modifications to publicationToPersonUtils.js so that multilanguage support will not break the javascript functionalty. Co-authored-by: root Resolves: https://jira.lyrasis.org/browse/VIVO-1739 * Feature language en_CA (#169) * Changing ontology extensions for n3 & assigning a base IRI to each ontology Co-authored-by: michelheonuqam Co-authored-by: michelheon Partial resolution of: https://jira.lyrasis.org/browse/VIVO-1862 * i18n: title tag and headings in capability map are in english in french version (#173) * added multi-language support for ticket VIVO-1846 * fixed swapped properties, added Capability map title to i18n Partial resolution to: https://jira.lyrasis.org/browse/VIVO-1847 * Added i18n support for Capability Map control buttons, JIRA ticket VIVO-1846 * removed redundat files which are now available via Vitro- and VIVO-languages * added i18n support for the capability map, ticket vivo-1892 * Revert non-function RDF changes (#180) Related to: https://jira.lyrasis.org/browse/VIVO-1905 Co-authored-by: Andrew Woods * Ensure 'other' in Individual->Teaching->advisees->type is translated Partial resolution to: https://jira.lyrasis.org/browse/VIVO-1881 * [VIVO-1842] i18n: Added function js_string at i18n variables to handle quotes properly (#181) * added js_string at i18n strings to handle quotes properly, ticket vivo-1842 Partial resolution for: https://jira.lyrasis.org/browse/VIVO-1842 * replace static headings with i18n values (#183) Partial resolution of: https://jira.lyrasis.org/browse/VIVO-1844 * added empty check for getCountry, fixing bug with spanish label (es), ticket vivo-1900 (#182) Partial resolution to: https://jira.lyrasis.org/browse/VIVO-1900 * Issue/vivo 1908 (#185) * Provide fallback language in language-filtered webpage SPARQL query and use existing RDFService-based filtering for ConstantFieldOptions Resolves: https://jira.lyrasis.org/browse/VIVO-1906 * Fix bug of missing toString() (#187) Related to: https://jira.lyrasis.org/browse/VIVO-1906 Co-authored-by: Andrew Woods * Remove files replicated in i18n (#186) Related to: https://jira.lyrasis.org/browse/VIVO-1917 * removed redundant vitroAnnotations, now in VIVO-languages, ticket vivo-1821 * Removed key.png from the template and replaced it with css sprite and… (#184) * Removed key.png from the template and replaced it with css sprite and descriptions in plain text. * * adding height to background images, hopefully fixing issues Partial resolution for: https://jira.lyrasis.org/browse/VIVO-1902 * [VIVO-1915] i18n - removing language select for label management for individuals (#190) * removed the language select for managing multi language labels fpr individuals, ticket vivo-1915 * modified ManageLabelsForPersonGenerator so that you can only add an langauge label if it is not already set, ticket vivo-1915 Partial resolution to: https://jira.lyrasis.org/browse/VIVO-1915 * - added i18n() to hardcoded values * added i18n support to person's domain in capability map, ticket 1867 * [VIVO-1946] - Update ResearcherID description in vivo.owl (#188) * Update ResearcherID description in vivo.owl Partial resolution to: https://jira.lyrasis.org/browse/VIVO-1946 * [VIVO-1936] i18n: updated the language comment in runtime.properties (#203) Partial resolution of: https://jira.lyrasis.org/browse/VIVO-1936 Co-authored-by: Kampe * [VIVO-1924] i18n: @en i18n properties are not loaded during first site startup. (#204) * rearranged startup-listeners fixing bug with language files, ticket VIVO-1924 * Added a comment to prevent future bugs like this, ticket VIVO-1924 * fixed previous comment, ticket VIVO-1924 * Remove duplicate text from dropdown menus * Minor checkstyle correction following: VIVO-1936 (#206) Follow-on to: https://jira.lyrasis.org/browse/VIVO-1936 Co-authored-by: Andrew Woods * follow-up on vivo-1936 - restore default values in example-settings.xml (#210) Co-authored-by: gneissone * [VIVO-1798] - Internationalize first and last name validation (#207) * Internationalize first and last name validation Partial resolution to: https://jira.lyrasis.org/browse/VIVO-1798 * adding collections process terms (#165) * adding collections process terms No JIRA :( * Non-functional change to comment in example.applicationSetup.n3 Related to: https://jira.lyrasis.org/browse/VIVO-1741 * Update orcidConfirm.ftl (#199) Fix i18n property used on ORCID confirmation step 2 button. Related to https://jira.lyrasis.org/browse/VIVO-1945 * Fix external AGROVOC service URL * URL fix for LCSH service * Remove unnecessary pom.xml 'profile' - Also, uncomment language overlays - Noting that this is not actually necessary, as any 'war' Maven dependencies are automatically overlayed: - https://maven.apache.org/plugins/maven-war-plugin/overlays.html Co-authored-by: Andrew Woods Co-authored-by: Nicolas D <46490666+nicalico@users.noreply.github.com> Co-authored-by: UQAM-VIVO Co-authored-by: matthiasluehr <60263380+matthiasluehr@users.noreply.github.com> Co-authored-by: Michel Heon Co-authored-by: dofeldsc Co-authored-by: William Welling Co-authored-by: Brian Lowe Co-authored-by: Matthias Lühr Co-authored-by: Ben Co-authored-by: Benjamin Kampe Co-authored-by: Kampe Co-authored-by: Gross, Benjamin Co-authored-by: diatomsRcool Co-authored-by: L.O <53535673+lb-ov@users.noreply.github.com> --- .../service/impl/AgrovocService.java | 2 +- .../semservices/service/impl/LCSHService.java | 6 +- .../n3editing/FirstAndLastNameValidator.java | 17 +- .../AddAttendeeRoleToPersonGenerator.java | 42 +- .../AddClinicalRoleToPersonGenerator.java | 20 +- .../AddEditorRoleToPersonGenerator.java | 9 +- ...EditorsToInformationResourceGenerator.java | 3 +- .../AddEditorshipToPersonGenerator.java | 38 +- .../AddHeadOfRoleToPersonGenerator.java | 8 +- .../AddMemberRoleToPersonGenerator.java | 96 +- .../AddOrganizerRoleToPersonGenerator.java | 43 +- ...OutreachProviderRoleToPersonGenerator.java | 109 +- .../AddPublicationToPersonGenerator.java | 87 +- .../AddResearcherRoleToPersonGenerator.java | 14 +- .../AddReviewerRoleToPersonGenerator.java | 149 +- .../AddRoleToPersonTwoStageGenerator.java | 2 +- ...dServiceProviderRoleToPersonGenerator.java | 113 +- .../generators/GeneratorUtil.java | 127 + .../GrantHasContributorGenerator.java | 3 +- .../ManageLabelsForPersonGenerator.java | 13 + .../ManageWebpagesForIndividualGenerator.java | 60 +- .../OrganizationForTrainingGenerator.java | 3 +- ...ganizationHasPositionHistoryGenerator.java | 3 +- ...PersonHasAdviseeRelationshipGenerator.java | 3 +- ...PersonHasAdvisorRelationshipGenerator.java | 3 +- .../ProjectHasParticipantGenerator.java | 3 +- .../vitro/webapp/utilities/Describe.java | 36 + .../CapabilityMapRequestHandler.java | 14 +- .../utilities/CachingRDFServiceExecutor.java | 64 + .../utilities/VisualizationCaches.java | 48 +- .../org/vivoweb/webapp/startup/i18nSetup.java | 6 + .../config/default.runtime.properties | 4 +- .../display/everytime/homePageDataGetters.n3 | 3 +- .../rdf/display/firsttime/aboutPage.n3 | 24 - .../resources/rdf/display/firsttime/menu.n3 | 13 - .../resources/rdf/tbox/filegraph/vivo.owl | 5 +- .../rdf/tbox/firsttime/vitroAnnotations.n3 | 7558 ----------------- installer/home/pom.xml | 8 +- installer/webapp/pom.xml | 20 +- .../WEB-INF/resources/startup_listeners.txt | 12 +- .../css/visualization/capabilitymap/key.css | 37 + .../src/main/webapp/i18n/vivo_all.properties | 908 -- .../capabilitymap/key-sprite.png | Bin 0 -> 1119 bytes .../visualization/capabilitymap/key.png | Bin 6766 -> 0 bytes .../webapp/js/individual/individualUtils.js | 2 +- .../visualization/capabilitymap/graph_new.js | 50 +- .../freemarker/body/aboutQrCodes.ftl | 25 - .../freemarker/body/harvester/fileharvest.ftl | 4 +- .../individual--foaf-person-2column.ftl | 26 +- .../individual--foaf-person-quickview.ftl | 24 +- .../freemarker/body/individual/individual.ftl | 8 +- .../manageLabelsForIndividualAddForm.ftl | 10 - .../edit/forms/addAssociatedConcept.ftl | 28 +- .../forms/addAuthorsToInformationResource.ftl | 16 +- ...nceptThroughObjectPropertyAutoComplete.ftl | 8 +- .../forms/addEditorsToInformationResource.ftl | 14 +- .../edit/forms/addEditorshipToPerson.ftl | 7 +- .../edit/forms/addGrantRoleToPerson.ftl | 6 +- .../edit/forms/addPresenterRoleToPerson.ftl | 6 +- .../edit/forms/addPublicationToPerson.ftl | 7 +- .../edit/forms/addRoleToPersonTwoStage.ftl | 6 +- .../edit/forms/addUserDefinedConcept.ftl | 6 +- .../edit/forms/autoCompleteDataPropForm.ftl | 6 +- .../forms/defaultAddMissingIndividualForm.ftl | 2 +- .../edit/forms/grantAdministeredBy.ftl | 6 +- .../edit/forms/grantHasContributor.ftl | 6 +- .../edit/forms/js/publicationToPersonUtils.js | 12 +- .../edit/forms/manageGrantsForIndividual.ftl | 4 +- .../forms/managePeopleForOrganization.ftl | 4 +- .../forms/managePublicationsForIndividual.ftl | 4 +- .../forms/manageWebpagesForIndividual.ftl | 8 +- .../forms/organizationAdministersGrant.ftl | 6 +- .../edit/forms/organizationForTraining.ftl | 6 +- .../forms/organizationHasPositionHistory.ftl | 6 +- .../forms/personHasAdviseeRelationship.ftl | 10 +- .../forms/personHasAdvisorRelationship.ftl | 10 +- .../edit/forms/personHasAwardOrHonor.ftl | 8 +- .../forms/personHasEducationalTraining.ftl | 6 +- .../edit/forms/personHasIssuedCredential.ftl | 6 +- .../edit/forms/personHasPositionHistory.ftl | 6 +- .../edit/forms/projectHasParticipant.ftl | 6 +- .../capabilitymap/capabilityMap.ftl | 101 +- .../coAuthorshipSparklineContent.ftl | 18 +- .../copi/coInvestigationSparklineContent.ftl | 16 +- .../entityComparisonSetup.ftl | 136 +- .../grant/personGrantSparklineContent.ftl | 14 +- .../mapOfScience/aboutMapOfScience.ftl | 52 - .../mapOfScience/mapOfScienceSetup.ftl | 74 +- .../mapOfScience/mapOfScienceTooltips.ftl | 70 - .../personlevel/coAuthorPersonLevelD3.ftl | 16 +- .../personlevel/coPIPersonLevelD3.ftl | 16 +- .../personPublicationCountNoSparkline.ftl | 2 +- .../personPublicationSparklineContent.ftl | 12 +- .../themes/tenderfoot/i18n/all.properties | 101 - .../i18n/images/select_locale_en_US.GIF | Bin 1490 -> 0 bytes .../individual/individual--foaf-person.ftl | 18 +- .../tenderfoot/templates/page/page-home.ftl | 34 +- .../templates/page/partials/headScripts.ftl | 2 +- .../webapp/themes/wilma/i18n/all.properties | 109 - .../wilma/i18n/images/select_locale_en_US.GIF | Bin 1490 -> 0 bytes .../templates/individual--foaf-person.ftl | 20 +- .../themes/wilma/templates/page-home.ftl | 34 +- 102 files changed, 1253 insertions(+), 9703 deletions(-) create mode 100644 api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/GeneratorUtil.java create mode 100644 api/src/main/java/edu/cornell/mannlib/vitro/webapp/utilities/Describe.java delete mode 100644 home/src/main/resources/rdf/display/firsttime/aboutPage.n3 delete mode 100644 home/src/main/resources/rdf/tbox/firsttime/vitroAnnotations.n3 create mode 100644 webapp/src/main/webapp/css/visualization/capabilitymap/key.css delete mode 100644 webapp/src/main/webapp/i18n/vivo_all.properties create mode 100644 webapp/src/main/webapp/images/visualization/capabilitymap/key-sprite.png delete mode 100644 webapp/src/main/webapp/images/visualization/capabilitymap/key.png delete mode 100644 webapp/src/main/webapp/templates/freemarker/body/aboutQrCodes.ftl delete mode 100644 webapp/src/main/webapp/templates/freemarker/visualization/mapOfScience/aboutMapOfScience.ftl delete mode 100644 webapp/src/main/webapp/templates/freemarker/visualization/mapOfScience/mapOfScienceTooltips.ftl delete mode 100644 webapp/src/main/webapp/themes/tenderfoot/i18n/all.properties delete mode 100644 webapp/src/main/webapp/themes/tenderfoot/i18n/images/select_locale_en_US.GIF delete mode 100644 webapp/src/main/webapp/themes/wilma/i18n/all.properties delete mode 100644 webapp/src/main/webapp/themes/wilma/i18n/images/select_locale_en_US.GIF diff --git a/api/src/main/java/edu/cornell/mannlib/semservices/service/impl/AgrovocService.java b/api/src/main/java/edu/cornell/mannlib/semservices/service/impl/AgrovocService.java index 0a61876d..1f3ddcea 100644 --- a/api/src/main/java/edu/cornell/mannlib/semservices/service/impl/AgrovocService.java +++ b/api/src/main/java/edu/cornell/mannlib/semservices/service/impl/AgrovocService.java @@ -58,7 +58,7 @@ public class AgrovocService implements ExternalConceptService { protected final String dbpedia_endpoint = " http://dbpedia.org/sparql"; // URL to get all the information for a concept - protected final String conceptSkosMosBase = "http://agrovoc.uniroma2.it/agrovoc/rest/v1/"; + protected final String conceptSkosMosBase = "https://agrovoc.uniroma2.it/agrovoc/rest/v1/"; protected final String conceptsSkosMosSearch = conceptSkosMosBase + "search?"; protected final String conceptSkosMosURL = conceptSkosMosBase + "data?"; @Override diff --git a/api/src/main/java/edu/cornell/mannlib/semservices/service/impl/LCSHService.java b/api/src/main/java/edu/cornell/mannlib/semservices/service/impl/LCSHService.java index 32327ebc..7b42cfb9 100644 --- a/api/src/main/java/edu/cornell/mannlib/semservices/service/impl/LCSHService.java +++ b/api/src/main/java/edu/cornell/mannlib/semservices/service/impl/LCSHService.java @@ -35,7 +35,7 @@ public class LCSHService implements ExternalConceptService { protected final Log log = LogFactory.getLog(getClass()); private final String skosSuffix = ".skos.rdf"; - private final String hostUri = "http://id.loc.gov"; + private final String hostUri = "https://id.loc.gov"; private final String schemeUri = hostUri + "/authorities/subjects"; private final String baseUri = hostUri + "/search/"; @@ -94,7 +94,7 @@ public class LCSHService implements ExternalConceptService { bestMatch = "false"; } log.debug("-" + uri + "-"); - //This is the URL for retrieving the concept - the pattern is http://id.loc.gov/authorities/subjects/sh85014203.skos.rdf + //This is the URL for retrieving the concept - the pattern is https://id.loc.gov/authorities/subjects/sh85014203.skos.rdf //This is not the URI itself which would be http://id.loc.gov/authorities/subjects/sh85014203 String conceptURLString = getSKOSURL(uri); String baseConceptURI = uri; @@ -152,7 +152,7 @@ public class LCSHService implements ExternalConceptService { private String getSKOSURL(String uri) { - String skosURI = uri + skosSuffix; + String skosURI = uri.replaceFirst("http://", "https://") + skosSuffix; return skosURI; } diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/FirstAndLastNameValidator.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/FirstAndLastNameValidator.java index 6cf29654..93f074ba 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/FirstAndLastNameValidator.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/FirstAndLastNameValidator.java @@ -11,15 +11,18 @@ import org.apache.jena.rdf.model.Literal; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.N3ValidatorVTwo; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditConfigurationVTwo; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.MultiValueEditSubmission; +import edu.cornell.mannlib.vitro.webapp.i18n.I18nBundle; public class FirstAndLastNameValidator implements N3ValidatorVTwo { - private static String MISSING_FIRST_NAME_ERROR = "You must enter a value in the First Name field."; - private static String MISSING_LAST_NAME_ERROR = "You must enter a value in the Last Name field."; - private static String MALFORMED_LAST_NAME_ERROR = "The last name field may not contain a comma. Please enter first name in First Name field."; + private static String MISSING_FIRST_NAME_ERROR = "first_name_empty_msg"; + private static String MISSING_LAST_NAME_ERROR = "last_name_empty_msg"; + private static String MALFORMED_LAST_NAME_ERROR = "malformed_last_name_msg"; + private I18nBundle i18n; private String uriReceiver; - public FirstAndLastNameValidator(String uriReceiver) { + public FirstAndLastNameValidator(String uriReceiver, I18nBundle i18n) { + this.i18n = i18n; this.uriReceiver = uriReceiver; } @@ -68,14 +71,14 @@ public class FirstAndLastNameValidator implements N3ValidatorVTwo { } if (lastName == null) { - errors.put("lastName", MISSING_LAST_NAME_ERROR); + errors.put("lastName", i18n.text(MISSING_LAST_NAME_ERROR)); // Don't reject space in the last name: de Vries, etc. } else if (lastNameValue.contains(",")) { - errors.put("lastName", MALFORMED_LAST_NAME_ERROR); + errors.put("lastName", i18n.text(MALFORMED_LAST_NAME_ERROR)); } if (firstName == null) { - errors.put("firstName", MISSING_FIRST_NAME_ERROR); + errors.put("firstName", i18n.text(MISSING_FIRST_NAME_ERROR)); } return errors.size() != 0 ? errors : null; diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddAttendeeRoleToPersonGenerator.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddAttendeeRoleToPersonGenerator.java index 69ad7422..5ee95eb8 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddAttendeeRoleToPersonGenerator.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddAttendeeRoleToPersonGenerator.java @@ -5,6 +5,7 @@ package edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.ConstantFieldOptions; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.FieldOptions; +import edu.cornell.mannlib.vitro.webapp.i18n.I18n; public class AddAttendeeRoleToPersonGenerator extends AddRoleToPersonTwoStageGenerator { @@ -21,28 +22,28 @@ public class AddAttendeeRoleToPersonGenerator extends AddRoleToPersonTwoStageGen /** Editor role involves hard-coded options for the "right side" of the role or activity. */ @Override FieldOptions getRoleActivityFieldOptions(VitroRequest vreq) throws Exception { - return new ConstantFieldOptions( - "", "Select type", - "http://purl.org/NET/c4dm/event.owl#Event", "Event", - "http://vivoweb.org/ontology/core#Competition", "Competition", - "http://purl.org/ontology/bibo/Conference", "Conference", - "http://vivoweb.org/ontology/core#Course", "Course", - "http://vivoweb.org/ontology/core#Exhibit", "Exhibit", - "http://purl.org/ontology/bibo/Hearing", "Hearing", - "http://purl.org/ontology/bibo/Interview", "Interview", - "http://vivoweb.org/ontology/core#Meeting", "Meeting", - "http://purl.org/ontology/bibo/Performance", "Performance", - "http://vivoweb.org/ontology/core#Presentation", "Presentation", - "http://vivoweb.org/ontology/core#InvitedTalk", "Invited Talk", - "http://purl.org/ontology/bibo/Workshop", "Workshop", - "http://vivoweb.org/ontology/core#EventSeries", "Event Series", - "http://vivoweb.org/ontology/core#ConferenceSeries", "Conference Series", - "http://vivoweb.org/ontology/core#SeminarSeries", "Seminar Series", - "http://vivoweb.org/ontology/core#WorkshopSeries", "Workshop Series" - ); + return GeneratorUtil.buildResourceAndLabelFieldOptions( + vreq.getRDFService(), vreq.getWebappDaoFactory(), "", + I18n.bundle(vreq).text("select_type"), + "http://purl.org/NET/c4dm/event.owl#Event", + "http://vivoweb.org/ontology/core#Competition", + "http://purl.org/ontology/bibo/Conference", + "http://vivoweb.org/ontology/core#Course", + "http://vivoweb.org/ontology/core#Exhibit", + "http://purl.org/ontology/bibo/Hearing", + "http://purl.org/ontology/bibo/Interview", + "http://vivoweb.org/ontology/core#Meeting", + "http://purl.org/ontology/bibo/Performance", + "http://vivoweb.org/ontology/core#Presentation", + "http://vivoweb.org/ontology/core#InvitedTalk", + "http://purl.org/ontology/bibo/Workshop", + "http://vivoweb.org/ontology/core#EventSeries", + "http://vivoweb.org/ontology/core#ConferenceSeries", + "http://vivoweb.org/ontology/core#SeminarSeries", + "http://vivoweb.org/ontology/core#WorkshopSeries" + ); } - @Override boolean isShowRoleLabelField() { return false; } @@ -65,3 +66,4 @@ public class AddAttendeeRoleToPersonGenerator extends AddRoleToPersonTwoStageGen } */ } + diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddClinicalRoleToPersonGenerator.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddClinicalRoleToPersonGenerator.java index 1586860f..12f3b183 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddClinicalRoleToPersonGenerator.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddClinicalRoleToPersonGenerator.java @@ -5,6 +5,7 @@ package edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.ConstantFieldOptions; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.FieldOptions; +import edu.cornell.mannlib.vitro.webapp.i18n.I18n; public class AddClinicalRoleToPersonGenerator extends AddRoleToPersonTwoStageGenerator { @@ -22,22 +23,21 @@ public class AddClinicalRoleToPersonGenerator extends AddRoleToPersonTwoStageGen } /** Clinical role involves hard-coded options for the "right side" of the role or activity. */ - @Override - FieldOptions getRoleActivityFieldOptions(VitroRequest vreq) throws Exception { - return new ConstantFieldOptions( - "", "Select one", - "http://vivoweb.org/ontology/core#Project", "Project", - "http://purl.obolibrary.org/obo/ERO_0000005", "Service" - ); + @Override + FieldOptions getRoleActivityFieldOptions(VitroRequest vreq) throws Exception { + return GeneratorUtil.buildResourceAndLabelFieldOptions( + vreq.getRDFService(), vreq.getWebappDaoFactory(), "", + I18n.bundle(vreq).text("select_type"), + "http://vivoweb.org/ontology/core#Project", + "http://purl.obolibrary.org/obo/ERO_0000005" /* Service */ + ); } - //isShowRoleLabelField remains true for this so doesn't need to be overwritten @Override - boolean isShowRoleLabelField(){ + boolean isShowRoleLabelField(){ return true; } - /* * Use the methods below to change the date/time precision in the * custom form associated with this generator. When not used, the diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddEditorRoleToPersonGenerator.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddEditorRoleToPersonGenerator.java index fcfc66a8..b3abf45a 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddEditorRoleToPersonGenerator.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddEditorRoleToPersonGenerator.java @@ -5,6 +5,8 @@ package edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.ChildVClassesOptions; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.FieldOptions; +import edu.cornell.mannlib.vitro.webapp.i18n.I18n; +import edu.cornell.mannlib.vitro.webapp.i18n.I18nBundle; /** * Generates the edit configuration for adding a Role to a Person. @@ -46,8 +48,13 @@ public class AddEditorRoleToPersonGenerator extends AddRoleToPersonTwoStageGener @Override FieldOptions getRoleActivityFieldOptions(VitroRequest vreq) throws Exception { + // UQAM-Linguistic-Management Managing linguistic context + I18nBundle i18n = I18n.bundle(vreq); + String i18nSelectType = i18n.text("select_type"); + String selectType = (i18nSelectType == null || i18nSelectType.isEmpty()) ? "Select type" : i18nSelectType ; + return new ChildVClassesOptions(OPTION_CLASS_URI) - .setDefaultOptionLabel("Select type"); + .setDefaultOptionLabel(selectType); } /** Do not show the role label field for the AddEditorRoleToPerson form */ diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddEditorsToInformationResourceGenerator.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddEditorsToInformationResourceGenerator.java index a7946517..9653eeb7 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddEditorsToInformationResourceGenerator.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddEditorsToInformationResourceGenerator.java @@ -32,6 +32,7 @@ import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditConfigurationUti import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditConfigurationVTwo; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.FieldVTwo; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.validators.AntiXssValidation; +import edu.cornell.mannlib.vitro.webapp.i18n.I18n; /** * This is a slightly unusual generator that is used by Manage Editors on @@ -83,7 +84,7 @@ public class AddEditorsToInformationResourceGenerator extends VivoBaseGenerator //template file editConfiguration.setTemplate("addEditorsToInformationResource.ftl"); //add validators - editConfiguration.addValidator(new FirstAndLastNameValidator("personUri")); + editConfiguration.addValidator(new FirstAndLastNameValidator("personUri", I18n.bundle(vreq))); //Adding additional data, specifically edit mode addFormSpecificData(editConfiguration, vreq); diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddEditorshipToPersonGenerator.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddEditorshipToPersonGenerator.java index 41cea139..c206c857 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddEditorshipToPersonGenerator.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddEditorshipToPersonGenerator.java @@ -23,9 +23,10 @@ import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder; import edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditConfigurationUtils; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditConfigurationVTwo; -import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.ConstantFieldOptions; +import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.FieldOptions; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.FieldVTwo; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.validators.AntiXssValidation; +import edu.cornell.mannlib.vitro.webapp.i18n.I18n; import edu.cornell.mannlib.vitro.webapp.modelaccess.ModelAccess; import edu.cornell.mannlib.vitro.webapp.utils.FrontEndEditingUtils.EditMode; import edu.cornell.mannlib.vitro.webapp.utils.generators.EditModeUtils; @@ -108,8 +109,8 @@ public class AddEditorshipToPersonGenerator extends VivoBaseGenerator implements conf.addField( new FieldVTwo(). setName("documentType"). setValidators( list("nonempty") ). - setOptions( new ConstantFieldOptions("documentType", getDocumentTypeLiteralOptions() )) - ); + // UQAM-Linguistic-Management vreq for linguistic context + setOptions( getDocumentTypeLiteralOptions(vreq) ) ); conf.addField( new FieldVTwo(). setName("documentLabel"). @@ -203,21 +204,22 @@ public class AddEditorshipToPersonGenerator extends VivoBaseGenerator implements return null; } - private List> getDocumentTypeLiteralOptions() { - List> literalOptions = new ArrayList>(); - literalOptions.add(list("http://purl.org/ontology/bibo/Book", "Book")); - literalOptions.add(list("http://purl.org/ontology/bibo/Chapter", "Chapter")); - literalOptions.add(list("http://purl.org/ontology/bibo/EditedBook", "Edited Book")); - literalOptions.add(list("http://purl.org/ontology/bibo/Film", "Film")); - literalOptions.add(list("http://purl.org/ontology/bibo/Magazine", "Magazine")); - literalOptions.add(list("http://vivoweb.org/ontology/core#Newsletter", "Newsletter")); - literalOptions.add(list("http://purl.org/ontology/bibo/Newspaper", "Newspaper")); - literalOptions.add(list("http://vivoweb.org/ontology/core#NewsRelease", "News Release")); - literalOptions.add(list("http://purl.org/ontology/bibo/Report", "Report")); - literalOptions.add(list("http://vivoweb.org/ontology/core#Video", "Video")); - literalOptions.add(list("http://purl.org/ontology/bibo/Webpage", "Webpage")); - literalOptions.add(list("http://purl.org/ontology/bibo/Website", "Website")); - return literalOptions; + private FieldOptions getDocumentTypeLiteralOptions(VitroRequest vreq) throws Exception { + return GeneratorUtil.buildResourceAndLabelFieldOptions( + vreq.getRDFService(), vreq.getWebappDaoFactory(), "", + I18n.bundle(vreq).text("select_type"), + "http://purl.org/ontology/bibo/Book", + "http://purl.org/ontology/bibo/Chapter", + "http://purl.org/ontology/bibo/EditedBook", + "http://purl.org/ontology/bibo/Film", + "http://purl.org/ontology/bibo/Magazine", + "http://vivoweb.org/ontology/core#Newsletter", + "http://purl.org/ontology/bibo/Newspaper", + "http://vivoweb.org/ontology/core#NewsRelease", + "http://purl.org/ontology/bibo/Report", + "http://vivoweb.org/ontology/core#Video", + "http://purl.org/ontology/bibo/Webpage", + "http://purl.org/ontology/bibo/Website"); } } diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddHeadOfRoleToPersonGenerator.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddHeadOfRoleToPersonGenerator.java index 8afed1e4..0c375af0 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddHeadOfRoleToPersonGenerator.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddHeadOfRoleToPersonGenerator.java @@ -5,6 +5,8 @@ package edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.ChildVClassesOptions; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.FieldOptions; +import edu.cornell.mannlib.vitro.webapp.i18n.I18n; +import edu.cornell.mannlib.vitro.webapp.i18n.I18nBundle; public class AddHeadOfRoleToPersonGenerator extends AddRoleToPersonTwoStageGenerator { @@ -25,10 +27,14 @@ public class AddHeadOfRoleToPersonGenerator extends AddRoleToPersonTwoStageGener /** Head Of role involves hard-coded options for the "right side" of the role or activity */ @Override FieldOptions getRoleActivityFieldOptions(VitroRequest vreq) throws Exception { + // UQAM-Linguistic-Management Taking into account the linguistic context + I18nBundle i18n = I18n.bundle(vreq); + String i18nSelectType = i18n.text("select_type"); + String selectType = (i18nSelectType == null || i18nSelectType.isEmpty()) ? "Select type" : i18nSelectType ; return new ChildVClassesOptions(OPTION_CLASS_URI) - .setDefaultOptionLabel("Select type"); + .setDefaultOptionLabel(selectType); } @Override diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddMemberRoleToPersonGenerator.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddMemberRoleToPersonGenerator.java index ba79af35..fed25fb3 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddMemberRoleToPersonGenerator.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddMemberRoleToPersonGenerator.java @@ -2,9 +2,28 @@ package edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators; +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; + +import org.apache.jena.query.Query; +import org.apache.jena.query.QueryExecution; +import org.apache.jena.query.QueryExecutionFactory; +import org.apache.jena.query.QueryFactory; +import org.apache.jena.query.QuerySolution; +import org.apache.jena.query.ResultSet; +import org.apache.jena.rdf.model.AnonId; +import org.apache.jena.rdf.model.Model; +import org.apache.jena.rdf.model.ModelFactory; + import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.ConstantFieldOptions; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.FieldOptions; +import edu.cornell.mannlib.vitro.webapp.i18n.I18n; +import edu.cornell.mannlib.vitro.webapp.i18n.I18nBundle; +import edu.cornell.mannlib.vitro.webapp.i18n.selection.SelectedLocale; +import edu.cornell.mannlib.vitro.webapp.rdfservice.RDFService; +import edu.cornell.mannlib.vitro.webapp.rdfservice.impl.RDFServiceUtils; public class AddMemberRoleToPersonGenerator extends AddRoleToPersonTwoStageGenerator { @@ -20,44 +39,45 @@ public class AddMemberRoleToPersonGenerator extends AddRoleToPersonTwoStageGener return "http://vivoweb.org/ontology/core#MemberRole"; } - @Override - FieldOptions getRoleActivityFieldOptions(VitroRequest vreq) throws Exception { - return new ConstantFieldOptions( - "","Select type", - "http://vivoweb.org/ontology/core#AcademicDepartment","Academic Department", - "http://vivoweb.org/ontology/core#Association","Association", - "http://vivoweb.org/ontology/core#Center","Center", - "http://vivoweb.org/ontology/core#ClinicalOrganization","Clinical Organization", - "http://vivoweb.org/ontology/core#College","College", - "http://vivoweb.org/ontology/core#Committee","Committee", - "http://vivoweb.org/ontology/core#Company","Company", - "http://vivoweb.org/ontology/core#Consortium","Consortium", - "http://vivoweb.org/ontology/core#CoreLaboratory","Core Laboratory", - "http://vivoweb.org/ontology/core#Department","Department", - "http://vivoweb.org/ontology/core#Division","Division", - "http://vivoweb.org/ontology/core#ExtensionUnit","Extension Unit", - "http://vivoweb.org/ontology/core#Foundation","Foundation", - "http://vivoweb.org/ontology/core#FundingOrganization","Funding Organization", - "http://vivoweb.org/ontology/core#GovernmentAgency","Government Agency", - "http://xmlns.com/foaf/0.1/Group","Group", - "http://vivoweb.org/ontology/core#Hospital","Hospital", - "http://vivoweb.org/ontology/core#Institute","Institute", - "http://vivoweb.org/ontology/core#Laboratory","Laboratory", - "http://vivoweb.org/ontology/core#Library","Library", - "http://purl.obolibrary.org/obo/OBI_0000835","Manufacturer", - "http://vivoweb.org/ontology/core#Museum","Museum", - "http://xmlns.com/foaf/0.1/Organization","Organization", - "http://vivoweb.org/ontology/core#PrivateCompany","Private Company", - "http://vivoweb.org/ontology/core#Program","Program", - "http://vivoweb.org/ontology/core#Publisher","Publisher", - "http://vivoweb.org/ontology/core#ResearchOrganization","Research Organization", - "http://vivoweb.org/ontology/core#School","School", - "http://vivoweb.org/ontology/core#Team","Team", - "http://vivoweb.org/ontology/core#ServiceProvidingLaboratory","Service Providing Lab", - "http://vivoweb.org/ontology/core#StudentOrganization","Student Organization", - "http://purl.obolibrary.org/obo/ERO_0000565","Technology Transfer Office", - "http://vivoweb.org/ontology/core#University","University"); - } + + FieldOptions getRoleActivityFieldOptions(VitroRequest vreq) throws Exception { + return GeneratorUtil.buildResourceAndLabelFieldOptions( + vreq.getRDFService(), vreq.getWebappDaoFactory(), "", + I18n.bundle(vreq).text("select_type"), + "http://vivoweb.org/ontology/core#AcademicDepartment", + "http://vivoweb.org/ontology/core#Association", + "http://vivoweb.org/ontology/core#Center", + "http://vivoweb.org/ontology/core#ClinicalOrganization", + "http://vivoweb.org/ontology/core#College", + "http://vivoweb.org/ontology/core#Committee", + "http://vivoweb.org/ontology/core#Company", + "http://vivoweb.org/ontology/core#Consortium", + "http://vivoweb.org/ontology/core#CoreLaboratory", + "http://vivoweb.org/ontology/core#Department", + "http://vivoweb.org/ontology/core#Division", + "http://vivoweb.org/ontology/core#ExtensionUnit", + "http://vivoweb.org/ontology/core#Foundation", + "http://vivoweb.org/ontology/core#FundingOrganization", + "http://vivoweb.org/ontology/core#GovernmentAgency", + "http://xmlns.com/foaf/0.1/Group", + "http://vivoweb.org/ontology/core#Hospital", + "http://vivoweb.org/ontology/core#Institute", + "http://vivoweb.org/ontology/core#Laboratory", + "http://vivoweb.org/ontology/core#Library", + "http://purl.obolibrary.org/obo/OBI_0000835" /* Manufacturer */, + "http://vivoweb.org/ontology/core#Museum", + "http://xmlns.com/foaf/0.1/Organization", + "http://vivoweb.org/ontology/core#PrivateCompany", + "http://vivoweb.org/ontology/core#Program", + "http://vivoweb.org/ontology/core#Publisher", + "http://vivoweb.org/ontology/core#ResearchOrganization", + "http://vivoweb.org/ontology/core#School", + "http://vivoweb.org/ontology/core#Team", + "http://vivoweb.org/ontology/core#ServiceProvidingLaboratory", + "http://vivoweb.org/ontology/core#StudentOrganization", + "http://purl.obolibrary.org/obo/ERO_0000565" /* Technology Transfer Office */, + "http://vivoweb.org/ontology/core#University"); + } @Override boolean isShowRoleLabelField(){return true;} diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddOrganizerRoleToPersonGenerator.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddOrganizerRoleToPersonGenerator.java index 1dec78f5..4e1f41d4 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddOrganizerRoleToPersonGenerator.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddOrganizerRoleToPersonGenerator.java @@ -3,8 +3,8 @@ package edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators; import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; -import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.ConstantFieldOptions; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.FieldOptions; +import edu.cornell.mannlib.vitro.webapp.i18n.I18n; public class AddOrganizerRoleToPersonGenerator extends AddRoleToPersonTwoStageGenerator { @@ -22,26 +22,27 @@ public class AddOrganizerRoleToPersonGenerator extends AddRoleToPersonTwoStageGe } //Organizer role involves hard-coded options for the "right side" of the role or activity - @Override - FieldOptions getRoleActivityFieldOptions(VitroRequest vreq) throws Exception { - return new ConstantFieldOptions( - "","Select type", - "http://vivoweb.org/ontology/core#Competition", "Competition", - "http://purl.org/ontology/bibo/Conference", "Conference", - "http://vivoweb.org/ontology/core#Course", "Course", - "http://purl.org/NET/c4dm/event.owl#Event", "Event", - "http://vivoweb.org/ontology/core#Exhibit", "Exhibit", - "http://purl.org/ontology/bibo/Hearing", "Hearing", - "http://purl.org/ontology/bibo/Interview", "Interview", - "http://vivoweb.org/ontology/core#InvitedTalk", "Invited Talk", - "http://vivoweb.org/ontology/core#Meeting", "Meeting", - "http://purl.org/ontology/bibo/Performance", "Performance", - "http://vivoweb.org/ontology/core#Presentation", "Presentation", - "http://purl.org/ontology/bibo/Workshop", "Workshop", - "http://vivoweb.org/ontology/core#ConferenceSeries", "Conference Series", - "http://vivoweb.org/ontology/core#EventSeries", "Event Series", - "http://vivoweb.org/ontology/core#SeminarSeries", "Seminar Series", - "http://vivoweb.org/ontology/core#WorkshopSeries", "Workshop Series"); + FieldOptions getRoleActivityFieldOptions(VitroRequest vreq) throws Exception { + + return GeneratorUtil.buildResourceAndLabelFieldOptions( + vreq.getRDFService(), vreq.getWebappDaoFactory(), + "", I18n.bundle(vreq).text("select_type"), + "http://vivoweb.org/ontology/core#Competition", + "http://purl.org/ontology/bibo/Conference", + "http://vivoweb.org/ontology/core#Course", + "http://purl.org/NET/c4dm/event.owl#Event", + "http://vivoweb.org/ontology/core#Exhibit", + "http://purl.org/ontology/bibo/Hearing", + "http://purl.org/ontology/bibo/Interview", + "http://vivoweb.org/ontology/core#InvitedTalk", + "http://vivoweb.org/ontology/core#Meeting", + "http://purl.org/ontology/bibo/Performance", + "http://vivoweb.org/ontology/core#Presentation", + "http://purl.org/ontology/bibo/Workshop", + "http://vivoweb.org/ontology/core#ConferenceSeries", + "http://vivoweb.org/ontology/core#EventSeries", + "http://vivoweb.org/ontology/core#SeminarSeries", + "http://vivoweb.org/ontology/core#WorkshopSeries"); } @Override diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddOutreachProviderRoleToPersonGenerator.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddOutreachProviderRoleToPersonGenerator.java index 0a69623e..4ee44601 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddOutreachProviderRoleToPersonGenerator.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddOutreachProviderRoleToPersonGenerator.java @@ -3,8 +3,8 @@ package edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators; import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; -import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.ConstantFieldOptions; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.FieldOptions; +import edu.cornell.mannlib.vitro.webapp.i18n.I18n; public class AddOutreachProviderRoleToPersonGenerator extends AddRoleToPersonTwoStageGenerator { @@ -22,59 +22,60 @@ public class AddOutreachProviderRoleToPersonGenerator extends AddRoleToPersonTwo } //Outreach Provider role involves hard-coded options for the "right side" of the role or activity - @Override - FieldOptions getRoleActivityFieldOptions(VitroRequest vreq) throws Exception { - return new ConstantFieldOptions( - "","Select type", - "http://vivoweb.org/ontology/core#AcademicDepartment","Academic Department", - "http://vivoweb.org/ontology/core#Association","Association", - "http://vivoweb.org/ontology/core#Center","Center", - "http://vivoweb.org/ontology/core#ClinicalOrganization","Clinical Organization", - "http://vivoweb.org/ontology/core#College","College", - "http://vivoweb.org/ontology/core#Committee","Committee", - "http://vivoweb.org/ontology/core#Company","Company", - "http://vivoweb.org/ontology/core#Competition", "Competition", - "http://purl.org/ontology/bibo/Conference", "Conference", - "http://vivoweb.org/ontology/core#ConferenceSeries", "Conference Series", - "http://vivoweb.org/ontology/core#Consortium","Consortium", - "http://vivoweb.org/ontology/core#CoreLaboratory","Core Laboratory", - "http://vivoweb.org/ontology/core#Course", "Course", - "http://vivoweb.org/ontology/core#Department","Department", - "http://vivoweb.org/ontology/core#Division","Division", - "http://purl.org/NET/c4dm/event.owl#Event","Event", - "http://vivoweb.org/ontology/core#EventSeries", "Event Series", - "http://vivoweb.org/ontology/core#Exhibit", "Exhibit", - "http://vivoweb.org/ontology/core#ExtensionUnit","Extension Unit", - "http://vivoweb.org/ontology/core#Foundation","Foundation", - "http://vivoweb.org/ontology/core#FundingOrganization","Funding Organization", - "http://vivoweb.org/ontology/core#GovernmentAgency","Government Agency", - "http://xmlns.com/foaf/0.1/Group","Group", - "http://purl.org/ontology/bibo/Hearing", "Hearing", - "http://vivoweb.org/ontology/core#Hospital","Hospital", - "http://vivoweb.org/ontology/core#Institute","Institute", - "http://purl.org/ontology/bibo/Interview", "Interview", - "http://vivoweb.org/ontology/core#InvitedTalk", "Invited Talk", - "http://vivoweb.org/ontology/core#Laboratory","Laboratory", - "http://vivoweb.org/ontology/core#Library","Library", - "http://purl.obolibrary.org/obo/OBI_0000835","Manufacturer", - "http://vivoweb.org/ontology/core#Meeting", "Meeting", - "http://vivoweb.org/ontology/core#Museum","Museum", - "http://xmlns.com/foaf/0.1/Organization","Organization", - "http://purl.org/ontology/bibo/Performance", "Performance", - "http://vivoweb.org/ontology/core#Presentation", "Presentation", - "http://vivoweb.org/ontology/core#PrivateCompany","Private Company", - "http://vivoweb.org/ontology/core#Program","Program", - "http://vivoweb.org/ontology/core#Publisher","Publisher", - "http://vivoweb.org/ontology/core#ResearchOrganization","Research Organization", - "http://vivoweb.org/ontology/core#School","School", - "http://vivoweb.org/ontology/core#SeminarSeries", "Seminar Series", - "http://vivoweb.org/ontology/core#Team","Team", - "http://vivoweb.org/ontology/core#ServiceProvidingLaboratory","Service Providing Lab", - "http://vivoweb.org/ontology/core#StudentOrganization","Student Organization", - "http://purl.obolibrary.org/obo/ERO_0000565","Technology Transfer Office", - "http://vivoweb.org/ontology/core#University","University", - "http://purl.org/ontology/bibo/Workshop", "Workshop", - "http://vivoweb.org/ontology/core#WorkshopSeries", "Workshop Series"); + @Override + FieldOptions getRoleActivityFieldOptions(VitroRequest vreq) throws Exception { + return GeneratorUtil.buildResourceAndLabelFieldOptions( + vreq.getRDFService(), vreq.getWebappDaoFactory(), "", + I18n.bundle(vreq).text("select_type"), + "http://vivoweb.org/ontology/core#AcademicDepartment", + "http://vivoweb.org/ontology/core#Association", + "http://vivoweb.org/ontology/core#Center", + "http://vivoweb.org/ontology/core#ClinicalOrganization", + "http://vivoweb.org/ontology/core#College", + "http://vivoweb.org/ontology/core#Committee", + "http://vivoweb.org/ontology/core#Company", + "http://vivoweb.org/ontology/core#Competition", + "http://purl.org/ontology/bibo/Conference", + "http://vivoweb.org/ontology/core#ConferenceSeries", + "http://vivoweb.org/ontology/core#Consortium", + "http://vivoweb.org/ontology/core#CoreLaboratory", + "http://vivoweb.org/ontology/core#Course", + "http://vivoweb.org/ontology/core#Department", + "http://vivoweb.org/ontology/core#Division", + "http://purl.org/NET/c4dm/event.owl#Event", + "http://vivoweb.org/ontology/core#EventSeries", + "http://vivoweb.org/ontology/core#Exhibit", + "http://vivoweb.org/ontology/core#ExtensionUnit", + "http://vivoweb.org/ontology/core#Foundation", + "http://vivoweb.org/ontology/core#FundingOrganization", + "http://vivoweb.org/ontology/core#GovernmentAgency", + "http://xmlns.com/foaf/0.1/Group", + "http://purl.org/ontology/bibo/Hearing", + "http://vivoweb.org/ontology/core#Hospital", + "http://vivoweb.org/ontology/core#Institute", + "http://purl.org/ontology/bibo/Interview", + "http://vivoweb.org/ontology/core#InvitedTalk", + "http://vivoweb.org/ontology/core#Laboratory", + "http://vivoweb.org/ontology/core#Library", + "http://purl.obolibrary.org/obo/OBI_0000835" /* Manufacturer */, + "http://vivoweb.org/ontology/core#Meeting", + "http://vivoweb.org/ontology/core#Museum", + "http://xmlns.com/foaf/0.1/Organization", + "http://purl.org/ontology/bibo/Performance", + "http://vivoweb.org/ontology/core#Presentation", + "http://vivoweb.org/ontology/core#PrivateCompany", + "http://vivoweb.org/ontology/core#Program", + "http://vivoweb.org/ontology/core#Publisher", + "http://vivoweb.org/ontology/core#ResearchOrganization", + "http://vivoweb.org/ontology/core#School", + "http://vivoweb.org/ontology/core#SeminarSeries", + "http://vivoweb.org/ontology/core#Team", + "http://vivoweb.org/ontology/core#ServiceProvidingLaboratory", + "http://vivoweb.org/ontology/core#StudentOrganization", + "http://purl.obolibrary.org/obo/ERO_0000565" /*Technology Transfer Office*/, + "http://vivoweb.org/ontology/core#University", + "http://purl.org/ontology/bibo/Workshop", + "http://vivoweb.org/ontology/core#WorkshopSeries"); } @Override diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddPublicationToPersonGenerator.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddPublicationToPersonGenerator.java index e1bb91f8..2f998291 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddPublicationToPersonGenerator.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddPublicationToPersonGenerator.java @@ -29,8 +29,10 @@ import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.DateTimeWithPrecisio import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditConfigurationUtils; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditConfigurationVTwo; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.ConstantFieldOptions; +import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.FieldOptions; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.FieldVTwo; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.validators.AntiXssValidation; +import edu.cornell.mannlib.vitro.webapp.i18n.I18n; import edu.cornell.mannlib.vitro.webapp.modelaccess.ModelAccess; import edu.cornell.mannlib.vitro.webapp.utils.FrontEndEditingUtils.EditMode; import edu.cornell.mannlib.vitro.webapp.utils.generators.EditModeUtils; @@ -624,7 +626,8 @@ public class AddPublicationToPersonGenerator extends VivoBaseGenerator implement private void setFields(EditConfigurationVTwo editConfiguration, VitroRequest vreq) throws Exception { setTitleField(editConfiguration); - setPubTypeField(editConfiguration); + //UQAM-Linguistic-Management needs for getting appropriated value in the linguistic context + setPubTypeField(editConfiguration, vreq); setPubUriField(editConfiguration); setCollectionLabelField(editConfiguration); setCollectionDisplayField(editConfiguration); @@ -664,13 +667,14 @@ public class AddPublicationToPersonGenerator extends VivoBaseGenerator implement setRangeDatatypeUri(stringDatatypeUri)); } - private void setPubTypeField(EditConfigurationVTwo editConfiguration) throws Exception { - editConfiguration.addField(new FieldVTwo(). - setName("pubType"). - setValidators( list("nonempty") ). - setOptions( new ConstantFieldOptions("pubType", getPublicationTypeLiteralOptions() )) - ); - } + //UQAM-Linguistic-Management add vreq to get linguistic context + private void setPubTypeField(EditConfigurationVTwo editConfiguration, VitroRequest vreq) throws Exception { + editConfiguration.addField(new FieldVTwo(). + setName("pubType"). + setValidators( list("nonempty") ). + setOptions( getPublicationTypeLiteralOptions(vreq) ) + ); + } private void setPubUriField(EditConfigurationVTwo editConfiguration) { editConfiguration.addField(new FieldVTwo(). @@ -886,39 +890,40 @@ public class AddPublicationToPersonGenerator extends VivoBaseGenerator implement ); } - private List> getPublicationTypeLiteralOptions() { - List> literalOptions = new ArrayList>(); - literalOptions.add(list("http://vivoweb.org/ontology/core#Abstract", "Abstract")); - literalOptions.add(list("http://purl.org/ontology/bibo/AcademicArticle", "Academic Article")); - literalOptions.add(list("http://purl.org/ontology/bibo/Article", "Article")); - literalOptions.add(list("http://purl.org/ontology/bibo/AudioDocument", "Audio Document")); - literalOptions.add(list("http://vivoweb.org/ontology/core#BlogPosting", "Blog Posting")); - literalOptions.add(list("http://purl.org/ontology/bibo/Book", "Book")); - literalOptions.add(list("http://vivoweb.org/ontology/core#CaseStudy", "Case Study")); - literalOptions.add(list("http://vivoweb.org/ontology/core#Catalog", "Catalog")); - literalOptions.add(list("http://purl.org/ontology/bibo/Chapter", "Chapter")); - literalOptions.add(list("http://vivoweb.org/ontology/core#ConferencePaper", "Conference Paper")); - literalOptions.add(list("http://vivoweb.org/ontology/core#ConferencePoster", "Conference Poster")); - literalOptions.add(list("http://vivoweb.org/ontology/core#Database", "Database")); - literalOptions.add(list("http://vivoweb.org/ontology/core#Dataset", "Dataset")); - literalOptions.add(list("http://purl.org/ontology/bibo/EditedBook", "Edited Book")); - literalOptions.add(list("http://vivoweb.org/ontology/core#EditorialArticle", "Editorial Article")); - literalOptions.add(list("http://purl.org/ontology/bibo/Film", "Film")); - literalOptions.add(list("http://vivoweb.org/ontology/core#Newsletter", "Newsletter")); - literalOptions.add(list("http://vivoweb.org/ontology/core#NewsRelease", "News Release")); - literalOptions.add(list("http://purl.org/ontology/bibo/Patent", "Patent")); - literalOptions.add(list("http://purl.obolibrary.org/obo/OBI_0000272", "Protocol")); - literalOptions.add(list("http://purl.org/ontology/bibo/Report", "Report")); - literalOptions.add(list("http://vivoweb.org/ontology/core#ResearchProposal", "Research Proposal")); - literalOptions.add(list("http://vivoweb.org/ontology/core#Review", "Review")); - literalOptions.add(list("http://purl.obolibrary.org/obo/ERO_0000071 ", "Software")); - literalOptions.add(list("http://vivoweb.org/ontology/core#Speech", "Speech")); - literalOptions.add(list("http://purl.org/ontology/bibo/Thesis", "Thesis")); - literalOptions.add(list("http://vivoweb.org/ontology/core#Video", "Video")); - literalOptions.add(list("http://purl.org/ontology/bibo/Webpage", "Webpage")); - literalOptions.add(list("http://purl.org/ontology/bibo/Website", "Website")); - literalOptions.add(list("http://vivoweb.org/ontology/core#WorkingPaper", "Working Paper")); - return literalOptions; + private FieldOptions getPublicationTypeLiteralOptions(VitroRequest vreq) throws Exception { + return GeneratorUtil.buildResourceAndLabelFieldOptions( + vreq.getRDFService(), vreq.getWebappDaoFactory(), "", + I18n.bundle(vreq).text("select_type"), + "http://vivoweb.org/ontology/core#Abstract", + "http://purl.org/ontology/bibo/AcademicArticle", + "http://purl.org/ontology/bibo/Article", + "http://purl.org/ontology/bibo/AudioDocument", + "http://vivoweb.org/ontology/core#BlogPosting", + "http://purl.org/ontology/bibo/Book", + "http://vivoweb.org/ontology/core#CaseStudy", + "http://vivoweb.org/ontology/core#Catalog", + "http://purl.org/ontology/bibo/Chapter", + "http://vivoweb.org/ontology/core#ConferencePaper", + "http://vivoweb.org/ontology/core#ConferencePoster", + "http://vivoweb.org/ontology/core#Database", + "http://vivoweb.org/ontology/core#Dataset", + "http://purl.org/ontology/bibo/EditedBook", + "http://vivoweb.org/ontology/core#EditorialArticle", + "http://purl.org/ontology/bibo/Film", + "http://vivoweb.org/ontology/core#Newsletter", + "http://vivoweb.org/ontology/core#NewsRelease", + "http://purl.org/ontology/bibo/Patent", + "http://purl.obolibrary.org/obo/OBI_0000272", + "http://purl.org/ontology/bibo/Report", + "http://vivoweb.org/ontology/core#ResearchProposal", + "http://vivoweb.org/ontology/core#Review", + "http://purl.obolibrary.org/obo/ERO_0000071 ", + "http://vivoweb.org/ontology/core#Speech", + "http://purl.org/ontology/bibo/Thesis", + "http://vivoweb.org/ontology/core#Video", + "http://purl.org/ontology/bibo/Webpage", + "http://purl.org/ontology/bibo/Website", + "http://vivoweb.org/ontology/core#WorkingPaper"); } //Form specific data diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddResearcherRoleToPersonGenerator.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddResearcherRoleToPersonGenerator.java index ae3bd262..59efadaa 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddResearcherRoleToPersonGenerator.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddResearcherRoleToPersonGenerator.java @@ -5,6 +5,7 @@ package edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.ConstantFieldOptions; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.FieldOptions; +import edu.cornell.mannlib.vitro.webapp.i18n.I18n; public class AddResearcherRoleToPersonGenerator extends AddRoleToPersonTwoStageGenerator { @@ -23,12 +24,13 @@ public class AddResearcherRoleToPersonGenerator extends AddRoleToPersonTwoStageG /** Researcher role involves hard-coded options for the "right side" of the role or activity. */ @Override FieldOptions getRoleActivityFieldOptions(VitroRequest vreq) throws Exception { - return new ConstantFieldOptions( - "", "Select one", - "http://vivoweb.org/ontology/core#Grant", "Grant", - "http://purl.obolibrary.org/obo/ERO_0000015", "Human Study", - "http://vivoweb.org/ontology/core#Project", "Project", - "http://purl.obolibrary.org/obo/ERO_0000014", "Research Project"); + return GeneratorUtil.buildResourceAndLabelFieldOptions( + vreq.getRDFService(), vreq.getWebappDaoFactory(), "", + I18n.bundle(vreq).text("select_type"), + "http://vivoweb.org/ontology/core#Grant", + "http://purl.obolibrary.org/obo/ERO_0000015" /* Human Study" */, + "http://vivoweb.org/ontology/core#Project", + "http://purl.obolibrary.org/obo/ERO_0000014" /* Research Project */); } @Override diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddReviewerRoleToPersonGenerator.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddReviewerRoleToPersonGenerator.java index b12452d7..b8d07a44 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddReviewerRoleToPersonGenerator.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddReviewerRoleToPersonGenerator.java @@ -5,6 +5,7 @@ package edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.ConstantFieldOptions; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.FieldOptions; +import edu.cornell.mannlib.vitro.webapp.i18n.I18n; public class AddReviewerRoleToPersonGenerator extends AddRoleToPersonTwoStageGenerator { @@ -32,80 +33,80 @@ public class AddReviewerRoleToPersonGenerator extends AddRoleToPersonTwoStageGen * Each subclass generator will return its own type of option here: * whether literal hardcoded, based on class group, or subclasses of a specific class */ - @Override - FieldOptions getRoleActivityFieldOptions(VitroRequest vreq) throws Exception { - return new ConstantFieldOptions( - "", "Select type", - "http://purl.org/ontology/bibo/AcademicArticle", "Academic Article", - "http://purl.org/ontology/bibo/Article", "Article", - "http://purl.org/ontology/bibo/AudioDocument", "Audio Document", - "http://purl.org/ontology/bibo/AudioVisualDocument", "Audio-Visual Document", - "http://purl.org/ontology/bibo/Bill", "Bill", - "http://vivoweb.org/ontology/core#Blog", "Blog", - "http://vivoweb.org/ontology/core#BlogPosting", "Blog Posting", - "http://purl.org/ontology/bibo/Book", "Book", - "http://purl.org/ontology/bibo/BookSection", "Book Section", - "http://purl.org/ontology/bibo/Brief", "Brief", - "http://vivoweb.org/ontology/core#CaseStudy", "Case Study", - "http://vivoweb.org/ontology/core#Catalog", "Catalog", - "http://purl.org/ontology/bibo/Chapter", "Chapter", - "http://purl.org/spar/fabio/ClinicalGuideline", "Clinical Guideline", - "http://purl.org/ontology/bibo/Code", "Code", - "http://purl.org/ontology/bibo/CollectedDocument", "Collected Document", - "http://purl.org/spar/fabio/Comment", "Comment", - "http://vivoweb.org/ontology/core#ConferencePaper", "Conference Paper", - "http://vivoweb.org/ontology/core#ConferencePoster", "Conference Poster", - "http://purl.org/ontology/bibo/CourtReporter", "Court Reporter", - "http://vivoweb.org/ontology/core#Database", "Database", - "http://purl.org/ontology/bibo/LegalDecision", "Decision", - "http://purl.org/ontology/bibo/DocumentPart", "Document Part", - "http://purl.org/ontology/bibo/EditedBook", "Edited Book", - "http://vivoweb.org/ontology/core#EditorialArticle", "Editorial Article", - "http://purl.org/spar/fabio/Erratum", "Erratum", - "http://purl.org/ontology/bibo/Excerpt", "Excerpt", - "http://purl.org/ontology/bibo/Film", "Film", - "http://purl.org/ontology/bibo/Image", "Image", - "http://purl.org/ontology/bibo/Issue", "Issue", - "http://purl.org/ontology/bibo/Journal", "Journal", - "http://purl.obolibrary.org/obo/IAO_0000013", "Journal Article", - "http://purl.org/ontology/bibo/LegalCaseDocument", "Legal Case Document", - "http://purl.org/ontology/bibo/LegalDocument", "Legal Document", - "http://purl.org/ontology/bibo/Legislation", "Legislation", - "http://purl.org/ontology/bibo/Letter", "Letter", - "http://purl.org/ontology/bibo/Magazine", "Magazine", - "http://purl.org/ontology/bibo/Manual", "Manual", - "http://purl.org/ontology/bibo/Manuscript", "Manuscript", - "http://purl.org/ontology/bibo/Map", "Map", - "http://vivoweb.org/ontology/core#Newsletter", "Newsletter", - "http://purl.org/ontology/bibo/Newspaper", "Newspaper", - "http://vivoweb.org/ontology/core#NewsRelease", "News Release", - "http://purl.org/ontology/bibo/Note", "Note", - "http://purl.org/ontology/bibo/Patent", "Patent", - "http://purl.org/ontology/bibo/Periodical", "Periodical", - "http://purl.org/ontology/bibo/PersonalCommunicationDocument", "Personal Communication Document", - "http://purl.org/ontology/bibo/Proceedings", "Proceedings", - "http://purl.obolibrary.org/obo/OBI_0000272", "protocol", - "http://purl.org/ontology/bibo/Quote", "Quote", - "http://purl.org/ontology/bibo/ReferenceSource", "Reference Source", - "http://purl.org/ontology/bibo/Report", "Report", - "http://vivoweb.org/ontology/core#ResearchProposal", "Research Proposal", - "http://vivoweb.org/ontology/core#Review", "Review", - "http://vivoweb.org/ontology/core#Score", "Score", - "http://vivoweb.org/ontology/core#Screenplay", "Screenplay", - "http://purl.org/ontology/bibo/Series", "Series", - "http://purl.org/ontology/bibo/Slide", "Slide", - "http://purl.org/ontology/bibo/Slideshow", "Slideshow", - "http://vivoweb.org/ontology/core#Speech", "Speech", - "http://purl.org/ontology/bibo/Standard", "Standard", - "http://purl.org/ontology/bibo/Statute", "Statute", - "http://purl.org/ontology/bibo/Thesis", "Thesis", - "http://vivoweb.org/ontology/core#Translation", "Translation", - "http://vivoweb.org/ontology/core#Video", "Video", - "http://purl.org/ontology/bibo/Webpage", "Webpage", - "http://purl.org/ontology/bibo/Website", "Website", - "http://vivoweb.org/ontology/core#WorkingPaper", "Working Paper" - ); - } + @Override + FieldOptions getRoleActivityFieldOptions(VitroRequest vreq) throws Exception { + return GeneratorUtil.buildResourceAndLabelFieldOptions( + vreq.getRDFService(), vreq.getWebappDaoFactory(), "", + I18n.bundle(vreq).text("select_type"), + "http://purl.org/ontology/bibo/AcademicArticle", + "http://purl.org/ontology/bibo/Article", + "http://purl.org/ontology/bibo/AudioDocument", + "http://purl.org/ontology/bibo/AudioVisualDocument", + "http://purl.org/ontology/bibo/Bill", + "http://vivoweb.org/ontology/core#Blog", + "http://vivoweb.org/ontology/core#BlogPosting", + "http://purl.org/ontology/bibo/Book", + "http://purl.org/ontology/bibo/BookSection", + "http://purl.org/ontology/bibo/Brief", + "http://vivoweb.org/ontology/core#CaseStudy", + "http://vivoweb.org/ontology/core#Catalog", + "http://purl.org/ontology/bibo/Chapter", + "http://purl.org/spar/fabio/ClinicalGuideline", + "http://purl.org/ontology/bibo/Code", + "http://purl.org/ontology/bibo/CollectedDocument", + "http://purl.org/spar/fabio/Comment", + "http://vivoweb.org/ontology/core#ConferencePaper", + "http://vivoweb.org/ontology/core#ConferencePoster", + "http://purl.org/ontology/bibo/CourtReporter", + "http://vivoweb.org/ontology/core#Database", + "http://purl.org/ontology/bibo/LegalDecision", + "http://purl.org/ontology/bibo/DocumentPart", + "http://purl.org/ontology/bibo/EditedBook", + "http://vivoweb.org/ontology/core#EditorialArticle", + "http://purl.org/spar/fabio/Erratum", + "http://purl.org/ontology/bibo/Excerpt", + "http://purl.org/ontology/bibo/Film", + "http://purl.org/ontology/bibo/Image", + "http://purl.org/ontology/bibo/Issue", + "http://purl.org/ontology/bibo/Journal", + "http://purl.obolibrary.org/obo/IAO_0000013" /* "Journal Article" */, + "http://purl.org/ontology/bibo/LegalCaseDocument", + "http://purl.org/ontology/bibo/LegalDocument", + "http://purl.org/ontology/bibo/Legislation", + "http://purl.org/ontology/bibo/Letter", + "http://purl.org/ontology/bibo/Magazine", + "http://purl.org/ontology/bibo/Manual", + "http://purl.org/ontology/bibo/Manuscript", + "http://purl.org/ontology/bibo/Map", + "http://vivoweb.org/ontology/core#Newsletter", + "http://purl.org/ontology/bibo/Newspaper", + "http://vivoweb.org/ontology/core#NewsRelease", + "http://purl.org/ontology/bibo/Note", + "http://purl.org/ontology/bibo/Patent", + "http://purl.org/ontology/bibo/Periodical", + "http://purl.org/ontology/bibo/PersonalCommunicationDocument", + "http://purl.org/ontology/bibo/Proceedings", + "http://purl.obolibrary.org/obo/OBI_0000272" /* Protocol" */, + "http://purl.org/ontology/bibo/Quote", + "http://purl.org/ontology/bibo/ReferenceSource", + "http://purl.org/ontology/bibo/Report", + "http://vivoweb.org/ontology/core#ResearchProposal", + "http://vivoweb.org/ontology/core#Review", + "http://vivoweb.org/ontology/core#Score", + "http://vivoweb.org/ontology/core#Screenplay", + "http://purl.org/ontology/bibo/Series", + "http://purl.org/ontology/bibo/Slide", + "http://purl.org/ontology/bibo/Slideshow", + "http://vivoweb.org/ontology/core#Speech", + "http://purl.org/ontology/bibo/Standard", + "http://purl.org/ontology/bibo/Statute", + "http://purl.org/ontology/bibo/Thesis", + "http://vivoweb.org/ontology/core#Translation", + "http://vivoweb.org/ontology/core#Video", + "http://purl.org/ontology/bibo/Webpage", + "http://purl.org/ontology/bibo/Website", + "http://vivoweb.org/ontology/core#WorkingPaper"); + } //isShowRoleLabelField remains true for this so doesn't need to be overwritten public boolean isShowRoleLabelField() { diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddRoleToPersonTwoStageGenerator.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddRoleToPersonTwoStageGenerator.java index d29a437c..8e7c6757 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddRoleToPersonTwoStageGenerator.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddRoleToPersonTwoStageGenerator.java @@ -415,7 +415,7 @@ public abstract class AddRoleToPersonTwoStageGenerator extends BaseEditConfigura //make list of type URIs from options, this can be called with null since //ConstantFieldOptions doesn't use any of the arguments. - Map options = fieldOptions.getOptions(null, null, null) ; + Map options = fieldOptions.getOptions(null, null, null, null) ; if (options != null && options.size() > 0) { List typeUris = new ArrayList(); diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddServiceProviderRoleToPersonGenerator.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddServiceProviderRoleToPersonGenerator.java index c1ae9621..3a52a130 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddServiceProviderRoleToPersonGenerator.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddServiceProviderRoleToPersonGenerator.java @@ -5,6 +5,7 @@ package edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.ConstantFieldOptions; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.FieldOptions; +import edu.cornell.mannlib.vitro.webapp.i18n.I18n; public class AddServiceProviderRoleToPersonGenerator extends AddRoleToPersonTwoStageGenerator { @@ -17,63 +18,63 @@ public class AddServiceProviderRoleToPersonGenerator extends AddRoleToPersonTwoS String getRoleType() { return "http://purl.obolibrary.org/obo/ERO_0000012"; } - - /** Service Provider role involves hard-coded options for the - * "right side" of the role or activity. */ + @Override -FieldOptions getRoleActivityFieldOptions(VitroRequest vreq) throws Exception { - return new ConstantFieldOptions( - "","Select type", - "http://vivoweb.org/ontology/core#AcademicDepartment","Academic Department", - "http://vivoweb.org/ontology/core#Association","Association", - "http://vivoweb.org/ontology/core#Center","Center", - "http://vivoweb.org/ontology/core#ClinicalOrganization","Clinical Organization", - "http://vivoweb.org/ontology/core#College","College", - "http://vivoweb.org/ontology/core#Committee","Committee", - "http://vivoweb.org/ontology/core#Company","Company", - "http://vivoweb.org/ontology/core#Competition", "Competition", - "http://purl.org/ontology/bibo/Conference", "Conference", - "http://vivoweb.org/ontology/core#ConferenceSeries", "Conference Series", - "http://vivoweb.org/ontology/core#Consortium","Consortium", - "http://vivoweb.org/ontology/core#CoreLaboratory","Core Laboratory", - "http://vivoweb.org/ontology/core#Course", "Course", - "http://vivoweb.org/ontology/core#Department","Department", - "http://vivoweb.org/ontology/core#Division","Division", - "http://purl.org/NET/c4dm/event.owl#Event","Event", - "http://vivoweb.org/ontology/core#EventSeries", "Event Series", - "http://vivoweb.org/ontology/core#Exhibit", "Exhibit", - "http://vivoweb.org/ontology/core#ExtensionUnit","Extension Unit", - "http://vivoweb.org/ontology/core#Foundation","Foundation", - "http://vivoweb.org/ontology/core#FundingOrganization","Funding Organization", - "http://vivoweb.org/ontology/core#GovernmentAgency","Government Agency", - "http://xmlns.com/foaf/0.1/Group","Group", - "http://purl.org/ontology/bibo/Hearing", "Hearing", - "http://vivoweb.org/ontology/core#Hospital","Hospital", - "http://vivoweb.org/ontology/core#Institute","Institute", - "http://purl.org/ontology/bibo/Interview", "Interview", - "http://vivoweb.org/ontology/core#InvitedTalk", "Invited Talk", - "http://vivoweb.org/ontology/core#Laboratory","Laboratory", - "http://vivoweb.org/ontology/core#Library","Library", - "http://purl.obolibrary.org/obo/OBI_0000835","Manufacturer", - "http://vivoweb.org/ontology/core#Meeting", "Meeting", - "http://vivoweb.org/ontology/core#Museum","Museum", - "http://xmlns.com/foaf/0.1/Organization","Organization", - "http://purl.org/ontology/bibo/Performance", "Performance", - "http://vivoweb.org/ontology/core#Presentation", "Presentation", - "http://vivoweb.org/ontology/core#PrivateCompany","Private Company", - "http://vivoweb.org/ontology/core#Program","Program", - "http://vivoweb.org/ontology/core#Publisher","Publisher", - "http://vivoweb.org/ontology/core#ResearchOrganization","Research Organization", - "http://vivoweb.org/ontology/core#School","School", - "http://vivoweb.org/ontology/core#SeminarSeries", "Seminar Series", - "http://vivoweb.org/ontology/core#Team","Team", - "http://vivoweb.org/ontology/core#ServiceProvidingLaboratory","Service Providing Lab", - "http://vivoweb.org/ontology/core#StudentOrganization","Student Organization", - "http://purl.obolibrary.org/obo/ERO_0000565","Technology Transfer Office", - "http://vivoweb.org/ontology/core#University","University", - "http://purl.org/ontology/bibo/Workshop", "Workshop", - "http://vivoweb.org/ontology/core#WorkshopSeries", "Workshop Series"); -} + FieldOptions getRoleActivityFieldOptions(VitroRequest vreq) throws Exception { + return GeneratorUtil.buildResourceAndLabelFieldOptions( + vreq.getRDFService(), vreq.getWebappDaoFactory(), "", + I18n.bundle(vreq).text("select_type"), + "","Select type", + "http://vivoweb.org/ontology/core#AcademicDepartment", + "http://vivoweb.org/ontology/core#Association", + "http://vivoweb.org/ontology/core#Center", + "http://vivoweb.org/ontology/core#ClinicalOrganization", + "http://vivoweb.org/ontology/core#College", + "http://vivoweb.org/ontology/core#Committee", + "http://vivoweb.org/ontology/core#Company", + "http://vivoweb.org/ontology/core#Competition", + "http://purl.org/ontology/bibo/Conference", + "http://vivoweb.org/ontology/core#ConferenceSeries", + "http://vivoweb.org/ontology/core#Consortium", + "http://vivoweb.org/ontology/core#CoreLaboratory", + "http://vivoweb.org/ontology/core#Course", + "http://vivoweb.org/ontology/core#Department", + "http://vivoweb.org/ontology/core#Division", + "http://purl.org/NET/c4dm/event.owl#Event", + "http://vivoweb.org/ontology/core#EventSeries", + "http://vivoweb.org/ontology/core#Exhibit", + "http://vivoweb.org/ontology/core#ExtensionUnit", + "http://vivoweb.org/ontology/core#Foundation", + "http://vivoweb.org/ontology/core#FundingOrganization", + "http://vivoweb.org/ontology/core#GovernmentAgency", + "http://xmlns.com/foaf/0.1/Group", + "http://purl.org/ontology/bibo/Hearing", + "http://vivoweb.org/ontology/core#Hospital", + "http://vivoweb.org/ontology/core#Institute", + "http://purl.org/ontology/bibo/Interview", + "http://vivoweb.org/ontology/core#InvitedTalk", + "http://vivoweb.org/ontology/core#Laboratory", + "http://vivoweb.org/ontology/core#Library", + "http://purl.obolibrary.org/obo/OBI_0000835" /* Manufacturer */, + "http://vivoweb.org/ontology/core#Meeting", + "http://vivoweb.org/ontology/core#Museum", + "http://xmlns.com/foaf/0.1/Organization", + "http://purl.org/ontology/bibo/Performance", + "http://vivoweb.org/ontology/core#Presentation", + "http://vivoweb.org/ontology/core#PrivateCompany", + "http://vivoweb.org/ontology/core#Program", + "http://vivoweb.org/ontology/core#Publisher", + "http://vivoweb.org/ontology/core#ResearchOrganization", + "http://vivoweb.org/ontology/core#School", + "http://vivoweb.org/ontology/core#SeminarSeries", + "http://vivoweb.org/ontology/core#Team", + "http://vivoweb.org/ontology/core#ServiceProvidingLaboratory", + "http://vivoweb.org/ontology/core#StudentOrganization", + "http://purl.obolibrary.org/obo/ERO_0000565" /* Technology Transfer Office" */, + "http://vivoweb.org/ontology/core#University", + "http://purl.org/ontology/bibo/Workshop", + "http://vivoweb.org/ontology/core#WorkshopSeries"); + } @Override boolean isShowRoleLabelField(){return true;} diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/GeneratorUtil.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/GeneratorUtil.java new file mode 100644 index 00000000..69b53dda --- /dev/null +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/GeneratorUtil.java @@ -0,0 +1,127 @@ +package edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.jena.iri.IRI; +import org.apache.jena.iri.IRIFactory; +import org.apache.jena.query.QuerySolution; +import org.apache.jena.vocabulary.RDFS; + +import edu.cornell.mannlib.vitro.webapp.beans.VClass; +import edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory; +import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.ConstantFieldOptions; +import edu.cornell.mannlib.vitro.webapp.rdfservice.RDFService; +import edu.cornell.mannlib.vitro.webapp.rdfservice.RDFServiceException; +import edu.cornell.mannlib.vitro.webapp.rdfservice.ResultSetConsumer; + +public class GeneratorUtil { + + private static final Log log = LogFactory.getLog(GeneratorUtil.class); + + /** + * Build a field options list of resource URIs paired with their labels as + * retrieved from the supplied RDFService. + * + * @param rdfService from which to retrieve labels: this should typically + * be a LanguageFilteringRDFService. + * + * @param webappDaoFactory may be null. If non-null, labels for classes will be + * returned from here first before consulting + * rdfService. + * + * @param headerValue optional value for first value/label pair in the + * options list before appending the URIs with their + * labels. May be null. Example: empty string + * + * @param headerLabel optional label for first value/label pair in the + * options list before appending the URIs with their + * labels. May be null. Example: "Select type" + * + * @param resourceURIs variable list of resource URI strings + * + * @return empty ConstantFieldOptions list if resourceURIs is null or empty or + * if rdfService is null + * @throws RDFServiceException from the supplied rdfService + * @throws Exception from ConstantFieldOptions constructor + */ + public static ConstantFieldOptions buildResourceAndLabelFieldOptions( + RDFService rdfService, WebappDaoFactory webappDaoFactory, String headerValue, + String headerLabel, String ... resourceURIs) throws Exception { + if(resourceURIs == null || resourceURIs.length == 0 || rdfService == null) { + return new ConstantFieldOptions(); + } + List options = new ArrayList(); + if(headerValue != null && headerLabel != null) { + options.add(headerValue); + options.add(headerLabel); + } + IRIFactory iriFactory = IRIFactory.iriImplementation(); + for(String resourceURI : resourceURIs) { + IRI iri = iriFactory.create(resourceURI); + if(iri.hasViolation(false)) { + log.warn("Not adding invalid URI " + resourceURI + + " to field options list"); + } else { + String label = getLabel(iri, rdfService, webappDaoFactory); + if(!StringUtils.isEmpty(label)) { + options.add(iri.toString()); + options.add(label); + } + } + } + return new ConstantFieldOptions(options.toArray( + new String[options.size()])); + } + + /** + * Retrieve label for iri from webappDaoFactory if available and iri is + * for a VClass, otherwise retrieve lowest-sorting rdfs:label for iri from + * rdfService + * @param iri may not be null + * @param rdfService may not be null + */ + private static String getLabel(IRI iri, RDFService rdfService, + WebappDaoFactory webappDaoFactory) throws RDFServiceException { + // Try the WebappDaoFactory for class labels that exist only in + // "everytime" and do not show up in the RDFService. + if(webappDaoFactory != null) { + VClass vclass = webappDaoFactory.getVClassDao().getVClassByURI( + iri.toString()); + if(vclass != null) { + return vclass.getLabel(); + } + } + StringBuilder select = new StringBuilder("SELECT ?label WHERE { \n"); + select.append(" <" + iri + "> <" + RDFS.label.getURI() + "> ?label \n"); + select.append("} ORDER BY ?label"); + LabelConsumer labelConsumer = new LabelConsumer(); + rdfService.sparqlSelectQuery(select.toString(), labelConsumer); + return labelConsumer.getLabel(); + } + + private static class LabelConsumer extends ResultSetConsumer { + + private String label; + + @Override + protected void processQuerySolution(QuerySolution qsoln) { + if(label != null) { + return; + // keep only the first value returned in the result set + } + if(qsoln.contains("label") && qsoln.get("label").isLiteral()) { + label = qsoln.getLiteral("label").getLexicalForm(); + } + } + + public String getLabel() { + return label; + } + + } + +} diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/GrantHasContributorGenerator.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/GrantHasContributorGenerator.java index fc6ed234..09caf457 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/GrantHasContributorGenerator.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/GrantHasContributorGenerator.java @@ -19,6 +19,7 @@ import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.FieldVTwo; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.validators.AntiXssValidation; import edu.cornell.mannlib.vitro.webapp.utils.FrontEndEditingUtils.EditMode; import edu.cornell.mannlib.vitro.webapp.utils.generators.EditModeUtils; +import edu.cornell.mannlib.vitro.webapp.i18n.I18n; public class GrantHasContributorGenerator extends VivoBaseGenerator implements EditConfigurationGenerator{ @@ -92,7 +93,7 @@ public class GrantHasContributorGenerator extends VivoBaseGenerator implements //Add validator conf.addValidator(new AntiXssValidation()); - conf.addValidator(new FirstAndLastNameValidator("existingPerson")); + conf.addValidator(new FirstAndLastNameValidator("existingPerson", I18n.bundle(vreq))); //Adding additional data, specifically edit mode addFormSpecificData(conf, vreq); diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/ManageLabelsForPersonGenerator.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/ManageLabelsForPersonGenerator.java index 7610387c..fe2f2609 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/ManageLabelsForPersonGenerator.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/ManageLabelsForPersonGenerator.java @@ -267,6 +267,19 @@ public class ManageLabelsForPersonGenerator extends BaseEditConfigurationGenerat config.addFormSpecificData("selectLocale",availableLocalesForAdd); config.addFormSpecificData("displayRemoveLink", (numberExistingLabels > 1)); + // get current selected locale + String rangeLang = vreq.getLocale().getLanguage(); + if (!vreq.getLocale().getCountry().isEmpty()) { + rangeLang += "-" + vreq.getLocale().getCountry(); + } + + // check if locale already has an entry (label) + boolean localeEntryExisting = true; + for (HashMap tmp : availableLocalesForAdd) { + if (tmp.get("code").equals(rangeLang)) localeEntryExisting = false; + } + config.addFormSpecificData("localeEntryExisting", localeEntryExisting); + config.addFormSpecificData("currentSelectedLocale", rangeLang); //How do we edit? Will need to see config.addFormSpecificData("deleteWebpageUrl", "/edit/primitiveDelete"); diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/ManageWebpagesForIndividualGenerator.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/ManageWebpagesForIndividualGenerator.java index 1c43cfa1..15065314 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/ManageWebpagesForIndividualGenerator.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/ManageWebpagesForIndividualGenerator.java @@ -3,20 +3,20 @@ package edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators import java.util.ArrayList; import java.util.List; +import java.util.Locale; import java.util.Map; import javax.servlet.http.HttpSession; -import org.apache.jena.query.QueryExecution; -import org.apache.jena.query.QueryExecutionFactory; -import org.apache.jena.rdf.model.Model; -import org.apache.jena.rdf.model.ModelFactory; -import edu.cornell.mannlib.vitro.webapp.rdfservice.RDFService; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; - +import org.apache.jena.query.ParameterizedSparqlString; +import org.apache.jena.query.QueryExecution; +import org.apache.jena.query.QueryExecutionFactory; import org.apache.jena.query.QuerySolution; import org.apache.jena.query.ResultSet; +import org.apache.jena.rdf.model.Model; +import org.apache.jena.rdf.model.ModelFactory; import org.apache.jena.rdf.model.RDFNode; import edu.cornell.mannlib.vitro.webapp.beans.Individual; @@ -26,6 +26,8 @@ import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder.ParamMa import edu.cornell.mannlib.vitro.webapp.dao.jena.QueryUtils; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditConfigurationUtils; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditConfigurationVTwo; +import edu.cornell.mannlib.vitro.webapp.i18n.selection.SelectedLocale; +import edu.cornell.mannlib.vitro.webapp.rdfservice.RDFService; /** * This is an odd controller that is just drawing a page with links on it. @@ -153,16 +155,36 @@ public class ManageWebpagesForIndividualGenerator extends BaseEditConfigurationG + "PREFIX vcard: \n" + "PREFIX rdfs: \n" + "PREFIX vitro: \n" - + "SELECT DISTINCT ?vcard ?link ?url ?rank ?typeLabel (group_concat(distinct ?linkLabel;separator=\"/\") as ?label) WHERE { \n" + + "SELECT DISTINCT ?vcard ?link ?url (MIN(?rank_) AS ?rank) \n" + + "(MIN(?typeLabel_) AS ?typeLabel) \n" + + "(group_concat(distinct ?linkLabel;separator=\"/\") as ?label) WHERE { \n" + " ?subject ?vcard . \n" + " ?vcard vcard:hasURL ?link . \n" + " ?link a vcard:URL \n" + " OPTIONAL { ?link vcard:url ?url } \n" + " OPTIONAL { ?link rdfs:label ?linkLabel } \n" - + " OPTIONAL { ?link core:rank ?rank } \n" + + " OPTIONAL { ?link core:rank ?rank_ } \n" + " OPTIONAL { ?link vitro:mostSpecificType ?type } \n" - + " OPTIONAL { ?type rdfs:label ?typeLabel } \n" - + "} GROUP BY ?rank ?vcard ?link ?url ?typeLabel \n" + // UQAM-Linguistic-Management Add linguistic control on label + // Try full locale + + " OPTIONAL { ?type rdfs:label ?typeLabelPrimary . \n" + + " FILTER (LANG(?typeLabelPrimary) = ?locale) \n" + + " } \n" + // Try language only + + " OPTIONAL { ?type rdfs:label ?typeLabelSecondary . \n" + + " FILTER (LANG(?typeLabelSecondary) = ?language) \n" + + " } \n" + // Try the same language in another other locale + + " OPTIONAL { ?type rdfs:label ?typeLabelTertiary . \n" + + " FILTER (STRBEFORE(STR(LANG(?typeLabelTertiary)), \"-\") = ?language) \n" + + " } \n" + // Try any other available label + + " OPTIONAL { ?type rdfs:label ?typeLabelFallback . \n" + + " FILTER (LANG(?typeLabelFallback) != ?locale \n" + + " && LANG(?typeLabelFallback) != ?language) \n" + + " } \n" + + " BIND(COALESCE(?typeLabelPrimary, ?typeLabelSecondary, ?typeLabelTertiary, ?typeLabelFallback) AS ?typeLabel_) \n" + + "} GROUP BY ?vcard ?link ?url \n" + " ORDER BY ?rank"; @@ -175,8 +197,10 @@ public class ManageWebpagesForIndividualGenerator extends BaseEditConfigurationG Model constructedModel = ModelFactory.createDefaultModel(); rdfService.sparqlConstructQuery(constructStr, constructedModel); - - String queryStr = QueryUtils.subUriForQueryVar(this.getQuery(), "subject", subjectUri); + /* + * UQAM-Linguistic-Management Adjust the getQuery signature for managing the linguistic context + */ + String queryStr = QueryUtils.subUriForQueryVar(this.getQuery(vreq), "subject", subjectUri); log.debug("Query string is: " + queryStr); QueryExecution qe = QueryExecutionFactory.create(queryStr, constructedModel); @@ -205,8 +229,16 @@ public class ManageWebpagesForIndividualGenerator extends BaseEditConfigurationG return AddEditWebpageFormGenerator.class.getName(); } - protected String getQuery() { - return WEBPAGE_QUERY; + protected String getQuery(VitroRequest vreq) { + /* + * UQAM-Linguistic-Management Adjust the query to the linguistic context + */ + Locale locale = SelectedLocale.getCurrentLocale(vreq); + ParameterizedSparqlString queryPstr = new ParameterizedSparqlString( + WEBPAGE_QUERY); + queryPstr.setLiteral("locale", locale.toString().replace("_", "-")); + queryPstr.setLiteral("language", locale.getLanguage()); + return queryPstr.toString(); } protected String getTemplate() { diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/OrganizationForTrainingGenerator.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/OrganizationForTrainingGenerator.java index 07a6eca9..228c01aa 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/OrganizationForTrainingGenerator.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/OrganizationForTrainingGenerator.java @@ -22,6 +22,7 @@ import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.IndividualsVi import edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.validators.AntiXssValidation; import edu.cornell.mannlib.vitro.webapp.utils.FrontEndEditingUtils.EditMode; import edu.cornell.mannlib.vitro.webapp.utils.generators.EditModeUtils; +import edu.cornell.mannlib.vitro.webapp.i18n.I18n; public class OrganizationForTrainingGenerator extends VivoBaseGenerator implements EditConfigurationGenerator{ @@ -166,7 +167,7 @@ public class OrganizationForTrainingGenerator extends VivoBaseGenerator impleme //Add validator conf.addValidator(new DateTimeIntervalValidationVTwo("startField","endField")); conf.addValidator(new AntiXssValidation()); - conf.addValidator(new FirstAndLastNameValidator("existingPerson")); + conf.addValidator(new FirstAndLastNameValidator("existingPerson", I18n.bundle(vreq))); //Adding additional data, specifically edit mode addFormSpecificData(conf, vreq); diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/OrganizationHasPositionHistoryGenerator.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/OrganizationHasPositionHistoryGenerator.java index 2dc592b3..681bc2ea 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/OrganizationHasPositionHistoryGenerator.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/OrganizationHasPositionHistoryGenerator.java @@ -17,6 +17,7 @@ import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.DateTimeWithPrecisio import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditConfigurationVTwo; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.ChildVClassesWithParent; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.FieldVTwo; +import edu.cornell.mannlib.vitro.webapp.i18n.I18n; public class OrganizationHasPositionHistoryGenerator extends VivoBaseGenerator implements EditConfigurationGenerator { @@ -256,7 +257,7 @@ public class OrganizationHasPositionHistoryGenerator extends VivoBaseGenerator conf.addField(endField.setEditElement(new DateTimeWithPrecisionVTwo( endField, URI_PRECISION_YEAR, URI_PRECISION_NONE))); - conf.addValidator(new FirstAndLastNameValidator("existingPerson")); + conf.addValidator(new FirstAndLastNameValidator("existingPerson", I18n.bundle(vreq))); conf.addValidator(new AntiXssValidation()); conf.addValidator(new DateTimeIntervalValidationVTwo("startField", "endField")); diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/PersonHasAdviseeRelationshipGenerator.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/PersonHasAdviseeRelationshipGenerator.java index 21fa93eb..16b37a6b 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/PersonHasAdviseeRelationshipGenerator.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/PersonHasAdviseeRelationshipGenerator.java @@ -20,6 +20,7 @@ import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.ChildVClasses import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.FieldVTwo; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.IndividualsViaVClassOptions; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.validators.AntiXssValidation; +import edu.cornell.mannlib.vitro.webapp.i18n.I18n; public class PersonHasAdviseeRelationshipGenerator extends VivoBaseGenerator implements EditConfigurationGenerator { @@ -184,7 +185,7 @@ public class PersonHasAdviseeRelationshipGenerator extends VivoBaseGenerator imp conf.addValidator(new DateTimeIntervalValidationVTwo("startField","endField")); conf.addValidator(new AntiXssValidation()); - conf.addValidator(new FirstAndLastNameValidator("existingAdvisor")); + conf.addValidator(new FirstAndLastNameValidator("existingAdvisor", I18n.bundle(vreq))); addFormSpecificData(conf, vreq); prepare(vreq, conf); diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/PersonHasAdvisorRelationshipGenerator.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/PersonHasAdvisorRelationshipGenerator.java index 6c22bd4a..8d172992 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/PersonHasAdvisorRelationshipGenerator.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/PersonHasAdvisorRelationshipGenerator.java @@ -20,6 +20,7 @@ import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.ChildVClasses import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.FieldVTwo; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.IndividualsViaVClassOptions; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.validators.AntiXssValidation; +import edu.cornell.mannlib.vitro.webapp.i18n.I18n; public class PersonHasAdvisorRelationshipGenerator extends VivoBaseGenerator implements EditConfigurationGenerator { @@ -184,7 +185,7 @@ public class PersonHasAdvisorRelationshipGenerator extends VivoBaseGenerator imp conf.addValidator(new DateTimeIntervalValidationVTwo("startField","endField")); conf.addValidator(new AntiXssValidation()); - conf.addValidator(new FirstAndLastNameValidator("existingAdvisee")); + conf.addValidator(new FirstAndLastNameValidator("existingAdvisee", I18n.bundle(vreq))); addFormSpecificData(conf, vreq); prepare(vreq, conf); diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/ProjectHasParticipantGenerator.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/ProjectHasParticipantGenerator.java index 83d03a55..b035e531 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/ProjectHasParticipantGenerator.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/ProjectHasParticipantGenerator.java @@ -17,6 +17,7 @@ import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.FieldVTwo; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.validators.AntiXssValidation; import edu.cornell.mannlib.vitro.webapp.utils.FrontEndEditingUtils.EditMode; import edu.cornell.mannlib.vitro.webapp.utils.generators.EditModeUtils; +import edu.cornell.mannlib.vitro.webapp.i18n.I18n; public class ProjectHasParticipantGenerator extends VivoBaseGenerator implements EditConfigurationGenerator{ @@ -92,7 +93,7 @@ public class ProjectHasParticipantGenerator extends VivoBaseGenerator implement //Add validator conf.addValidator(new AntiXssValidation()); - conf.addValidator(new FirstAndLastNameValidator("existingPerson")); + conf.addValidator(new FirstAndLastNameValidator("existingPerson", I18n.bundle(vreq))); //Adding additional data, specifically edit mode addFormSpecificData(conf, vreq); diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/utilities/Describe.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/utilities/Describe.java new file mode 100644 index 00000000..c2c03d5c --- /dev/null +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/utilities/Describe.java @@ -0,0 +1,36 @@ +package edu.cornell.mannlib.vitro.webapp.utilities; + +import java.util.Iterator; +import java.util.List; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.jena.ontology.OntModel; +import org.apache.jena.rdf.model.ModelFactory; +import org.apache.jena.rdf.model.RDFNode; +import org.apache.jena.rdf.model.ResourceFactory; +import org.apache.jena.rdf.model.Statement; +import org.apache.jena.rdf.model.StmtIterator; +import org.apache.jena.vocabulary.RDFS; + + +public class Describe { + private static final Log log = LogFactory.getLog(Describe.class.getName()); + + public static void main(String[] args) { + OntModel model = ModelFactory.createOntologyModel(); + model.read("C:\\VIVO-Trad-ecosysteme\\vivo\\home\\rdf\\applicationMetadata\\firsttime\\classgroups_fr_CA.rdf") ; + model.read("C:\\VIVO-Trad-ecosysteme\\vivo\\home\\rdf\\applicationMetadata\\firsttime\\classgroups.rdf") ; + Describe.showVitroClassGroupequipmentLabels(model,"test"); + System.out.println("Done!"); + } + + private static void showVitroClassGroupequipmentLabels(OntModel model, String message) { + String uri = "http://vivoweb.org/ontology#vitroClassGroupequipment"; + List stmts = model.listStatements(ResourceFactory.createResource(uri), RDFS.label, (RDFNode)null).toList(); + for (Iterator iterator = stmts.iterator(); iterator.hasNext();) { + Statement statement = (Statement) iterator.next(); + log.debug("\t\t"+message + " " +statement); + } + } +} diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/capabilitymap/CapabilityMapRequestHandler.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/capabilitymap/CapabilityMapRequestHandler.java index 07a96f29..60baa82d 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/capabilitymap/CapabilityMapRequestHandler.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/capabilitymap/CapabilityMapRequestHandler.java @@ -54,10 +54,16 @@ public class CapabilityMapRequestHandler implements VisualizationRequestHandler @Override public Object generateAjaxVisualization(VitroRequest vitroRequest, Log log, Dataset dataSource) throws MalformedQueryParametersException, JsonProcessingException { - ConceptLabelMap conceptLabelMap = VisualizationCaches.conceptToLabel.getNoWait(vitroRequest.getRDFService()); - ConceptPeopleMap conceptPeopleMap = VisualizationCaches.conceptToPeopleMap.getNoWait(vitroRequest.getRDFService()); - OrganizationPeopleMap organizationPeopleMap = VisualizationCaches.organisationToPeopleMap.getNoWait(vitroRequest.getRDFService()); - Map organizationLabels = VisualizationCaches.organizationLabels.getNoWait(vitroRequest.getRDFService()); + RDFService rdfService = vitroRequest.getRDFService(); + rdfService.setVitroRequest(vitroRequest); + // VisualizationCaches.rebuildAll(rdfService); + // VisualizationCaches.conceptToLabel.build(rdfService); +// ConceptLabelMap conceptLabelMap = VisualizationCaches.conceptToLabel.getNoWait(rdfService); + // UQAM-Bug-Correction Refresh all memory models with appropriate liguistic labels + ConceptLabelMap conceptLabelMap = VisualizationCaches.conceptToLabel.get(rdfService, true, true); + ConceptPeopleMap conceptPeopleMap = VisualizationCaches.conceptToPeopleMap.getNoWait(rdfService); + OrganizationPeopleMap organizationPeopleMap = VisualizationCaches.organisationToPeopleMap.getNoWait(rdfService); + Map organizationLabels = VisualizationCaches.organizationLabels.getNoWait(rdfService); String data = vitroRequest.getParameter("data"); if (!StringUtils.isEmpty(data)) { diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/utilities/CachingRDFServiceExecutor.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/utilities/CachingRDFServiceExecutor.java index ddbc68aa..abb2c4e2 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/utilities/CachingRDFServiceExecutor.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/utilities/CachingRDFServiceExecutor.java @@ -2,8 +2,10 @@ package edu.cornell.mannlib.vitro.webapp.visualization.utilities; +import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; import edu.cornell.mannlib.vitro.webapp.rdfservice.RDFService; import edu.cornell.mannlib.vitro.webapp.utils.threads.VitroBackgroundThread; +import edu.cornell.mannlib.vitro.webapp.visualization.model.ConceptLabelMap; import java.util.Date; import java.util.HashMap; @@ -85,7 +87,69 @@ public class CachingRDFServiceExecutor { if (backgroundTask != null && backgroundTask.isDone()) { completeBackgroundTask(); } + // If we have cached results + if (cachedResults != null) { + // If the background service exists, and the cache is considered invalid + if (backgroundRDFService != null && resultBuilder.invalidateCache(System.currentTimeMillis() - lastCacheTime)) { + // In most cases, only wait for half a second + long waitFor = 500; + + if (backgroundTask == null) { + // Start the background task to refresh the cache + startBackgroundTask(backgroundRDFService); + + // As we've just started the background task, allow a wait time of 1 second + waitFor = 1000; + } + + // See if we expect it to complete in time, and if so, wait for it + if (allowWaits && isExpectedToCompleteIn(waitFor)) { + completeBackgroundTask(waitFor); + } + + } + } else { + // No cached results, so fetch the results using any available RDF service + if (rdfService != null) { + startBackgroundTask(rdfService); + } else if (backgroundRDFService != null) { + startBackgroundTask(backgroundRDFService); + } else { + throw new RuntimeException("Can't execute without an RDF Service"); + } + + // As there are no cached results, wait for an answer regardless of the RDF service used + completeBackgroundTask(); + } + return cachedResults; + } + + public synchronized T get(RDFService rdfService, boolean allowWaits, boolean force) { + /* + * UQAM-Bug-Correction + * Forces the regeneration of the result + */ + if (force) { + try { + String backLang = backgroundRDFService.getVitroRequest().getLocale().getLanguage(); + String srvLang = rdfService.getVitroRequest().getLocale().getLanguage(); + if (!backLang.equals(srvLang)) { + backgroundRDFService.setVitroRequest(rdfService.getVitroRequest()); + startBackgroundTask(rdfService); + completeBackgroundTask(); + } + } catch (Exception e) { + backgroundRDFService.setVitroRequest(rdfService.getVitroRequest()); + startBackgroundTask(rdfService); + completeBackgroundTask(); + } + return cachedResults; + } + // First, check if there are results from the previous background task, and update the cache + if (backgroundTask != null && backgroundTask.isDone()) { + completeBackgroundTask(); + } // If we have cached results if (cachedResults != null) { // If the background service exists, and the cache is considered invalid diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/utilities/VisualizationCaches.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/utilities/VisualizationCaches.java index 6206e126..0a528443 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/utilities/VisualizationCaches.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/utilities/VisualizationCaches.java @@ -9,6 +9,8 @@ import org.apache.jena.rdf.model.Literal; import org.apache.jena.rdf.model.Model; import org.apache.jena.rdf.model.ModelFactory; import org.apache.jena.rdf.model.Resource; + +import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; import edu.cornell.mannlib.vitro.webapp.rdfservice.RDFService; import edu.cornell.mannlib.vitro.webapp.rdfservice.ResultSetConsumer; import edu.cornell.mannlib.vitro.webapp.visualization.constants.QueryConstants; @@ -232,13 +234,37 @@ final public class VisualizationCaches { new CachingRDFServiceExecutor.RDFServiceCallable>(visualizationAffinity) { @Override protected Map callWithService(RDFService rdfService) throws Exception { + // get current selected language tag + VitroRequest vreq = rdfService.getVitroRequest(); + String langCtx = "en-US"; // set default + String language = "en"; // set fallback language + try { + langCtx = language = vreq.getLocale().getLanguage(); + if (!vreq.getLocale().getCountry().isEmpty()) { + langCtx += "-" + vreq.getLocale().getCountry(); + } + } catch (Exception e) { } + String query = QueryConstants.getSparqlPrefixQuery() + - "SELECT ?org ?orgLabel\n" + + "SELECT ?org (Min(?orgLabel_) AS ?orgLabel) \n" + "WHERE\n" + "{\n" + - " ?org a foaf:Organization .\n" + - " ?org rdfs:label ?orgLabel .\n" + - "}\n"; + " ?org a foaf:Organization \n" + + " OPTIONAL { ?org rdfs:label ?orgLabelPrimary . \n" + + " FILTER (LANG(?orgLabelPrimary) = '" + langCtx + "') \n" + + "} \n" + + " OPTIONAL { ?org rdfs:label ?orgLabelSecondary . \n" + + " FILTER (LANG(?orgLabelSecondary) = '" + language + "') \n" + + "} \n" + + " OPTIONAL { ?org rdfs:label ?orgLabelTertiary .\n" + + " FILTER (STRBEFORE(STR(LANG(?orgLabelTertiary)), '-') = '" + language + "') \n" + + "} \n" + + " OPTIONAL { ?org rdfs:label ?orgLabelFallback .\n" + + " FILTER (LANG(?orgLabelFallback) != '" + langCtx + "' \n" + + " && LANG(?orgLabelFallback) != '" + language + "' ) \n" + + "} \n" + + "BIND(COALESCE(?orgLabelPrimary, ?orgLabelSecondary, ?orgLabelTertiary, ?orgLabelFallback) AS ?orgLabel_) \n" + + "} GROUP BY ?org \n"; final Map map = new HashMap<>(); @@ -390,6 +416,16 @@ final public class VisualizationCaches { new CachingRDFServiceExecutor.RDFServiceCallable() { @Override protected ConceptLabelMap callWithService(RDFService rdfService) throws Exception { + VitroRequest vreq = rdfService.getVitroRequest(); + String langCtx = "en-US"; + // UQAM-Optimization Adjust to linguistic context + try { + langCtx = vreq.getLocale().getLanguage(); + if (!vreq.getLocale().getCountry().isEmpty()) { + langCtx += "-" + vreq.getLocale().getCountry(); + } + } catch (Exception e) { + } String query = QueryConstants.getSparqlPrefixQuery() + "SELECT ?concept ?label\n" + "WHERE\n" + @@ -398,13 +434,13 @@ final public class VisualizationCaches { " ?person core:hasResearchArea ?concept .\n" + " ?concept a skos:Concept .\n" + " ?concept rdfs:label ?label .\n" + + " FILTER (lang(?label) = '" + langCtx+"' ) \n" + "}\n"; // final Map map = new HashMap<>(); final ConceptLabelMap map = new ConceptLabelMap(); - + rdfService.sparqlSelectQuery(query, new ResultSetConsumer() { - @Override protected void processQuerySolution(QuerySolution qs) { String conceptURI = qs.getResource("concept").getURI().intern(); String label = qs.getLiteral("label").getString().intern(); diff --git a/api/src/main/java/org/vivoweb/webapp/startup/i18nSetup.java b/api/src/main/java/org/vivoweb/webapp/startup/i18nSetup.java index b4c1a6d5..2f539474 100644 --- a/api/src/main/java/org/vivoweb/webapp/startup/i18nSetup.java +++ b/api/src/main/java/org/vivoweb/webapp/startup/i18nSetup.java @@ -7,6 +7,12 @@ import edu.cornell.mannlib.vitro.webapp.i18n.VitroResourceBundle; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; +/** + * Configures VIVO to look for i18n properties files prefixed with 'vivo_'. + * This listener must be run before any other code that uses resource bundles. + * As this listener does not depend on any others, it should be run at or near + * the top of the list in startup_listeners.txt. + */ public class i18nSetup implements ServletContextListener { @Override diff --git a/home/src/main/resources/config/default.runtime.properties b/home/src/main/resources/config/default.runtime.properties index f55ffa9f..040e2b22 100644 --- a/home/src/main/resources/config/default.runtime.properties +++ b/home/src/main/resources/config/default.runtime.properties @@ -180,8 +180,8 @@ selfEditing.idMatchingProperty = http://vivo.mydomain.edu/ns#networkId # # A list of supported languages or Locales that the user may choose to - # use instead of the one specified by the browser. Selection images must - # be available in the i18n/images directory of the theme. This affects + # use instead of the one specified by the browser. The selected language(s) + # must exist in the VIVO-languages repository. This affects # RDF data retrieved from the model, if RDFService.languageFilter is true. # This also affects the text of pages that have been modified to support # multiple languages. diff --git a/home/src/main/resources/rdf/display/everytime/homePageDataGetters.n3 b/home/src/main/resources/rdf/display/everytime/homePageDataGetters.n3 index be3db725..35ec0e8e 100644 --- a/home/src/main/resources/rdf/display/everytime/homePageDataGetters.n3 +++ b/home/src/main/resources/rdf/display/everytime/homePageDataGetters.n3 @@ -23,7 +23,8 @@ display:academicDeptsDataGetter WHERE { ?theURI a vivo:AcademicDepartment . - ?theURI rdfs:label ?label + ?theURI rdfs:label ?label . + FILTER (lang(?label) = '?country' ) . } """ . diff --git a/home/src/main/resources/rdf/display/firsttime/aboutPage.n3 b/home/src/main/resources/rdf/display/firsttime/aboutPage.n3 deleted file mode 100644 index d2a7c2f7..00000000 --- a/home/src/main/resources/rdf/display/firsttime/aboutPage.n3 +++ /dev/null @@ -1,24 +0,0 @@ -# $This file is distributed under the terms of the license in LICENSE$ - -@prefix about: . - -about:ABOUTDG - a ; - - """

About VIVO

-

The VIVO application enables the discovery of researchers across institutions. Participants in the network include institutions with local installations of VIVO or those with research discovery and profiling applications that can provide semantic web-compliant data. The information accessible through VIVO's search and browse capability will therefore reside and be controlled locally, within institutional VIVOs or other semantic web-compliant applications.

- -

VIVO is an open source semantic web application originally developed and implemented at Cornell. When installed and populated with content at an institution, it enables the discovery of research and scholarship across disciplines at that institution. VIVO supports browsing and a search function which returns faceted results for rapid retrieval of desired information. Content in any local VIVO installation may be maintained manually or brought into the database in automated ways from local systems of record, such as human resources, scholarships, grants, course, and faculty activity databases.

- -

See more information on the VIVO Project.

- """@en ; - - "aboutPage" . -about:ABOUTPAGE - a ; - - about:ABOUTDG ; - - "About Page" ; - - "/about" . diff --git a/home/src/main/resources/rdf/display/firsttime/menu.n3 b/home/src/main/resources/rdf/display/firsttime/menu.n3 index 3d6aa54e..1717a05b 100644 --- a/home/src/main/resources/rdf/display/firsttime/menu.n3 +++ b/home/src/main/resources/rdf/display/firsttime/menu.n3 @@ -14,7 +14,6 @@ display:DefaultMenu a display:MainMenu ; - rdfs:label "Default Menu" ; display:hasElement display:EventsMenuItem ; display:hasElement display:HomeMenuItem ; display:hasElement display:OrganizationsMenuItem ; @@ -27,43 +26,36 @@ display:DefaultMenu display:HomeMenuItem a display:NavigationElement ; display:menuPosition 1; - display:linkText "Home"; display:toPage display:Home . display:PeopleMenuItem a display:NavigationElement ; display:menuPosition 2; - display:linkText "People"; display:toPage display:People . display:OrganizationsMenuItem a display:NavigationElement ; display:menuPosition 3; - display:linkText "Organizations"; display:toPage display:Organizations . display:ResearchMenuItem a display:NavigationElement ; display:menuPosition 4; - display:linkText "Research"; display:toPage display:Research . display:EventsMenuItem a display:NavigationElement ; display:menuPosition 5; - display:linkText "Events"; display:toPage display:Events . display:CapabilityMapMenuItem a display:NavigationElement ; display:menuPosition 6; - display:linkText "Capability Map"; display:toPage display:CapabilityMap . display:Home a display:HomePage ; a display:Page ; - display:title "Home" ; display:urlMapping "/" ; display:hasDataGetter display:homeDataGetter; display:cannotDeletePage "true" . @@ -72,7 +64,6 @@ display:Events a display:Page ; a display:ClassGroupPage; display:forClassGroup vivoweb:vitroClassGroupevents ; - display:title "Events" ; display:urlMapping "/events" ; display:hasDataGetter display:eventsDataGetter . @@ -80,7 +71,6 @@ display:Organizations a display:Page ; a display:ClassGroupPage; display:forClassGroup vivoweb:vitroClassGrouporganizations ; - display:title "Organizations" ; display:urlMapping "/organizations"; display:hasDataGetter display:organizationsDataGetter . @@ -88,7 +78,6 @@ display:People a display:Page ; a display:ClassGroupPage; display:forClassGroup vivoweb:vitroClassGrouppeople ; - display:title "People" ; display:urlMapping "/people" ; display:hasDataGetter display:peopleDataGetter . @@ -96,13 +85,11 @@ display:Research a display:Page ; a display:ClassGroupPage; display:forClassGroup vivoweb:vitroClassGrouppublications ; - display:title "Research" ; display:urlMapping "/research" ; display:hasDataGetter display:researchDataGetter . display:CapabilityMap a display:Page ; - display:title "Capability Map" ; display:urlMapping "/vis/capabilitymap" ; display:hasDataGetter display:capabilityMapDataGetter . diff --git a/home/src/main/resources/rdf/tbox/filegraph/vivo.owl b/home/src/main/resources/rdf/tbox/filegraph/vivo.owl index 1dd529cb..fdc65974 100644 --- a/home/src/main/resources/rdf/tbox/filegraph/vivo.owl +++ b/home/src/main/resources/rdf/tbox/filegraph/vivo.owl @@ -4763,9 +4763,8 @@ use one freetextKeyword assertion for each keyword or phrase. - ISI Researcher ID - RearcherID is a Thomson Reuters project where researchers have a place to manage and share their professional information. It will allow them to solve author identity issues while simultaneously adding dynamic citation metrics and collaboration networks to your personal profile. -Definition source: http://isiwebofknowledge.com/researcherid/ + ResearcherID + ResearcherID is a Clarivate project where researchers have a place to manage and share their professional information. It will allow them to solve author identity issues while simultaneously adding dynamic citation metrics and collaboration networks to your personal profile. http://www.researcherid.com/ diff --git a/home/src/main/resources/rdf/tbox/firsttime/vitroAnnotations.n3 b/home/src/main/resources/rdf/tbox/firsttime/vitroAnnotations.n3 deleted file mode 100644 index 9651b025..00000000 --- a/home/src/main/resources/rdf/tbox/firsttime/vitroAnnotations.n3 +++ /dev/null @@ -1,7558 +0,0 @@ -@prefix bibo: . -@prefix cito: . -@prefix c4o: . -@prefix dcterms: . -@prefix event: . -@prefix fabio: . -@prefix foaf: . -@prefix geo: . -@prefix obo: . -@prefix ocrer: . -@prefix ocresd: . -@prefix ocresp: . -@prefix ocrest: . -@prefix owl: . -@prefix rdf: . -@prefix rdfs: . -@prefix ro: . -@prefix scires: . -@prefix skos: . -@prefix swo: . -@prefix vann: . -@prefix vcard: . -@prefix vitro: . -@prefix vitro-public: . -@prefix vivo: . -@prefix xsd: . - - - rdfs:label "Bibliographic Ontology"@en-US ; - vitro:ontologyPrefixAnnot "bibo" . - - - rdfs:label "SKOS (Simple Knowledge Organization System)"@en-US ; - vitro:ontologyPrefixAnnot "skos" . - - - rdfs:label "VIVO Core Ontology"@en-US ; - vitro:ontologyPrefixAnnot "vivo" . - - - rdfs:label "OCRe Research"@en-US ; - vitro:ontologyPrefixAnnot "ocrer" . - - - rdfs:label "OCRe Study Design"@en-US ; - vitro:ontologyPrefixAnnot "ocresd" . - - - rdfs:label "OCRe Study Protocol"@en-US ; - vitro:ontologyPrefixAnnot "ocresp" . - - - rdfs:label "OCRe Statistics"@en-US ; - vitro:ontologyPrefixAnnot "ocresst" . - - - rdfs:label "Geopolitical Ontology"@en-US ; - vitro:ontologyPrefixAnnot "geo" . - - - rdfs:label "Event Ontology"@en-US ; - vitro:ontologyPrefixAnnot "event" . - - - rdfs:label "OBO Foundry"@en-US ; - vitro:ontologyPrefixAnnot "obo" . - - - rdfs:label "VCard"@en-US ; - vitro:ontologyPrefixAnnot "vcard" . - - - rdfs:label "FOAF (Friend of a Friend)"@en-US ; - vitro:ontologyPrefixAnnot "foaf" . - - - rdfs:label "VIVO Scientific Research Ontology"@en-US ; - vitro:ontologyPrefixAnnot "scires" . - - - rdfs:label "FaBiO (FRBR-Aligned Bibliographic Ontology)"@en-US ; - vitro:ontologyPrefixAnnot "fabio" . - - - rdfs:label "Citation Counting and Context Characterization Ontology"@en-US ; - vitro:ontologyPrefixAnnot "c4o" . - - - rdfs:label "CiTO (Citation Typing Ontology)"@en-US ; - vitro:ontologyPrefixAnnot "cito" . - - - rdfs:label "Dublin Core Terms"@en-US ; - vitro:ontologyPrefixAnnot "dcterms" . - - - rdfs:label "Vocabulary for Annotating Vocabulary Descriptions"@en-US ; - vitro:ontologyPrefixAnnot "vann" . - - - rdfs:label "Relations Ontology"@en-US ; - vitro:ontologyPrefixAnnot "ro" . - - - rdfs:label "Software Ontology"@en-US ; - vitro:ontologyPrefixAnnot "swo" . - -vivo:pmcid - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -obo:ERO_0000071 - vitro:inClassGroup . - -bibo:Note - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:offeredBy - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "4"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -vivo:dateTimeValue - vitro:customEntryFormAnnot - "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.DateTimePropertyGenerator"^^xsd:string ; - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "5"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:selectFromExistingAnnot - "false"^^xsd:boolean . - -vivo:isCorrespondingAuthor - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "60"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "Indicates whether the author handles correspondence about the work and is in effect the guarantor of the published work. The response is either 'true' or 'false' (without the quotes)."^^xsd:string . - -vivo:SeminarSeries - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -obo:ARG_0000172 - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:supplementalInformation - vitro:displayLimitAnnot - "3"^^xsd:int ; - vitro:displayRankAnnot - "40"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "Allows for the entry of additional information, such as additional information describing educational background."^^xsd:string . - -bibo:chapter - vitro:displayRankAnnot - "53"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "A chapter number. NOT to be used for the chapter title, which should be entered in the \"name\" field instead (the field in bold at the top of the page)"^^xsd:string . - -vivo:Student - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:non_self_governing - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - - - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "4"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:assigneeFor - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "60"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean ; - vitro:inPropertyGroupAnnot - . - -geo:GDPTotalInCurrentPrices - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:Company - vitro:displayLimitAnnot - "2"^^xsd:int ; - vitro:displayRankAnnot - "2"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:NonAcademicPosition - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "4"^^xsd:int ; - vitro:extendedLinkedData - "true"^^xsd:boolean ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:other - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:sici - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "The Serial Item and Contribution Identifier (SICI) is a code (ANSI/NISO standard Z39.56) used to uniquely identify specific volumes, articles or other identifiable parts of a periodical."^^xsd:string . - -vivo:placeOfPublication - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "55"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "City in which the publication was done."^^xsd:string . - -vivo:hasCollaborator - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:GovernmentAgency - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -skos:narrower - vitro:customEntryFormAnnot - "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.AddConceptThroughObjectPropertyGenerator"^^xsd:string ; - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "52"^^xsd:int ; - vitro:fullPropertyNameAnnot - "narrower term"^^xsd:string ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "This relates a term that is narrower in meaning (i.e. more specific) to another term that is broader in meaning, where the scope (meaning) of narrower term falls completely within the scope of the broader term."^^xsd:string ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean ; - vitro:inPropertyGroupAnnot - . - -vivo:affiliatedOrganization - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "40"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - - -vivo:License - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "5"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -foaf:Person - vitro:customDisplayViewAnnot - "individual--foaf-person.ftl"^^xsd:string ; - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -obo:OBI_0000272 - vitro:inClassGroup . - -bibo:pageStart - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "12"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "Starting page number within a continuous page range."^^xsd:string . - -geo:countryAreaYear - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:reportId - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "20"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "Unique identifier for a Report (a type of information resource)."^^xsd:string . - -geo:hasMinLongitude - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:Manuscript - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -owl:sameAs - a owl:ObjectProperty ; - rdfs:domain owl:Thing ; - rdfs:range owl:Thing ; - rdfs:subPropertyOf owl:topObjectProperty ; - vitro:displayLimitAnnot - "5" ; - vitro:displayRankAnnot - "1"^^xsd:int ; - vitro:forceStubDeletionAnnot - "false"^^xsd:boolean ; - vitro:fullPropertyNameAnnot - "sameAs" ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "This is the OWL property to link two indivdiuals with the same 'identity'. see http://www.w3.org/TR/owl-ref/#sameAs-def"@en-US ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean ; - vitro:stubObjectPropertyAnnot - "false"^^xsd:boolean . - -vivo:Presentation - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -obo:ERO_0000007 - vitro:inClassGroup . - -vivo:SubnationalRegion - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "10"^^xsd:int ; - vitro:inClassGroup ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:territory - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:researchAreaOf - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "10"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -vivo:subjectAreaOf - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "10"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -geo:populationTotal - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:nationalityFR - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -obo:ERO_0000006 - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:conceptAssociatedWith - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "20"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -geo:nameOfficialIT - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:reproduces - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "60"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -vivo:EmeritusFaculty - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:Video - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -obo:IAO_0000142 - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:Issue - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "21"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vitro-public:File - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:AcademicYear - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:nameShortRU - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - - - -geo:codeISO3 - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -obo:ERO_0000005 - vitro:inClassGroup . - -vitro:moniker - vitro:descriptionAnnot - "This property is deprecated."^^xsd:string ; - vitro:displayLimitAnnot - "3"^^xsd:int ; - vitro:displayRankAnnot - "100"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:codeFAOSTAT - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - - - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -vivo:AttendeeRole - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:extendedLinkedData - "true"^^xsd:boolean ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:NewsRelease - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - - - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:codeISO2 - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:nameOfficialFR - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:Authorship - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:extendedLinkedData - "true"^^xsd:boolean ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -obo:ERO_0000004 - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "10"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:Workshop - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:roleContributesTo - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -bibo:pmid - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "12"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "A PMID (PubMed Identifier or PubMed Unique Identifier) is a unique number assigned to each PubMed citation of life sciences and biomedical scientific journal articles."^^xsd:string . - -bibo:Film - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:Consortium - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:Periodical - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:disputed - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:grantDirectCosts - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "61"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "This is the cost associated with the grant activity, and should not include any indirect cost associated with administering the grant."^^xsd:string . - -geo:nameListES - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:Continent - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:nameOfficialRU - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -obo:ERO_0001255 - vitro:inClassGroup . - -vivo:features - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "60"^^xsd:int ; - vitro:fullPropertyNameAnnot - "features"^^xsd:string ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "This relates an information resource to a person it features."^^xsd:string ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -vivo:featuredIn - vitro:customEntryFormAnnot - "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.AutocompleteObjectPropertyFormGenerator"^^xsd:string ; - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "50"^^xsd:int ; - vitro:fullPropertyNameAnnot - "featuredIn"^^xsd:string ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "This relates a person to an information resource that contains a featured article on that person."^^xsd:string ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -vivo:ClinicalRole - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:extendedLinkedData - "true"^^xsd:boolean ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:hasCurrency - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:landArea - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:PeerReviewerRole - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:extendedLinkedData - "true"^^xsd:boolean ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:ExtensionUnit - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:distributor - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "70"^^xsd:int ; - vitro:fullPropertyNameAnnot - "distributor"^^xsd:string ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "The foaf definition is as follows - Distributor of a document or a collection of documents. However, in VIVO, this can relate anything as the distributor to anything else."^^xsd:string ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -vivo:eligibleFor - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "15"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "Used for the situation where a credential has a prerequisite training or degree, as in becoming board eligible in a field of medicine"^^xsd:string ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -geo:nameCurrencyRU - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -obo:ERO_0001254 - vitro:inClassGroup . - -bibo:affirmedBy - vitro:fullPropertyNameAnnot - "affirmedBy"^^xsd:string ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "A legal decision that affirms a ruling."^^xsd:string ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -obo:ERO_0000774 - vitro:displayLimitAnnot - "2"^^xsd:int ; - vitro:displayRankAnnot - "20"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - . - -vivo:ServiceProvidingLaboratory - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:Facility - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:expirationDate - vitro:customEntryFormAnnot - "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.DateTimePropertyGenerator"^^xsd:string ; - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "19"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "false"^^xsd:boolean . - -vivo:Meeting - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:assignee - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "5"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "the individual or entity to whom ownership of the published application was assigned at the time of publication."^^xsd:string ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -vivo:Blog - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -obo:ERO_0001257 - vitro:inClassGroup . - -bibo:presents - vitro:displayRankAnnot - "200"^^xsd:int ; - vitro:fullPropertyNameAnnot - "presentations"^^xsd:string ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "Relates an event to associated documents; for example, conference to a paper."^^xsd:string ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -obo:ERO_0000054 - vitro:displayRankAnnot - "120"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - . - -geo:hasShortName - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:PopulatedPlace - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:FacultyAdministrativePosition - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "1"^^xsd:int ; - vitro:extendedLinkedData - "true"^^xsd:boolean ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:Equipment - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:locator - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "A description (often numeric) that locates an item within a containing document or collection."^^xsd:string . - -bibo:Article - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:Abstract - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:Position - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:extendedLinkedData - "true"^^xsd:boolean ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -obo:ERO_0001256 - vitro:inClassGroup . - -geo:GDPYear - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:degree - vitro:fullPropertyNameAnnot - "degree"^^xsd:string ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "The thesis degree."^^xsd:string ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -vivo:Laboratory - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:localAwardId - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "72"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "An institution's local identifier assigned to a grant awarded."^^xsd:string . - -obo:ARG_0000197 - vitro:inPropertyGroupAnnot - ; - vitro:displayRankAnnot - "40"^^xsd:int ; - vitro:displayLimitAnnot - "2"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - . - -vivo:iclCode - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "5"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - """The International classification(s) to which the published application has been assigned."""^^xsd:string . - -bibo:presentedAt - vitro:displayRankAnnot - "120"^^xsd:int ; - vitro:fullPropertyNameAnnot - "presentedAt"^^xsd:string ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "Relates a document to an event; for example, a paper to a conference."^^xsd:string ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -geo:agriculturalArea - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:publisherOf - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "25"^^xsd:int ; - vitro:fullPropertyNameAnnot - "publisher of"^^xsd:string ; - vitro:customEntryFormAnnot - "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.AutocompleteObjectPropertyFormGenerator"^^xsd:string ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "Relates an entity that is engaged in publishing printed or online material to the material itself."^^xsd:string ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -obo:ERO_0001259 - vitro:inClassGroup . - -vivo:TeacherRole - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:extendedLinkedData - "true"^^xsd:boolean ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:population - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:Dataset - vitro:inClassGroup ; - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:Contract - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:Hearing - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -obo:ERO_0001258 - vitro:inClassGroup . - -bibo:Brief - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:DateTimeValue - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:extendedLinkedData - "true"^^xsd:boolean ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:reproducedIn - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "60"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -geo:hasListName - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:asin - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "The Amazon Standard Identification Number (ASIN) is a unique identification number assigned by Amazon.com and its partners for product identification within the Amazon.com organization."^^xsd:string . - -vivo:outreachOverview - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "10"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "Please enter a single summary narrative of your outreach goals and/or contributions"^^xsd:string ; - vitro:editing - "HTML"^^xsd:string . - -obo:ERO_0000031 - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:Librarian - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -obo:ERO_0000050 - vitro:displayLimitAnnot - "2"^^xsd:int ; - vitro:displayRankAnnot - "76"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - . - - -geo:nameCurrencyFR - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:hasGoverningAuthority - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "8"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -bibo:AcademicArticle - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:geographical_region - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:doi - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "3"^^xsd:int ; - vitro:fullPropertyNameAnnot - "doi"^^xsd:string ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "The Digital Object Identifier (DOI) System provides for persistent identification of content objects in the digital environment. \"DOI names are assigned to any entity for use on digital networks. They are used to provide current information, including where they (or information about them) can be found on the Internet. Information about a digital object may change over time, including where to find it, but its DOI name will not change.\""^^xsd:string ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -obo:ERO_0000070 ## inverse of ERO_0000031 -# vitro:displayLimitAnnot -# "2"^^xsd:int ; -# vitro:displayRankAnnot -# "15"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . -# vitro:inPropertyGroupAnnot -# ; -# vitro:selectFromExistingAnnot -# "true"^^xsd:boolean ; -# vitro:offerCreateNewOptionAnnot -# "true"^^xsd:boolean . - -bibo:shortDescription - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "An account of the resource."^^xsd:string . - -geo:isAdministeredBy - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -bibo:volume - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "20"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "A volume number."^^xsd:string . - -bibo:abstract - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "A summary of the resource."^^xsd:string ; - vitro:editing - "HTML"^^xsd:string . - -vivo:PrincipalInvestigatorRole - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:extendedLinkedData - "true"^^xsd:boolean ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:School - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -obo:ERO_0000020 - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:nameShortFR - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:codeFAOTERM - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:sponsoredBy - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "20"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -vivo:Review - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - - - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "19"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:courseCredits - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "50"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "Number of credits assigned a course by an learning institution."^^xsd:string ; - vitro:inPropertyGroupAnnot - . - -bibo:issue - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "21"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:University - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:number - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "30"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "A generic item or document number. Not to be confused with issue number. A barcode, perhaps?"^^xsd:string . - -obo:RO_0001025 - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean . - -vivo:Location - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - - - vitro:ontologyPrefixAnnot "ocresd"^^xsd:string . - -vivo:WorkingPaper - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:hasStatistics - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:populationUnit - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:teachingOverview - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "10"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "Please enter a single narrative summary description of your teaching activities, goals, and/or experience"^^xsd:string ; - vitro:editing - "HTML"^^xsd:string . - -vivo:rank - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "enter the position in the list that you would like this item displayed"^^xsd:string . - -bibo:issn - vitro:displayLimitAnnot - "2"^^xsd:int ; - vitro:displayRankAnnot - "1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "An International Standard Serial Number (ISSN) is a unique eight-digit number used to identify a periodical publication."^^xsd:string . - -vivo:supports - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -obo:RO_0000057 - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:patentNumber - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "Unique number assigned to a patent application when the United States Patent and Trademark Office issues as a patent."^^xsd:string . - -bibo:Journal - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:Newspaper - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:contactInformation - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "25"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "The contact information for a particular event. This could be a name, email, phone number, or method(s) of contacting someone to gain information about the event."^^xsd:string . - -geo:nameListEN - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:overview - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "10"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "A short narrative summary to be used as a single descriptive overview statement."^^xsd:string ; - vitro:editing - "HTML"^^xsd:string . - -vivo:description - vitro:displayLimitAnnot - "3"^^xsd:int ; - vitro:displayRankAnnot - "1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "An account of the resource."^^xsd:string . - -geo:hasCode - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -obo:RO_0000056 - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - - - - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "3"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:Award - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:grantSubcontractedThrough - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "15"^^xsd:int ; - vitro:fullPropertyNameAnnot - "grantSubcontractedThrough"^^xsd:string ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "This relates a grant to the organization awarding the sub-contract for the grant."^^xsd:string ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean . - -obo:ERO_0001260 - vitro:inClassGroup . - -bibo:recipient - vitro:fullPropertyNameAnnot - "recipient"^^xsd:string ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "This relates a communication document to the agent who receives that communication document."^^xsd:string ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -vivo:Building - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:EventSeries - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:hasSubjectArea - vitro:customEntryFormAnnot - "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.AddAssociatedConceptGenerator"^^xsd:string ; - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "20"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -obo:ERO_0000398 - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -vivo:geographicFocusOf - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "70"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -vivo:freetextKeyword - vitro:displayLimitAnnot - "10"^^xsd:int ; - vitro:displayRankAnnot - "140"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:publicDescriptionAnnot - "Intended for a word or short phrase only where no instance of a controlled vocabulary can be identified. Can also be used to help in highlighting subtle difference in work."^^xsd:string . - -vivo:Credential - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "5"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:identifier - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "Unique identifier of a document or collection. This data property is not seen or updated by anyone."^^xsd:string . - -obo:ERO_0000044 - vitro:displayLimitAnnot - "2"^^xsd:int ; - vitro:displayRankAnnot - "70"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - . - -obo:ERO_0001261 - vitro:inClassGroup . - -obo:ERO_0000775 - vitro:displayLimitAnnot - "2"^^xsd:int ; - vitro:displayRankAnnot - "21"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - . - -bibo:reviewOf - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "60"^^xsd:int ; - vitro:fullPropertyNameAnnot - "reviewOf"^^xsd:string ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "Relates a review document to a reviewed thing (resource, item, etc.)."^^xsd:string ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -obo:ERO_0001263 - vitro:inClassGroup . - -vivo:informationResourceSupportedBy - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -# duplicate -# obo:ERO_0000397 -# vitro:displayLimitAnnot -# "61"^^xsd:int ; -# vitro:hiddenFromDisplayBelowRoleLevelAnnot -# ; -# vitro:offerCreateNewOptionAnnot -# "true"^^xsd:boolean ; -# vitro:prohibitedFromUpdateBelowRoleLevelAnnot -# ; -# vitro:selectFromExistingAnnot -# "true"^^xsd:boolean ; -# vitro:inPropertyGroupAnnot . - -vivo:ConferencePaper - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:landAreaYear - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:Website - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:nationalityIT - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -obo:ARG_0000001 - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:CollectedDocument - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:Relationship - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -obo:ERO_0000045 - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "30"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - . - -vivo:Division - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:Newsletter - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -obo:ERO_0001262 - vitro:inClassGroup . - -obo:ERO_0000396 - vitro:inClassGroup . - -vivo:reviewedIn - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "60"^^xsd:int ; - vitro:fullPropertyNameAnnot - "reviewedIn"^^xsd:string ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "Relates something to the review of that thing."^^xsd:string ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -vivo:contributingRole - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "15"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -vivo:Team - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:ClinicalOrganization - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:Program - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:Hospital - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:ThesisDegree - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:Center - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:countryArea - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:DateTimeValuePrecision - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:GraduateAdvisingRelationship - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -obo:RO_0000052 - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -obo:OBI_0000299 - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:proceedingsOf - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "30"^^xsd:int ; - vitro:fullPropertyNameAnnot - "proceedingsOf"^^xsd:string ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "This relates the proceedings to the conference that produced the proceedings."^^xsd:string ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -bibo:Thesis - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -obo:ERO_0000046 - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "32"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:inPropertyGroupAnnot - . - -obo:ERO_0000395 - vitro:inClassGroup . - -geo:isSuccessorOf - vitro:displayRankAnnot - "92"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean ; - vitro:inPropertyGroupAnnot - . - -geo:agriculturalAreaUnit - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:dateTimePrecision - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "5"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -bibo:Map - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:self_governing - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:hasPrerequisite - vitro:fullPropertyNameAnnot - "hasPrerequisite"^^xsd:string ; - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "40"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:inPropertyGroupAnnot - . - -vivo:Database - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:validIn - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "2"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean ; - vitro:inPropertyGroupAnnot - . - -obo:IAO_0000221 - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:Conference - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:Department - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -obo:RO_0002234 - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:F1000Link - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "6"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:BlogPosting - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:Collection - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:DocumentStatus - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:PrivateCompany - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -obo:ERO_0001520 - vitro:displayRankAnnot - "90"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:offerCreateNewOptionAnnot "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - . - - -vivo:AcademicDegree - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:Legislation - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:ReviewerRole - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:extendedLinkedData - "true"^^xsd:boolean ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:StateOrProvince - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:pageEnd - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "13"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "Ending page number within a continuous page range."^^xsd:string . - -bibo:AudioDocument - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -obo:RO_0002233 - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:isPredecessorOf - vitro:displayRankAnnot - "94"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean ; - vitro:inPropertyGroupAnnot - . - -vivo:EmeritusLibrarian - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:LegalDecision - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -obo:ERO_0000029 - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "50"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - - - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "A 'global citation frequency' is an entity referencing a distinct source, date, and value; include the value, source, and date in the label for clarity."^^xsd:string ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -geo:nameListIT - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:cites - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "4"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -bibo:AudioVisualDocument - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:GeographicRegion - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:Country - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:Speech - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "5"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:translationOf - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "52"^^xsd:int ; - vitro:fullPropertyNameAnnot - "translation of"^^xsd:string ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "Relates a translated document to the original document."^^xsd:string ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -vitro-public:FileByteStream - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:hasBorderWith - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean ; - vitro:displayRankAnnot - "69"^^xsd:int ; - vitro:inPropertyGroupAnnot - . - -bibo:performer - vitro:fullPropertyNameAnnot - "performer"^^xsd:string ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "This relates a performance to the person who or organization that carries out the performance."^^xsd:string ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -bibo:PersonalCommunicationDocument - vitro:displayLimitAnnot - "2"^^xsd:int ; - vitro:displayRankAnnot - "15"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:FundingOrganization - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:Publisher - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:StudentOrganization - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -obo:OBI_0000312 - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - . - -# note that this applies to grants only; see hasOutputContext for obo:RO_0002234 in /rdf/display/everytime/propertyConfig.n3 -vivo:supportedInformationResource - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "enter a publication or document supported by this grant"^^xsd:string ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -geo:nameListRU - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:validUntil - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:hasMember - vitro:displayRankAnnot - "65"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean ; - vitro:inPropertyGroupAnnot - . - - -bibo:eissn - vitro:displayRankAnnot - "2"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "An International Standard Serial Number (ISSN) is a unique eight-digit number used to identify a periodical publication. The eissn is an issn for electronic periodicals."^^xsd:string . - -geo:nameOfficialEN - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:Proceedings - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -obo:OBI_0000293 - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "105"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean . - -vivo:publisher - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "18"^^xsd:int ; - vitro:fullPropertyNameAnnot - "publisher"^^xsd:string ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "Relates published materials to an entity that is engaged in publishing."^^xsd:string ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -vivo:Institute - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -foaf:Organization - vitro:customDisplayViewAnnot - "individual--foaf-organization.ftl"^^xsd:string ; - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:nationalityZH - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:Postdoc - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:seatingCapacity - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "50"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "Number of people who can be seated in a specific room, by physical space available or limitations set by law. "^^xsd:string . - -vivo:ConferencePoster - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:middleName - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "3"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "The middle name or initial with which you normally identify yourself. Only one may be entered."^^xsd:string . - -vivo:WorkshopSeries - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:agriculturalAreaTotal - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -event:Event - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:hasMaxLongitude - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:nationalityEN - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:hasPredecessorOrganization - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "60"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -vivo:termType - vitro:displayRankAnnot - "1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:Image - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:AwardReceipt - vitro:extendedLinkedData - "true"^^xsd:boolean ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:FacultyMentoringRelationship - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:Bill - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:CoPrincipalInvestigatorRole - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:extendedLinkedData - "true"^^xsd:boolean ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:licenseNumber - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "4"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "license number"^^xsd:string . - -vivo:FacultyPosition - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "2"^^xsd:int ; - vitro:extendedLinkedData - "true"^^xsd:boolean ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -obo:RO_0001000 - ## note -- has a "some values from" restriction on Organism -# vitro:displayLimitAnnot -# "5"^^xsd:int ; -# vitro:displayRankAnnot -# "50"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . -# vitro:inPropertyGroupAnnot -# ; -# vitro:selectFromExistingAnnot -# "true"^^xsd:boolean ; -# vitro:offerCreateNewOptionAnnot -# "true"^^xsd:boolean . - - -bibo:gtin14 - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "80"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "Global Trade Item Number (GTIN) is an identifier for trade items developed by GS1 (comprising the former EAN International and Uniform Code Council). GTIN is an \"umbrella\" term used to describe the entire family of GS1 data structures for trade items (products and services) identification. GTINs may be 8, 12, 13 or 14 digits long."^^xsd:string . - -vivo:AdvisingRelationship - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:extendedLinkedData - "true"^^xsd:boolean ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:entryTerm - vitro:displayRankAnnot - "40"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - - - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "5"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -obo:ERO_0001521 - vitro:displayRankAnnot - "20"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:offerCreateNewOptionAnnot "true"^^xsd:boolean ; - vitro:inPropertyGroupAnnot - . - - -vivo:nihmsid - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:AcademicTerm - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:section - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "A section number"^^xsd:string . - -vivo:CaseStudy - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:populationYear - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -obo:IAO_0000136 - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:nationalityES - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:interviewer - vitro:fullPropertyNameAnnot - "interviewer"^^xsd:string ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "An agent that interview another agent."^^xsd:string ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -geo:codeUNDP - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -foaf: - vitro:ontologyPrefixAnnot - "foaf"^^xsd:string . - -geo:hasMaxLatitude - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:DateTimeInterval - vitro:displayLimitAnnot - "4"^^xsd:int ; - vitro:displayRankAnnot - "4"^^xsd:int ; - vitro:extendedLinkedData - "true"^^xsd:boolean ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:Patent - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:Screenplay - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:nameOfficialAR - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:validSince - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:isInGroup - vitro:displayRankAnnot - "67"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean ; - vitro:inPropertyGroupAnnot - . - - -vivo:EditorialArticle - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - - - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "4"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:orcidId - vitro:customEntryFormAnnot - "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.AddOrcidIdToPersonGenerator"^^xsd:string ; - vitro:displayLimitAnnot - "2"^^xsd:int ; - vitro:displayRankAnnot - "10"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "ORCID (Open Researcher and Contributor ID) is a proposed nonproprietary alphanumeric code that would uniquely identify scientific and other academic authors."^^xsd:string . - -vivo:hasFacility - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "90"^^xsd:int ; - vitro:fullPropertyNameAnnot - "has facility"^^xsd:string ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "This relates an organization to a facility that it owns or runs."^^xsd:string ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -geo:nameListFR - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - - - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "4"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "ClinicalTrials.gov registry number"^^xsd:string . - -geo:organization - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:Slideshow - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:equipmentFor - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:fullPropertyNameAnnot - "equipment for"^^xsd:string ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "This relates equipment to the organization that owns the equipment."^^xsd:string ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - - -geo:codeGAUL - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:geographicFocus - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "70"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -bibo:prefixName - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "32"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "A title placed before a person's name."^^xsd:string . - -geo:nameShortAR - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - - - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "5"^^xsd:int ; - vitro:inClassGroup - ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:AcademicDepartment - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:researcherId - vitro:displayLimitAnnot - "2"^^xsd:int ; - vitro:displayRankAnnot - "20"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "The identification number given to the profile created by a researcher in ResearcherID (http://isiwebofknowledge.com/researcherid/)."^^xsd:string . - -vivo:hasPublicationVenue - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "60"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -bibo:Excerpt - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:NonFacultyAcademic - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:annotates - vitro:fullPropertyNameAnnot - "annotates"^^xsd:string ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "Critical or explanatory note for a Document."^^xsd:string ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -vivo:Score - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:Grant - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:nameOfficialZH - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:reversedBy - vitro:fullPropertyNameAnnot - "reversedBy"^^xsd:string ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "A legal decision that reverses a ruling. This relates the legal decision to the legal decision that reversed it."^^xsd:string ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -vivo:majorField - vitro:displayLimitAnnot - "3"^^xsd:int ; - vitro:displayRankAnnot - "50"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "Major subject focus of the degree being described in an educational background."^^xsd:string . - -geo:GDPNotes - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:nameOfficialES - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:upc - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "The Universal Product Code (UPC) is a barcode symbology (i.e., a specific type of barcode), that is widely used in Canada and the United States for tracking trade items in stores."^^xsd:string . - -vivo:FacultyMember - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:hideFromDisplay - vitro:displayRankAnnot - "100"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -obo:ERO_0000481 - vitro:displayLimitAnnot - "3"^^xsd:int ; - vitro:displayRankAnnot - "85"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:inPropertyGroupAnnot - . - -obo:ERO_0000016 - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - - - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "Institutional Review Board (IRB) number for a Clinical Trial"^^xsd:string . - -vivo:Competition - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -obo:ERO_0000482 # deprecated -# vitro:displayLimitAnnot -# "5"^^xsd:int ; -# vitro:displayRankAnnot -# "92"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . -# vitro:selectFromExistingAnnot -# "true"^^xsd:boolean ; -# vitro:offerCreateNewOptionAnnot -# "true"^^xsd:boolean ; -# vitro:inPropertyGroupAnnot -# . - -vivo:ResearchProposal - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:director - vitro:fullPropertyNameAnnot - "director"^^xsd:string ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "This relates an entity to a Film director."^^xsd:string ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -vivo:Course - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:Magazine - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:LibrarianPosition - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "3"^^xsd:int ; - vitro:extendedLinkedData - "true"^^xsd:boolean ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:nameShortIT - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:Internship - vitro:displayLimitAnnot - "10"^^xsd:int ; - vitro:displayRankAnnot - "10"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -obo:ERO_0000460 - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "90"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:inPropertyGroupAnnot - . - -vivo:EditorRole - vitro:displayLimitAnnot - "2"^^xsd:int ; - vitro:displayRankAnnot - "2"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:lccn - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "15"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "The Library of Congress Control Number or LCCN is a serially based system of numbering cataloging records in the Library of Congress in the United States."^^xsd:string . - -foaf:Group - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:Chapter - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - - - vitro:ontologyPrefixAnnot - "vcard"^^xsd:string . - -vivo:Committee - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:Standard - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:supportedBy - vitro:displayLimitAnnot - "5"^^xsd:int . - -bibo:LegalDocument - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:CoreLaboratory - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - - - vitro:fullPropertyNameAnnot - "relation"^^xsd:string ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "A related resource. Recommended best practice is to identify the related resource by means of a string conforming to a formal identification system. "^^xsd:string ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -skos:broader - vitro:customEntryFormAnnot - "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.AddConceptThroughObjectPropertyGenerator"^^xsd:string ; - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "50"^^xsd:int ; - vitro:fullPropertyNameAnnot - "broader term"^^xsd:string ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "This relates a term that is broader in meaning (i.e. more general) to another term that is narrower in meaning, where the scope (meaning) of narrower term falls completely within the scope of the broader term."^^xsd:string ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -vivo:LeaderRole - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:extendedLinkedData - "true"^^xsd:boolean ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:Webpage - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:InvestigatorRole - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:extendedLinkedData - "true"^^xsd:boolean ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:BookSection - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:departmentOrSchool - vitro:displayLimitAnnot - "3"^^xsd:int ; - vitro:displayRankAnnot - "40"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "Name of department or school name used when describing educational background."^^xsd:string . - -bibo:court - vitro:fullPropertyNameAnnot - "court"^^xsd:string ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "Relates a legal document with an organization. Bibo definition is: \"A court associated with a legal document; for example, that which issues a decision.\""^^xsd:string ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -geo:countryAreaNotes - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:Interview - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - - - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "5"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:Museum - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:hasAssociatedConcept - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "20"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -bibo:LegalCaseDocument - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:nameCurrencyEN - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:offers - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "4"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -bibo:translator - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "14"^^xsd:int ; - vitro:fullPropertyNameAnnot - "translator"^^xsd:string ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "This relates an information resource to the translator of the written document from one language to another."^^xsd:string ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -obo:ERO_0000015 - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:distributesFundingFrom - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "64"^^xsd:int ; - vitro:fullPropertyNameAnnot - "distributes funding from"^^xsd:string ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "Indicates the organization that distributes funding from another organization. For example, indicates the source of flow-through funding."^^xsd:string ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -bibo:citedBy - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "4"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -bibo:Manual - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - - - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - - - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "5"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:termLabel - vitro:displayRankAnnot - "1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -skos:related - vitro:customEntryFormAnnot - "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.AddConceptThroughObjectPropertyGenerator"^^xsd:string ; - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "54"^^xsd:int ; - vitro:fullPropertyNameAnnot - "related"^^xsd:string ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "This indicates when a term is related to another term in the same vocabulary."^^xsd:string ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean ; - vitro:inPropertyGroupAnnot - . - -vivo:abbreviation - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "5"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - . - -obo:ERO_0000014 - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:UndergraduateAdvisingRelationship - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:NonAcademic - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:PostdocOrFellowAdvisingRelationship - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:governingAuthorityFor - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "70"^^xsd:int ; - vitro:inPropertyGroupAnnot - . - -geo:agriculturalAreaYear - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - - -vivo:providesFundingThrough - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "65"^^xsd:int ; - vitro:fullPropertyNameAnnot - "provides funding through"^^xsd:string ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "Relates a funding organization to another funding organization through which it provides its funding. Note that organizations may be asserted to be of more than one type."^^xsd:string ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -vivo:GeographicLocation - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:nameCurrencyAR - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:end - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "99"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "false"^^xsd:boolean . - -bibo:interviewee - vitro:fullPropertyNameAnnot - "interviewee"^^xsd:string ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "An agent that is interviewed by another agent."^^xsd:string ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -vivo:researchOverview - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "10"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:editing - "HTML"^^xsd:string . - -obo:ERO_0000390 - vitro:displayLimitAnnot - "3"^^xsd:int ; - vitro:displayRankAnnot - "5"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:inPropertyGroupAnnot - . - -skos:Concept - vitro:customDisplayViewAnnot - "individual--skos-concept.ftl"^^xsd:string ; - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "35"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:ResearcherRole - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:extendedLinkedData - "true"^^xsd:boolean ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:transcriptOf - vitro:fullPropertyNameAnnot - "transcriptOf"^^xsd:string ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "Relates a document to some transcribed original."^^xsd:string ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -vivo:facilityFor - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:issuer - vitro:fullPropertyNameAnnot - "issuer"^^xsd:string ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "An entity responsible for issuing often informally published documents such as press releases, reports, etc."^^xsd:string ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -vivo:start - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "80"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "the start of a time interval."^^xsd:string ; - vitro:selectFromExistingAnnot - "false"^^xsd:boolean . - - - vitro:ontologyPrefixAnnot - "vitro-public"^^xsd:string . - -geo:group - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -obo:ERO_0000595 - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:oclcnum - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "4"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "An oclcnum is a sequential accession number assigned by OCLC as bibliographic records are entered into OCLC WorldCat (the OCLC Online Union Catalog)."^^xsd:string . - -bibo:isbn10 - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "10"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "The International Standard Book Number (ISBN) is a unique[1][2] numeric commercial book identifier based upon the 9-digit Standard Book Numbering (SBN) code created by Gordon Foster. The 10-digit ISBN format was developed by the International Organization for Standardization and was published in 1970 as international standard ISO 2108."^^xsd:string . - -vivo:MedicalResidency - vitro:displayLimitAnnot - "10"^^xsd:int ; - vitro:displayRankAnnot - "10"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:nameShortEN - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -obo:RO_0003001 - vitro:displayLimitAnnot - "2"^^xsd:int ; - vitro:displayRankAnnot - "60"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean . - - - - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "5"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -geo:nameCurrencyIT - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -obo:ERO_0000391 - vitro:inClassGroup . - -vivo:MemberRole - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:extendedLinkedData - "true"^^xsd:boolean ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo: - vitro:ontologyPrefixAnnot - "bibo"^^xsd:string . - - - vitro:ontologyPrefixAnnot "ocrer"^^xsd:string . - -geo:special_group - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:countryAreaUnit - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:hasSuccessorOrganization - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "61"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -obo:RO_0003000 - vitro:displayLimitAnnot - "2"^^xsd:int ; - vitro:displayRankAnnot - "63"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean . - - -vivo:prerequisiteFor - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "42"^^xsd:int ; - vitro:fullPropertyNameAnnot - "prerequisite for"^^xsd:string ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:inPropertyGroupAnnot - . - -bibo:isbn13 - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "11"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "The International Standard Book Number (ISBN) is a unique[1][2] numeric commercial book identifier based upon the 9-digit Standard Book Numbering (SBN) code created by Gordon Foster.Since 1 January 2007, ISBNs have contained 13 digits, a format that is compatible with Bookland EAN-13s."^^xsd:string . - -vivo:cclCode - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "5"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "The original and cross-reference US Classification(s) to which the published application was assigned at the time of publication -- includes both primary and secondary class information."^^xsd:string . - -geo:hasNationality - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:InvitedTalk - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:uri - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "30"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "Universal Resource Identifier of a document."^^xsd:string . - -obo:ERO_0000392 - vitro:inClassGroup . - - -vivo:translatorOf - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "70"^^xsd:int ; - vitro:fullPropertyNameAnnot - "translatorOf"^^xsd:string ; - vitro:inPropertyGroupAnnot - ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "This relates something as the translator of an information resource."^^xsd:string ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean . - -bibo:Document - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -obo:ERO_0000394 - vitro:inClassGroup . - -geo:nameCurrencyES - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:countryAreaTotal - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:ReferenceSource - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:hasFundingVehicle - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "35"^^xsd:int ; - vitro:inPropertyGroupAnnot - ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:offerCreateNewAnnot - "true"^^xsd:boolean ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -geo:nationalityRU - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:eanucc13 - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "EAN International-Uniform Code Council (EAN-UCC) was a supply chain standards family name, formally the EAN.UCC System, that included product barcodes which are printed on the great majority of products available in stores worldwide and electronic commerce standards."^^xsd:string . - -bibo:EditedBook - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:GeopoliticalEntity - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -obo:ERO_0000393 - vitro:inClassGroup . - -vivo:sponsors - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "71"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -vivo:Room - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:eRACommonsId - vitro:displayRankAnnot - "15"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -obo:ERO_0000034 -# vitro:displayLimitAnnot -# "2"^^xsd:int ; -# vitro:displayRankAnnot -# "73"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . -# vitro:inPropertyGroupAnnot -# ; -# vitro:selectFromExistingAnnot -# "true"^^xsd:boolean ; -# vitro:offerCreateNewOptionAnnot -# "true"^^xsd:boolean . - - -geo:area - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:codeCurrency - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:hasTranslation - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "51"^^xsd:int ; - vitro:fullPropertyNameAnnot - "has translation"^^xsd:string ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "Relates an original documents to a translation of that document."^^xsd:string ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -obo:BFO_0000054 - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - - -vivo:College - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:nameShortES - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:dateIssued - vitro:customEntryFormAnnot - "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.DateTimePropertyGenerator"^^xsd:string ; - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "19"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "The date the patent was issued."^^xsd:string ; - vitro:selectFromExistingAnnot - "false"^^xsd:boolean . - -geo:GDP - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -obo:BFO_0000055 - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:nationalityAR - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:CourtReporter - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:PresenterRole - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:extendedLinkedData - "true"^^xsd:boolean ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:PrimaryPosition - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "500"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -obo:ERO_0000033 - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "62"^^xsd:int ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:inPropertyGroupAnnot - . - -obo:ERO_0000397 - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "61"^^xsd:int ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - . - -vivo:identifier - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "A parent property for institutional and other identifiers. This data property is not seen or updated by anyone."^^xsd:string . - -geo:populationNotes - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:Campus - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:Slide - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:totalAwardAmount - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "60"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "This includes the direct cost being used for the grant activity plus indirect costs associated with administering the grant."^^xsd:string . - -bibo:Code - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -obo:RO_0002353 - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:Library - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:Performance - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - - - vitro:displayLimitAnnot - "2"^^xsd:int ; - vitro:displayRankAnnot - "75"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean . - -obo:ERO_0000424 - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "15"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean . - -obo:BFO_0000050 - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:Letter - vitro:displayLimitAnnot - "3"^^xsd:int ; - vitro:displayRankAnnot - "15"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:nameCurrencyZH - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:distributes - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "70"^^xsd:int ; - vitro:fullPropertyNameAnnot - "distributes"^^xsd:string ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "This can relate anything to the thing it distributes. The inverse of this is distributor and the foaf definition for distributor is as follows - Distributor of a document or a collection of documents. "^^xsd:string ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -obo:OBI_0000304 - vitro:displayLimitAnnot - "2"^^xsd:int ; - vitro:displayRankAnnot - "73"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean . - - - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "5"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -foaf:Agent - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -obo:BFO_0000051 - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:GraduateStudent - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:publicationVenueFor - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "6"^^xsd:int ; - vitro:inPropertyGroupAnnot - ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - - - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "5"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:codeAGROVOC - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - - - vitro:fullPropertyNameAnnot - "contributor"^^xsd:string ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "An entity responsible for making contributions to the resource. Examples of a Contributor include a person, an organization, or a service. Typically, the name of a Contributor should be used to indicate the entity."^^xsd:string ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -obo:ERO_0000037 - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean ; - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "22"^^xsd:int . - -vivo:ResearchOrganization - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - - - vitro:displayLimitAnnot - "6"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:Translation - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:landAreaTotal - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:hrJobTitle - vitro:displayLimitAnnot - "3"^^xsd:int ; - vitro:displayRankAnnot - "9"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "A specific designation of a post within a human resource organization, normally associated with a job description that details the tasks and responsibilities that go with it."^^xsd:string . - -vivo:hasResearchArea - vitro:customEntryFormAnnot - "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.AddAssociatedConceptGenerator"^^xsd:string ; - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "10"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -geo:hasCoordinate - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - - - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "The full URI for the namespace."^^xsd:string . - -bibo:Report - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:agriculturalAreaNotes - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:nameListZH - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - - - vitro:displayRankAnnot - "20"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:nameListAR - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:dateTimeInterval - vitro:customEntryFormAnnot - "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.DateTimeIntervalFormGenerator"^^xsd:string ; - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "9"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -geo:economic_region - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -rdfs:isDefinedBy - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -vivo:EmeritusProfessor - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:subcontractsGrant - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "63"^^xsd:int ; - vitro:fullPropertyNameAnnot - "subcontractsGrant"^^xsd:string ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "This relates the agency, entity or individual awarding the sub-contract for a grant to the grant itself."^^xsd:string ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -vivo:ConferenceSeries - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - - - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -vivo:UndergraduateStudent - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:Quote - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:NonFacultyAcademicPosition - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "5"^^xsd:int ; - vitro:extendedLinkedData - "true"^^xsd:boolean ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:landAreaUnit - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:dateFiled - vitro:customEntryFormAnnot - "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.DateTimePropertyGenerator"^^xsd:string ; - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "19"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:individualSortDirectionAnnot - "desc"^^xsd:string ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "The date the patent was filed."^^xsd:string ; - vitro:selectFromExistingAnnot - "false"^^xsd:boolean . - -vcard:givenName - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "1"^^xsd:int ; - vitro:inPropertyGroupAnnot - . - -vivo:OutreachProviderRole - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:extendedLinkedData - "true"^^xsd:boolean ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:Series - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:Foundation - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:subsequentLegalDecision - vitro:fullPropertyNameAnnot - "subsequentLegalDecision"^^xsd:string ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "A legal decision on appeal that takes action on a case (affirming it, reversing it, etc.)."^^xsd:string ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -bibo:coden - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "CODEN – according to ASTM standard E250 – is a six character, alphanumeric bibliographic code, that provides concise, unique and unambiguous identification of the titles of serials and non-serial publications from all subject areas."^^xsd:string . - -vivo:OrganizerRole - vitro:displayLimitAnnot - "10"^^xsd:int ; - vitro:displayRankAnnot - "4"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:Exhibit - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:hasMinLatitude - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:County - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:Certificate - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "5"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:scopusId - vitro:displayLimitAnnot - "2"^^xsd:int ; - vitro:displayRankAnnot - "30"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "The numeric digit assigned to an author in Scopus. In Scopus it's call the \"Author Identifier\"."^^xsd:string . - -bibo:Statute - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - - -vivo:fundingVehicleFor - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "58"^^xsd:int ; - vitro:inPropertyGroupAnnot - ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:offerCreateNewAnnot - "true"^^xsd:boolean ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -bibo:DocumentPart - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:Book - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:Project - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:PostdoctoralTraining - vitro:displayLimitAnnot - "10"^^xsd:int ; - vitro:displayRankAnnot - "10"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -obo:ERO_0000918 - vitro:displayLimitAnnot - "2"^^xsd:int ; - vitro:displayRankAnnot - "20"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean . - -obo:OBI_0000417 - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "95"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean . - -vivo:preferredDisplayOrder - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:sponsorAwardId - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "70"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "Identifier of the organization that sponsored the award."^^xsd:string . - -obo:ERO_0000543 - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "80"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean . - -bibo:numPages - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "11"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vcard:familyName - vitro:displayLimitAnnot - "1"^^xsd:int ; - vitro:displayRankAnnot - "2"^^xsd:int ; - vitro:inPropertyGroupAnnot - . - -vivo:Association - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:PostdocPosition - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "6"^^xsd:int ; - vitro:extendedLinkedData - "true"^^xsd:boolean ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:degreeCandidacy - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "25"^^xsd:int ; - vitro:fullPropertyNameAnnot - "degreeCandidacy"^^xsd:string ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "This relates an advisory relationship to an academic degree. "^^xsd:string ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -geo:landAreaNotes - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:hasOfficialName - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:codeDBPediaID - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:hasProceedings - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "30"^^xsd:int ; - vitro:fullPropertyNameAnnot - "hasProceedings"^^xsd:string ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "This relates a conference proceeding to the conference that produced the proceeding."^^xsd:string ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -geo:GDPUnit - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -bibo:edition - vitro:displayLimitAnnot - "3"^^xsd:int ; - vitro:displayRankAnnot - "70"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "The name defining a special edition of a document. Normally its a literal value composed of a version number and words."^^xsd:string . - -geo:nameShortZH - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -obo:RO_0001015 - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - - - vitro:ontologyPrefixAnnot - "vivo"^^xsd:string . - -vivo:dateTime - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "5"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:publicDescriptionAnnot - "Use when a single date and time is appropriate versus a start date and time and end date and time, or when multiple dates and times are relevant."^^xsd:string . - -geo:codeUN - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -obo:ERO_0000919 - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "95"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean . - -bibo:status - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "16"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - -vivo:Catalog - vitro:displayLimitAnnot - "-1"^^xsd:int ; - vitro:displayRankAnnot - "-1"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inClassGroup ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -geo:HDINotes - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - . - -geo:HDITotal - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - . - -geo:HDIYear - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - . - -geo:hasMaxLatitude - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - . - -geo:hasMinLatitude - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - . - -geo:hasMinLongitude - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - . - -geo:hasMaxLongitude - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - . - -geo:validSince - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - . - -geo:validUntil - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - . - - -vivo:hasEquipment - vitro:displayRankAnnot - "80"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean . - - - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "4"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - - - vitro:displayLimitAnnot - "5"^^xsd:int ; - vitro:displayRankAnnot - "4"^^xsd:int ; - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:hiddenFromPublishBelowRoleLevelAnnot - ; - vitro:inPropertyGroupAnnot - ; - vitro:offerCreateNewOptionAnnot - "true"^^xsd:boolean ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - ; - vitro:selectFromExistingAnnot - "true"^^xsd:boolean . - - - vitro:inClassGroup ; ## classgroup label is research - vitro:displayRankAnnot - "1"^^xsd:int . - - - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - - - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:relates - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:relatedBy - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:assigns - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - -vivo:assignedBy - vitro:hiddenFromDisplayBelowRoleLevelAnnot - ; - vitro:prohibitedFromUpdateBelowRoleLevelAnnot - . - - - diff --git a/installer/home/pom.xml b/installer/home/pom.xml index 19ffe5e5..e57789a4 100644 --- a/installer/home/pom.xml +++ b/installer/home/pom.xml @@ -52,11 +52,11 @@ tar.gz - + diff --git a/installer/webapp/pom.xml b/installer/webapp/pom.xml index 49ea060b..68993625 100644 --- a/installer/webapp/pom.xml +++ b/installer/webapp/pom.xml @@ -78,16 +78,16 @@ war - + @@ -115,18 +115,18 @@ war - + javax.servlet diff --git a/webapp/src/main/webapp/WEB-INF/resources/startup_listeners.txt b/webapp/src/main/webapp/WEB-INF/resources/startup_listeners.txt index a3727d05..62a3320f 100644 --- a/webapp/src/main/webapp/WEB-INF/resources/startup_listeners.txt +++ b/webapp/src/main/webapp/WEB-INF/resources/startup_listeners.txt @@ -5,6 +5,10 @@ # https://sourceforge.net/apps/mediawiki/vivo/index.php?title=The_StartupManager # +# This listener must be run before any other code that uses resource bundles, +# otherwise there will be problems with i18n-support. +org.vivoweb.webapp.startup.i18nSetup + edu.cornell.mannlib.vitro.webapp.servlet.setup.JvmSmokeTests edu.cornell.mannlib.vitro.webapp.application.ApplicationSetup @@ -21,6 +25,9 @@ edu.cornell.mannlib.vitro.webapp.config.RevisionInfoSetup edu.cornell.mannlib.vitro.webapp.email.FreemarkerEmailFactory$Setup +# For multiple language support +edu.cornell.mannlib.vitro.webapp.i18n.selection.LocaleSelectionSetup + edu.cornell.mannlib.vitro.webapp.servlet.setup.ConfigurationModelsSetup edu.cornell.mannlib.vitro.webapp.servlet.setup.ContentModelSetup @@ -67,9 +74,6 @@ org.vivoweb.webapp.startup.SearchResultTemplateModelSetup edu.ucsf.vitro.opensocial.OpenSocialSmokeTests -# For multiple language support -edu.cornell.mannlib.vitro.webapp.i18n.selection.LocaleSelectionSetup - # The search indexer uses a "public" permission, so the PropertyRestrictionPolicyHelper # and the PermissionRegistry must already be set up. edu.cornell.mannlib.vitro.webapp.searchindex.SearchIndexerSetup @@ -91,5 +95,3 @@ edu.cornell.mannlib.vitro.webapp.controller.individual.VIVOIndividualResponseBui # This should be near the end, because it will issue a warning if the connection to the SearchEngine times out. edu.cornell.mannlib.vitro.webapp.servlet.setup.SearchEngineSmokeTest - -org.vivoweb.webapp.startup.i18nSetup diff --git a/webapp/src/main/webapp/css/visualization/capabilitymap/key.css b/webapp/src/main/webapp/css/visualization/capabilitymap/key.css new file mode 100644 index 00000000..5ae38c2a --- /dev/null +++ b/webapp/src/main/webapp/css/visualization/capabilitymap/key.css @@ -0,0 +1,37 @@ +.capability, .edge, .group, .links2, .links3, .links4 { + text-indent: 28px; + font-size: 9px; + width: 98%; + background-repeat: no-repeat; + background-image: url("../../../images/visualization/capabilitymap/key-sprite.png") +} + +.capability { + background-position: 0px 0px; + height: 22px; +} + +.edge { + background-position: 0px -22px; + height: 24px; +} + +.group { + background-position: 0px -48px; + height: 20px; +} + +.links2 { + background-position: 0px -73px; + height: 20px; +} + +.links3 { + background-position: 0px -96px; + height: 20px; +} + +.links4 { + background-position: 0px -121px; + height: 20px; +} diff --git a/webapp/src/main/webapp/i18n/vivo_all.properties b/webapp/src/main/webapp/i18n/vivo_all.properties deleted file mode 100644 index dec982fa..00000000 --- a/webapp/src/main/webapp/i18n/vivo_all.properties +++ /dev/null @@ -1,908 +0,0 @@ -# -# Text strings for the controllers and templates -# -# Default (English) -# - -uri_icon = uri icon - -# -# "partial" individual templates ( /templates/freemarker/body/partials/individual ) -# -contact_capitalized = Contact -phone = phone -primary_email = primary email -additional_emails = additional emails -email = email -primary_email_capitalized = Primary Email -additional_emails_capitalized = Additional Emails -contact_info = Contact Info - -active_grants_for = Active Grants for the -department = department -grant_name = Grant Name -close_date = Close Date -no_active_grants = There are currently no active grants for this department. -view_all_active_grants = View all active grants - -individuals_with_researh_area_one = Here are the individuals in {0} who have an interest in this research area. -individuals_with_researh_area_two = Here are the individuals in the {0} who have an interest in this research area. -individuals_with_dept = Here are the individuals with an interest in {0} who are in this organization. -faculty_with_researh_area = Here are the faculty members in the {0} department who have an interest in this research area. -view_all_individuals_in_area = View all individuals with an interest in this area. -view_all_individuals_in_dept = View all individuals in this organization. -view_all_faculty_in_area = View all faculty with an interest in this area. -faculty_research_areas = Faculty Research Areas -affiliated_research_areas = Affiliated Research Areas -affiliated_departments = Associated Departments -organization = individuals with the research area in this organization - -share_the_uri = share the uri - -export_qr_codes = Export QR codes -vcard_qr = vCard QR -vcard_qr_code = vCard QR Code -close_capitalized = Close -qr_icon = qr icon -qr_code = QR Code -invalid_qr_code_parameter = You have passed an invalid value for the qrCode display parameter. - -research_areas = research areas - -publications_in_vivo = Publications in VIVO -co_author = co-author -co_authors = co-authors -co_author_network = Co-author Network -map_of_science = map of science -map_of_science_capitalized = Map of Science -co_investigator_network = co-investigator network -co_investigator_network_capitalized = Co-investigator Network - -networks = Networks -co_authors_capitalized = Co-authors - -temporal_graph = temporal graph -temporal_graph_capitalized = Temporal Graph - -websites = Websites - -advisee_label = advisee label -advisor_label = advisor label -candidate = candidate -candidacy = candidacy -advisingRel_label = advisory label - -editor_abbreviated = Ed. -volume_abbreviated = Ed. -resource_name = resource name -missing_info_resource = missing information resource - -award_receipt_name = award receipt name -award_name = award name -conferred_by = conferred by -conferred_on = conferred on -selected_award = Selected Award - -incomplete_date_time_interval = incomplete date/time interval -incomplete_date_time_value = incomplete date/time value - -in = in -organization_name = organization name -missing_organization = missing organization -middle_organization = middle organization - -concept_name = concept name - -at = at -event_name = event name -missing_event = missing event -event_label = event label - -activity_name = activity name -missing_activity = missing activity -awarded_by = awarded by -administered_by = administered by - -presentation_name = presentation name -missing_presentation = missing presentation -conference = conference -series = series - -author_name = author name -missing_author = missing author - -person_name = person name -missing_person_in_posn = missing person in this position -missing_person_in_role = missing person in this role - -scopus_id_link = Scopus ID Link - -click_to_view_web_page = Click to view the {0} web page -screenshot_of_webpage = screenshot of webpage {0} -click_webpage_icon = click webpage icon -link_text = link text -link_name = link name -no_url_provided = no url provided for link - -# -# individual templates ( /templates/freemarker/body/individual ) -# -standard_view = Standard profile view -quick_view = Quick profile view -quick_view_icon = quick view icon -geographic_focus = Geographic Focus - -background_top_image = background top image -full_view_icon = full view icon -profile_type = Profile Type -# -# body templates ( /templates/freemarker/body/ ) -# -export_qr_code = Export QR code -more_qr_info = More info on QR codes -what_is_this = What is this? -view_this_profile = View this person's profile -vcard = Vcard -hyperlink = Hyperlink - -# -# harvester templates ( /templates/freemarker/body/harvester ) -# -must_be_admin = You must be an administrator to use this tool. -error_no_job_specified = Error: No file harvest job was specified, or an unknown job was specified. -probably_a_bug_so_report = The end user should not see this error under normal circumstances, so this is probably a bug and should be reported. -return_to_ingest_menu = Return to the Data Ingest Tools menu -ingest_menu = Ingest Menu -data_being_harvested = Please wait while your data is harvested. -harvest_complete = Harvest complete. For another, please refresh the page. -error_harvest_cannot_continue = An error has occurred and the file harvest cannot continue. -harvest_error_instructions_one = This is most likely due to an improper Harvester configuration. Please ensure the following: -harvest_error_instructions_two = VIVO Harvester is installed. -the_capitalized = The -harvester_location = harvester.location -harvest_error_instructions_three = property in runtime.properties is pointed to the Harvester installation directory. -harvest_error_instructions_fourA = In VIVO Harvester, the web server user (typically tomcat6) has read and write access to the -harvest_error_instructions_fourB = vivo/ -harvest_error_instructions_fourC = directory and all of its children. -harvest_error_instructions_fiveA = In VIVO Harvester, the -harvest_error_instructions_fiveB = logs/ -harvest_error_instructions_fiveC = directory exists and the web server user has read and write access to it. -harvest_error_instructions_sixA = In VIVO Harvester, the file -harvest_error_instructions_sixB = vivo/config/vivo.xml -harvest_error_instructions_sixC = is properly configured with your database information and namespace. -step_one = Step 1 -download_template = Download template -download = Download -step_two = Step 2 -fill_in_data = Fill in data -help_capitalized = Help -fill_in_template_with_data = Fill in the template with your data. You may fill in multiple templates if you wish to harvest multiple files at once. -step_three = Step 3 -upload_files = Upload file(s) -upload_completed_templates = Upload your completed template(s). -upload_capitalized = Upload -uploaded_files = Uploaded files -step_four = Step 4 -harvest_capitalized = Harvest -click_to_harvest = Click the button to harvest your file(s). -step_five = Step 5 -view_results = View results -script_executed = Script being executed -progress_capitalized = Progress -undefined_runtime_property = property in runtime.properties is undefined. -define_value_for_property = In order to use this feature, please define a value for this property that points to the Harvester installation directory before redeploying and restarting the application. - -# -# lib templates ( /templates/freemarker/body/lib ) -# -faculty_capitalized = Faculty -loading_faculty = Loading faculty . . . -research_capitalized = Research -view_all = View all ... -view_all_research = view all research -no_research_content_found = No research content found. -departments = Departments -loading_map_information = Loading map information . . . -verify_match_capitalized = Verify this match - -# -# custom form templates ( /templates/freemarker/edit/forms ) -# -manage_concepts = Manage Concepts -no_concepts_specified = There are currently no concepts specified. -return_to_profile = Return to Profile Page -external_vocabulary_services = External Vocabulary Services -create_own_concept = Select or create a VIVO-defined concept. -add_selected_concept = Add Selected Concept -cannot_find_concept = Can't find the concept you want? Select or create a VIVO-defined concept. -add_concept = Add Concept - -event_type = event type -attended = attended - -manage_authors = Manage Authors -no_linked_author = no linked author -remove_author_link = remove author link -add_author = Add Author -return_to_publication = Return to publication -add_an_author = Add an Author -person_capitalized = Person -organization_capitalized = Organization -middle_name = Middle name -initial_okay = initial okay -selected_author = Selected Author -organization_name_capitalized = Organization name -selected_organization = Selected Organization - -clinical_activity = clinical activity -clinical_activity_type = clinical activity type -year_hint_format = YYYY - -collection_series_editor_role = collection or series editor role -editor_role_in = editor role in - -edit_wbpage_of = Edit webpage of -add_webpage_for = Add webpage for -add_webpage = Add Web Page -url_type = URL Type -faculty_of_1000 = Faculty of 1000 Link -standard_web_link = Standard Web Link -webpage_name = Webpage Name - -investigator_entry_for = investigator entry for -investigator_capitalized = Investigator -principal_investigator_entry_for = principal investigator entry for -co_principal_investigator_entry_for = co-principal investigator entry for -start_year_must_precede_end = The Start Year must be earlier than the End Year. -end_year_must_be_later = The End Year must be later than the Start Year. -enter_or_select_grant = Please enter or select a value in the Grant Name field. -selected_grant = Selected Grant -years_of_grant_participation = Years of Participation in Grant - -leadership = leadership -organization_type = organization type - -membership = membership -membership_in = membership in -organizations = organizations - -organizer_of = organizer of - -outreach_comm_service = outreach & community service -outreach_comm_service_in = outreach & community service in - -select_or_enter_name = Please select an existing value or enter a new value in the Name field. -presentation_entry_for = presentation entry for -presentation_capitalized = Presentation -presentation_type = Presentation Type -role_in = Role in -presentation_hint = e.g., Moderator, Speaker, Panelist -presented_at = Presented At -selected_conference = Selected Conference - -select_existing_pub_or_enter_new = Please select an existing publication in the Title field or enter a new one. - -publication_entry_for = publication entry for -publication_type = Publication Type -selected_publication = Selected Publication -published_in = Published in -selected_journal = Selected Journal -selected_event = Selected Event -proceedings_of = Proceedings of -editor_capitalized = Editor -required_with_last_name = required with new Last name -selected_editor = Selected Editor -publisher_capitalized = Publisher -selected_publisher = Selected Publisher -volume_capitalized = Volume -number_capitalized = Number -issue_capitalized = Issue -chapter_capitalized = Chapter -start_page = Start Page -end_page = End Page -selected_book = Selected Book -publication_date = Publication Date -place_of_publication = Place of Publication - -research_activity = research activity -research_activity_type = research activity type - -reviewer_of = reviewer of - -entry_for = entry for -specify_role_for_activity = Please specify a role for this activity. -start_year = Start Year - -service_to_profession = service to the profession -service_to_profession_in = service to the profession in - -teaching_activity = teaching activity -teaching_activity_type = teaching activity type -teaching_role_hint = e.g., Instructor, Facilitator, Assistant - -create_own_concept_all_caps = Create Your Own Concept -concept_capitalized = Concept -selected_concept = Selected Concept -create_concept = Create Concept -return_to_manage_concepts = Return to Manage Concepts - -institutional_internal_class = Institutional Internal Class -internal_class_intro_one = This class will be used to designate those individuals internal to your institution. -internal_class_intro_two = This will allow you to limit the individuals displayed on your menu pages (People, Research, etc.) to only those within your institution. -no_local_oncologies = There are currently no recognized local ontologies. -namespace_must_use_this_pattern = In order for a local ontology to be recognized here, its namespace URI must follow this pattern -new_local_oncology = a new local ontology -return_here_to_define_class = and then return here to define the institutional internal class. -select_existing_local_class = Select an existing class from a local extension -cannot_find_class = Can't find an appropriate class? -create_new_class = Create a new class -create_new_one = Create a new one -use_capitals_each_word = use capitals for the first letter of each word -local_namespace = Local Namespace -problematic_section_error = Error: problematic section as above should all have been handled. -new_local_ontology = new local ontology - -manage_grants_and_projects = Manage Grants & Projects for -check_grants_to_exclude = Check those grants and projects you want to exclude from the profile page. - -manage_affiliated_people = Manage People Affiliated with -check_people_to_exclude = Check those people you want to exclude from the profile page. - -manage_publications_for = Manage Publications for -check_pubs_to_exclude = Check those publications you want to exclude from the profile page. - -manage_web_pages = Manage Web Pages -has_no_webpages = This individual currently has no web pages specified. Add a new web page by clicking on the button below. -edit_webpage_link = edit web page link -delete_webpage_link = delete web page link -webpage_url = webpage url -add_new_web_page = Add New Web Page - -enable_internal_class_one = To enable this option, you must first select an -enable_internal_class_two = for your instance -internal_class = institutional internal class -only_display = Only display -within_my_institution = within my institution - -enter_a_name = Please enter a value in the Name field. -enter_last_name = Please enter a Last name for this person. -enter_first_name = Please enter a First name for this person. - -posn_history_entry_for = position history entry for -enter_posn_title_value = Please enter a value in the Position Title field. -enter_posn_type_value = Please select a value in the Position Type field. -enter_or_select_person_value = Please select an existing value or enter a new value in the Person field. -position_title = Position Title -position_type = Position Type -selected_person = Selected Person - -degree_candidacy = Degree Candidacy -subject_area = Subject Area -selected_subject_area = Selected Subject Area -selected_advisee = Selected Advisee -selected_advisor = Selected Advisor -advisee_capitalized = Advisee -advisor_capitalized = Advisor -advising_relationship_type = Advising Relationship Type -select_advising_relationship_type = Please select an Advising Relationship Type. -advisor_relationship_entry_for = advisor relationship entry for -advisee_relationship_entry_for = advisee relationship entry for -years_participating = Years of Participation - -award_or_honor_for = award or honor for -select_Award_or_enter_name = Please select an existing value or enter a new value in the Award or Honor Name field. -award_honor_name = Award or Honor Name -conferred_by_capitalized = Conferred by -selected_conferred = Selected Conferrer -description = Description -year_awarded = Year Awarded -years_inclusive = Years Inclusive -award_hint = (e.g., for multi-year awards) - -educational_training_for = educational training entry for -select_organization_type = Please select a value in the Organization Type field. -select_an_organization_name = Please enter or select a value in the Name field. -select_educational_training_value = Please select a value in the Type of Educational Training field. -org_type_capitalized = Organization Type -educational_training_type = Type of Educational Training -dept_or_school_name = Department or School Name within the -degree = Degree -missing_degree = missing degree -major_field = Major Field of Degree -supplemental_information = Supplemental Information -supplemental_information_hint = (e.g., Thesis title, Transfer info, etc.) -academic_studies_or_other = Academic Studies or Other Training - -create_mailing_address = Create Mailing Address -mailing_address_for = mailing address for -enter_a_country = Please enter a value in the Country field. -enter_street_address = Please enter a value in the Street Address field. -enter_a_locality = Please enter a value in the City/Locality field. -enter_postal_code = Please enter a value in the Postal Code field. -country = Country -street_address = Street Address -city_locality = City/Locality -region = State/Province/Region -postal_code = Postal Code - -posn_entry_for = position entry for - -# -# coauthorship templates ( /templates/freemarker/visualization/coauthorship ) -# -within_last_10_years = within the last 10 years -total = total -from = from -file = file -file_capitalized = File -view_full_timeline_and_network = View full timeline and co-author network. -download_data_as = Download data as -unique_coauthors_per_year = Unique Co-Authors per year -count_capitalized = Count - -# -# copi templates ( /templates/freemarker/visualization/copi ) -# -year_capitalized = Year -unique_coinvestigators = Unique co-investigators -co_investigator = co-investigator -co_investigators = co-investigators -unique_coinvestigators_per_year = Unique Co-Investigators per year -view_timeline_copi_network = View full timeline and co-investigator network. - -# -# entity comparison templates ( /templates/freemarker/visualization/entitycomparison ) -# -parent_organization_of = Parent organization of -temporal_graph_drill_up = temporal graph drill up -how_to_compare = How do you want to compare? -no_view_link = no view link -persistent_link_to_visualization = Persistent link to current visualization -error_notification = error notification -close_me = Close Me -what_to_compare = What do you want to compare? -organizations_capitalized = Organizations -people_capitalized = People -organization_hierarchy_note = Note: the organizations or people listed below are only those which are directly beneath {0} in the organization hierarchy. You may 'drill down' to see the organizations or people below a given sub-organization by selecting the chart icon next to a selected sub-organization's name below the graph on the right. -save_all_as_csv = Save All as CSV -clear_capitalized = Clear -clear_all_selected_entities = Clear all selected entities. -comparing_capitalized = Comparing -of = of -institutions_capitalized = Institutions -info_based_on_vivo_data = This information is based solely on {0} which have been loaded into the VIVO system. -you_have_selected = You have selected -of_a_maximum = of a maximum -schools = schools -legend_capitalized = Legend -with_unknown_year = with unknown year -with_known_year = with known year -from_current_incomplete_year = from current incomplete year - -entity_comp_error_text1 = This organization has neither sub-organizations nor people with -entity_comp_error_text2 = in the system. -entity_comp_error_text3 = Please visit the full -entity_comp_error_text4 = for a more complete overview. -profile_page = profile page - -publication = publication -published = published -publications = publications -by_publications = by Publications -publications_capitalized = Publications -grant = grant -granted = granted -grants = grants -by_grants = by Grants -grants_capitalized = Grants -activity = activity -activities = activities - -# -# grant visualization templates ( /templates/freemarker/visualization/grant ) -# -view_all_grants = view all grants -view_all_grants_text = View all VIVO grants and corresponding co-investigator network. -grant_per_year = Grants per year -link = link - -# -# map of science templates ( /templates/freemarker/visualization/mapOfScience ) -# -parent_entity = parent entity -map_of_science_icon = map of science icon -explore_activity = Explore activity -explore_capitalized = Explore -across_subdisciplines = across 554 scientific subdisciplines -compare_organizations = Compare organizations -mapped = mapped -save_unmapped_publications = Save Unmapped Publications -map_of_science_visualization = Map of Science Visualization -no_publications_for_this_organization = No publications in the system have been attributed to this organization. -please_visit = Please visit the -for_complete_overview = for a complete overview. - -# -# model constructor templates ( /templates/freemarker/visualization/modelconstructor ) -# -cached_models_regenerated = The following cached models will be regenerated. -uri_independent_model = URI Independent Model -currently_no_constructed_models = Currently there are no constructed models for use by visualization. - -# -# person level templates ( /templates/freemarker/visualization/personlevel) -# -co_investigator_icon = co-investigator icon -co_authorship = co-authorship -this_author = this author -in_the_vivo_db = in the VIVO database. -no_papers_for = Currently there are no papers for -publication_s_capitalized = Publication(s) -co_author_s_capitalized = Co-author(s) -incomplete_data_note1 = Note: This information is based solely on publications that have been loaded into the VIVO system. This may only be a small sample of the person's total work. -incomplete_data_note2 = Go to your profile page to enter additional details about your publications. -incomplete_data_note3 = Log in to enter additional details about your publications on your profile page. -tables_capitalized = Tables -publications_per_year = Publications per year - -investigator_name = investigator name -co_author_icon = co-author icon -currently_no_grants_for = Currently there are no {0} grants for -this_investigator = this investigator -grant_s_capitalized = Grant(s) -co_investigator_s_capitalized = Co-investigator(s) -incomplete_grant_data_note1 = Note: This information is based solely on grants that have been loaded into the VIVO system. This may only be a small sample of the person's total work. -incomplete_grant_data_note2 = Go to your profile page to enter additional details about your grants. -incomplete_grant_data_note3 = Log in to enter additional details about your grants on your profile page. -grants_per_year = Grants per year -grant_info_for_all_years = The information in the following tables is for all years. -grant_sparkline_note = The spark lines shown above reflect grants through the last complete calendar year. These tables, however, show the grant information for all years, based on the information loaded in the VIVO system. - -# -# publication templates ( /templates/freemarker/visualization/publication) -# -numbers_based_on_publications_in_vivo = These numbers are based solely on publications that have been loaded into this VIVO application. If this is your profile, you can enter additional publications below. -last_ten_full_years = in the last 10 full years - -last_ten_full = in the last 10 full -download_link = download link -years = years - -# -# miscellaneous visualization templates ( /templates/freemarker/visualization) -# -visualization_tools = Visualization Tools -refresh_cached_vis_models = Refresh Cached Models for Visualization -why_needed = Why is it needed? -vis_tools_note_one = Large-scale visualizations like the Temporal Graph or the Map of Science involve calculating total counts of publications or of grants for some entity. Since this also means checking through all of its sub-entities, the underlying queries can be both memory-intensive and time-consuming. For a faster user experience, we wish to save the results of these queries for later re-use. -vis_caching_process = What's involved in the caching process? -vis_tools_note_two = To this end we have devised a caching solution which will retain information about the hierarchy of organizations -- namely, which publications are attributed to which organizations -- by storing the RDF model. -vis_tools_note_three = We're currently caching these models in memory. The cache is built (only once) on the first user request after a server restart. Because of this, the same model will be served until the next restart. This means that the data in these models may become stale depending upon when it was last created. This works well enough for now. In future releases we will improve this solution so that models are stored on disk and periodically updated. -vis_tools_note_four = The models are refreshed each time the server restarts. Since this is not generally practical on production instances, administrators can instead use the "refresh cache" link above to do this without a restart. - -# -# custom form javascript variables ( /templates/freemarker/edit/js) -# -drag_drop_reorder_authors = Drag and drop to reorder authors -reordering_authors_failed = Reordering of authors failed. -confirm_author_removal = Are you sure you want to remove this author: -error_processing_author_request = Error processing request: author not removed -author_capitalized = Author -or_add_new_one = or add a new one. - -vocabulary_service_unavailable = An error was encountered in executing this search. -no_serch_results_found = No search results were found. -label_type = Label (Type) -label_altLabels = Label (Alternate Labels) -definition_capitalized = Definition -best_match = Best Match -select_term_from_results = Please select at least one term from the search search results. -select_vocabulary_source_to_search = Please select at least one external vocabulary source to search. -confirm_term_deletion = Are you sure you want to remove this term? -error_term_not_deleted = Error processing request: term not removed - -advising = advising -advising_relationship = advising relationship - -select_or_create_organization = Select an existing Organization or create a new one. - -grant_successfully_excluded = The item has been successfully excluded from the profile page. -error_excluding_grant = Error processing request: the item cannot be excluded from the profile page. - -person_successfully_excluded = The person has been successfully excluded from the organization page. -error_excluding_person = Error processing request: the person cannot be excluded from the organization page. - -publication_successfully_excluded = The publication will has been successfully excluded from the profile page. -error_excluding_publication = Error processing request: the publication cannot be excluded from the profile page. - -drag_drop_to_reorder_webpages = Drag and drop to reorder web pages -webpage_reordering_failed = Reordering of web pages failed. -confirm_webpage_deletion = Are you sure you want to remove this web page? -error_removing_webpage = Error processing request: web page not removed. - -# -# miscellaneous javascript variables ( productMods/js) -# -researcher = researcher - -# -# individual javascript variables ( productMods/js/individual) -# -error_processing_type_change = Error processing request: the unchecked labels could not be deleted. - -# -# visualization javascript variables ( productMods/js/visualization) -# -publications_with = Publications with - -co_investigators_capitalized = Co-investigators -grants_with = Grants with - -vis_first_link = First -vis_last_link = Last -vis_previous_link = Prev -vis_next_link = Next - -max_entity_note = A Maximum 10 entities can be compared. Please remove some & try again. -organizations_and_people = Organizations and People -loading_data_for = Loading data for -data_for = Data for -refreshing_data_message = is now being refreshed. The visualization will load as soon as we are done computing, or you can search or browse other data in VIVO and come back in a few minutes. -disclaimer_text_one = This information is based solely on -disclaimer_text_two = which have been loaded into the VIVO system as of -level_undefined_error = ENTITY LEVEL UNDEFINED ERROR - -total_number_of = Total Number of -number_of = Number of -have_an_unknown = have an unknown -year_not_chartered = year (not charted above) -in_completed_year = in a completed year -were = were -in_current_incomplete_year = in the current incomplete year (not charted above) -publication_count = Publication Count -grant_count = Grant Count -entity_type = Entity Type -entity_label = Entity Label -no_matching_entities_found = No matching entities found -clear_search_query = clear search query -short_max_entity_note = A Maximum of 10 entities can be compared. -information_capitalized = Information -content_requires_flash = This content requires the Adobe Flash Player. -get_flash = Get Flash -of_pubs = of pubs. -max_nbr_for_comp = The maximum number of items for comparison is 3. -no_matching_science_areas = No matching science areas found - -subdisciplines = Subdisciplines -disciplines = Disciplines -science_area_level = Level of Science Area -of_activity = of activity - -drill_down = drill down - -disciplines_lower = disciplines -subdisciplines_lower = subdisciplines -show_discipline_labels = Show discipline labels - -no_attributed_publications = No publications in the system have been attributed to this -none_of_the = None of the -publications_attributed_to = publications attributed to this -been_science_located = have been "science-located." -publication_attributed_to = The publication attributed to this -not_science_located = has not been "science-located." -no_journal_information = have no journal information. -no_matching_map_location = could not be matched with a map location using their journal information. - -map_being_refreshed_msg = is now being refreshed. The visualization will load as soon as we are done computing, or you can search or browse other data in VIVO and come back in a few minutes. - -publication_pubs = publications (pubs.) -percent_activity = % activity - -# -# miscellaneous additions -# - -standardview_tooltip_one = Click to display the -standardview_tooltip_two = profile quick view. -research_area_tooltip_one = Click an area to view others -research_area_tooltip_two = with the same interest. -quickview_tooltip = Click to view the standard profile page. -global_research = Global Research -country_wide_research = Country-wide Research -local_research = Local Research -selected_presentation = Selected Presentation -event_capitalized = Event -item_capitalized = Item -telephone_number_for = telephone number for -telephone_number = Telephone Number -enter_telephone_number = Please enter a value in the Telephone Number field. -email_address_for = email address for -enter_email_address = Please enter a value in the Email Address field. -full_name_for = full name for -title_not_found = Title not found. -speeches_capitalized = Speeches -theses_capitalized = Theses -select_document_type = Please select a value in the Document Type field. -select_a_document_name = Please enter or select a value in the Document Name field. -document_type_capitalized = Document Type -document_name_capitalized = Document Name -selected_document = Selected Document -editor_name = editor name -missing_editor = missing editor -drag_drop_reorder_editors = Drag and drop to reorder editors -reordering_editors_failed = Reordering of editors failed. -confirm_editor_removal = Are you sure you want to remove this editor: -error_processing_editor_request = Error processing request: editor not removed -manage_editors = Manage Editors -no_linked_editor = no linked editor -remove_editor_link = remove editor link -add_an_editor = Add an Editor -add_editor = Add Editor -please_select_type = Please select a type from the drop-down list. -preferred_title = Preferred Title -preferred_title_for = preferred title for -enter_preferred_title = Please enter a value in the Preferred Title field. -fax_number_for = fax number for -fax_number = Fax Number -enter_fax_number = Please enter a value in the Fax Number field. -credentials = credentials -select_credential_or_enter_name = Please enter or select a value in the Credential Name field. -type_of_credential = Type of Credential -credential_name = Credential Name -selected_credential = Selected Credential -year_issued = Year Issued -year_awarded_for = year awarded for -create_year_awarded = Create year awarded -edit_year_awarded = Edit year awarded -publication_date_for = publication date for -create_publication_date = Create publication date -edit_publication_date = Edit publication date -name_prefix = Name Prefix -name_suffix = Name Suffix -administering_organization_for = administering organization for -missing_credential = missing credential -grant_administered_by = grant being administered by -missing_grant = missing grant -editor_of_entry = editor of entry for -role_type = Role type -researcher_role = Researcher Role -search_service_btn = Search Service -through_today = Publications through today's date -doi_link=Digital Object Identifier (DOI) - -using_cache_time=Using information cached at - -# -#New Entries for i18n purposes -# -edit_entry_for_head_role=: Edit this "head of" role -edit_entry_for_member_role=: Edit this membership -edit_entry_for_clinical_role=: Edit this clinical activity -edit_entry_for_attendee_role=: Edit this participation -edit_entry_for_organizer_role=: Edit this organizer role -edit_entry_for_editor_role=: Edit this editor role -edit_entry_for_service_provider_role=: Edit this service provider role -edit_entry_for_outreach_provider_role=: Edit this outreach provider role -edit_entry_for_researcher_role=: Edit this researcher role -edit_entry_for_reviewer_role=: Edit this reviewer role -edit_entry_for_teacher_role=: Edit this teaching role - -create_entry_for_head_role=: Add a new "head of" role -create_entry_for_member_role=: Add a new membership -create_entry_for_clinical_role=: Add a new clinical activity -create_entry_for_attendee_role=: Add a new participation -create_entry_for_organizer_role=: Add a new Organizer role -create_entry_for_editor_role=: Add a new editor role -create_entry_for_service_provider_role=: Add a new service provider role -create_entry_for_outreach_provider_role=: Add a new outreach provider role -create_entry_for_researcher_role=: Add a new researcher role -create_entry_for_reviewer_role=: Add a new reviewer role -create_entry_for_teacher_role=: Add a new teaching role - - -save_changes=Save -start_capitalized = Start -end_capitalized = End -institution_name=Name of Institution -role_in_institution=Role in Institution -presentation_name_capitalized=Title of Presentation -role_in_presentation_capitalized=Role in Presentation -advisee_capitalized_first_name=First Name -advisee_capitalized_lastname=Last Name - -add_orcid_id=Add an iD - -orcid_title_add = Do you want to add an ORCID iD? -orcid_step1_add = Step 1: Adding your ORCID iD -orcid_title_confirm = Do you want to add an ORCID iD? -orcid_step1_confirm = Step 1: Adding your ORCID iD - -orcid_step1_description =
  • VIVO redirects you to ORCID's web site.
  • \ -
  • You log in to your ORCID account.
    • If you don't have an account, you can create one.
  • \ -
  • You tell ORCID that VIVO may read your ORCID record. (one-time permission)
  • \ -
  • VIVO reads your ORCID record.
  • \ -
  • VIVO notes that your ORCID iD is confirmed.
- -orcid_step1_denied =

You denied VIVO's request to read your ORCID record.

\ -

Confirmation can't continue.

- -orcid_step1_failed =

VIVO failed to read your ORCID record.

\ -

Confirmation can't continue.

- -orcid_step1_confirmed =

Your ORCID iD is confirmed as {0}

- -orcid_step2_heading = Step 2 (recommended): Linking your ORCID record to VIVO - -orcid_step2_description =
  • VIVO redirects you to ORCID's web site
  • \ -
  • You tell ORCID that VIVO may add an "external ID" to your ORCID record. (one-time permission)
  • \ -
  • VIVO adds the external ID.
- -orcid_step2_already_present =

Your ORCID record already includes a link to VIVO.

- -orcid_step2_denied =

You denied VIVO's request to add an External ID to your ORCID record.

\ -

Linking can't continue.

- -orcid_step2_failed =

VIVO failed to add an External ID to your ORCID record.

\ -

Linking can't continue.

- -orcid_step2_added =

Your ORCID record is linked to VIVO

- -orcid_button_step1 = Continue Step 1 -orcid_button_step2 = Continue Step 2 - -orcid_step_completed = (step completed) -orcid_view_orcid_record = View your ORCID record. -orcid_return_to_vivo = Return to your VIVO profile page - -# Messages for creating and linking resources (publications) -create_and_link_enter=Enter {0}: -create_and_link_claim_for=Claiming works for
{0} -create_and_link_confirm_works=Confirm your work(s) -create_and_link_confirm_works_intro=Please check that these are the work(s) that you wish to claim, and indicate your relationship with them. -create_and_link_authors=Authors -create_and_link_authors_desc=If you are an author of a work, please select your name in the author list.
Retrieved metadata may be incomplete. If you can not see your name listed, select "Unlisted Author". -create_and_link_editors=Editors -create_and_link_editors_desc=If you edited the work, please select "Editor". -create_and_link_not_mine_desc=If you do not wish to claim a work, select "This is not my work". -create_and_link_already_claimed=You have already claimed this work. -create_and_link_unlisted_author=Unlisted Author -create_and_link_editor=Editor -create_and_link_not_mine=This is not my work -create_and_link_remaining=There are {0} ids remaining -create_and_link_thank_you=Thank you -create_and_link_finished=There are no more works left to claim.
You may enter more IDs below, or view your profile. -create_and_link_go_profile=Go to profile -create_and_link_enter_dois_intro=You may enter one or more DOIs to match, and can be entered either as an ID or URL:

e.g. -create_and_link_enter_dois_supported=Currently, DOIs issued by Crossref, DataCite and mEDRA are supported.
Each DOI should be separated by a comma or new line. -create_and_link_enter_pmid_intro=You may enter one or more PubMed IDs to match. Each ID should be separated by a comma or new line. -create_and_link_enter_pmid_supported=Note that metadata will be retrieved from Crossref, if the PubMed ID can be resolved to a DOI. -create_and_link_unknown_profile=Unknown Profile -create_and_link_unknown_resource=Unknown Resource Type -create_and_link_unauthorized_for_profile=You do not have permissions to claim for this user -create_and_link_submit_ids=Submit IDs -create_and_link_submit_confirm=Confirm -create_and_link_error=Unable to retrieve citation details -create_and_link_type_article=Article -create_and_link_type_article_journal=Journal Article -create_and_link_type_book=Book -create_and_link_type_chapter=Chapter -create_and_link_type_dataset=Dataset -create_and_link_type_figure=Image -create_and_link_type_graphic=Image -create_and_link_type_legal_case=Legal Case -create_and_link_type_legislation=Legislation -create_and_link_type_manuscript=Manuscript -create_and_link_type_map=Map -create_and_link_type_musical_score=Musical Score -create_and_link_type_paper_conference=Conference Paper -create_and_link_type_patent=Patent -create_and_link_type_personal_communication=Letter -create_and_link_type_post_weblog=Blog -create_and_link_type_report=Report -create_and_link_type_review=Review -create_and_link_type_speech=Speech -create_and_link_type_thesis=Thesis -create_and_link_type_webpage=Webpage -claim_publications_by=Claim publications by -claim_publications_by_doi=DOI -claim_publications_by_pmid=PubMed ID diff --git a/webapp/src/main/webapp/images/visualization/capabilitymap/key-sprite.png b/webapp/src/main/webapp/images/visualization/capabilitymap/key-sprite.png new file mode 100644 index 0000000000000000000000000000000000000000..f2cd22eb1a140b07c13fa99b095eed695b7732b4 GIT binary patch literal 1119 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 OK$@z$Dy2#`kNyjz{Do8i diff --git a/webapp/src/main/webapp/js/individual/individualUtils.js b/webapp/src/main/webapp/js/individual/individualUtils.js index 85014189..974209cb 100644 --- a/webapp/src/main/webapp/js/individual/individualUtils.js +++ b/webapp/src/main/webapp/js/individual/individualUtils.js @@ -64,7 +64,7 @@ $(document).ready(function(){ } vcard += "END:VCARD"; - spanStr = "" + "Term: " + decodeURIComponent(id) + "") + .append(title = $("

" + i18nStringsCap.term + ": " + decodeURIComponent(id) + "

") .bind("click", function() { highlight(id); detailsPane.showDetails(mode, id); @@ -403,7 +419,7 @@ DetailsPanel.prototype.showDetails = function(mode, id) { .css("cursor", "pointer") .prepend($("").addClass("orange-square")) ) - .append($("") + .append($("") .bind("click", function() { g.removeCapability(id); that.clearDetails(); @@ -411,7 +427,7 @@ DetailsPanel.prototype.showDetails = function(mode, id) { }) ) .append($(" ")) - .append($("") + .append($("") .bind("click", function() { expandLastQuery = 1; addKwd(decodeURIComponent(id)); @@ -454,7 +470,7 @@ DetailsPanel.prototype.groupInfo = function(i, group, mode, id) { }); return $("
") .append( - $("

" + "Group: " + group.capabilities.map(function(c) { + $("

" + i18nStringsCap.group + ": " + group.capabilities.map(function(c) { return decodeURIComponent(c.term); }).join(", ") + "

") .bind("click", function() { @@ -464,7 +480,7 @@ DetailsPanel.prototype.groupInfo = function(i, group, mode, id) { .css("cursor", "pointer") .prepend($("").addClass("blue-circle")) ) - .append($("") + .append($("") .bind("click", function() { g.removeGroup(group); that.clearDetails(); @@ -615,12 +631,12 @@ var ipretResults = function(results) { var disableSubButton = function() { subButton.disabled = true; $("#sExpand").attr("disabled", true); - $("#resetButton").val("Stop"); + $("#resetButton").val(i18nStringsCap.pause); } var enableSubButton = function() { subButton.disabled = false; $("#sExpand").attr("disabled", false); - $("#resetButton").val("Reset"); + $("#resetButton").val(i18nStringsCap.reset); } var getLinkColor = function() { var linkColor = $("#linkColor").val(); @@ -807,7 +823,7 @@ var render = function() { } force.on("tick", function() { - $("#log button:first-child").html("pause"); + $("#log button:first-child").html(i18nStringsCap.pause); force2.start(); node.call(updateNode); anchorNode.each(function(d, i) { @@ -832,30 +848,30 @@ var render = function() { }); // refresh UI - $("#log").empty().append($("") + $("#log").empty().append($("") .bind("click", function() { - if ($(this).html() != "resume") { - $(this).html("resume"); + if ($(this).html() != i18nStringsCap.resume) { + $(this).html(i18nStringsCap.resume); force.stop(); force2.stop(); } else { - $(this).html("pause"); + $(this).html(i18nStringsCap.pause); force.resume(); force2.resume(); } }) - ).append(" ").append($("") + ).append(" ").append($("") .bind("click", function() { - if ($(this).html() != "show group labels") { - $(this).html("show group labels"); + if ($(this).html() != i18nStringsCap.show_group_labels) { + $(this).html(i18nStringsCap.show_group_labels); $(".label-group").css("visibility", "hidden"); } else { - $(this).html("hide group labels"); + $(this).html(i18nStringsCap.hide_group_labels); $(".label-group").css("visibility", "visible"); } }) ); - $("#log_printout").empty().append($("").bind("click", function() { + $("#log_printout").empty().append($("").bind("click", function() { $("input[type=checkbox]:checked").each(function() { g.removeCapability($(this).attr("name")); $(this).parent().remove(); diff --git a/webapp/src/main/webapp/templates/freemarker/body/aboutQrCodes.ftl b/webapp/src/main/webapp/templates/freemarker/body/aboutQrCodes.ftl deleted file mode 100644 index d16acf6b..00000000 --- a/webapp/src/main/webapp/templates/freemarker/body/aboutQrCodes.ftl +++ /dev/null @@ -1,25 +0,0 @@ -<#-- $This file is distributed under the terms of the license in LICENSE$ --> - -<#-- Page providing details on how QR codes work --> - -

About QR Codes

- -

What is QR?

- -

QR, which stands for Quick Response, is a standard for two-dimensional barcodes that can be read by mobile devices equipped with cameras (such as a smartphone).

- -

What kind of data is in a QR code?

- -

QR codes can encode many different types of data. The QR code on the profile page of a person in VIVO encodes information about that person in vCard format. This is a sort of digital business card, containing information about the person's name, address, telephone number, email address, and more.

- -

If you click on a person's QR code in VIVO, you will be taken to the QR Export page for that person. This page contains the vCard QR code seen on the front page, as well as a QR code containing a simple hyperlink to the user's VIVO profile. It also contains an HTML tag for each code, that can be embedded in a web page to display that code on other sites.

-<#-- todo: make VIVO API? Currently pasting Google API code into export area, this will be static and not change if VIVO data is updated. --> - -

How do I read a QR code?

- -

There are apps you can download for the iPhone and Android phones that allow you to use your phone's camera to interact with QR codes placed on objects in the real world.

- -

What can I do with a QR code?

- -

Anything! For a state-of-the-art business card, put your hyperlink QR code on the back of it. That way anyone with a properly-equipped smartphone can quickly go to your VIVO profile by simply pointing their camera at the code. Or put your vCard QR code on your office door to provide more contact information.

- diff --git a/webapp/src/main/webapp/templates/freemarker/body/harvester/fileharvest.ftl b/webapp/src/main/webapp/templates/freemarker/body/harvester/fileharvest.ftl index ebc22658..3f14411d 100644 --- a/webapp/src/main/webapp/templates/freemarker/body/harvester/fileharvest.ftl +++ b/webapp/src/main/webapp/templates/freemarker/body/harvester/fileharvest.ftl @@ -25,7 +25,7 @@ function doHarvest() { document.getElementById("harvestButton").disabled = true; - document.getElementById("harvestButtonHelpText").innerHTML = "${i18n().data_being_harvested}"; + document.getElementById("harvestButtonHelpText").innerHTML = "${i18n().data_being_harvested?js_string}"; var request = createRequest(); request.onreadystatechange=function() { @@ -92,7 +92,7 @@ importedItems.appendChild(newLi); } - document.getElementById("harvestButtonHelpText").innerHTML = "${i18n().harvest_complete}"; + document.getElementById("harvestButtonHelpText").innerHTML = "${i18n().harvest_complete?js_string}"; } } diff --git a/webapp/src/main/webapp/templates/freemarker/body/individual/individual--foaf-person-2column.ftl b/webapp/src/main/webapp/templates/freemarker/body/individual/individual--foaf-person-2column.ftl index 5264d4b2..15b782f7 100644 --- a/webapp/src/main/webapp/templates/freemarker/body/individual/individual--foaf-person-2column.ftl +++ b/webapp/src/main/webapp/templates/freemarker/body/individual/individual--foaf-person-2column.ftl @@ -170,20 +170,20 @@ var profileTypeData = { defaultProfileType: '${profileType!}' }; var i18nStrings = { - errorProcessingTypeChange: '${i18n().error_processing_type_change}', - displayLess: '${i18n().display_less}', - displayMoreEllipsis: '${i18n().display_more_ellipsis}', - showMoreContent: '${i18n().show_more_content}', - verboseTurnOff: '${i18n().verbose_turn_off}', - standardviewTooltipOne: '${i18n().standardview_tooltip_one}', - standardviewTooltipTwo: '${i18n().standardview_tooltip_two}', - researchAreaTooltipOne: '${i18n().research_area_tooltip_one}', - researchAreaTooltipTwo: '${i18n().research_area_tooltip_two}' + errorProcessingTypeChange: '${i18n().error_processing_type_change?js_string}', + displayLess: '${i18n().display_less?js_string}', + displayMoreEllipsis: '${i18n().display_more_ellipsis?js_string}', + showMoreContent: '${i18n().show_more_content?js_string}', + verboseTurnOff: '${i18n().verbose_turn_off?js_string}', + standardviewTooltipOne: '${i18n().standardview_tooltip_one?js_string}', + standardviewTooltipTwo: '${i18n().standardview_tooltip_two?js_string}', + researchAreaTooltipOne: '${i18n().research_area_tooltip_one?js_string}', + researchAreaTooltipTwo: '${i18n().research_area_tooltip_two?js_string}' }; var i18nStringsUriRdf = { - shareProfileUri: '${i18n().share_profile_uri}', - viewRDFProfile: '${i18n().view_profile_in_rdf}', - closeString: '${i18n().close}' + shareProfileUri: '${i18n().share_profile_uri?js_string}', + viewRDFProfile: '${i18n().view_profile_in_rdf?js_string}', + closeString: '${i18n().close?js_string}' }; @@ -209,5 +209,5 @@ ${scripts.add('')} diff --git a/webapp/src/main/webapp/templates/freemarker/body/individual/individual--foaf-person-quickview.ftl b/webapp/src/main/webapp/templates/freemarker/body/individual/individual--foaf-person-quickview.ftl index b3707fee..0745d7c4 100644 --- a/webapp/src/main/webapp/templates/freemarker/body/individual/individual--foaf-person-quickview.ftl +++ b/webapp/src/main/webapp/templates/freemarker/body/individual/individual--foaf-person-quickview.ftl @@ -220,19 +220,19 @@ var profileTypeData = { defaultProfileType: '${profileType!}' }; var i18nStrings = { - errorProcessingTypeChange: '${i18n().error_processing_type_change}', - displayLess: '${i18n().display_less}', - displayMoreEllipsis: '${i18n().display_more_ellipsis}', - showMoreContent: '${i18n().show_more_content}', - verboseTurnOff: '${i18n().verbose_turn_off}', - quickviewTooltip: '${i18n().quickview_tooltip}', - researchAreaTooltipOne: '${i18n().research_area_tooltip_one}', - researchAreaTooltipTwo: '${i18n().research_area_tooltip_two}' + errorProcessingTypeChange: '${i18n().error_processing_type_change?js_string}', + displayLess: '${i18n().display_less?js_string}', + displayMoreEllipsis: '${i18n().display_more_ellipsis?js_string}', + showMoreContent: '${i18n().show_more_content?js_string}', + verboseTurnOff: '${i18n().verbose_turn_off?js_string}', + quickviewTooltip: '${i18n().quickview_tooltip?js_string}', + researchAreaTooltipOne: '${i18n().research_area_tooltip_one?js_string}', + researchAreaTooltipTwo: '${i18n().research_area_tooltip_two?js_string}' }; var i18nStringsUriRdf = { - shareProfileUri: '${i18n().share_profile_uri}', - viewRDFProfile: '${i18n().view_profile_in_rdf}', - closeString: '${i18n().close}' + shareProfileUri: '${i18n().share_profile_uri?js_string}', + viewRDFProfile: '${i18n().view_profile_in_rdf?js_string}', + closeString: '${i18n().close?js_string}' }; <#if editable> @@ -270,5 +270,5 @@ ${scripts.add('')} diff --git a/webapp/src/main/webapp/templates/freemarker/body/individual/individual.ftl b/webapp/src/main/webapp/templates/freemarker/body/individual/individual.ftl index 6cfb473d..e6eea562 100644 --- a/webapp/src/main/webapp/templates/freemarker/body/individual/individual.ftl +++ b/webapp/src/main/webapp/templates/freemarker/body/individual/individual.ftl @@ -33,10 +33,10 @@ <#include "individual-vitro.ftl"> diff --git a/webapp/src/main/webapp/templates/freemarker/body/individual/manageLabelsForIndividualAddForm.ftl b/webapp/src/main/webapp/templates/freemarker/body/individual/manageLabelsForIndividualAddForm.ftl index 55948085..f34c37d1 100644 --- a/webapp/src/main/webapp/templates/freemarker/body/individual/manageLabelsForIndividualAddForm.ftl +++ b/webapp/src/main/webapp/templates/freemarker/body/individual/manageLabelsForIndividualAddForm.ftl @@ -28,16 +28,6 @@

- - diff --git a/webapp/src/main/webapp/templates/freemarker/edit/forms/addAssociatedConcept.ftl b/webapp/src/main/webapp/templates/freemarker/edit/forms/addAssociatedConcept.ftl index 32e47701..502afacd 100644 --- a/webapp/src/main/webapp/templates/freemarker/edit/forms/addAssociatedConcept.ftl +++ b/webapp/src/main/webapp/templates/freemarker/edit/forms/addAssociatedConcept.ftl @@ -46,10 +46,10 @@
-

Concept (Type)

+

${i18n().concept_type}

-

Vocabulary Source

+

${i18n().vocabulary_source}

 
@@ -173,19 +173,19 @@ var vocabSpecificDisplay = {}; vocabSpecificDisplay["${vocab}"] = "${vocabSpecificDisplay[vocab]}"; var i18nStrings = { - vocServiceUnavailable: '${i18n().vocabulary_service_unavailable}', - noResultsFound: '${i18n().no_serch_results_found}', - defaultLabelTypeString: '${i18n().label_type}', - definitionString: '${i18n().definition_capitalized}', - bestMatchString: '${i18n().best_match}', - selectTermFromResults: '${i18n().select_term_from_results}', - selectVocSource: '${i18n().select_vocabulary_source_to_search}', - confirmTermDelete: '${i18n().confirm_term_deletion}', - errorTernNotRemoved: '${i18n().error_term_not_deleted}', + vocServiceUnavailable: '${i18n().vocabulary_service_unavailable?js_string}', + noResultsFound: '${i18n().no_serch_results_found?js_string}', + defaultLabelTypeString: '${i18n().label_type?js_string}', + definitionString: '${i18n().definition_capitalized?js_string}', + bestMatchString: '${i18n().best_match?js_string}', + selectTermFromResults: '${i18n().select_term_from_results?js_string}', + selectVocSource: '${i18n().select_vocabulary_source_to_search?js_string}', + confirmTermDelete: '${i18n().confirm_term_deletion?js_string}', + errorTernNotRemoved: '${i18n().error_term_not_deleted?js_string}', vocabSpecificLabels: vocabSpecificDisplay, - displayMoreEllipsis: '${i18n().display_more_ellipsis}', - displayLess: '${i18n().display_less}', - showMoreContent: '${i18n().show_more_content}' + displayMoreEllipsis: '${i18n().display_more_ellipsis?js_string}', + displayLess: '${i18n().display_less?js_string}', + showMoreContent: '${i18n().show_more_content?js_string}' }; diff --git a/webapp/src/main/webapp/templates/freemarker/edit/forms/addAuthorsToInformationResource.ftl b/webapp/src/main/webapp/templates/freemarker/edit/forms/addAuthorsToInformationResource.ftl index a75408a2..65ba3567 100644 --- a/webapp/src/main/webapp/templates/freemarker/edit/forms/addAuthorsToInformationResource.ftl +++ b/webapp/src/main/webapp/templates/freemarker/edit/forms/addAuthorsToInformationResource.ftl @@ -185,14 +185,14 @@ var customFormData = { reorderUrl: '${urls.base}/edit/reorder' }; var i18nStrings = { - authorNameWrapperTitle: '${i18n().drag_drop_reorder_authors}', - reorderAuthorsAlert: '${i18n().reordering_authors_failed}', - removeAuthorshipMessage: '${i18n().confirm_author_removal}', - removeAuthorshipAlert: '${i18n().error_processing_author_request}', - authorTypeText: '${i18n().author_capitalized}', - organizationTypeText: '${i18n().organization_capitalized}', - helpTextSelect: '${i18n().select_an_existing}', - helpTextAdd: '${i18n().or_add_new_one}' + authorNameWrapperTitle: '${i18n().drag_drop_reorder_authors?js_string}', + reorderAuthorsAlert: '${i18n().reordering_authors_failed?js_string}', + removeAuthorshipMessage: '${i18n().confirm_author_removal?js_string}', + removeAuthorshipAlert: '${i18n().error_processing_author_request?js_string}', + authorTypeText: '${i18n().author_capitalized?js_string}', + organizationTypeText: '${i18n().organization_capitalized?js_string}', + helpTextSelect: '${i18n().select_an_existing?js_string}', + helpTextAdd: '${i18n().or_add_new_one?js_string}' }; diff --git a/webapp/src/main/webapp/templates/freemarker/edit/forms/addConceptThroughObjectPropertyAutoComplete.ftl b/webapp/src/main/webapp/templates/freemarker/edit/forms/addConceptThroughObjectPropertyAutoComplete.ftl index ae71bbb0..53d46de4 100644 --- a/webapp/src/main/webapp/templates/freemarker/edit/forms/addConceptThroughObjectPropertyAutoComplete.ftl +++ b/webapp/src/main/webapp/templates/freemarker/edit/forms/addConceptThroughObjectPropertyAutoComplete.ftl @@ -77,7 +77,7 @@

- or + ${i18n().or} ${i18n().cancel_link}

@@ -124,9 +124,9 @@ Also multiple types parameter set to true only if more than one type returned--> baseHref: '${urls.base}/individual?uri=' }; var i18nStrings = { - selectAnExisting: '${i18n().select_an_existing}', - orCreateNewOne: '${i18n().or_create_new_one}', - selectedString: '${i18n().selected}' + selectAnExisting: '${i18n().select_an_existing?js_string}', + orCreateNewOne: '${i18n().or_create_new_one?js_string}', + selectedString: '${i18n().selected?js_string}' }; <#-- diff --git a/webapp/src/main/webapp/templates/freemarker/edit/forms/addEditorsToInformationResource.ftl b/webapp/src/main/webapp/templates/freemarker/edit/forms/addEditorsToInformationResource.ftl index f271b2b9..6f5131ae 100644 --- a/webapp/src/main/webapp/templates/freemarker/edit/forms/addEditorsToInformationResource.ftl +++ b/webapp/src/main/webapp/templates/freemarker/edit/forms/addEditorsToInformationResource.ftl @@ -156,13 +156,13 @@ var customFormData = { reorderUrl: '${urls.base}/edit/reorder' }; var i18nStrings = { - editorNameWrapperTitle: '${i18n().drag_drop_reorder_editors}', - reorderEditorsAlert: '${i18n().reordering_editors_failed}', - removeEditorshipMessage: '${i18n().confirm_editor_removal}', - removeEditorshipAlert: '${i18n().error_processing_editor_request}', - editorTypeText: '${i18n().editor_capitalized}', - helpTextSelect: '${i18n().select_an_existing}', - helpTextAdd: '${i18n().or_add_new_one}' + editorNameWrapperTitle: '${i18n().drag_drop_reorder_editors?js_string}', + reorderEditorsAlert: '${i18n().reordering_editors_failed?js_string}', + removeEditorshipMessage: '${i18n().confirm_editor_removal?js_string}', + removeEditorshipAlert: '${i18n().error_processing_editor_request?js_string}', + editorTypeText: '${i18n().editor_capitalized?js_string}', + helpTextSelect: '${i18n().select_an_existing?js_string}', + helpTextAdd: '${i18n().or_add_new_one?js_string}' }; diff --git a/webapp/src/main/webapp/templates/freemarker/edit/forms/addEditorshipToPerson.ftl b/webapp/src/main/webapp/templates/freemarker/edit/forms/addEditorshipToPerson.ftl index 8758ecb4..4e9cbef7 100644 --- a/webapp/src/main/webapp/templates/freemarker/edit/forms/addEditorshipToPerson.ftl +++ b/webapp/src/main/webapp/templates/freemarker/edit/forms/addEditorshipToPerson.ftl @@ -84,7 +84,6 @@ Set this flag on the input acUriReceiver where you would like this behavior to o <#assign docTypeOpts = editConfiguration.pageData.documentType /> - <#list pubTypeLiteralOptions?keys as key> @@ -325,9 +324,9 @@ Set this flag on the input acUriReceiver where you would like this behavior to o flagClearLabelForExisting: '${flagClearLabelForExisting}' }; var i18nStrings = { - selectAnExisting: '${i18n().select_an_existing}', - orCreateNewOne: '${i18n().or_create_new_one}', - selectedString: '${i18n().selected}' + selectAnExisting: '${i18n().select_an_existing?js_string}', + orCreateNewOne: '${i18n().or_create_new_one?js_string}', + selectedString: '${i18n().selected?js_string}' }; diff --git a/webapp/src/main/webapp/templates/freemarker/edit/forms/addRoleToPersonTwoStage.ftl b/webapp/src/main/webapp/templates/freemarker/edit/forms/addRoleToPersonTwoStage.ftl index b19235ec..fa2ea79a 100644 --- a/webapp/src/main/webapp/templates/freemarker/edit/forms/addRoleToPersonTwoStage.ftl +++ b/webapp/src/main/webapp/templates/freemarker/edit/forms/addRoleToPersonTwoStage.ftl @@ -228,9 +228,9 @@ Set this flag on the input acUriReceiver where you would like this behavior to o flagClearLabelForExisting: '${flagClearLabelForExisting}' }; var i18nStrings = { - selectAnExisting: '${i18n().select_an_existing}', - orCreateNewOne: '${i18n().or_create_new_one}', - selectedString: '${i18n().selected}' + selectAnExisting: '${i18n().select_an_existing?js_string}', + orCreateNewOne: '${i18n().or_create_new_one?js_string}', + selectedString: '${i18n().selected?js_string}' }; diff --git a/webapp/src/main/webapp/templates/freemarker/edit/forms/addUserDefinedConcept.ftl b/webapp/src/main/webapp/templates/freemarker/edit/forms/addUserDefinedConcept.ftl index 1ea30283..54a0d3c0 100644 --- a/webapp/src/main/webapp/templates/freemarker/edit/forms/addUserDefinedConcept.ftl +++ b/webapp/src/main/webapp/templates/freemarker/edit/forms/addUserDefinedConcept.ftl @@ -62,9 +62,9 @@ Set this flag on the input acUriReceiver where you would like this behavior to o flagClearLabelForExisting: '${flagClearLabelForExisting}' }; var i18nStrings = { - selectAnExisting: '${i18n().select_an_existing}', - orCreateNewOne: '${i18n().or_create_new_one}', - selectedString: '${i18n().selected}' + selectAnExisting: '${i18n().select_an_existing?js_string}', + orCreateNewOne: '${i18n().or_create_new_one?js_string}', + selectedString: '${i18n().selected?js_string}' }; diff --git a/webapp/src/main/webapp/templates/freemarker/edit/forms/autoCompleteDataPropForm.ftl b/webapp/src/main/webapp/templates/freemarker/edit/forms/autoCompleteDataPropForm.ftl index 6ea33e89..76800b5f 100644 --- a/webapp/src/main/webapp/templates/freemarker/edit/forms/autoCompleteDataPropForm.ftl +++ b/webapp/src/main/webapp/templates/freemarker/edit/forms/autoCompleteDataPropForm.ftl @@ -71,9 +71,9 @@ Also multiple types parameter set to true only if more than one type returned--> defaultTypeName: '${propertyPublicName}' }; var i18nStrings = { - selectExisting: '${i18n().select_an_existing}', - orCreateNewOne: '${i18n().or_create_new_one}', - selectedString: '${i18n().selected}' + selectExisting: '${i18n().select_an_existing?js_string}', + orCreateNewOne: '${i18n().or_create_new_one?js_string}', + selectedString: '${i18n().selected?js_string}' }; diff --git a/webapp/src/main/webapp/templates/freemarker/edit/forms/defaultAddMissingIndividualForm.ftl b/webapp/src/main/webapp/templates/freemarker/edit/forms/defaultAddMissingIndividualForm.ftl index 02f12b6b..429f1e7b 100644 --- a/webapp/src/main/webapp/templates/freemarker/edit/forms/defaultAddMissingIndividualForm.ftl +++ b/webapp/src/main/webapp/templates/freemarker/edit/forms/defaultAddMissingIndividualForm.ftl @@ -74,7 +74,7 @@

- or + ${i18n().or} ${i18n().cancel_link}

diff --git a/webapp/src/main/webapp/templates/freemarker/edit/forms/grantAdministeredBy.ftl b/webapp/src/main/webapp/templates/freemarker/edit/forms/grantAdministeredBy.ftl index f3200465..e462254e 100644 --- a/webapp/src/main/webapp/templates/freemarker/edit/forms/grantAdministeredBy.ftl +++ b/webapp/src/main/webapp/templates/freemarker/edit/forms/grantAdministeredBy.ftl @@ -114,9 +114,9 @@ var customFormData = { flagClearLabelForExisting: '${flagClearLabelForExisting}' }; var i18nStrings = { - selectAnExisting: '${i18n().select_an_existing}', - orCreateNewOne: '${i18n().or_create_new_one}', - selectedString: '${i18n().selected}', + selectAnExisting: '${i18n().select_an_existing?js_string}', + orCreateNewOne: '${i18n().or_create_new_one?js_string}', + selectedString: '${i18n().selected?js_string}', }; diff --git a/webapp/src/main/webapp/templates/freemarker/edit/forms/grantHasContributor.ftl b/webapp/src/main/webapp/templates/freemarker/edit/forms/grantHasContributor.ftl index 962e9012..a10068af 100644 --- a/webapp/src/main/webapp/templates/freemarker/edit/forms/grantHasContributor.ftl +++ b/webapp/src/main/webapp/templates/freemarker/edit/forms/grantHasContributor.ftl @@ -157,9 +157,9 @@ var customFormData = { subjectName: '${editConfiguration.subjectName}' }; var i18nStrings = { - selectAnExisting: '${i18n().select_an_existing}', - orCreateNewOne: '${i18n().or_create_new_one}', - selectedString: '${i18n().selected}' + selectAnExisting: '${i18n().select_an_existing?js_string}', + orCreateNewOne: '${i18n().or_create_new_one?js_string}', + selectedString: '${i18n().selected?js_string}' }; $(document).ready(function() { diff --git a/webapp/src/main/webapp/templates/freemarker/edit/forms/js/publicationToPersonUtils.js b/webapp/src/main/webapp/templates/freemarker/edit/forms/js/publicationToPersonUtils.js index 1aa81bb6..52fcdd7f 100644 --- a/webapp/src/main/webapp/templates/freemarker/edit/forms/js/publicationToPersonUtils.js +++ b/webapp/src/main/webapp/templates/freemarker/edit/forms/js/publicationToPersonUtils.js @@ -146,9 +146,9 @@ var publicationToPersonUtils = { // hide everything, then show what's needed based on type // simpler in the event the user changes the type this.hideAllFields(); - var selectedType = this.typeSelector.find(':selected').text(); + var selectedType = this.typeSelector.find(':selected').val(); - if ( selectedType == 'Academic Article' ) { + if ( selectedType == 'http://purl.org/ontology/bibo/AcademicArticle' ) { // if the user has changed type, keep any relevant values and display the // acSelection as appropriate var ckForVal = this.getAcUriReceiverVal('collection'); @@ -189,7 +189,7 @@ var publicationToPersonUtils = { this.number.val(''); this.chapterNbr.val(''); } - else if ( selectedType == 'Chapter' ) { + else if ( selectedType == 'http://purl.org/ontology/bibo/Chapter' ) { // if the user has changed type, keep any relevant values and display the // acSelection as appropriate var ckForVal = this.getAcUriReceiverVal('book'); @@ -233,7 +233,7 @@ var publicationToPersonUtils = { this.startPage.val(''); this.endPage.val(''); } - else if ( selectedType == 'Book' || selectedType == 'Edited Book' ) { + else if ( selectedType == 'http://purl.org/ontology/bibo/Book' || selectedType == 'http://purl.org/ontology/bibo/EditedBook' ) { // if the user has changed type, keep any relevant values and display the // acSelection as appropriate var ckForVal = this.getAcUriReceiverVal('editor'); @@ -270,7 +270,7 @@ var publicationToPersonUtils = { this.endPage.val(''); this.chapterNbr.val(''); } - else if ( selectedType == 'Conference Paper' ) { + else if ( selectedType == 'http://vivoweb.org/ontology/core#ConferencePaper' ) { // if the user has changed type, keep any relevant values and display the // acSelection as appropriate ckForVal = this.getAcUriReceiverVal('conference'); @@ -310,7 +310,7 @@ var publicationToPersonUtils = { this.endPage.val(''); this.chapterNbr.val(''); } - else if ( selectedType == 'Conference Poster' || selectedType == 'Speech') { + else if ( selectedType == 'http://vivoweb.org/ontology/core#ConferencePoster' || selectedType == 'http://vivoweb.org/ontology/core#Speech') { // if the user has changed type, keep any relevant values and display the // acSelection as appropriate var ckForVal = this.getAcUriReceiverVal('conference'); diff --git a/webapp/src/main/webapp/templates/freemarker/edit/forms/manageGrantsForIndividual.ftl b/webapp/src/main/webapp/templates/freemarker/edit/forms/manageGrantsForIndividual.ftl index 0513a410..ebada87c 100644 --- a/webapp/src/main/webapp/templates/freemarker/edit/forms/manageGrantsForIndividual.ftl +++ b/webapp/src/main/webapp/templates/freemarker/edit/forms/manageGrantsForIndividual.ftl @@ -48,8 +48,8 @@ var customFormData = { processingUrl: '${urls.base}/edit/primitiveRdfEdit' }; var i18nStrings = { - itemSuccessfullyExcluded: '${i18n().grant_successfully_excluded}', - errorExcludingItem: '${i18n().error_excluding_grant}' + itemSuccessfullyExcluded: '${i18n().grant_successfully_excluded?js_string}', + errorExcludingItem: '${i18n().error_excluding_grant?js_string}' }; diff --git a/webapp/src/main/webapp/templates/freemarker/edit/forms/managePeopleForOrganization.ftl b/webapp/src/main/webapp/templates/freemarker/edit/forms/managePeopleForOrganization.ftl index 041bf2fc..9171bf8b 100644 --- a/webapp/src/main/webapp/templates/freemarker/edit/forms/managePeopleForOrganization.ftl +++ b/webapp/src/main/webapp/templates/freemarker/edit/forms/managePeopleForOrganization.ftl @@ -44,8 +44,8 @@ var customFormData = { processingUrl: '${urls.base}/edit/primitiveRdfEdit' }; var i18nStrings = { - itemSuccessfullyExcluded: '${i18n().person_successfully_excluded}', - errorExcludingItem: '${i18n().error_excluding_person}' + itemSuccessfullyExcluded: '${i18n().person_successfully_excluded?js_string}', + errorExcludingItem: '${i18n().error_excluding_person?js_string}' }; diff --git a/webapp/src/main/webapp/templates/freemarker/edit/forms/managePublicationsForIndividual.ftl b/webapp/src/main/webapp/templates/freemarker/edit/forms/managePublicationsForIndividual.ftl index e767c652..70b72f5c 100644 --- a/webapp/src/main/webapp/templates/freemarker/edit/forms/managePublicationsForIndividual.ftl +++ b/webapp/src/main/webapp/templates/freemarker/edit/forms/managePublicationsForIndividual.ftl @@ -61,8 +61,8 @@ var customFormData = { processingUrl: '${urls.base}/edit/primitiveRdfEdit' }; var i18nStrings = { - itemSuccessfullyExcluded: '${i18n().publication_successfully_excluded}', - errorExcludingItem: '${i18n().error_excluding_publication}' + itemSuccessfullyExcluded: '${i18n().publication_successfully_excluded?js_string}', + errorExcludingItem: '${i18n().error_excluding_publication?js_string}' }; diff --git a/webapp/src/main/webapp/templates/freemarker/edit/forms/manageWebpagesForIndividual.ftl b/webapp/src/main/webapp/templates/freemarker/edit/forms/manageWebpagesForIndividual.ftl index 436e7da9..83f95042 100644 --- a/webapp/src/main/webapp/templates/freemarker/edit/forms/manageWebpagesForIndividual.ftl +++ b/webapp/src/main/webapp/templates/freemarker/edit/forms/manageWebpagesForIndividual.ftl @@ -70,10 +70,10 @@ var customFormData = { reorderUrl: '${urls.base}/edit/reorder' }; var i18nStrings = { - dragDropToReorderWebpages: '${i18n().drag_drop_to_reorder_webpages}', - webpageReorderingFailed: '${i18n().webpage_reordering_failed}', - confirmWebpageDeletion: '${i18n().confirm_webpage_deletion}', - errorRemovingWebpage: '${i18n().error_removing_webpage}' + dragDropToReorderWebpages: '${i18n().drag_drop_to_reorder_webpages?js_string}', + webpageReorderingFailed: '${i18n().webpage_reordering_failed?js_string}', + confirmWebpageDeletion: '${i18n().confirm_webpage_deletion?js_string}', + errorRemovingWebpage: '${i18n().error_removing_webpage?js_string}' }; diff --git a/webapp/src/main/webapp/templates/freemarker/edit/forms/organizationAdministersGrant.ftl b/webapp/src/main/webapp/templates/freemarker/edit/forms/organizationAdministersGrant.ftl index a01c35a7..81091901 100644 --- a/webapp/src/main/webapp/templates/freemarker/edit/forms/organizationAdministersGrant.ftl +++ b/webapp/src/main/webapp/templates/freemarker/edit/forms/organizationAdministersGrant.ftl @@ -114,9 +114,9 @@ var customFormData = { flagClearLabelForExisting: '${flagClearLabelForExisting}' }; var i18nStrings = { - selectAnExisting: '${i18n().select_an_existing}', - orCreateNewOne: '${i18n().or_create_new_one}', - selectedString: '${i18n().selected}', + selectAnExisting: '${i18n().select_an_existing?js_string}', + orCreateNewOne: '${i18n().or_create_new_one?js_string}', + selectedString: '${i18n().selected?js_string}', }; diff --git a/webapp/src/main/webapp/templates/freemarker/edit/forms/organizationForTraining.ftl b/webapp/src/main/webapp/templates/freemarker/edit/forms/organizationForTraining.ftl index 0ed1e9ab..773717ed 100644 --- a/webapp/src/main/webapp/templates/freemarker/edit/forms/organizationForTraining.ftl +++ b/webapp/src/main/webapp/templates/freemarker/edit/forms/organizationForTraining.ftl @@ -203,9 +203,9 @@ var customFormData = { subjectName: '${editConfiguration.subjectName}' }; var i18nStrings = { - selectAnExisting: '${i18n().select_an_existing}', - orCreateNewOne: '${i18n().or_create_new_one}', - selectedString: '${i18n().selected}' + selectAnExisting: '${i18n().select_an_existing?js_string}', + orCreateNewOne: '${i18n().or_create_new_one?js_string}', + selectedString: '${i18n().selected?js_string}' }; $(document).ready(function() { diff --git a/webapp/src/main/webapp/templates/freemarker/edit/forms/organizationHasPositionHistory.ftl b/webapp/src/main/webapp/templates/freemarker/edit/forms/organizationHasPositionHistory.ftl index 2fed809f..d7bc8bc7 100644 --- a/webapp/src/main/webapp/templates/freemarker/edit/forms/organizationHasPositionHistory.ftl +++ b/webapp/src/main/webapp/templates/freemarker/edit/forms/organizationHasPositionHistory.ftl @@ -165,9 +165,9 @@ Set this flag on the input acUriReceiver where you would like this behavior to o }; var i18nStrings = { - selectAnExisting: '${i18n().select_an_existing}', - orCreateNewOne: '${i18n().or_create_new_one}', - selectedString: '${i18n().selected}' + selectAnExisting: '${i18n().select_an_existing?js_string}', + orCreateNewOne: '${i18n().or_create_new_one?js_string}', + selectedString: '${i18n().selected?js_string}' }; diff --git a/webapp/src/main/webapp/templates/freemarker/edit/forms/personHasAdviseeRelationship.ftl b/webapp/src/main/webapp/templates/freemarker/edit/forms/personHasAdviseeRelationship.ftl index c798b0ae..547e293a 100644 --- a/webapp/src/main/webapp/templates/freemarker/edit/forms/personHasAdviseeRelationship.ftl +++ b/webapp/src/main/webapp/templates/freemarker/edit/forms/personHasAdviseeRelationship.ftl @@ -217,11 +217,11 @@ var customFormData = { <#--Removing this line for now from above : newUriSentinel : '${newUriSentinel}',--> <#--Also removed this: ,doNotRemoveOriginalObject: '${doNotRemoveOriginalObject}'--> var i18nStrings = { - selectAnExisting: '${i18n().select_an_existing}', - orCreateNewOne: '${i18n().or_create_new_one}', - selectedString: '${i18n().selected}', - advisingString: '${i18n().advising}', - advisingRelationshipString: '${i18n().advising_relationship}' + selectAnExisting: '${i18n().select_an_existing?js_string}', + orCreateNewOne: '${i18n().or_create_new_one?js_string}', + selectedString: '${i18n().selected?js_string}', + advisingString: '${i18n().advising?js_string}', + advisingRelationshipString: '${i18n().advising_relationship?js_string}' }; diff --git a/webapp/src/main/webapp/templates/freemarker/edit/forms/personHasAdvisorRelationship.ftl b/webapp/src/main/webapp/templates/freemarker/edit/forms/personHasAdvisorRelationship.ftl index 09a3c546..3f7410f2 100644 --- a/webapp/src/main/webapp/templates/freemarker/edit/forms/personHasAdvisorRelationship.ftl +++ b/webapp/src/main/webapp/templates/freemarker/edit/forms/personHasAdvisorRelationship.ftl @@ -217,11 +217,11 @@ var customFormData = { <#--Removing this line for now from above : newUriSentinel : '${newUriSentinel}',--> <#--Also removed this: ,doNotRemoveOriginalObject: '${doNotRemoveOriginalObject}'--> var i18nStrings = { - selectAnExisting: '${i18n().select_an_existing}', - orCreateNewOne: '${i18n().or_create_new_one}', - selectedString: '${i18n().selected}', - advisingString: '${i18n().advising}', - advisingRelationshipString: '${i18n().advising_relationship}' + selectAnExisting: '${i18n().select_an_existing?js_string}', + orCreateNewOne: '${i18n().or_create_new_one?js_string}', + selectedString: '${i18n().selected?js_string}', + advisingString: '${i18n().advising?js_string}', + advisingRelationshipString: '${i18n().advising_relationship?js_string}' }; diff --git a/webapp/src/main/webapp/templates/freemarker/edit/forms/personHasAwardOrHonor.ftl b/webapp/src/main/webapp/templates/freemarker/edit/forms/personHasAwardOrHonor.ftl index 6cc9391c..bd239d18 100644 --- a/webapp/src/main/webapp/templates/freemarker/edit/forms/personHasAwardOrHonor.ftl +++ b/webapp/src/main/webapp/templates/freemarker/edit/forms/personHasAwardOrHonor.ftl @@ -195,10 +195,10 @@ var customFormData = { flagClearLabelForExisting: '${flagClearLabelForExisting}' }; var i18nStrings = { - selectAnOrganization: '${i18n().select_or_create_organization}', - selectAnExisting: '${i18n().select_an_existing}', - orCreateNewOne: '${i18n().or_create_new_one}', - selectedString: '${i18n().selected}', + selectAnOrganization: '${i18n().select_or_create_organization?js_string}', + selectAnExisting: '${i18n().select_an_existing?js_string}', + orCreateNewOne: '${i18n().or_create_new_one?js_string}', + selectedString: '${i18n().selected?js_string}', }; diff --git a/webapp/src/main/webapp/templates/freemarker/edit/forms/personHasEducationalTraining.ftl b/webapp/src/main/webapp/templates/freemarker/edit/forms/personHasEducationalTraining.ftl index b29e0e4c..8458e93b 100644 --- a/webapp/src/main/webapp/templates/freemarker/edit/forms/personHasEducationalTraining.ftl +++ b/webapp/src/main/webapp/templates/freemarker/edit/forms/personHasEducationalTraining.ftl @@ -224,9 +224,9 @@ var customFormData = { subjectName: '${editConfiguration.subjectName}' }; var i18nStrings = { - selectAnExisting: '${i18n().select_an_existing}', - orCreateNewOne: '${i18n().or_create_new_one}', - selectedString: '${i18n().selected}' + selectAnExisting: '${i18n().select_an_existing?js_string}', + orCreateNewOne: '${i18n().or_create_new_one?js_string}', + selectedString: '${i18n().selected?js_string}' }; $(document).ready(function() { diff --git a/webapp/src/main/webapp/templates/freemarker/edit/forms/personHasIssuedCredential.ftl b/webapp/src/main/webapp/templates/freemarker/edit/forms/personHasIssuedCredential.ftl index f0a18cc6..56e665af 100644 --- a/webapp/src/main/webapp/templates/freemarker/edit/forms/personHasIssuedCredential.ftl +++ b/webapp/src/main/webapp/templates/freemarker/edit/forms/personHasIssuedCredential.ftl @@ -199,9 +199,9 @@ var customFormData = { flagClearLabelForExisting: '${flagClearLabelForExisting}' }; var i18nStrings = { - selectAnExisting: '${i18n().select_an_existing}', - orCreateNewOne: '${i18n().or_create_new_one}', - selectedString: '${i18n().selected}', + selectAnExisting: '${i18n().select_an_existing?js_string}', + orCreateNewOne: '${i18n().or_create_new_one?js_string}', + selectedString: '${i18n().selected?js_string}', }; diff --git a/webapp/src/main/webapp/templates/freemarker/edit/forms/personHasPositionHistory.ftl b/webapp/src/main/webapp/templates/freemarker/edit/forms/personHasPositionHistory.ftl index 963af616..45e0eeef 100644 --- a/webapp/src/main/webapp/templates/freemarker/edit/forms/personHasPositionHistory.ftl +++ b/webapp/src/main/webapp/templates/freemarker/edit/forms/personHasPositionHistory.ftl @@ -183,9 +183,9 @@ var customFormData = { flagClearLabelForExisting: '${flagClearLabelForExisting}' }; var i18nStrings = { - selectAnExisting: '${i18n().select_an_existing}', - orCreateNewOne: '${i18n().or_create_new_one}', - selectedString: '${i18n().selected}' + selectAnExisting: '${i18n().select_an_existing?js_string}', + orCreateNewOne: '${i18n().or_create_new_one?js_string}', + selectedString: '${i18n().selected?js_string}' }; diff --git a/webapp/src/main/webapp/templates/freemarker/edit/forms/projectHasParticipant.ftl b/webapp/src/main/webapp/templates/freemarker/edit/forms/projectHasParticipant.ftl index b39bad10..7fdea09f 100644 --- a/webapp/src/main/webapp/templates/freemarker/edit/forms/projectHasParticipant.ftl +++ b/webapp/src/main/webapp/templates/freemarker/edit/forms/projectHasParticipant.ftl @@ -153,9 +153,9 @@ var customFormData = { subjectName: '${editConfiguration.subjectName}' }; var i18nStrings = { - selectAnExisting: '${i18n().select_an_existing}', - orCreateNewOne: '${i18n().or_create_new_one}', - selectedString: '${i18n().selected}' + selectAnExisting: '${i18n().select_an_existing?js_string}', + orCreateNewOne: '${i18n().or_create_new_one?js_string}', + selectedString: '${i18n().selected?js_string}' }; $(document).ready(function() { diff --git a/webapp/src/main/webapp/templates/freemarker/visualization/capabilitymap/capabilityMap.ftl b/webapp/src/main/webapp/templates/freemarker/visualization/capabilitymap/capabilityMap.ftl index dc615cf9..75d76d15 100644 --- a/webapp/src/main/webapp/templates/freemarker/visualization/capabilitymap/capabilityMap.ftl +++ b/webapp/src/main/webapp/templates/freemarker/visualization/capabilitymap/capabilityMap.ftl @@ -11,12 +11,27 @@ ${stylesheets.add( '', '', '', - '' + '', + '' )}
-

Capability Map

-

Build a ‘first pass’ capability map by typing in a search term that could be said to represent a broad research capability.

+

${i18n().capability_map}

+

${i18n().cap_map_intro}

@@ -43,9 +58,9 @@ ${stylesheets.add( - - - + + +

@@ -56,56 +71,27 @@ ${stylesheets.add(

- Welcome to the Capability Mapping tool. - This tool visualises how researchers relate to other - researchers via search terms. + ${i18n().cap_map_text_intro}

-

Getting Started

+

${i18n().cap_map_text_headline1}

- Enter a research area into the search field above and press 'Search'. - The resulting diagram displays the search term, rendered in orange, - connected to the blue group of researchers that are active in that area. - Enter another search term to see how researchers from both searches relate. - Keep adding search terms to build a capability map. + ${i18n().cap_map_text1}

- Tip: you can expand a broad search term into smaller concepts - by clicking ‘search and expand’. + ${i18n().cap_map_text2}

-

Interacting with the visualisation

+

${i18n().cap_map_text_headline2}

- By clicking on any node in the visualisation, - additional information can be viewed in the - 'Info' tab on the right-hand side. - For groups of people, the participants in the group - and their information can be viewed, - and individual researchers can be removed from the graph. - Selecting a search term will display all attached groups. - Under each group full information for each person is retrieved, - and the number of matching grants and publications - for each researcher within the mapped capabilities is shown. - Clicking on a researcher's name will lead to the original search - results. + ${i18n().cap_map_text3}

-

Visual cues

+

${i18n().cap_map_text_headline3}

- To make the visualisation easier to read, - search terms and groups are scaled according - to the number of results returned. - Groups are also given different shades - according to the number of connected search terms. - The darker the shade, the more search terms a group is connected to. + ${i18n().cap_map_text4}

-

Advanced features

-

Changing the cutoff value

+

${i18n().cap_map_text_headline4}

+

${i18n().cap_map_text_headline5}

- The amount of researchers retrieved for each search term - for is limited by the cutoff value in the search form - (10 by default). - Increasing this cutoff will increase the likelihood - of an intersection between different search terms. - This will also increase the complexity of the graph, - however, and may make it difficult to identify patterns. + ${i18n().cap_map_text5}

@@ -118,28 +104,32 @@ ${stylesheets.add(
-

Current search terms

+

${i18n().cap_map_cur_search_terms}

    -
  • This panel displays a list of the search terms currently - on the graph. Search for something to begin.
  • +
  • + ${i18n().cap_map_text6} +

- Key +

${i18n().cap_map_key1}
+
${i18n().cap_map_key2}
+
${i18n().cap_map_key3}
+
${i18n().cap_map_key4}
+
${i18n().cap_map_key5}
+
${i18n().cap_map_key6}

- This panel displays information about individual - search terms and groups. Click on a group to display - its information. + ${i18n().cap_map_text7}

@@ -164,4 +154,3 @@ ${stylesheets.add(
- diff --git a/webapp/src/main/webapp/templates/freemarker/visualization/coauthorship/coAuthorshipSparklineContent.ftl b/webapp/src/main/webapp/templates/freemarker/visualization/coauthorship/coAuthorshipSparklineContent.ftl index 46b0b2ec..f5377d2d 100644 --- a/webapp/src/main/webapp/templates/freemarker/visualization/coauthorship/coAuthorshipSparklineContent.ftl +++ b/webapp/src/main/webapp/templates/freemarker/visualization/coauthorship/coAuthorshipSparklineContent.ftl @@ -159,17 +159,17 @@ var totalPubs = onlyUnknownYearPublications ? unknownYearPublicationCounts : renderedShortSparks; if (totalPubs === 1) { - var pubDisplay = "${i18n().co_author}"; + var pubDisplay = "${i18n().co_author?js_string}"; } else { - var pubDisplay = "${i18n().co_authors}"; + var pubDisplay = "${i18n().co_authors?js_string}"; } $('#${sparklineContainerID} td.sparkline_number').text(totalPubs).css("font-weight", "bold").attr("class", "grey").append(" " + pubDisplay + "
"); - var sparksText = ' ${i18n().within_last_10_years}'; + var sparksText = ' ${i18n().within_last_10_years?js_string}'; if (totalPubs !== totalPublicationCount) { - sparksText += ' (' + totalPublicationCount + ' ${i18n().total})'; + sparksText += ' (' + totalPublicationCount + ' ${i18n().total?js_string})'; } <#else> @@ -188,22 +188,22 @@ var totalPubs = onlyUnknownYearPublications ? unknownYearPublicationCounts : renderedSparks; if ( totalPubs == 1 ) { - var pubDisplay = "${i18n().co_author}"; + var pubDisplay = "${i18n().co_author?js_string}"; } else { - var pubDisplay = "${i18n().co_authors}"; + var pubDisplay = "${i18n().co_authors?js_string}"; } $('#${sparklineContainerID} td.sparkline_number').text(totalPubs).css("font-weight", "bold").attr("class", "grey").append(" " + pubDisplay + "
"); - var sparksText = ' ${i18n().from} ${sparklineVO.earliestYearConsidered?c}' + var sparksText = ' ${i18n().from?js_string} ${sparklineVO.earliestYearConsidered?c}' + ' - ${sparklineVO.latestRenderedPublicationYear?c}'; if (totalPubs !== totalPublicationCount) { - sparksText += ' (' + totalPublicationCount + ' ${i18n().total})'; + sparksText += ' (' + totalPublicationCount + ' ${i18n().total?js_string})'; } if (totalPublicationCount) { - sparksText += '
(.CSV ${i18n().file_capitalized}) '; + sparksText += '
(.CSV ${i18n().file_capitalized}) '; } diff --git a/webapp/src/main/webapp/templates/freemarker/visualization/copi/coInvestigationSparklineContent.ftl b/webapp/src/main/webapp/templates/freemarker/visualization/copi/coInvestigationSparklineContent.ftl index c4149708..ff98bbdd 100644 --- a/webapp/src/main/webapp/templates/freemarker/visualization/copi/coInvestigationSparklineContent.ftl +++ b/webapp/src/main/webapp/templates/freemarker/visualization/copi/coInvestigationSparklineContent.ftl @@ -161,17 +161,17 @@ if (totalGrants === 1) { - var grantDisplay = "${i18n().co_investigator}"; + var grantDisplay = "${i18n().co_investigator?js_string}"; } else { - var grantDisplay = "${i18n().co_investigators}"; + var grantDisplay = "${i18n().co_investigators?js_string}"; } $('#${sparklineContainerID} td.sparkline_number').text(totalGrants).css("font-weight", "bold").attr("class", "grey").append(" " + grantDisplay + "
"); - var sparksText = ' ${i18n().within_last_10_years}'; + var sparksText = ' ${i18n().within_last_10_years?js_string}'; if (totalGrants !== totalGrantCount) { - sparksText += ' (' + totalGrantCount + ' ${i18n().total})'; + sparksText += ' (' + totalGrantCount + ' ${i18n().total?js_string})'; } <#else> @@ -190,18 +190,18 @@ var totalGrants = onlyUnknownYearGrants ? unknownYearGrantCounts : renderedSparks; if (totalGrants === 1) { - var grantDisplay = "${i18n().co_investigator}"; + var grantDisplay = "${i18n().co_investigator?js_string}"; } else { - var grantDisplay = "${i18n().co_investigators}"; + var grantDisplay = "${i18n().co_investigators?js_string}"; } $('#${sparklineContainerID} td.sparkline_number').text(totalGrants).css("font-weight", "bold").attr("class", "grey").append(" " + grantDisplay + "
"); - var sparksText = ' ${i18n().from} ${sparklineVO.earliestYearConsidered?c}' + var sparksText = ' ${i18n().from?js_string} ${sparklineVO.earliestYearConsidered?c}' + ' through ${sparklineVO.latestRenderedGrantYear?c}'; if (totalGrants !== totalGrantCount) { - sparksText += ' (' + totalGrantCount + ' ${i18n().total})'; + sparksText += ' (' + totalGrantCount + ' ${i18n().total?js_string})'; } if (totalGrantCount) { diff --git a/webapp/src/main/webapp/templates/freemarker/visualization/entitycomparison/entityComparisonSetup.ftl b/webapp/src/main/webapp/templates/freemarker/visualization/entitycomparison/entityComparisonSetup.ftl index 9e79169f..fd4b7b4b 100644 --- a/webapp/src/main/webapp/templates/freemarker/visualization/entitycomparison/entityComparisonSetup.ftl +++ b/webapp/src/main/webapp/templates/freemarker/visualization/entitycomparison/entityComparisonSetup.ftl @@ -34,25 +34,25 @@ <#assign temporalGraphDownloadCSVCommonURL = '${urls.base}${dataVisualizationURLRoot}?uri=${organizationURI}&labelField=label'> -<#assign publicationParameter = { "name": "${i18n().publication}", - "pluralName": "${i18n().publications}", - "verbName": "${i18n().published}", - "dropDownText": "${i18n().by_publications}", +<#assign publicationParameter = { "name": "${i18n().publication?js_string}", + "pluralName": "${i18n().publications?js_string}", + "verbName": "${i18n().published?js_string}", + "dropDownText": "${i18n().by_publications?js_string}", "viewLink": "${organizationPublicationTemporalGraphURL}", "viewBaseLink": "${subOrganizationPublicationTemporalGraphCommonURL}", "dataLink": "${organizationPublicationTemporalGraphDataURL}", "csvLink": "${temporalGraphDownloadCSVCommonURL}&vis=entity_comparison", - "value": "${i18n().publications}" }> + "value": "${i18n().publications?js_string}" }> -<#assign grantParameter = { "name": "${i18n().grant}", - "pluralName": "${i18n().grants}", - "verbName": "${i18n().granted}", - "dropDownText": "${i18n().by_grants}", +<#assign grantParameter = { "name": "${i18n().grant?js_string}", + "pluralName": "${i18n().grants?js_string}", + "verbName": "${i18n().granted?js_string}", + "dropDownText": "${i18n().by_grants?js_string}", "viewLink": "${organizationGrantTemporalGraphURL}", "viewBaseLink": "${subOrganizationGrantTemporalGraphCommonURL}", "dataLink": "${organizationGrantTemporalGraphDataURL}", "csvLink": "${temporalGraphDownloadCSVCommonURL}&vis=entity_grant_count", - "value": "${i18n().grants}" }> + "value": "${i18n().grants?js_string}" }> <#assign parameterOptions = [publicationParameter, grantParameter]> @@ -70,68 +70,68 @@ we will use rev 293 (dev build version) of the flot & excanvas files. diff --git a/webapp/src/main/webapp/templates/freemarker/visualization/grant/personGrantSparklineContent.ftl b/webapp/src/main/webapp/templates/freemarker/visualization/grant/personGrantSparklineContent.ftl index 315259e9..f7d4d73a 100644 --- a/webapp/src/main/webapp/templates/freemarker/visualization/grant/personGrantSparklineContent.ftl +++ b/webapp/src/main/webapp/templates/freemarker/visualization/grant/personGrantSparklineContent.ftl @@ -156,17 +156,17 @@ var totalGrants = onlyUnknownYearGrants ? unknownYearGrantCounts : renderedShortSparks; if (totalGrants === 1) { - var grantDisplay = "${i18n().grant}"; + var grantDisplay = "${i18n().grant?js_string}"; } else { - var grantDisplay = "${i18n().grants}"; + var grantDisplay = "${i18n().grants?js_string}"; } $('#${sparklineContainerID} td.sparkline_number').text(totalGrants).css("font-weight", "bold").attr("class", "grey").append(" " + grantDisplay + "
"); - var sparksText = ' ${i18n().within_last_10_years}'; + var sparksText = ' ${i18n().within_last_10_years?js_string}'; if (totalGrants !== totalGrantCount) { - sparksText += ' (' + totalGrantCount + ' ${i18n().total})'; + sparksText += ' (' + totalGrantCount + ' ${i18n().total?js_string})'; } <#else> @@ -185,9 +185,9 @@ var totalGrants = onlyUnknownYearGrants ? unknownYearGrantCounts : renderedSparks; if (totalGrants === 1) { - var grantDisplay = "${i18n().grant}"; + var grantDisplay = "${i18n().grant?js_string}"; } else { - var grantDisplay = "${i18n().grants}"; + var grantDisplay = "${i18n().grants?js_string}"; } $('#${sparklineContainerID} td.sparkline_number').text(totalGrants).css("font-weight", "bold").attr("class", "grey").append(" " + grantDisplay + "
"); @@ -196,7 +196,7 @@ + ' through ${sparklineVO.latestRenderedGrantYear?c}
'; if (totalGrants !== totalGrantCount) { - sparksText += ' (' + totalGrantCount + ' ${i18n().total})'; + sparksText += ' (' + totalGrantCount + ' ${i18n().total?js_string})'; } if (totalGrantCount) { diff --git a/webapp/src/main/webapp/templates/freemarker/visualization/mapOfScience/aboutMapOfScience.ftl b/webapp/src/main/webapp/templates/freemarker/visualization/mapOfScience/aboutMapOfScience.ftl deleted file mode 100644 index 48253410..00000000 --- a/webapp/src/main/webapp/templates/freemarker/visualization/mapOfScience/aboutMapOfScience.ftl +++ /dev/null @@ -1,52 +0,0 @@ -<#-- $This file is distributed under the terms of the license in LICENSE$ --> - -<#assign aboutImagesRoot = '${urls.images}/visualization/mapofscience/about/'> - -

About VIVO's Map of Science Visualization

-

Reference Basemap

-

The VIVO Map of Science visualization uses the UCSD map of science and classification -system that was computed using paper-level data from about 25,000 journals from Elsevier's -Scopus and Clarivate Analytics' Web of Science (WoS) for the years 2001-2010. The UCSD map -of science assigns the 25,000 journals to 554 subdisciplines that are further aggregated -into 13 main disciplines of science. In the map, each discipline has a distinct color -(green for 'Biology', brown for 'Earth Sciences', etc.) and a label. (Sub)disciplines that -are similar closer to one another on the map. (Sub)disciplines that are especially similar -are connected by grey lines.

- -

Data Overlay

-

Publication activity of a university, organization, or person can be overlaid on the -map to generate expertise profiles. The process is as follows: (1) The set of unique -journals is identified, (2) the number of times each journal served as a publication venue -is calculated, and (3) the area size of the 13 disciplines and 554 subdisciplines is -calculated based on these journal publication venue counts. Note that some journals are -associated with exactly one (sub)discipline while others, e.g., interdisciplinary ones like -Science or Nature, are fractionally associated with multiple -(sub)disciplines. Subdisciplines inherit the colors of their parent disciplines. -(Sub)disciplines without any associated publications are given in gray.

- - - - -

Expertise Profile Comparison Map

-

Publication activity of up to three organizations or persons can be compared via "Compare -organizations." In the table on the left, select up to three organizations. The expertise -profile of each organizations will be represented as data overlay. Each organizations is -represented in a distinct color and a top-10 list of subdisciplines with the highest number -of publications is given below the comparison map. Data can be saved as CSV file.

- - - -

Interactivity

-

The map can be explored at two levels-by 13 disciplines or 554 subdisciplines. Clicking -on a node in the map brings up the number of fractionally associated journal publications -and the percentage of publications mapped to this (sub)discipline. Hover over a discipline -in the table on the left to see what circles it corresponds to on the map. Use slider below -map, on the right to reduce number of subdisciplines shown to improve legibility

- -

Links

-

For more information on the UCSD map of science and classification system, see -https://doi.org/10.1371/journal.pone.0039464. -For other maps of science, see -http://scimaps.org and -http://mapofscience.com.

diff --git a/webapp/src/main/webapp/templates/freemarker/visualization/mapOfScience/mapOfScienceSetup.ftl b/webapp/src/main/webapp/templates/freemarker/visualization/mapOfScience/mapOfScienceSetup.ftl index 249cdd91..4d6d6c56 100644 --- a/webapp/src/main/webapp/templates/freemarker/visualization/mapOfScience/mapOfScienceSetup.ftl +++ b/webapp/src/main/webapp/templates/freemarker/visualization/mapOfScience/mapOfScienceSetup.ftl @@ -67,43 +67,43 @@ var entityMapOfScienceSubDisciplineCSVURLPrefix = "${urls.base}${dataVisualizati var entityMapOfScienceDisciplineCSVURL = "${entityMapOfScienceDisciplineCSVURL}"; var entityMapOfScienceSubDisciplineCSVURL = "${entityMapOfScienceSubDisciplineCSVURL}"; var i18nStrings = { - firstString: '${i18n().vis_first_link}', - lastString: '${i18n().vis_last_link}', - previousString: '${i18n().vis_previous_link}', - nextString: '${i18n().vis_next_link}', - organizationsString: '${i18n().organizations_capitalized}', - peopleString: '${i18n().people_capitalized}', - infoIconString: '${i18n().info_icon}', - entityTypeString: '${i18n().entity_type}', - organizationString: '${i18n().organization_capitalized}', - personString: '${i18n().person_capitalized}', - numberOfPubs: '${i18n().of_pubs}', - maxNbrForComp: '${i18n().max_nbr_for_comp}', - noMatchingScienceAreas: '${i18n().no_matching_science_areas}', - clearSearchQuery: '${i18n().clear_search_query}', - saveAllAsCSV: '${i18n().save_all_as_csv}', - drillDownString: '${i18n().drill_down}', - subdisciplinesString: '${i18n().subdisciplines}', - disciplinesString: '${i18n().disciplines}', - scienceAreaLevel: '${i18n().science_area_level}', - ofActivityString: '${i18n().of_activity}', - subdisciplinesLower: '${i18n().subdisciplines_lower}', - disciplinesLower: '${i18n().disciplines_lower}', - showDisciplineLabels: '${i18n().show_discipline_labels}', - noAttributedPubs: '${i18n().no_attributed_publications}', - noneOfThe: '${i18n().none_of_the}', - pubsAttributedTo: '${i18n().publications_attributed_to}', - beenScienceLocated: '${i18n().been_science_located}', - pubAttributedTo: '${i18n().publication_attributed_to}', - notScienceLocated: '${i18n().not_science_located}', - publicationsString: '${i18n().publications}', - publicationString: '${i18n().publication}', - noJournalInformation: '${i18n().no_journal_information}', - noMatchingMapLocation: '${i18n().no_matching_map_location}', - loadingDataFor: '${i18n().loading_data_for}', - mapBeingRefreshed: '${i18n().map_being_refreshed_msg}', - publicationsPubs: '${i18n().publication_pubs}', - percentActivity: '${i18n().percent_activity}' + firstString: '${i18n().vis_first_link?js_string}', + lastString: '${i18n().vis_last_link?js_string}', + previousString: '${i18n().vis_previous_link?js_string}', + nextString: '${i18n().vis_next_link?js_string}', + organizationsString: '${i18n().organizations_capitalized?js_string}', + peopleString: '${i18n().people_capitalized?js_string}', + infoIconString: '${i18n().info_icon?js_string}', + entityTypeString: '${i18n().entity_type?js_string}', + organizationString: '${i18n().organization_capitalized?js_string}', + personString: '${i18n().person_capitalized?js_string}', + numberOfPubs: '${i18n().of_pubs?js_string}', + maxNbrForComp: '${i18n().max_nbr_for_comp?js_string}', + noMatchingScienceAreas: '${i18n().no_matching_science_areas?js_string}', + clearSearchQuery: '${i18n().clear_search_query?js_string}', + saveAllAsCSV: '${i18n().save_all_as_csv?js_string}', + drillDownString: '${i18n().drill_down?js_string}', + subdisciplinesString: '${i18n().subdisciplines?js_string}', + disciplinesString: '${i18n().disciplines?js_string}', + scienceAreaLevel: '${i18n().science_area_level?js_string}', + ofActivityString: '${i18n().of_activity?js_string}', + subdisciplinesLower: '${i18n().subdisciplines_lower?js_string}', + disciplinesLower: '${i18n().disciplines_lower?js_string}', + showDisciplineLabels: '${i18n().show_discipline_labels?js_string}', + noAttributedPubs: '${i18n().no_attributed_publications?js_string}', + noneOfThe: '${i18n().none_of_the?js_string}', + pubsAttributedTo: '${i18n().publications_attributed_to?js_string}', + beenScienceLocated: '${i18n().been_science_located?js_string}', + pubAttributedTo: '${i18n().publication_attributed_to?js_string}', + notScienceLocated: '${i18n().not_science_located?js_string}', + publicationsString: '${i18n().publications?js_string}', + publicationString: '${i18n().publication?js_string}', + noJournalInformation: '${i18n().no_journal_information?js_string}', + noMatchingMapLocation: '${i18n().no_matching_map_location?js_string}', + loadingDataFor: '${i18n().loading_data_for?js_string}', + mapBeingRefreshed: '${i18n().map_being_refreshed_msg?js_string}', + publicationsPubs: '${i18n().publication_pubs?js_string}', + percentActivity: '${i18n().percent_activity?js_string}' }; diff --git a/webapp/src/main/webapp/templates/freemarker/visualization/mapOfScience/mapOfScienceTooltips.ftl b/webapp/src/main/webapp/templates/freemarker/visualization/mapOfScience/mapOfScienceTooltips.ftl deleted file mode 100644 index df9aaac1..00000000 --- a/webapp/src/main/webapp/templates/freemarker/visualization/mapOfScience/mapOfScienceTooltips.ftl +++ /dev/null @@ -1,70 +0,0 @@ -<#-- $This file is distributed under the terms of the license in LICENSE$ --> - -<#-- START TOOLTIP TEXT --> - - - - - - - - - - - - - - -<#-- COMPARISON TOOLTIP TEXT --> - - - - -<#-- END TOOLTIP TEXT --> diff --git a/webapp/src/main/webapp/templates/freemarker/visualization/personlevel/coAuthorPersonLevelD3.ftl b/webapp/src/main/webapp/templates/freemarker/visualization/personlevel/coAuthorPersonLevelD3.ftl index 0de27ad1..c3fbebcc 100644 --- a/webapp/src/main/webapp/templates/freemarker/visualization/personlevel/coAuthorPersonLevelD3.ftl +++ b/webapp/src/main/webapp/templates/freemarker/visualization/personlevel/coAuthorPersonLevelD3.ftl @@ -39,16 +39,16 @@ var visualizationDataRoot = "${dataVisualizationURLRoot}"; // --> var i18nStringsCoauthorship = { - coAuthorsString: '${i18n().co_authors_capitalized}', - authorString: '${i18n().author_capitalized}', - publicationsWith: '${i18n().publications_with}', - publicationsString: "${i18n().through_today}", - coauthorsString: '${i18n().co_author_s_capitalized}' + coAuthorsString: '${i18n().co_authors_capitalized?js_string}', + authorString: '${i18n().author_capitalized?js_string}', + publicationsWith: '${i18n().publications_with?js_string}', + publicationsString: '${i18n().through_today?js_string}', + coauthorsString: '${i18n().co_author_s_capitalized?js_string}' }; var i18nStringsPersonLvl = { - fileCapitalized: '${i18n().file_capitalized}', - contentRequiresFlash: '${i18n().content_requires_flash}', - getFlashString: '${i18n().get_flash}' + fileCapitalized: '${i18n().file_capitalized?js_string}', + contentRequiresFlash: '${i18n().content_requires_flash?js_string}', + getFlashString: '${i18n().get_flash?js_string}' }; diff --git a/webapp/src/main/webapp/templates/freemarker/visualization/personlevel/coPIPersonLevelD3.ftl b/webapp/src/main/webapp/templates/freemarker/visualization/personlevel/coPIPersonLevelD3.ftl index fadfb334..12e7a863 100644 --- a/webapp/src/main/webapp/templates/freemarker/visualization/personlevel/coPIPersonLevelD3.ftl +++ b/webapp/src/main/webapp/templates/freemarker/visualization/personlevel/coPIPersonLevelD3.ftl @@ -42,16 +42,16 @@ var visualizationDataRoot = "${dataVisualizationURLRoot}"; // --> var i18nStringsCoPi = { - coInvestigatorString: '${i18n().co_investigators_capitalized}', - investigatorString: '${i18n().investigator_capitalized}', - grantsWithString: '${i18n().grants_with}', - grantsCapitalized: '${i18n().grant_s_capitalized}', - coInvestigatorCapitalized: '${i18n().co_investigator_s_capitalized}' + coInvestigatorString: '${i18n().co_investigators_capitalized?js_string}', + investigatorString: '${i18n().investigator_capitalized?js_string}', + grantsWithString: '${i18n().grants_with?js_string}', + grantsCapitalized: '${i18n().grant_s_capitalized?js_string}', + coInvestigatorCapitalized: '${i18n().co_investigator_s_capitalized?js_string}' }; var i18nStringsPersonLvl = { - fileCapitalized: '${i18n().file_capitalized}', - contentRequiresFlash: '${i18n().content_requires_flash}', - getFlashString: '${i18n().get_flash}' + fileCapitalized: '${i18n().file_capitalized?js_string}', + contentRequiresFlash: '${i18n().content_requires_flash?js_string}', + getFlashString: '${i18n().get_flash?js_string}' }; diff --git a/webapp/src/main/webapp/templates/freemarker/visualization/publication/personPublicationCountNoSparkline.ftl b/webapp/src/main/webapp/templates/freemarker/visualization/publication/personPublicationCountNoSparkline.ftl index 974ec0a8..ce1bfc8b 100644 --- a/webapp/src/main/webapp/templates/freemarker/visualization/publication/personPublicationCountNoSparkline.ftl +++ b/webapp/src/main/webapp/templates/freemarker/visualization/publication/personPublicationCountNoSparkline.ftl @@ -63,7 +63,7 @@ if ( !onlyUnknownYearPublications ) { if ( td1Text == tenYearCount ) { - td2Text += "${i18n().last_ten_full_years} " ; + td2Text += "${i18n().last_ten_full_years?js_string} " ; } else { td2Text += "" + tenYearCount + " ${i18n().last_ten_full_years} " ; diff --git a/webapp/src/main/webapp/templates/freemarker/visualization/publication/personPublicationSparklineContent.ftl b/webapp/src/main/webapp/templates/freemarker/visualization/publication/personPublicationSparklineContent.ftl index d83f6c47..bf7e7519 100644 --- a/webapp/src/main/webapp/templates/freemarker/visualization/publication/personPublicationSparklineContent.ftl +++ b/webapp/src/main/webapp/templates/freemarker/visualization/publication/personPublicationSparklineContent.ftl @@ -158,9 +158,9 @@ var sparksText = ""; if ( !onlyUnknownYearPublications ) { - $('#${sparklineContainerID} td.sparkline_number').text(totalPubs + " ${i18n().last_ten_full}").attr("class", "grey-text"); + $('#${sparklineContainerID} td.sparkline_number').text(totalPubs + " ${i18n().last_ten_full?js_string}").attr("class", "grey-text"); - sparksText += "${i18n().years}"; + sparksText += "${i18n().years?js_string}"; if (totalPubs !== totalPublicationCount) { //sparksText += ' (' + totalPublicationCount + ' ${i18n().total})' ; @@ -190,18 +190,18 @@ var totalPubs = onlyUnknownYearPublications ? unknownYearPublicationCounts : renderedSparks; if ( totalPubs == 1 ) { - var pubDisplay = "${i18n().publication}"; + var pubDisplay = "${i18n().publication?js_string}"; } else { - var pubDisplay = "${i18n().publications}"; + var pubDisplay = "${i18n().publications?js_string}"; } $('#${sparklineContainerID} td.sparkline_number').text(totalPubs).attr("class", "grey-text").append(" "+ pubDisplay +"
"); - var sparksText = ' ${i18n().from} ${sparklineVO.earliestYearConsidered?c}' + var sparksText = ' ${i18n().from?js_string} ${sparklineVO.earliestYearConsidered?c}' + ' - ${sparklineVO.latestRenderedPublicationYear?c}'; if (totalPubs !== totalPublicationCount) { - sparksText += ' (' + totalPublicationCount + ' ${i18n().total})'; + sparksText += ' (' + totalPublicationCount + ' ${i18n().total?js_string})'; } if (totalPublicationCount) { diff --git a/webapp/src/main/webapp/themes/tenderfoot/i18n/all.properties b/webapp/src/main/webapp/themes/tenderfoot/i18n/all.properties deleted file mode 100644 index 22890324..00000000 --- a/webapp/src/main/webapp/themes/tenderfoot/i18n/all.properties +++ /dev/null @@ -1,101 +0,0 @@ -collapsed_menu_name = Menu -address_street_two = address street two -loading_website_image = Loading website image -view = view -currently_no_papers_for = Currently there are no {0} papers for -identity_index = Index -service_provider_role = Service Provider Role -intro_searchvivo = Search VIVO -grant_type = grant Type -grants_in_vivo = grants in VIVO -last_grant = Last Grant -no_departments_found = No academic departments found. -leadership_role = Leadership Role -menu_contactus = Contact Us -countries = countries -menu_welcomestart = Welcome -view_all_faculty = view all faculty -menu_copyright = copyright -last_publication = Last publication -menu_item = menu item -address_street_three = address street three -vivo_profile = VIVO profile -identity_myprofile = My profile -unable_to_handle_grant_editing = This form is unable to handle the editing of this grant because it is associated with multiple grant individuals. -unable_to_handle_position_editing = This form is unable to handle the editing of this position because it is associated with multiple Position individuals. -address_label = address label -no_grants_for = Currently there are no grants for -no_faculty_found = No faculty members found. -create_capitalized = Create -first_publication = First publication -address_street_one = address street one -select_award = Selected Award -first_name = First name -change_selection = change selection -menu_support = Support -indiv_foafperson_for = for -statewide_locations = state-wide locations. -password = password -place_of_grant = Place of grant -menu_logout = Log out -identity_edit = Edit Page -menu_loginfull = Log in to manage this site -reviewer_role = Reviewer Role -menu_login = Log in -view_all_departments = view all academic departments -identity_admin = Site Admin -intro_title = Welcome to VIVO -menu_version = Version -grant_date = grant Date -loading_data = loading data -to = to -collection_capitalized = Collection -create_entry = Create Entry -first_grant = First Grant -map_states_string = states. -limit_search = limit search -identity_user = user -menu_about = About -grant_entry_for = grant entry for -regions = regions -faculty_who_are_members_of_org = Here are the faculty in the {0} department who are members of this organization. -placeholder_image = placeholder image -indiv_foafperson_return = return to -enter_new_role_value = Please enter a new value in the Role field. -last_name = Last name -countries_and_regions = countries and regions. -currently_no_researchers = There are currently no researchers with a defined geographic focus. -research_area = individuals in the department with this research area -identity_myaccount = My account -province_or_region = Province or Region -full_name = Full name -researchers = researchers -email_address = Email Address -years_participation_in = Years of Participation in -menu_termuse = Terms of Use -identity_title = VIVO | connect share discover -map_state_string = state. -intro_filtersearch = Filter search -return_to_grant = Return to grant -display_more = more -intro_para2 = Browse or search information on people, departments, courses, grants, and publications. -intro_para1 = VIVO is a research-focused discovery tool that enables collaboration among scholars of all disciplines. -profile_capitalized = Profile -organizer_role = Organizer Role -faculty_memberships = Faculty Memberships -edit_mailing_address = Edit Mailing Address -add_capitalized = Add -attendee_capitalized = Attendee -researchers_in = researchers in -menu_powered = Powered by -view_all_members_of_org = View all the members of this organization. - -grants_text_one = This body is from the the template file \ - vivo/productMods/templates/freemarker/body/menupage/grants.ftl. \ - In the display model, the grants page has a display:requiresBodyTemplate \ - property that defines that the grants page overrides the default template. \ - The default template for these pages is at /vitro/webapp/web/templates/freemarker/body/menupage/menupage.ftl -grants_two = This technique could be used to define pages without menu items, that get \ - their content from a freemarker template. An example would be the about page. -grants_text_three = This would create a page that would use about.ftl as the body. The page would be \ - accessed via /about and would override all servlet mappings in web.xml. diff --git a/webapp/src/main/webapp/themes/tenderfoot/i18n/images/select_locale_en_US.GIF b/webapp/src/main/webapp/themes/tenderfoot/i18n/images/select_locale_en_US.GIF deleted file mode 100644 index b42e9a41dad89883cf3b575241a745266334cdf3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1490 zcmeIx|4$Ql7zglM1w8{}tq9gdCk4!CsbOWXSU`ay0w*rz{KjsAlcQ{KfQ&AKt!!Ch zr3ek9p`jq42G_z0HI;9L4YoRJA)>{_aO%J!1NteYc%W>Z%eLZO5rquLU9Vg07U^hb^xq4fD-`40X-CVJ#sM(LPTKA2 zHak~n=ga5t1+w%MQLgjQKCXQ%Ek~xjUY-yAVoMh!o(05MIb~ZQi?=!p^zpM2;~9+ zO~&QQI2@Xk&887dwv@>vV3>wO5DkO=&wuCw{Fl4D`~?X1LSMkU(v4Sdo`(Z@G1-f? zV+v*%G9vO(+^S>0T{PSLbG140Oiv9fuzXPy8D=WZ7)I{|MWJ~UZ5e&KyREVBSN+AX z9BJ8?WKrMP)~{>~4XcachHb71;)Zr0?Z|+BTEFLL@QcubNtNp4549ivn!m_W<*DK9 z$w9-6scf#`?`KPJPSjDfDG2v9G&ZF{@Ee&!#`&@8ir?3UwF+^EsC7H{*kSImPI1IX z_B+FUVCr&T>DCvLx*d^cMk-%fPSt7}^|vxxlD{8Zof(qO)vE^lr=k+;uw=|J!P2Gn zh^x!z8NT4&m9#6@TjDmH@rp{;f@ESMGJU+(d!W};bIRhpzsKg1Kh^YV=g%eYF5k$G zDq3*OMLpPZJ34m*nhj2bmkwoFa~wXBtkX+R&YzH&bBn0QsdH7IyeGiYb2C|ETi>jT z$g2r!f;%pTep$)zkN?fmUXgPFSSpuF)_r{Z_~x(b6QYd^UmtM5iw%hf8-g;D{GE@* z^RX%o`@^i@=FgAoG}FZDx78T2qqJ-O(<2cfj^_NPLPtvh&)STq1nu1^X^NFxP=t_$ zpuN)ZS?9Y4`%PyHD@q=|o}**Ad;|A}>zy6ScU%$I!r}h0fVktxvNrC6OUpXVb+Nhg zYBkT*^-VpmVbcknUax1|c7-Z2<|z=Bdlfl5SRvdu@!F#$UH=KQ+5HOck8gChcZF zSsxEk@SjbDYl?fv8IRVSxA`V_`8Cy_Whs6!4~n1P-4A-6+Y;`N+?z_;GAd4j;{OHm CUjG>Y diff --git a/webapp/src/main/webapp/themes/tenderfoot/templates/body/individual/individual--foaf-person.ftl b/webapp/src/main/webapp/themes/tenderfoot/templates/body/individual/individual--foaf-person.ftl index a31182c2..4d32f3e7 100644 --- a/webapp/src/main/webapp/themes/tenderfoot/templates/body/individual/individual--foaf-person.ftl +++ b/webapp/src/main/webapp/themes/tenderfoot/templates/body/individual/individual--foaf-person.ftl @@ -162,17 +162,17 @@ var exportQrCodeUrl = '${urls.base}/qrcode?uri=${individual.uri!}'; var baseUrl = '${urls.base}'; var i18nStrings = { - displayLess: '${i18n().display_less}', - displayMoreEllipsis: '${i18n().display_more_ellipsis}', - showMoreContent: '${i18n().show_more_content}', - verboseTurnOff: '${i18n().verbose_turn_off}', - researchAreaTooltipOne: '${i18n().research_area_tooltip_one}', - researchAreaTooltipTwo: '${i18n().research_area_tooltip_two}' + displayLess: '${i18n().display_less?js_string}', + displayMoreEllipsis: '${i18n().display_more_ellipsis?js_string}', + showMoreContent: '${i18n().show_more_content?js_string}', + verboseTurnOff: '${i18n().verbose_turn_off?js_string}', + researchAreaTooltipOne: '${i18n().research_area_tooltip_one?js_string}', + researchAreaTooltipTwo: '${i18n().research_area_tooltip_two?js_string}' }; var i18nStringsUriRdf = { - shareProfileUri: '${i18n().share_profile_uri}', - viewRDFProfile: '${i18n().view_profile_in_rdf}', - closeString: '${i18n().close}' + shareProfileUri: '${i18n().share_profile_uri?js_string}', + viewRDFProfile: '${i18n().view_profile_in_rdf?js_string}', + closeString: '${i18n().close?js_string}' }; diff --git a/webapp/src/main/webapp/themes/tenderfoot/templates/page/page-home.ftl b/webapp/src/main/webapp/themes/tenderfoot/templates/page/page-home.ftl index 9f5ea590..e2aa1b1c 100644 --- a/webapp/src/main/webapp/themes/tenderfoot/templates/page/page-home.ftl +++ b/webapp/src/main/webapp/themes/tenderfoot/templates/page/page-home.ftl @@ -122,23 +122,23 @@ <@lh.listAcademicDepartments /> diff --git a/webapp/src/main/webapp/themes/wilma/i18n/all.properties b/webapp/src/main/webapp/themes/wilma/i18n/all.properties deleted file mode 100644 index e66f906a..00000000 --- a/webapp/src/main/webapp/themes/wilma/i18n/all.properties +++ /dev/null @@ -1,109 +0,0 @@ -menu_contactus = Contact Us -menu_welcomestart = Welcome -menu_copyright = copyright -menu_support = Support -menu_logout = Log out -menu_loginfull = Log in to manage this site -menu_login = Log in -menu_version = Version -menu_about = About -menu_termuse = Terms of Use -menu_powered = Powered by - -intro_title = Welcome to VIVO -intro_para1 = VIVO is a research-focused discovery tool that enables collaboration among scholars of all disciplines. -intro_para2 = Browse or search information on people, departments, courses, grants, and publications. -intro_searchvivo = Search VIVO -intro_filtersearch = Filter search - -identity_title = VIVO | connect share discover -identity_index = Index -identity_edit = Edit Page -identity_admin = Site Admin -identity_myprofile = My profile -identity_myaccount = My account -identity_user = user - -collection_capitalized = Collection -place_of_grant = Place of grant -email_address = Email Address - -# -# menupage templates ( /templates/freemarker/body/menupage ) -# -grants_text_one = This body is from the the template file \ - vivo/productMods/templates/freemarker/body/menupage/grants.ftl. \ - In the display model, the grants page has a display:requiresBodyTemplate \ - property that defines that the grants page overrides the default template. \ - The default template for these pages is at /vitro/webapp/web/templates/freemarker/body/menupage/menupage.ftl -grants_two = This technique could be used to define pages without menu items, that get \ - their content from a freemarker template. An example would be the about page. -grants_text_three = This would create a page that would use about.ftl as the body. The page would be \ - accessed via /about and would override all servlet mappings in web.xml. - -address_street_one = address street one -address_street_two = address street two -address_street_three = address street three -address_label = address label - -loading_website_image = Loading website image - -researchers_in = researchers in -view = view -grant_type = grant Type -grant_entry_for = grant entry for -regions = regions -grant_date = grant Date -map_states_string = states. -map_state_string = state. -unable_to_handle_grant_editing = This form is unable to handle the editing of this grant because it is associated with multiple grant individuals. -unable_to_handle_position_editing = This form is unable to handle the editing of this position because it is associated with multiple Position individuals. -currently_no_papers_for = Currently there are no {0} papers for -change_selection = change selection -view_all_departments = view all academic departments -first_name = First name -last_name = Last name -first_grant = First Grant -last_grant = Last Grant -currently_no_researchers = There are currently no researchers with a defined geographic focus. -reviewer_role = Reviewer Role -vivo_profile = VIVO profile -loading_data = loading data -select_award = Selected Award -grants_in_vivo = grants in VIVO -service_provider_role = Service Provider Role -view_all_faculty = view all faculty -no_grants_for = Currently there are no grants for -statewide_locations = state-wide locations. -faculty_who_are_members_of_org = Here are the faculty in the {0} department who are members of this organization. -indiv_foafperson_for = for -indiv_foafperson_return = return to -no_departments_found = No academic departments found. -leadership_role = Leadership Role -countries = countries -first_publication = First publication -last_publication = Last publication -research_area = individuals in the department with this research area -password = password -limit_search = limit search -placeholder_image = placeholder image -view_all_members_of_org = View all the members of this organization. -display_more = more -create_entry = Create Entry -attendee_capitalized = Attendee -no_faculty_found = No faculty members found. -create_capitalized = Create -to = to -enter_new_role_value = Please enter a new value in the Role field. -countries_and_regions = countries and regions. -province_or_region = Province or Region -full_name = Full name -researchers = researchers -years_participation_in = Years of Participation in -return_to_grant = Return to grant -profile_capitalized = Profile -organizer_role = Organizer Role -faculty_memberships = Faculty Memberships -edit_mailing_address = Edit Mailing Address -add_capitalized = Add - diff --git a/webapp/src/main/webapp/themes/wilma/i18n/images/select_locale_en_US.GIF b/webapp/src/main/webapp/themes/wilma/i18n/images/select_locale_en_US.GIF deleted file mode 100644 index b42e9a41dad89883cf3b575241a745266334cdf3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1490 zcmeIx|4$Ql7zglM1w8{}tq9gdCk4!CsbOWXSU`ay0w*rz{KjsAlcQ{KfQ&AKt!!Ch zr3ek9p`jq42G_z0HI;9L4YoRJA)>{_aO%J!1NteYc%W>Z%eLZO5rquLU9Vg07U^hb^xq4fD-`40X-CVJ#sM(LPTKA2 zHak~n=ga5t1+w%MQLgjQKCXQ%Ek~xjUY-yAVoMh!o(05MIb~ZQi?=!p^zpM2;~9+ zO~&QQI2@Xk&887dwv@>vV3>wO5DkO=&wuCw{Fl4D`~?X1LSMkU(v4Sdo`(Z@G1-f? zV+v*%G9vO(+^S>0T{PSLbG140Oiv9fuzXPy8D=WZ7)I{|MWJ~UZ5e&KyREVBSN+AX z9BJ8?WKrMP)~{>~4XcachHb71;)Zr0?Z|+BTEFLL@QcubNtNp4549ivn!m_W<*DK9 z$w9-6scf#`?`KPJPSjDfDG2v9G&ZF{@Ee&!#`&@8ir?3UwF+^EsC7H{*kSImPI1IX z_B+FUVCr&T>DCvLx*d^cMk-%fPSt7}^|vxxlD{8Zof(qO)vE^lr=k+;uw=|J!P2Gn zh^x!z8NT4&m9#6@TjDmH@rp{;f@ESMGJU+(d!W};bIRhpzsKg1Kh^YV=g%eYF5k$G zDq3*OMLpPZJ34m*nhj2bmkwoFa~wXBtkX+R&YzH&bBn0QsdH7IyeGiYb2C|ETi>jT z$g2r!f;%pTep$)zkN?fmUXgPFSSpuF)_r{Z_~x(b6QYd^UmtM5iw%hf8-g;D{GE@* z^RX%o`@^i@=FgAoG}FZDx78T2qqJ-O(<2cfj^_NPLPtvh&)STq1nu1^X^NFxP=t_$ zpuN)ZS?9Y4`%PyHD@q=|o}**Ad;|A}>zy6ScU%$I!r}h0fVktxvNrC6OUpXVb+Nhg zYBkT*^-VpmVbcknUax1|c7-Z2<|z=Bdlfl5SRvdu@!F#$UH=KQ+5HOck8gChcZF zSsxEk@SjbDYl?fv8IRVSxA`V_`8Cy_Whs6!4~n1P-4A-6+Y;`N+?z_;GAd4j;{OHm CUjG>Y diff --git a/webapp/src/main/webapp/themes/wilma/templates/individual--foaf-person.ftl b/webapp/src/main/webapp/themes/wilma/templates/individual--foaf-person.ftl index b115ab55..8dbf4623 100644 --- a/webapp/src/main/webapp/themes/wilma/templates/individual--foaf-person.ftl +++ b/webapp/src/main/webapp/themes/wilma/templates/individual--foaf-person.ftl @@ -165,17 +165,17 @@ var exportQrCodeUrl = '${urls.base}/qrcode?uri=${individual.uri!}'; var baseUrl = '${urls.base}'; var i18nStrings = { - displayLess: '${i18n().display_less}', - displayMoreEllipsis: '${i18n().display_more_ellipsis}', - showMoreContent: '${i18n().show_more_content}', - verboseTurnOff: '${i18n().verbose_turn_off}', - researchAreaTooltipOne: '${i18n().research_area_tooltip_one}', - researchAreaTooltipTwo: '${i18n().research_area_tooltip_two}' + displayLess: '${i18n().display_less?js_string}', + displayMoreEllipsis: '${i18n().display_more_ellipsis?js_string}', + showMoreContent: '${i18n().show_more_content?js_string}', + verboseTurnOff: '${i18n().verbose_turn_off?js_string}', + researchAreaTooltipOne: '${i18n().research_area_tooltip_one?js_string}', + researchAreaTooltipTwo: '${i18n().research_area_tooltip_two?js_string}' }; var i18nStringsUriRdf = { - shareProfileUri: '${i18n().share_profile_uri}', - viewRDFProfile: '${i18n().view_profile_in_rdf}', - closeString: '${i18n().close}' + shareProfileUri: '${i18n().share_profile_uri?js_string}', + viewRDFProfile: '${i18n().view_profile_in_rdf?js_string}', + closeString: '${i18n().close?js_string}' }; @@ -198,5 +198,5 @@ ${scripts.add('')} diff --git a/webapp/src/main/webapp/themes/wilma/templates/page-home.ftl b/webapp/src/main/webapp/themes/wilma/templates/page-home.ftl index ff55691a..8db75bb7 100644 --- a/webapp/src/main/webapp/themes/wilma/templates/page-home.ftl +++ b/webapp/src/main/webapp/themes/wilma/templates/page-home.ftl @@ -87,23 +87,23 @@ <@lh.listAcademicDepartments /> diff --git a/webapp/src/main/webapp/templates/freemarker/visualization/coauthorship/coAuthorshipStandaloneActivator.ftl b/webapp/src/main/webapp/templates/freemarker/visualization/coauthorship/coAuthorshipStandaloneActivator.ftl index fe1d8173..b6a6e1ee 100644 --- a/webapp/src/main/webapp/templates/freemarker/visualization/coauthorship/coAuthorshipStandaloneActivator.ftl +++ b/webapp/src/main/webapp/templates/freemarker/visualization/coauthorship/coAuthorshipStandaloneActivator.ftl @@ -1,6 +1,6 @@ <#-- $This file is distributed under the terms of the license in LICENSE$ --> -<#assign googleJSAPI = 'https://www.google.com/jsapi?autoload=%7B%22modules%22%3A%5B%7B%22name%22%3A%22visualization%22%2C%22version%22%3A%221%22%2C%22packages%22%3A%5B%22areachart%22%2C%22imagesparkline%22%5D%7D%5D%7D'> +<#assign googleJSAPI = 'https://www.gstatic.com/charts/loader.js'> ${headScripts.add('')} ${scripts.add('')} diff --git a/webapp/src/main/webapp/templates/freemarker/visualization/copi/coInvestigationSparklineContent.ftl b/webapp/src/main/webapp/templates/freemarker/visualization/copi/coInvestigationSparklineContent.ftl index ff98bbdd..762c2f9e 100644 --- a/webapp/src/main/webapp/templates/freemarker/visualization/copi/coInvestigationSparklineContent.ftl +++ b/webapp/src/main/webapp/templates/freemarker/visualization/copi/coInvestigationSparklineContent.ftl @@ -273,8 +273,12 @@ table.prependTo('#${sparklineContainerID}'); } - - drawCoInvestigatorsSparklineVisualization(sparklineImgTD); + google.charts.load('current', { + callback: function() { + drawCoInvestigatorsSparklineVisualization(sparklineImgTD) + }, + packages: ['bar', 'corechart', 'table', 'imagesparkline'] + }); }); diff --git a/webapp/src/main/webapp/templates/freemarker/visualization/copi/coInvestigationStandaloneActivator.ftl b/webapp/src/main/webapp/templates/freemarker/visualization/copi/coInvestigationStandaloneActivator.ftl index 7d439417..79d7012d 100644 --- a/webapp/src/main/webapp/templates/freemarker/visualization/copi/coInvestigationStandaloneActivator.ftl +++ b/webapp/src/main/webapp/templates/freemarker/visualization/copi/coInvestigationStandaloneActivator.ftl @@ -1,6 +1,6 @@ <#-- $This file is distributed under the terms of the license in LICENSE$ --> -<#assign googleJSAPI = 'https://www.google.com/jsapi?autoload=%7B%22modules%22%3A%5B%7B%22name%22%3A%22visualization%22%2C%22version%22%3A%221%22%2C%22packages%22%3A%5B%22areachart%22%2C%22imagesparkline%22%5D%7D%5D%7D'> +<#assign googleJSAPI = 'https://www.gstatic.com/charts/loader.js'> ${headScripts.add('')} ${scripts.add('')} diff --git a/webapp/src/main/webapp/templates/freemarker/visualization/grant/personGrantCountStandaloneActivator.ftl b/webapp/src/main/webapp/templates/freemarker/visualization/grant/personGrantCountStandaloneActivator.ftl index 72974e52..6a41be45 100644 --- a/webapp/src/main/webapp/templates/freemarker/visualization/grant/personGrantCountStandaloneActivator.ftl +++ b/webapp/src/main/webapp/templates/freemarker/visualization/grant/personGrantCountStandaloneActivator.ftl @@ -1,6 +1,6 @@ <#-- $This file is distributed under the terms of the license in LICENSE$ --> -<#assign googleJSAPI = 'https://www.google.com/jsapi?autoload=%7B%22modules%22%3A%5B%7B%22name%22%3A%22visualization%22%2C%22version%22%3A%221%22%2C%22packages%22%3A%5B%22areachart%22%2C%22imagesparkline%22%5D%7D%5D%7D'> +<#assign googleJSAPI = 'https://www.gstatic.com/charts/loader.js'> ${headScripts.add('')} ${scripts.add('')} diff --git a/webapp/src/main/webapp/templates/freemarker/visualization/grant/personGrantSparklineContent.ftl b/webapp/src/main/webapp/templates/freemarker/visualization/grant/personGrantSparklineContent.ftl index f7d4d73a..543a68bb 100644 --- a/webapp/src/main/webapp/templates/freemarker/visualization/grant/personGrantSparklineContent.ftl +++ b/webapp/src/main/webapp/templates/freemarker/visualization/grant/personGrantSparklineContent.ftl @@ -267,7 +267,12 @@ table.prependTo('#${sparklineContainerID}'); } - drawGrantCountVisualization(sparklineImgTD); + google.charts.load('current', { + callback: function() { + drawGrantCountVisualization(sparklineImgTD) + }, + packages: ['bar', 'corechart', 'table', 'imagesparkline'] + }); }); diff --git a/webapp/src/main/webapp/templates/freemarker/visualization/personlevel/coAuthorPersonLevelD3.ftl b/webapp/src/main/webapp/templates/freemarker/visualization/personlevel/coAuthorPersonLevelD3.ftl index c3fbebcc..ee785e41 100644 --- a/webapp/src/main/webapp/templates/freemarker/visualization/personlevel/coAuthorPersonLevelD3.ftl +++ b/webapp/src/main/webapp/templates/freemarker/visualization/personlevel/coAuthorPersonLevelD3.ftl @@ -17,7 +17,7 @@ <#assign egoCoAuthorsListDataFileURL = '${urls.base}${dataVisualizationURLRoot}?vis=coauthorship&uri=${egoURI}&vis_mode=coauthors'> <#assign egoCoAuthorshipNetworkDataFileURL = '${urls.base}${dataVisualizationURLRoot}?vis=coauthorship&uri=${egoURI}&vis_mode=coauthor_network_download'> -<#assign googleVisualizationAPI = 'https://www.google.com/jsapi?autoload=%7B%22modules%22%3A%5B%7B%22name%22%3A%22visualization%22%2C%22version%22%3A%221%22%2C%22packages%22%3A%5B%22areachart%22%2C%22imagesparkline%22%5D%7D%5D%7D'> +<#assign googleVisualizationAPI = 'https://www.gstatic.com/charts/loader.js'> <#assign coAuthorPersonLevelJavaScript = '${urls.base}/js/visualization/coauthorship/coauthorship-personlevel.js'> <#assign commonPersonLevelJavaScript = '${urls.base}/js/visualization/personlevel/person-level.js'> diff --git a/webapp/src/main/webapp/templates/freemarker/visualization/personlevel/coPIPersonLevelD3.ftl b/webapp/src/main/webapp/templates/freemarker/visualization/personlevel/coPIPersonLevelD3.ftl index 12e7a863..e2845a98 100644 --- a/webapp/src/main/webapp/templates/freemarker/visualization/personlevel/coPIPersonLevelD3.ftl +++ b/webapp/src/main/webapp/templates/freemarker/visualization/personlevel/coPIPersonLevelD3.ftl @@ -21,7 +21,7 @@ <#assign coAuthorIcon = '${urls.images}/visualization/coauthorship/co_author_icon.png'> -<#assign googleVisualizationAPI = 'https://www.google.com/jsapi?autoload=%7B%22modules%22%3A%5B%7B%22name%22%3A%22visualization%22%2C%22version%22%3A%221%22%2C%22packages%22%3A%5B%22areachart%22%2C%22imagesparkline%22%5D%7D%5D%7D'> +<#assign googleVisualizationAPI = 'https://www.gstatic.com/charts/loader.js'> <#assign coInvestigatorPersonLevelJavaScript = '${urls.base}/js/visualization/coPIship/coPIship-person-level.js'> <#assign commonPersonLevelJavaScript = '${urls.base}/js/visualization/personlevel/person-level.js'> diff --git a/webapp/src/main/webapp/templates/freemarker/visualization/publication/personPublicationCountStandaloneActivator.ftl b/webapp/src/main/webapp/templates/freemarker/visualization/publication/personPublicationCountStandaloneActivator.ftl index c9c772c2..294fc29e 100644 --- a/webapp/src/main/webapp/templates/freemarker/visualization/publication/personPublicationCountStandaloneActivator.ftl +++ b/webapp/src/main/webapp/templates/freemarker/visualization/publication/personPublicationCountStandaloneActivator.ftl @@ -1,6 +1,6 @@ <#-- $This file is distributed under the terms of the license in LICENSE$ --> -<#assign googleJSAPI = 'https://www.google.com/jsapi?autoload=%7B%22modules%22%3A%5B%7B%22name%22%3A%22visualization%22%2C%22version%22%3A%221%22%2C%22packages%22%3A%5B%22areachart%22%2C%22imagesparkline%22%5D%7D%5D%7D'> +<#assign googleJSAPI = 'https://www.gstatic.com/charts/loader.js'> ${headScripts.add(googleJSAPI)} ${scripts.add('')} diff --git a/webapp/src/main/webapp/templates/freemarker/visualization/publication/personPublicationSparklineContent.ftl b/webapp/src/main/webapp/templates/freemarker/visualization/publication/personPublicationSparklineContent.ftl index bf7e7519..b8c88e6a 100644 --- a/webapp/src/main/webapp/templates/freemarker/visualization/publication/personPublicationSparklineContent.ftl +++ b/webapp/src/main/webapp/templates/freemarker/visualization/publication/personPublicationSparklineContent.ftl @@ -272,7 +272,12 @@ } - drawPubCountVisualization(sparklineImgTD); + google.charts.load('current', { + callback: function() { + drawPubCountVisualization(sparklineImgTD) + }, + packages: ['bar', 'corechart', 'table', 'imagesparkline'] + }); }); From f15eec19e0239a0d8bc56a6489a6be892a2037fb Mon Sep 17 00:00:00 2001 From: gneissone Date: Wed, 10 Feb 2021 18:06:02 -0700 Subject: [PATCH 010/332] Bugfix for type restriction in search index config --- .../rdf/display/everytime/searchIndexerConfigurationVivo.n3 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/src/main/resources/rdf/display/everytime/searchIndexerConfigurationVivo.n3 b/home/src/main/resources/rdf/display/everytime/searchIndexerConfigurationVivo.n3 index c29361c8..85abdeae 100644 --- a/home/src/main/resources/rdf/display/everytime/searchIndexerConfigurationVivo.n3 +++ b/home/src/main/resources/rdf/display/everytime/searchIndexerConfigurationVivo.n3 @@ -23,7 +23,7 @@ searchIndex:documentBuilding.DocumentModifier , searchIndex:extensions.LabelsAcrossContextNodes ; rdfs:label "Labels across relatedBy/relates" ; - :hasTypeRestriction "http://vivoweb.org/ontology/core#Relationship" ; + :appliesToContextNodeType "http://vivoweb.org/ontology/core#Relationship" ; :hasIncomingProperty "http://vivoweb.org/ontology/core#relatedBy" ; :hasOutgoingProperty "http://vivoweb.org/ontology/core#relates" . From 5f6cabc42af652bb09afc0eed0fa85da40548e30 Mon Sep 17 00:00:00 2001 From: Andrew Woods <149283+awoods@users.noreply.github.com> Date: Fri, 12 Feb 2021 09:42:58 -0500 Subject: [PATCH 011/332] Update example.runtime.properties (#222) * Update example.runtime.properties Resolves: https://jira.lyrasis.org/browse/VIVO-1930 Co-authored-by: gneissone Co-authored-by: Andrew Woods --- .../config/default.runtime.properties | 49 +++++++++++++------ 1 file changed, 33 insertions(+), 16 deletions(-) diff --git a/home/src/main/resources/config/default.runtime.properties b/home/src/main/resources/config/default.runtime.properties index 040e2b22..6b6f8bf8 100644 --- a/home/src/main/resources/config/default.runtime.properties +++ b/home/src/main/resources/config/default.runtime.properties @@ -51,15 +51,15 @@ argon2.time = 1000 # Email parameters which VIVO can use to send mail. If these are left empty, # the "Contact Us" form will be disabled and users will not be notified of # changes to their accounts. - # -email.smtpHost = smtp.mydomain.edu -email.replyTo = vivoAdmin@mydomain.edu +# email.smtpHost = smtp.mydomain.edu +# email.replyTo = vivoAdmin@mydomain.edu # # URL of Solr context used in local VIVO search. This will usually consist of: - # scheme + server_name + port + vivo_webapp_name + "solr" - # In the standard installation, the Solr context will be on the same server as VIVO - # as a standalone service. + # scheme + server_name + port + "solr" + solr_core_name + # In a standard Solr installation, the Solr service will be available on port + # 8983. The path will be /solr followed by the name used when adding a core + # for VIVO. # Example: # vitro.local.solr.url = http://localhost:8983/solr/vivocore # @@ -195,26 +195,43 @@ selfEditing.idMatchingProperty = http://vivo.mydomain.edu/ns#networkId # ORCID INTEGRATION # ----------------------------------------------------------------------------- + # The Client ID from your ORCID credentials + # When your application for credentials is accepted, you will receive a Client + # ID to be used in communications with the API. If you apply for sandbox + # credentials first, and then production credentials, you will likely receive + # two different Client IDs. # orcid.clientId = 0000-0000-0000-000X + + # The Client Secret from your ORCID credentials + # When your application for credentials is accepted, you will receive a Client + # Secret to be used in communications with the API. If you apply for sandbox + # credentials first, and then production credentials, you will likely receive + # two different Client Secrets. # orcid.clientPassword = 00000000-0000-0000-0000-000000000000 - # - # The orcid.webappBaseUrl must end in a front slash (/) - # if it includes a path past the domain and (if required) port. - # + # The base URL for your VIVO application, as seen from outside. + # VIVO will use this to construct a callback URL that the ORCID API can use to + # return control to VIVO. The actual callback URL will be the string you + # provide here with the suffix of /orcid/callback added at the end. + # The orcid.webappBaseUrl must end in a front slash (/) + # if it includes a path past the domain and (if required) port. + # # orcid.webappBaseUrl = http://vivo.mydomain.edu/vivo/ # orcid.externalIdCommonName = VIVO Cornell Identifier - # 1.2, 2.0 + # The version of ORCIDs API protocol that VIVO will expect. Currently, the + # only supported version is 2.0. # orcid.apiVersion = 2.0 - # release, sandbox + # The entry point for ORCID's public API. + # This changes, depending on whether you are using the sandbox API or the + # production API. Value is either release or sandbox. # orcid.api = sandbox - # Specify the type of API access that you have - public or member - # public - only allows you to confirm ORCID IDs - # member - allows VIVO to write a link to the VIVO profile in the ORCID record - # If you only have a public API key, ensure that you have entered public here + # Specify the type of API access that you have - public or member + # public - only allows you to confirm ORCID IDs + # member - allows VIVO to write a link to the VIVO profile in the ORCID record + # If you only have a public API key, ensure that you have entered public here #orcid.apiLevel = public From 880ac5b7977ea13e7a981b2ea5e569f1a10be6d2 Mon Sep 17 00:00:00 2001 From: William Welling Date: Thu, 18 Feb 2021 10:07:19 -0600 Subject: [PATCH 012/332] VIVO-1963: Initial docker compose (#223) * initial docker compose * for docker volume use direct tdb filemode * runtime properties with solr url configured * move gitattributes to root to ensure scripts stay valid * fix VIVO dockerfile command permissions * use public vivoweb/vivo-solr image * start script improvements * pass docker compose env to containers * generate digest.md5 of existing VIVO home * add initial readme * reset docker compose env defaults * minor readme updates --- .env | 4 ++++ .gitattributes | 2 ++ .gitignore | 2 ++ Dockerfile | 14 +++++++++++-- README.md | 35 +++++++++++++++++++++++++++++++ docker-compose.yml | 36 ++++++++++++++++++++++++++++++++ start.sh | 52 ++++++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 143 insertions(+), 2 deletions(-) create mode 100644 .env create mode 100644 .gitattributes create mode 100644 docker-compose.yml create mode 100644 start.sh diff --git a/.env b/.env new file mode 100644 index 00000000..e6fa0b62 --- /dev/null +++ b/.env @@ -0,0 +1,4 @@ +LOCAL_VIVO_HOME=./vivo-home +RESET_HOME=false +RESET_CORE=false +VERBOSE=no diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..d11d273f --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Convert to LF line endings on checkout. +*.sh text eol=lf diff --git a/.gitignore b/.gitignore index 425a6cfb..40730697 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,5 @@ utilities/rdbmigration/.work **/.classpath **/.project **/bin/ + +vivo-home/ diff --git a/Dockerfile b/Dockerfile index d2df2193..ccfe74a7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,12 +1,22 @@ FROM tomcat:9-jdk11-openjdk -ENV JAVA_OPTS="${JAVA_OPTS} -Dvivo-dir=/opt/vivo/home/" +ARG SOLR_URL=http://localhost:8983/solr/vivocore +ARG VIVO_DIR=/opt/vivo/home +ARG TDB_FILE_MODE=direct + +ENV SOLR_URL=${SOLR_URL} +ENV JAVA_OPTS="${JAVA_OPTS} -Dvivo-dir=$VIVO_DIR -Dtdb:fileMode=$TDB_FILE_MODE" RUN mkdir /opt/vivo RUN mkdir /opt/vivo/home COPY ./installer/webapp/target/vivo.war /usr/local/tomcat/webapps/ROOT.war +COPY ./home/src/main/resources/config/default.applicationSetup.n3 /applicationSetup.n3 +COPY ./home/src/main/resources/config/default.runtime.properties /runtime.properties + +COPY start.sh /start.sh + EXPOSE 8080 -CMD ["catalina.sh", "run"] +CMD ["/bin/bash", "/start.sh"] diff --git a/README.md b/README.md index a77727e9..0deb596c 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,41 @@ https://wiki.duraspace.org/display/VIVO/ Installation instructions for the latest release can be found at this location on the wiki: https://wiki.duraspace.org/display/VIVODOC110x/Installing+VIVO +### Docker + +VIVO docker container is available at [vivoweb/vivo](https://hub.docker.com/repository/docker/vivoweb/vivo) with accompanying [vivoweb/vivo-solr](https://hub.docker.com/repository/docker/vivoweb/vivo-solr). These can be used independently or with docker-compose. + +### Docker Compose + +Docker Compose environment variables. + +.env defaults +``` +LOCAL_VIVO_HOME=./vivo-home +RESET_HOME=false +RESET_CORE=false +``` + +- `LOCAL_VIVO_HOME`: VIVO home directory on your host machine which will mount to volume in docker container. +- `RESET_HOME`: Convinience to reset VIVO home when starting container. **Caution** will delete local configuration, content, and configuration model. +- `RESET_CORE`: Convinience to reset VIVO Solr core when starting container. **Caution** will require complete reindex. + +Build and start VIVO. + +``` +mvn clean install +docker-compose up +``` + +### Docker Image + +To build and run local Docker image. + +``` +docker build -t vivoweb/vivo:development . +docker run -p 8080:8080 vivoweb/vivo:development +``` + ## Contact us There are several ways to contact the VIVO community. Whatever your interest, we would be pleased to hear from you. diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000..e6386a71 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,36 @@ +version: '3.2' + +services: + + solr: + image: vivoweb/vivo-solr:latest + environment: + - RESET_CORE=${RESET_CORE} + - VERBOSE=${VERBOSE} + ports: + - 8983:8983 + networks: + - vivo + + tomcat: + container_name: vivo + hostname: vivo + build: + context: ./ + dockerfile: Dockerfile + args: + - VIVO_DIR=/opt/vivo/home + - TDB_FILE_MODE=direct + - SOLR_URL=http://solr:8983/solr/vivocore + environment: + - RESET_HOME=${RESET_HOME} + - VERBOSE=${VERBOSE} + ports: + - 8080:8080 + volumes: + - ${LOCAL_VIVO_HOME}:/opt/vivo/home + networks: + - vivo + +networks: + vivo: diff --git a/start.sh b/start.sh new file mode 100644 index 00000000..90e76f60 --- /dev/null +++ b/start.sh @@ -0,0 +1,52 @@ +#!/bin/bash + +set -e + +# allow easier debugging with `docker run -e VERBOSE=yes` +if [[ "$VERBOSE" = "yes" ]]; then + set -x +fi + +# allow easier reset home with `docker run -e RESET_HOME=true` +if [[ "$RESET_HOME" = "true" ]]; then + echo 'Clearing VIVO HOME /opt/vivo/home' + rm -rf /opt/vivo/home/* +fi + +# ensure home config directory exists +mkdir -p /opt/vivo/home/config + +# generate digest.md5 for existing VIVO home if not already exist +if [ ! -f /opt/vivo/home/digest.md5 ]; then + find /opt/vivo/home -type f | grep -E '^/opt/vivo/home/bin/|^/opt/vivo/home/config/|^/opt/vivo/home/rdf/' | xargs md5sum > /opt/vivo/home/digest.md5 + echo "Generated digest.md5 for VIVO home" + cat /opt/vivo/home/digest.md5 +fi + +# only move runtime.properties first time and if it does not already exist in target home directory +if [ -f /runtime.properties ]; then + # template runtime.properties vitro.local.solr.url value to $SOLR_URL value + echo "Templating runtime.properties vitro.local.solr.url = $SOLR_URL" + sed -i "s,http://localhost:8983/solr/vivocore,$SOLR_URL,g" /runtime.properties + + if [ ! -f /opt/vivo/home/config/runtime.properties ] + then + echo "First time: moving /runtime.properties to /opt/vivo/home/config/runtime.properties" + mv -n /runtime.properties /opt/vivo/home/config/runtime.properties + else + echo "Using existing /opt/vivo/home/config/runtime.properties" + fi +fi + +# only move applicationSetup.n3 first time and if it does not already exist in target home directory +if [ -f /applicationSetup.n3 ]; then + if [ ! -f /opt/vivo/home/config/applicationSetup.n3 ] + then + echo "First time: moving /applicationSetup.n3 to /opt/vivo/home/config/applicationSetup.n3" + mv -n /applicationSetup.n3 /opt/vivo/home/config/applicationSetup.n3 + else + echo "Using existing /opt/vivo/home/config/applicationSetup.n3" + fi +fi + +catalina.sh run From 0d5049f3b6ae9298bb21c58b795aa3afe4d41097 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 18 Feb 2021 10:11:14 -0600 Subject: [PATCH 013/332] Bump junit from 4.12 to 4.13.1 in /selenium (#196) Bumps [junit](https://github.com/junit-team/junit4) from 4.12 to 4.13.1. - [Release notes](https://github.com/junit-team/junit4/releases) - [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.12.md) - [Commits](https://github.com/junit-team/junit4/compare/r4.12...r4.13.1) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- selenium/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selenium/pom.xml b/selenium/pom.xml index 2e5e9ae1..b5c53e28 100644 --- a/selenium/pom.xml +++ b/selenium/pom.xml @@ -34,7 +34,7 @@ junit junit - 4.12 + 4.13.1 test From fdda5f077416a130ac77299d0a3bbeb8193753ba Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 18 Feb 2021 10:11:44 -0600 Subject: [PATCH 014/332] Bump junit from 4.11 to 4.13.1 in /api (#195) Bumps [junit](https://github.com/junit-team/junit4) from 4.11 to 4.13.1. - [Release notes](https://github.com/junit-team/junit4/releases) - [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.11.md) - [Commits](https://github.com/junit-team/junit4/compare/r4.11...r4.13.1) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- api/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/pom.xml b/api/pom.xml index de5b278d..3b3bfb19 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -83,7 +83,7 @@ junit junit - 4.11 + 4.13.1 test From 47fb4fdc050616012dee07c80da6335b78eb9a28 Mon Sep 17 00:00:00 2001 From: hauschke Date: Fri, 12 Mar 2021 15:31:39 +0100 Subject: [PATCH 015/332] Update LICENSE (#226) Update license year to 2021. --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index 361eead5..3f840177 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2018, Cornell University +Copyright (c) 2021, Cornell University All rights reserved. Redistribution and use in source and binary forms, with or without From 7773db339421aa19e44653389a58c703fb2b7d92 Mon Sep 17 00:00:00 2001 From: William Welling Date: Mon, 22 Mar 2021 13:37:13 -0500 Subject: [PATCH 016/332] revert deployment changes (#228) * revert deployment changes * update docker and compose for previous deployment * minor readme update * use package instead of install this avoids exploding war file in tomcat but seems to be missing overlays for VIVO theme * test docker workflow * test deploy workflow * add package profile for home * skip deploy for installer * skip installer by profile * update workflows * minor readme update * use app-name for vivo log file name * Update log4j.properties --- .github/workflows/build.yml | 2 +- .github/workflows/deploy.yml | 2 +- .github/workflows/docker.yml | 2 +- Dockerfile | 12 +- README.md | 6 +- docker-compose.yml | 4 +- ...onSetup.n3 => example.applicationSetup.n3} | 0 ....properties => example.runtime.properties} | 20 ++ installer/example-settings.xml | 21 +++ installer/home/pom.xml | 110 +++++++++-- installer/home/src/main/assembly/home.xml | 1 - installer/pom.xml | 66 +++++++ installer/webapp/pom.xml | 177 +++++++++++------- .../main/webResources/META-INF/context.xml | 43 ----- .../WEB-INF/classes/log4j.properties | 2 +- pom.xml | 1 - start.sh | 58 +++--- 17 files changed, 359 insertions(+), 168 deletions(-) rename home/src/main/resources/config/{default.applicationSetup.n3 => example.applicationSetup.n3} (100%) rename home/src/main/resources/config/{default.runtime.properties => example.runtime.properties} (95%) create mode 100644 installer/example-settings.xml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 09b5b3bd..a2515869 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -28,4 +28,4 @@ jobs: java-version: 11 - name: Maven Build - run: mvn clean install + run: mvn clean package -s installer/example-settings.xml diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 84431d85..82012b89 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -35,7 +35,7 @@ jobs: server-password: MAVEN_PASSWORD - name: Maven Deploy - run: mvn --batch-mode deploy + run: mvn --batch-mode deploy -Pskip env: MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }} diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 602ae6b1..26a2cf4a 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -32,7 +32,7 @@ jobs: java-version: 11 - name: Maven Build - run: mvn clean install + run: mvn clean package -s installer/example-settings.xml - name: Set up QEMU uses: docker/setup-qemu-action@v1 diff --git a/Dockerfile b/Dockerfile index ccfe74a7..6632d8b3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,20 +1,18 @@ FROM tomcat:9-jdk11-openjdk ARG SOLR_URL=http://localhost:8983/solr/vivocore -ARG VIVO_DIR=/opt/vivo/home +ARG VIVO_DIR=/usr/local/vivo/home ARG TDB_FILE_MODE=direct ENV SOLR_URL=${SOLR_URL} -ENV JAVA_OPTS="${JAVA_OPTS} -Dvivo-dir=$VIVO_DIR -Dtdb:fileMode=$TDB_FILE_MODE" +ENV JAVA_OPTS="${JAVA_OPTS} -Dtdb:fileMode=$TDB_FILE_MODE" -RUN mkdir /opt/vivo -RUN mkdir /opt/vivo/home +RUN mkdir /usr/local/vivo +RUN mkdir /usr/local/vivo/home +COPY ./installer/home/target/vivo /vivo-home COPY ./installer/webapp/target/vivo.war /usr/local/tomcat/webapps/ROOT.war -COPY ./home/src/main/resources/config/default.applicationSetup.n3 /applicationSetup.n3 -COPY ./home/src/main/resources/config/default.runtime.properties /runtime.properties - COPY start.sh /start.sh EXPOSE 8080 diff --git a/README.md b/README.md index 0deb596c..3b7f6598 100644 --- a/README.md +++ b/README.md @@ -37,13 +37,13 @@ RESET_CORE=false ``` - `LOCAL_VIVO_HOME`: VIVO home directory on your host machine which will mount to volume in docker container. -- `RESET_HOME`: Convinience to reset VIVO home when starting container. **Caution** will delete local configuration, content, and configuration model. -- `RESET_CORE`: Convinience to reset VIVO Solr core when starting container. **Caution** will require complete reindex. +- `RESET_HOME`: Convinience to reset VIVO home when starting container. **Caution**, will delete local configuration, content, and configuration model. +- `RESET_CORE`: Convinience to reset VIVO Solr core when starting container. **Caution**, will require complete reindex. Build and start VIVO. ``` -mvn clean install +mvn clean package -s installer/example-settings.xml docker-compose up ``` diff --git a/docker-compose.yml b/docker-compose.yml index e6386a71..d47dcf7d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -19,7 +19,7 @@ services: context: ./ dockerfile: Dockerfile args: - - VIVO_DIR=/opt/vivo/home + - VIVO_DIR=/usr/local/vivo/home - TDB_FILE_MODE=direct - SOLR_URL=http://solr:8983/solr/vivocore environment: @@ -28,7 +28,7 @@ services: ports: - 8080:8080 volumes: - - ${LOCAL_VIVO_HOME}:/opt/vivo/home + - ${LOCAL_VIVO_HOME}:/usr/local/vivo/home networks: - vivo diff --git a/home/src/main/resources/config/default.applicationSetup.n3 b/home/src/main/resources/config/example.applicationSetup.n3 similarity index 100% rename from home/src/main/resources/config/default.applicationSetup.n3 rename to home/src/main/resources/config/example.applicationSetup.n3 diff --git a/home/src/main/resources/config/default.runtime.properties b/home/src/main/resources/config/example.runtime.properties similarity index 95% rename from home/src/main/resources/config/default.runtime.properties rename to home/src/main/resources/config/example.runtime.properties index 6b6f8bf8..e5a9da9d 100644 --- a/home/src/main/resources/config/default.runtime.properties +++ b/home/src/main/resources/config/example.runtime.properties @@ -19,6 +19,26 @@ # BASIC PROPERTIES # ----------------------------------------------------------------------------- + # + # This namespace will be used when generating URIs for objects created in the + # editor. In order to serve linked data, the default namespace must be composed + # as follows (optional elements in parentheses): + # + # scheme + server_name (+ port) (+ servlet_context) + "/individual/" + # + # For example, Cornell's default namespace is: + # + # http://vivo.cornell.edu/individual/ + # +Vitro.defaultNamespace = http://vivo.mydomain.edu/individual/ + + # + # The email address of the root user for the VIVO application. The password + # for this user is initially set to "rootPassword", but you will be asked to + # change the password the first time you log in. + # +rootUser.emailAddress = vivo_root@mydomain.edu + # # Argon2 password hashing parameters for time, memory and parallelism required to # compute a hash. diff --git a/installer/example-settings.xml b/installer/example-settings.xml new file mode 100644 index 00000000..0007c79c --- /dev/null +++ b/installer/example-settings.xml @@ -0,0 +1,21 @@ + + + + + defaults + + vivo + + /usr/local/vivo/home + /usr/local/tomcat + + wilma + + + + + + defaults + + diff --git a/installer/home/pom.xml b/installer/home/pom.xml index e57789a4..059daab3 100644 --- a/installer/home/pom.xml +++ b/installer/home/pom.xml @@ -23,24 +23,108 @@ wilma + + + package + + vivo-dir + + + ${app-name} + + + maven-assembly-plugin + + + src/main/assembly/home.xml + + false + + + + package + + single + + + + + + + + + install + + vivo-dir + + + + + maven-assembly-plugin + + + src/main/assembly/home.xml + + false + + + + package + + single + + + + + + maven-antrun-plugin + + + remove-webapp + verify + + run + + + + + + + + + + + maven-resources-plugin + + + install + install + + copy-resources + + + ${vivo-dir} + + + ${project.build.directory}/${project.build.finalName} + + + + + + + + + + + - maven-assembly-plugin + maven-install-plugin - - src/main/assembly/home.xml - - false + true - - - package - - single - - - diff --git a/installer/home/src/main/assembly/home.xml b/installer/home/src/main/assembly/home.xml index 34f447c0..6de97e21 100644 --- a/installer/home/src/main/assembly/home.xml +++ b/installer/home/src/main/assembly/home.xml @@ -4,7 +4,6 @@ home dir - tar false diff --git a/installer/pom.xml b/installer/pom.xml index 75ca4250..2c966aa8 100644 --- a/installer/pom.xml +++ b/installer/pom.xml @@ -29,6 +29,12 @@ UTF-8 + + maven-install-plugin + + true + + org.apache.maven.plugins maven-gpg-plugin @@ -142,6 +148,12 @@ + + maven-dependency-plugin + + true + + maven-resources-plugin 2.6 @@ -165,6 +177,60 @@ + + maven-war-plugin + + + default-war + + + + + + + + + install + + vivo-dir + + + + + maven-enforcer-plugin + + + enforce-properties + validate + + enforce + + + + + app-name + You must provide an application name (app-name) + + + + + + + + + + + skip + + + + org.apache.maven.plugins + maven-deploy-plugin + 2.8.2 + + true + + diff --git a/installer/webapp/pom.xml b/installer/webapp/pom.xml index 68993625..78973a34 100644 --- a/installer/webapp/pom.xml +++ b/installer/webapp/pom.xml @@ -19,9 +19,117 @@ VIVO Install Web App + + + package + + app-name + + + ${app-name} + + + org.apache.maven.plugins + maven-war-plugin + + + + true + + + false + + + org.vivoweb + vivo-webapp + war + + + + + + + src/main/webResources + true + + + + + + + + + install + + tomcat-dir + + + + + maven-antrun-plugin + + + remove-webapp + verify + + run + + + + + + + + + + + org.apache.maven.plugins + maven-dependency-plugin + + + install + install + + unpack + + + + + ${project.groupId} + ${project.artifactId} + ${project.version} + war + true + ${tomcat-dir}/webapps/${project.build.finalName} + + + + + + + + + + + ${app-name} + + maven-install-plugin + + true + + maven-clean-plugin @@ -32,75 +140,6 @@ - - org.apache.maven.plugins - maven-dependency-plugin - - - false - - - - include-home - process-resources - - copy - - - - - org.vivoweb - vivo-installer-home - ${project.version} - tar - vivo-home.tar - ${project.build.directory}/home-files - - - - - - - - org.apache.maven.plugins - maven-war-plugin - - - - true - - - false - - - org.vivoweb - vivo-webapp - war - - - - org.vivoweb - vitro-languages-webapp-core - war - - - org.vivoweb - vivo-languages-webapp-core - war - - - - - src/main/webResources - true - - - ${project.build.directory}/home-files/ - WEB-INF/resources/home-files/ - - - - diff --git a/installer/webapp/src/main/webResources/META-INF/context.xml b/installer/webapp/src/main/webResources/META-INF/context.xml index ea944913..f4af100a 100644 --- a/installer/webapp/src/main/webResources/META-INF/context.xml +++ b/installer/webapp/src/main/webResources/META-INF/context.xml @@ -1,52 +1,9 @@ - - - - - - - - - - - diff --git a/installer/webapp/src/main/webResources/WEB-INF/classes/log4j.properties b/installer/webapp/src/main/webResources/WEB-INF/classes/log4j.properties index 17c0c8ff..1d3c0c4a 100644 --- a/installer/webapp/src/main/webResources/WEB-INF/classes/log4j.properties +++ b/installer/webapp/src/main/webResources/WEB-INF/classes/log4j.properties @@ -24,7 +24,7 @@ # debug.log4j.properties exists will be used instead, if it exists, but is not stored in Subversion. log4j.appender.AllAppender=org.apache.log4j.RollingFileAppender -log4j.appender.AllAppender.File= ${catalina.base}/logs/vivo.all.log +log4j.appender.AllAppender.File=${catalina.base}/logs/${app-name}.all.log log4j.appender.AllAppender.MaxFileSize=10MB log4j.appender.AllAppender.MaxBackupIndex=10 log4j.appender.AllAppender.layout=org.apache.log4j.PatternLayout diff --git a/pom.xml b/pom.xml index dfd2c427..0665c5f2 100644 --- a/pom.xml +++ b/pom.xml @@ -56,7 +56,6 @@ - vivo ${project.version} ${basedir} yyyy-MM-dd HH:mm:ss diff --git a/start.sh b/start.sh index 90e76f60..0f9ef7d9 100644 --- a/start.sh +++ b/start.sh @@ -9,43 +9,51 @@ fi # allow easier reset home with `docker run -e RESET_HOME=true` if [[ "$RESET_HOME" = "true" ]]; then - echo 'Clearing VIVO HOME /opt/vivo/home' - rm -rf /opt/vivo/home/* + echo 'Clearing VIVO HOME /usr/local/vivo/home' + rm -rf /usr/local/vivo/home/* fi -# ensure home config directory exists -mkdir -p /opt/vivo/home/config - -# generate digest.md5 for existing VIVO home if not already exist -if [ ! -f /opt/vivo/home/digest.md5 ]; then - find /opt/vivo/home -type f | grep -E '^/opt/vivo/home/bin/|^/opt/vivo/home/config/|^/opt/vivo/home/rdf/' | xargs md5sum > /opt/vivo/home/digest.md5 - echo "Generated digest.md5 for VIVO home" - cat /opt/vivo/home/digest.md5 +# copy home bin if not exists +if [ ! -d /usr/local/vivo/home/bin ]; then + echo "Copying home bin directory to /usr/local/vivo/home/bin" + cp -r /vivo-home/bin /usr/local/vivo/home/bin fi -# only move runtime.properties first time and if it does not already exist in target home directory -if [ -f /runtime.properties ]; then - # template runtime.properties vitro.local.solr.url value to $SOLR_URL value - echo "Templating runtime.properties vitro.local.solr.url = $SOLR_URL" - sed -i "s,http://localhost:8983/solr/vivocore,$SOLR_URL,g" /runtime.properties +# copy home config if not exists +if [ ! -d /usr/local/vivo/home/config ]; then + echo "Copying home config directory to /usr/local/vivo/home/config" + cp -r /vivo-home/config /usr/local/vivo/home/config +fi - if [ ! -f /opt/vivo/home/config/runtime.properties ] +# copy home rdf if not exists +if [ ! -d /usr/local/vivo/home/rdf ]; then + echo "Copying home rdf directory to /usr/local/vivo/home/rdf" + cp -r /vivo-home/rdf /usr/local/vivo/home/rdf +fi + +# copy runtime.properties if it does not already exist in target home directory +if [ -f /usr/local/vivo/home/config/example.runtime.properties ]; then + if [ ! -f /usr/local/vivo/home/config/runtime.properties ] then - echo "First time: moving /runtime.properties to /opt/vivo/home/config/runtime.properties" - mv -n /runtime.properties /opt/vivo/home/config/runtime.properties + echo "Copying example.runtime.properties to /usr/local/vivo/home/config/runtime.properties" + cp /usr/local/vivo/home/config/example.runtime.properties /usr/local/vivo/home/config/runtime.properties + + # template runtime.properties vitro.local.solr.url value to $SOLR_URL value + echo "Templating runtime.properties vitro.local.solr.url = $SOLR_URL" + sed -i "s,http://localhost:8983/solr/vivocore,$SOLR_URL,g" /usr/local/vivo/home/config/runtime.properties else - echo "Using existing /opt/vivo/home/config/runtime.properties" + echo "Using existing /usr/local/vivo/home/config/runtime.properties" fi fi -# only move applicationSetup.n3 first time and if it does not already exist in target home directory -if [ -f /applicationSetup.n3 ]; then - if [ ! -f /opt/vivo/home/config/applicationSetup.n3 ] +# copy applicationSetup.n3 if it does not already exist in target home directory +if [ -f /usr/local/vivo/home/config/example.applicationSetup.n3 ]; then + if [ ! -f /usr/local/vivo/home/config/applicationSetup.n3 ] then - echo "First time: moving /applicationSetup.n3 to /opt/vivo/home/config/applicationSetup.n3" - mv -n /applicationSetup.n3 /opt/vivo/home/config/applicationSetup.n3 + echo "Copying example.applicationSetup.n3 to /usr/local/vivo/home/config/applicationSetup.n3" + cp /usr/local/vivo/home/config/example.applicationSetup.n3 /usr/local/vivo/home/config/applicationSetup.n3 else - echo "Using existing /opt/vivo/home/config/applicationSetup.n3" + echo "Using existing /usr/local/vivo/home/config/applicationSetup.n3" fi fi From 1dd2851e45f1fc10ecb9cadeab4d0db8eb83ca00 Mon Sep 17 00:00:00 2001 From: Ralph O'Flinn Date: Wed, 24 Mar 2021 01:41:41 -0500 Subject: [PATCH 017/332] Revert "revert deployment changes (#228)" (#229) This reverts commit 7773db339421aa19e44653389a58c703fb2b7d92. --- .github/workflows/build.yml | 2 +- .github/workflows/deploy.yml | 2 +- .github/workflows/docker.yml | 2 +- Dockerfile | 12 +- README.md | 6 +- docker-compose.yml | 4 +- ...onSetup.n3 => default.applicationSetup.n3} | 0 ....properties => default.runtime.properties} | 20 -- installer/example-settings.xml | 21 --- installer/home/pom.xml | 110 ++--------- installer/home/src/main/assembly/home.xml | 1 + installer/pom.xml | 66 ------- installer/webapp/pom.xml | 177 +++++++----------- .../main/webResources/META-INF/context.xml | 43 +++++ .../WEB-INF/classes/log4j.properties | 2 +- pom.xml | 1 + start.sh | 58 +++--- 17 files changed, 168 insertions(+), 359 deletions(-) rename home/src/main/resources/config/{example.applicationSetup.n3 => default.applicationSetup.n3} (100%) rename home/src/main/resources/config/{example.runtime.properties => default.runtime.properties} (95%) delete mode 100644 installer/example-settings.xml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a2515869..09b5b3bd 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -28,4 +28,4 @@ jobs: java-version: 11 - name: Maven Build - run: mvn clean package -s installer/example-settings.xml + run: mvn clean install diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 82012b89..84431d85 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -35,7 +35,7 @@ jobs: server-password: MAVEN_PASSWORD - name: Maven Deploy - run: mvn --batch-mode deploy -Pskip + run: mvn --batch-mode deploy env: MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }} diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 26a2cf4a..602ae6b1 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -32,7 +32,7 @@ jobs: java-version: 11 - name: Maven Build - run: mvn clean package -s installer/example-settings.xml + run: mvn clean install - name: Set up QEMU uses: docker/setup-qemu-action@v1 diff --git a/Dockerfile b/Dockerfile index 6632d8b3..ccfe74a7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,18 +1,20 @@ FROM tomcat:9-jdk11-openjdk ARG SOLR_URL=http://localhost:8983/solr/vivocore -ARG VIVO_DIR=/usr/local/vivo/home +ARG VIVO_DIR=/opt/vivo/home ARG TDB_FILE_MODE=direct ENV SOLR_URL=${SOLR_URL} -ENV JAVA_OPTS="${JAVA_OPTS} -Dtdb:fileMode=$TDB_FILE_MODE" +ENV JAVA_OPTS="${JAVA_OPTS} -Dvivo-dir=$VIVO_DIR -Dtdb:fileMode=$TDB_FILE_MODE" -RUN mkdir /usr/local/vivo -RUN mkdir /usr/local/vivo/home +RUN mkdir /opt/vivo +RUN mkdir /opt/vivo/home -COPY ./installer/home/target/vivo /vivo-home COPY ./installer/webapp/target/vivo.war /usr/local/tomcat/webapps/ROOT.war +COPY ./home/src/main/resources/config/default.applicationSetup.n3 /applicationSetup.n3 +COPY ./home/src/main/resources/config/default.runtime.properties /runtime.properties + COPY start.sh /start.sh EXPOSE 8080 diff --git a/README.md b/README.md index 3b7f6598..0deb596c 100644 --- a/README.md +++ b/README.md @@ -37,13 +37,13 @@ RESET_CORE=false ``` - `LOCAL_VIVO_HOME`: VIVO home directory on your host machine which will mount to volume in docker container. -- `RESET_HOME`: Convinience to reset VIVO home when starting container. **Caution**, will delete local configuration, content, and configuration model. -- `RESET_CORE`: Convinience to reset VIVO Solr core when starting container. **Caution**, will require complete reindex. +- `RESET_HOME`: Convinience to reset VIVO home when starting container. **Caution** will delete local configuration, content, and configuration model. +- `RESET_CORE`: Convinience to reset VIVO Solr core when starting container. **Caution** will require complete reindex. Build and start VIVO. ``` -mvn clean package -s installer/example-settings.xml +mvn clean install docker-compose up ``` diff --git a/docker-compose.yml b/docker-compose.yml index d47dcf7d..e6386a71 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -19,7 +19,7 @@ services: context: ./ dockerfile: Dockerfile args: - - VIVO_DIR=/usr/local/vivo/home + - VIVO_DIR=/opt/vivo/home - TDB_FILE_MODE=direct - SOLR_URL=http://solr:8983/solr/vivocore environment: @@ -28,7 +28,7 @@ services: ports: - 8080:8080 volumes: - - ${LOCAL_VIVO_HOME}:/usr/local/vivo/home + - ${LOCAL_VIVO_HOME}:/opt/vivo/home networks: - vivo diff --git a/home/src/main/resources/config/example.applicationSetup.n3 b/home/src/main/resources/config/default.applicationSetup.n3 similarity index 100% rename from home/src/main/resources/config/example.applicationSetup.n3 rename to home/src/main/resources/config/default.applicationSetup.n3 diff --git a/home/src/main/resources/config/example.runtime.properties b/home/src/main/resources/config/default.runtime.properties similarity index 95% rename from home/src/main/resources/config/example.runtime.properties rename to home/src/main/resources/config/default.runtime.properties index e5a9da9d..6b6f8bf8 100644 --- a/home/src/main/resources/config/example.runtime.properties +++ b/home/src/main/resources/config/default.runtime.properties @@ -19,26 +19,6 @@ # BASIC PROPERTIES # ----------------------------------------------------------------------------- - # - # This namespace will be used when generating URIs for objects created in the - # editor. In order to serve linked data, the default namespace must be composed - # as follows (optional elements in parentheses): - # - # scheme + server_name (+ port) (+ servlet_context) + "/individual/" - # - # For example, Cornell's default namespace is: - # - # http://vivo.cornell.edu/individual/ - # -Vitro.defaultNamespace = http://vivo.mydomain.edu/individual/ - - # - # The email address of the root user for the VIVO application. The password - # for this user is initially set to "rootPassword", but you will be asked to - # change the password the first time you log in. - # -rootUser.emailAddress = vivo_root@mydomain.edu - # # Argon2 password hashing parameters for time, memory and parallelism required to # compute a hash. diff --git a/installer/example-settings.xml b/installer/example-settings.xml deleted file mode 100644 index 0007c79c..00000000 --- a/installer/example-settings.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - defaults - - vivo - - /usr/local/vivo/home - /usr/local/tomcat - - wilma - - - - - - defaults - - diff --git a/installer/home/pom.xml b/installer/home/pom.xml index 059daab3..e57789a4 100644 --- a/installer/home/pom.xml +++ b/installer/home/pom.xml @@ -23,108 +23,24 @@ wilma - - - package - - vivo-dir - - - ${app-name} - - - maven-assembly-plugin - - - src/main/assembly/home.xml - - false - - - - package - - single - - - - - - - - - install - - vivo-dir - - - - - maven-assembly-plugin - - - src/main/assembly/home.xml - - false - - - - package - - single - - - - - - maven-antrun-plugin - - - remove-webapp - verify - - run - - - - - - - - - - - maven-resources-plugin - - - install - install - - copy-resources - - - ${vivo-dir} - - - ${project.build.directory}/${project.build.finalName} - - - - - - - - - - - - maven-install-plugin + maven-assembly-plugin - true + + src/main/assembly/home.xml + + false + + + package + + single + + + diff --git a/installer/home/src/main/assembly/home.xml b/installer/home/src/main/assembly/home.xml index 6de97e21..34f447c0 100644 --- a/installer/home/src/main/assembly/home.xml +++ b/installer/home/src/main/assembly/home.xml @@ -4,6 +4,7 @@ home dir + tar false diff --git a/installer/pom.xml b/installer/pom.xml index 2c966aa8..75ca4250 100644 --- a/installer/pom.xml +++ b/installer/pom.xml @@ -29,12 +29,6 @@ UTF-8 - - maven-install-plugin - - true - - org.apache.maven.plugins maven-gpg-plugin @@ -148,12 +142,6 @@ - - maven-dependency-plugin - - true - - maven-resources-plugin 2.6 @@ -177,60 +165,6 @@ - - maven-war-plugin - - - default-war - - - - - - - - - install - - vivo-dir - - - - - maven-enforcer-plugin - - - enforce-properties - validate - - enforce - - - - - app-name - You must provide an application name (app-name) - - - - - - - - - - - skip - - - - org.apache.maven.plugins - maven-deploy-plugin - 2.8.2 - - true - - diff --git a/installer/webapp/pom.xml b/installer/webapp/pom.xml index 78973a34..68993625 100644 --- a/installer/webapp/pom.xml +++ b/installer/webapp/pom.xml @@ -19,117 +19,9 @@ VIVO Install Web App - - - package - - app-name - - - ${app-name} - - - org.apache.maven.plugins - maven-war-plugin - - - - true - - - false - - - org.vivoweb - vivo-webapp - war - - - - - - - src/main/webResources - true - - - - - - - - - install - - tomcat-dir - - - - - maven-antrun-plugin - - - remove-webapp - verify - - run - - - - - - - - - - - org.apache.maven.plugins - maven-dependency-plugin - - - install - install - - unpack - - - - - ${project.groupId} - ${project.artifactId} - ${project.version} - war - true - ${tomcat-dir}/webapps/${project.build.finalName} - - - - - - - - - - - ${app-name} - - maven-install-plugin - - true - - maven-clean-plugin @@ -140,6 +32,75 @@ + + org.apache.maven.plugins + maven-dependency-plugin + + + false + + + + include-home + process-resources + + copy + + + + + org.vivoweb + vivo-installer-home + ${project.version} + tar + vivo-home.tar + ${project.build.directory}/home-files + + + + + + + + org.apache.maven.plugins + maven-war-plugin + + + + true + + + false + + + org.vivoweb + vivo-webapp + war + + + + org.vivoweb + vitro-languages-webapp-core + war + + + org.vivoweb + vivo-languages-webapp-core + war + + + + + src/main/webResources + true + + + ${project.build.directory}/home-files/ + WEB-INF/resources/home-files/ + + + + diff --git a/installer/webapp/src/main/webResources/META-INF/context.xml b/installer/webapp/src/main/webResources/META-INF/context.xml index f4af100a..ea944913 100644 --- a/installer/webapp/src/main/webResources/META-INF/context.xml +++ b/installer/webapp/src/main/webResources/META-INF/context.xml @@ -1,9 +1,52 @@ + + + + + + + + + + + diff --git a/installer/webapp/src/main/webResources/WEB-INF/classes/log4j.properties b/installer/webapp/src/main/webResources/WEB-INF/classes/log4j.properties index 1d3c0c4a..17c0c8ff 100644 --- a/installer/webapp/src/main/webResources/WEB-INF/classes/log4j.properties +++ b/installer/webapp/src/main/webResources/WEB-INF/classes/log4j.properties @@ -24,7 +24,7 @@ # debug.log4j.properties exists will be used instead, if it exists, but is not stored in Subversion. log4j.appender.AllAppender=org.apache.log4j.RollingFileAppender -log4j.appender.AllAppender.File=${catalina.base}/logs/${app-name}.all.log +log4j.appender.AllAppender.File= ${catalina.base}/logs/vivo.all.log log4j.appender.AllAppender.MaxFileSize=10MB log4j.appender.AllAppender.MaxBackupIndex=10 log4j.appender.AllAppender.layout=org.apache.log4j.PatternLayout diff --git a/pom.xml b/pom.xml index 0665c5f2..dfd2c427 100644 --- a/pom.xml +++ b/pom.xml @@ -56,6 +56,7 @@ + vivo ${project.version} ${basedir} yyyy-MM-dd HH:mm:ss diff --git a/start.sh b/start.sh index 0f9ef7d9..90e76f60 100644 --- a/start.sh +++ b/start.sh @@ -9,51 +9,43 @@ fi # allow easier reset home with `docker run -e RESET_HOME=true` if [[ "$RESET_HOME" = "true" ]]; then - echo 'Clearing VIVO HOME /usr/local/vivo/home' - rm -rf /usr/local/vivo/home/* + echo 'Clearing VIVO HOME /opt/vivo/home' + rm -rf /opt/vivo/home/* fi -# copy home bin if not exists -if [ ! -d /usr/local/vivo/home/bin ]; then - echo "Copying home bin directory to /usr/local/vivo/home/bin" - cp -r /vivo-home/bin /usr/local/vivo/home/bin +# ensure home config directory exists +mkdir -p /opt/vivo/home/config + +# generate digest.md5 for existing VIVO home if not already exist +if [ ! -f /opt/vivo/home/digest.md5 ]; then + find /opt/vivo/home -type f | grep -E '^/opt/vivo/home/bin/|^/opt/vivo/home/config/|^/opt/vivo/home/rdf/' | xargs md5sum > /opt/vivo/home/digest.md5 + echo "Generated digest.md5 for VIVO home" + cat /opt/vivo/home/digest.md5 fi -# copy home config if not exists -if [ ! -d /usr/local/vivo/home/config ]; then - echo "Copying home config directory to /usr/local/vivo/home/config" - cp -r /vivo-home/config /usr/local/vivo/home/config -fi +# only move runtime.properties first time and if it does not already exist in target home directory +if [ -f /runtime.properties ]; then + # template runtime.properties vitro.local.solr.url value to $SOLR_URL value + echo "Templating runtime.properties vitro.local.solr.url = $SOLR_URL" + sed -i "s,http://localhost:8983/solr/vivocore,$SOLR_URL,g" /runtime.properties -# copy home rdf if not exists -if [ ! -d /usr/local/vivo/home/rdf ]; then - echo "Copying home rdf directory to /usr/local/vivo/home/rdf" - cp -r /vivo-home/rdf /usr/local/vivo/home/rdf -fi - -# copy runtime.properties if it does not already exist in target home directory -if [ -f /usr/local/vivo/home/config/example.runtime.properties ]; then - if [ ! -f /usr/local/vivo/home/config/runtime.properties ] + if [ ! -f /opt/vivo/home/config/runtime.properties ] then - echo "Copying example.runtime.properties to /usr/local/vivo/home/config/runtime.properties" - cp /usr/local/vivo/home/config/example.runtime.properties /usr/local/vivo/home/config/runtime.properties - - # template runtime.properties vitro.local.solr.url value to $SOLR_URL value - echo "Templating runtime.properties vitro.local.solr.url = $SOLR_URL" - sed -i "s,http://localhost:8983/solr/vivocore,$SOLR_URL,g" /usr/local/vivo/home/config/runtime.properties + echo "First time: moving /runtime.properties to /opt/vivo/home/config/runtime.properties" + mv -n /runtime.properties /opt/vivo/home/config/runtime.properties else - echo "Using existing /usr/local/vivo/home/config/runtime.properties" + echo "Using existing /opt/vivo/home/config/runtime.properties" fi fi -# copy applicationSetup.n3 if it does not already exist in target home directory -if [ -f /usr/local/vivo/home/config/example.applicationSetup.n3 ]; then - if [ ! -f /usr/local/vivo/home/config/applicationSetup.n3 ] +# only move applicationSetup.n3 first time and if it does not already exist in target home directory +if [ -f /applicationSetup.n3 ]; then + if [ ! -f /opt/vivo/home/config/applicationSetup.n3 ] then - echo "Copying example.applicationSetup.n3 to /usr/local/vivo/home/config/applicationSetup.n3" - cp /usr/local/vivo/home/config/example.applicationSetup.n3 /usr/local/vivo/home/config/applicationSetup.n3 + echo "First time: moving /applicationSetup.n3 to /opt/vivo/home/config/applicationSetup.n3" + mv -n /applicationSetup.n3 /opt/vivo/home/config/applicationSetup.n3 else - echo "Using existing /usr/local/vivo/home/config/applicationSetup.n3" + echo "Using existing /opt/vivo/home/config/applicationSetup.n3" fi fi From d00d7de5859608cc4bee25e64935580029155e2f Mon Sep 17 00:00:00 2001 From: Ralph O'Flinn Date: Wed, 24 Mar 2021 01:46:24 -0500 Subject: [PATCH 018/332] Revert deployment strategy (#230) * revert deployment changes * update docker and compose for previous deployment * minor readme update * use package instead of install this avoids exploding war file in tomcat but seems to be missing overlays for VIVO theme * test docker workflow * test deploy workflow * add package profile for home * skip deploy for installer * skip installer by profile * update workflows * minor readme update * use app-name for vivo log file name * Update log4j.properties Co-authored-by: William Welling --- .github/workflows/build.yml | 2 +- .github/workflows/deploy.yml | 2 +- .github/workflows/docker.yml | 2 +- Dockerfile | 12 +- README.md | 6 +- docker-compose.yml | 4 +- ...onSetup.n3 => example.applicationSetup.n3} | 0 ....properties => example.runtime.properties} | 20 ++ installer/example-settings.xml | 21 +++ installer/home/pom.xml | 110 +++++++++-- installer/home/src/main/assembly/home.xml | 1 - installer/pom.xml | 66 +++++++ installer/webapp/pom.xml | 177 +++++++++++------- .../main/webResources/META-INF/context.xml | 43 ----- .../WEB-INF/classes/log4j.properties | 2 +- pom.xml | 1 - start.sh | 58 +++--- 17 files changed, 359 insertions(+), 168 deletions(-) rename home/src/main/resources/config/{default.applicationSetup.n3 => example.applicationSetup.n3} (100%) rename home/src/main/resources/config/{default.runtime.properties => example.runtime.properties} (95%) create mode 100644 installer/example-settings.xml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 09b5b3bd..a2515869 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -28,4 +28,4 @@ jobs: java-version: 11 - name: Maven Build - run: mvn clean install + run: mvn clean package -s installer/example-settings.xml diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 84431d85..82012b89 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -35,7 +35,7 @@ jobs: server-password: MAVEN_PASSWORD - name: Maven Deploy - run: mvn --batch-mode deploy + run: mvn --batch-mode deploy -Pskip env: MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }} diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 602ae6b1..26a2cf4a 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -32,7 +32,7 @@ jobs: java-version: 11 - name: Maven Build - run: mvn clean install + run: mvn clean package -s installer/example-settings.xml - name: Set up QEMU uses: docker/setup-qemu-action@v1 diff --git a/Dockerfile b/Dockerfile index ccfe74a7..6632d8b3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,20 +1,18 @@ FROM tomcat:9-jdk11-openjdk ARG SOLR_URL=http://localhost:8983/solr/vivocore -ARG VIVO_DIR=/opt/vivo/home +ARG VIVO_DIR=/usr/local/vivo/home ARG TDB_FILE_MODE=direct ENV SOLR_URL=${SOLR_URL} -ENV JAVA_OPTS="${JAVA_OPTS} -Dvivo-dir=$VIVO_DIR -Dtdb:fileMode=$TDB_FILE_MODE" +ENV JAVA_OPTS="${JAVA_OPTS} -Dtdb:fileMode=$TDB_FILE_MODE" -RUN mkdir /opt/vivo -RUN mkdir /opt/vivo/home +RUN mkdir /usr/local/vivo +RUN mkdir /usr/local/vivo/home +COPY ./installer/home/target/vivo /vivo-home COPY ./installer/webapp/target/vivo.war /usr/local/tomcat/webapps/ROOT.war -COPY ./home/src/main/resources/config/default.applicationSetup.n3 /applicationSetup.n3 -COPY ./home/src/main/resources/config/default.runtime.properties /runtime.properties - COPY start.sh /start.sh EXPOSE 8080 diff --git a/README.md b/README.md index 0deb596c..3b7f6598 100644 --- a/README.md +++ b/README.md @@ -37,13 +37,13 @@ RESET_CORE=false ``` - `LOCAL_VIVO_HOME`: VIVO home directory on your host machine which will mount to volume in docker container. -- `RESET_HOME`: Convinience to reset VIVO home when starting container. **Caution** will delete local configuration, content, and configuration model. -- `RESET_CORE`: Convinience to reset VIVO Solr core when starting container. **Caution** will require complete reindex. +- `RESET_HOME`: Convinience to reset VIVO home when starting container. **Caution**, will delete local configuration, content, and configuration model. +- `RESET_CORE`: Convinience to reset VIVO Solr core when starting container. **Caution**, will require complete reindex. Build and start VIVO. ``` -mvn clean install +mvn clean package -s installer/example-settings.xml docker-compose up ``` diff --git a/docker-compose.yml b/docker-compose.yml index e6386a71..d47dcf7d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -19,7 +19,7 @@ services: context: ./ dockerfile: Dockerfile args: - - VIVO_DIR=/opt/vivo/home + - VIVO_DIR=/usr/local/vivo/home - TDB_FILE_MODE=direct - SOLR_URL=http://solr:8983/solr/vivocore environment: @@ -28,7 +28,7 @@ services: ports: - 8080:8080 volumes: - - ${LOCAL_VIVO_HOME}:/opt/vivo/home + - ${LOCAL_VIVO_HOME}:/usr/local/vivo/home networks: - vivo diff --git a/home/src/main/resources/config/default.applicationSetup.n3 b/home/src/main/resources/config/example.applicationSetup.n3 similarity index 100% rename from home/src/main/resources/config/default.applicationSetup.n3 rename to home/src/main/resources/config/example.applicationSetup.n3 diff --git a/home/src/main/resources/config/default.runtime.properties b/home/src/main/resources/config/example.runtime.properties similarity index 95% rename from home/src/main/resources/config/default.runtime.properties rename to home/src/main/resources/config/example.runtime.properties index 6b6f8bf8..e5a9da9d 100644 --- a/home/src/main/resources/config/default.runtime.properties +++ b/home/src/main/resources/config/example.runtime.properties @@ -19,6 +19,26 @@ # BASIC PROPERTIES # ----------------------------------------------------------------------------- + # + # This namespace will be used when generating URIs for objects created in the + # editor. In order to serve linked data, the default namespace must be composed + # as follows (optional elements in parentheses): + # + # scheme + server_name (+ port) (+ servlet_context) + "/individual/" + # + # For example, Cornell's default namespace is: + # + # http://vivo.cornell.edu/individual/ + # +Vitro.defaultNamespace = http://vivo.mydomain.edu/individual/ + + # + # The email address of the root user for the VIVO application. The password + # for this user is initially set to "rootPassword", but you will be asked to + # change the password the first time you log in. + # +rootUser.emailAddress = vivo_root@mydomain.edu + # # Argon2 password hashing parameters for time, memory and parallelism required to # compute a hash. diff --git a/installer/example-settings.xml b/installer/example-settings.xml new file mode 100644 index 00000000..0007c79c --- /dev/null +++ b/installer/example-settings.xml @@ -0,0 +1,21 @@ + + + + + defaults + + vivo + + /usr/local/vivo/home + /usr/local/tomcat + + wilma + + + + + + defaults + + diff --git a/installer/home/pom.xml b/installer/home/pom.xml index e57789a4..059daab3 100644 --- a/installer/home/pom.xml +++ b/installer/home/pom.xml @@ -23,24 +23,108 @@ wilma + + + package + + vivo-dir + + + ${app-name} + + + maven-assembly-plugin + + + src/main/assembly/home.xml + + false + + + + package + + single + + + + + + + + + install + + vivo-dir + + + + + maven-assembly-plugin + + + src/main/assembly/home.xml + + false + + + + package + + single + + + + + + maven-antrun-plugin + + + remove-webapp + verify + + run + + + + + + + + + + + maven-resources-plugin + + + install + install + + copy-resources + + + ${vivo-dir} + + + ${project.build.directory}/${project.build.finalName} + + + + + + + + + + + - maven-assembly-plugin + maven-install-plugin - - src/main/assembly/home.xml - - false + true - - - package - - single - - - diff --git a/installer/home/src/main/assembly/home.xml b/installer/home/src/main/assembly/home.xml index 34f447c0..6de97e21 100644 --- a/installer/home/src/main/assembly/home.xml +++ b/installer/home/src/main/assembly/home.xml @@ -4,7 +4,6 @@ home dir - tar false diff --git a/installer/pom.xml b/installer/pom.xml index 75ca4250..2c966aa8 100644 --- a/installer/pom.xml +++ b/installer/pom.xml @@ -29,6 +29,12 @@ UTF-8 + + maven-install-plugin + + true + + org.apache.maven.plugins maven-gpg-plugin @@ -142,6 +148,12 @@ + + maven-dependency-plugin + + true + + maven-resources-plugin 2.6 @@ -165,6 +177,60 @@ + + maven-war-plugin + + + default-war + + + + + + + + + install + + vivo-dir + + + + + maven-enforcer-plugin + + + enforce-properties + validate + + enforce + + + + + app-name + You must provide an application name (app-name) + + + + + + + + + + + skip + + + + org.apache.maven.plugins + maven-deploy-plugin + 2.8.2 + + true + + diff --git a/installer/webapp/pom.xml b/installer/webapp/pom.xml index 68993625..78973a34 100644 --- a/installer/webapp/pom.xml +++ b/installer/webapp/pom.xml @@ -19,9 +19,117 @@ VIVO Install Web App + + + package + + app-name + + + ${app-name} + + + org.apache.maven.plugins + maven-war-plugin + + + + true + + + false + + + org.vivoweb + vivo-webapp + war + + + + + + + src/main/webResources + true + + + + + + + + + install + + tomcat-dir + + + + + maven-antrun-plugin + + + remove-webapp + verify + + run + + + + + + + + + + + org.apache.maven.plugins + maven-dependency-plugin + + + install + install + + unpack + + + + + ${project.groupId} + ${project.artifactId} + ${project.version} + war + true + ${tomcat-dir}/webapps/${project.build.finalName} + + + + + + + + + + + ${app-name} + + maven-install-plugin + + true + + maven-clean-plugin @@ -32,75 +140,6 @@ - - org.apache.maven.plugins - maven-dependency-plugin - - - false - - - - include-home - process-resources - - copy - - - - - org.vivoweb - vivo-installer-home - ${project.version} - tar - vivo-home.tar - ${project.build.directory}/home-files - - - - - - - - org.apache.maven.plugins - maven-war-plugin - - - - true - - - false - - - org.vivoweb - vivo-webapp - war - - - - org.vivoweb - vitro-languages-webapp-core - war - - - org.vivoweb - vivo-languages-webapp-core - war - - - - - src/main/webResources - true - - - ${project.build.directory}/home-files/ - WEB-INF/resources/home-files/ - - - - diff --git a/installer/webapp/src/main/webResources/META-INF/context.xml b/installer/webapp/src/main/webResources/META-INF/context.xml index ea944913..f4af100a 100644 --- a/installer/webapp/src/main/webResources/META-INF/context.xml +++ b/installer/webapp/src/main/webResources/META-INF/context.xml @@ -1,52 +1,9 @@ - - - - - - - - - - - diff --git a/installer/webapp/src/main/webResources/WEB-INF/classes/log4j.properties b/installer/webapp/src/main/webResources/WEB-INF/classes/log4j.properties index 17c0c8ff..1d3c0c4a 100644 --- a/installer/webapp/src/main/webResources/WEB-INF/classes/log4j.properties +++ b/installer/webapp/src/main/webResources/WEB-INF/classes/log4j.properties @@ -24,7 +24,7 @@ # debug.log4j.properties exists will be used instead, if it exists, but is not stored in Subversion. log4j.appender.AllAppender=org.apache.log4j.RollingFileAppender -log4j.appender.AllAppender.File= ${catalina.base}/logs/vivo.all.log +log4j.appender.AllAppender.File=${catalina.base}/logs/${app-name}.all.log log4j.appender.AllAppender.MaxFileSize=10MB log4j.appender.AllAppender.MaxBackupIndex=10 log4j.appender.AllAppender.layout=org.apache.log4j.PatternLayout diff --git a/pom.xml b/pom.xml index dfd2c427..0665c5f2 100644 --- a/pom.xml +++ b/pom.xml @@ -56,7 +56,6 @@ - vivo ${project.version} ${basedir} yyyy-MM-dd HH:mm:ss diff --git a/start.sh b/start.sh index 90e76f60..0f9ef7d9 100644 --- a/start.sh +++ b/start.sh @@ -9,43 +9,51 @@ fi # allow easier reset home with `docker run -e RESET_HOME=true` if [[ "$RESET_HOME" = "true" ]]; then - echo 'Clearing VIVO HOME /opt/vivo/home' - rm -rf /opt/vivo/home/* + echo 'Clearing VIVO HOME /usr/local/vivo/home' + rm -rf /usr/local/vivo/home/* fi -# ensure home config directory exists -mkdir -p /opt/vivo/home/config - -# generate digest.md5 for existing VIVO home if not already exist -if [ ! -f /opt/vivo/home/digest.md5 ]; then - find /opt/vivo/home -type f | grep -E '^/opt/vivo/home/bin/|^/opt/vivo/home/config/|^/opt/vivo/home/rdf/' | xargs md5sum > /opt/vivo/home/digest.md5 - echo "Generated digest.md5 for VIVO home" - cat /opt/vivo/home/digest.md5 +# copy home bin if not exists +if [ ! -d /usr/local/vivo/home/bin ]; then + echo "Copying home bin directory to /usr/local/vivo/home/bin" + cp -r /vivo-home/bin /usr/local/vivo/home/bin fi -# only move runtime.properties first time and if it does not already exist in target home directory -if [ -f /runtime.properties ]; then - # template runtime.properties vitro.local.solr.url value to $SOLR_URL value - echo "Templating runtime.properties vitro.local.solr.url = $SOLR_URL" - sed -i "s,http://localhost:8983/solr/vivocore,$SOLR_URL,g" /runtime.properties +# copy home config if not exists +if [ ! -d /usr/local/vivo/home/config ]; then + echo "Copying home config directory to /usr/local/vivo/home/config" + cp -r /vivo-home/config /usr/local/vivo/home/config +fi - if [ ! -f /opt/vivo/home/config/runtime.properties ] +# copy home rdf if not exists +if [ ! -d /usr/local/vivo/home/rdf ]; then + echo "Copying home rdf directory to /usr/local/vivo/home/rdf" + cp -r /vivo-home/rdf /usr/local/vivo/home/rdf +fi + +# copy runtime.properties if it does not already exist in target home directory +if [ -f /usr/local/vivo/home/config/example.runtime.properties ]; then + if [ ! -f /usr/local/vivo/home/config/runtime.properties ] then - echo "First time: moving /runtime.properties to /opt/vivo/home/config/runtime.properties" - mv -n /runtime.properties /opt/vivo/home/config/runtime.properties + echo "Copying example.runtime.properties to /usr/local/vivo/home/config/runtime.properties" + cp /usr/local/vivo/home/config/example.runtime.properties /usr/local/vivo/home/config/runtime.properties + + # template runtime.properties vitro.local.solr.url value to $SOLR_URL value + echo "Templating runtime.properties vitro.local.solr.url = $SOLR_URL" + sed -i "s,http://localhost:8983/solr/vivocore,$SOLR_URL,g" /usr/local/vivo/home/config/runtime.properties else - echo "Using existing /opt/vivo/home/config/runtime.properties" + echo "Using existing /usr/local/vivo/home/config/runtime.properties" fi fi -# only move applicationSetup.n3 first time and if it does not already exist in target home directory -if [ -f /applicationSetup.n3 ]; then - if [ ! -f /opt/vivo/home/config/applicationSetup.n3 ] +# copy applicationSetup.n3 if it does not already exist in target home directory +if [ -f /usr/local/vivo/home/config/example.applicationSetup.n3 ]; then + if [ ! -f /usr/local/vivo/home/config/applicationSetup.n3 ] then - echo "First time: moving /applicationSetup.n3 to /opt/vivo/home/config/applicationSetup.n3" - mv -n /applicationSetup.n3 /opt/vivo/home/config/applicationSetup.n3 + echo "Copying example.applicationSetup.n3 to /usr/local/vivo/home/config/applicationSetup.n3" + cp /usr/local/vivo/home/config/example.applicationSetup.n3 /usr/local/vivo/home/config/applicationSetup.n3 else - echo "Using existing /opt/vivo/home/config/applicationSetup.n3" + echo "Using existing /usr/local/vivo/home/config/applicationSetup.n3" fi fi From fe09808b1b94a8f63f4cd3495f353df337dbfecc Mon Sep 17 00:00:00 2001 From: Brian Lowe Date: Tue, 30 Mar 2021 18:41:24 +0300 Subject: [PATCH 019/332] Retrieve sitemap profile URLs only after consuming result set in order to avoid transaction errors with TDB. Resolve https://jira.lyrasis.org/browse/VIVO-1910 (#231) --- .../webapp/sitemap/SiteMapServlet.java | 73 ++++++++++++------- 1 file changed, 45 insertions(+), 28 deletions(-) diff --git a/api/src/main/java/org/vivoweb/webapp/sitemap/SiteMapServlet.java b/api/src/main/java/org/vivoweb/webapp/sitemap/SiteMapServlet.java index 51fadef5..23b536d8 100644 --- a/api/src/main/java/org/vivoweb/webapp/sitemap/SiteMapServlet.java +++ b/api/src/main/java/org/vivoweb/webapp/sitemap/SiteMapServlet.java @@ -2,29 +2,40 @@ package org.vivoweb.webapp.sitemap; -import org.apache.commons.lang3.StringUtils; -import org.apache.jena.query.QuerySolution; -import edu.cornell.mannlib.vitro.webapp.controller.VitroHttpServlet; -import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; -import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder; -import edu.cornell.mannlib.vitro.webapp.rdfservice.RDFServiceException; -import edu.cornell.mannlib.vitro.webapp.rdfservice.ResultSetConsumer; -import edu.cornell.mannlib.vitro.webapp.visualization.constants.QueryConstants; -import org.apache.commons.io.IOUtils; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.List; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; + +import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.jena.query.QuerySolution; + +import edu.cornell.mannlib.vitro.webapp.controller.VitroHttpServlet; +import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; +import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder; +import edu.cornell.mannlib.vitro.webapp.rdfservice.RDFServiceException; +import edu.cornell.mannlib.vitro.webapp.rdfservice.ResultSetConsumer; +import edu.cornell.mannlib.vitro.webapp.visualization.constants.QueryConstants; @WebServlet(name = "SiteMapServlet", urlPatterns = {"/robots.txt","/sitemap.xml"}) public class SiteMapServlet extends VitroHttpServlet { + + private static final int MAX_URLS = 50000; // max URLs per sitemap + private static final Log log = LogFactory.getLog(SiteMapServlet.class); + @Override - protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + protected void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { String requestURI = request.getRequestURI(); if (requestURI != null) { @@ -60,7 +71,7 @@ public class SiteMapServlet extends VitroHttpServlet { "WHERE\n" + "{\n" + " ?person a foaf:Person .\n" + - "}\n"; + "} LIMIT " + MAX_URLS + "\n"; final VitroRequest vreq = new VitroRequest(request); final ServletOutputStream out = response.getOutputStream(); @@ -68,28 +79,33 @@ public class SiteMapServlet extends VitroHttpServlet { out.println(""); out.println(""); + List personURIs = new ArrayList(); + try { vreq.getRDFService().sparqlSelectQuery(query, new ResultSetConsumer() { @Override protected void processQuerySolution(QuerySolution qs) { - String person = qs.getResource("person").getURI(); - - String profileUrl = UrlBuilder.getIndividualProfileUrl(person, vreq); - - if (!StringUtils.isEmpty(profileUrl)) { - try { - out.println(" "); - out.println(" " + schemeAndServer + profileUrl + ""); - out.println(" weekly"); - out.println(" "); - } catch (Exception e) { - } - } + personURIs.add(qs.getResource("person").getURI()); } }); } catch (RDFServiceException rse) { + log.error(rse, rse); } + for(String person : personURIs) { + String profileUrl = UrlBuilder.getIndividualProfileUrl(person, vreq); + if (!StringUtils.isEmpty(profileUrl)) { + try { + out.println(" "); + out.println(" " + schemeAndServer + profileUrl + ""); + out.println(" weekly"); + out.println(" "); + } catch (Exception e) { + log.error(e, e); + } + } + } + out.println(""); } } @@ -104,7 +120,8 @@ public class SiteMapServlet extends VitroHttpServlet { if ("http".equalsIgnoreCase(scheme) || "https".equalsIgnoreCase(scheme)) { StringBuilder builder = new StringBuilder(); builder.append(scheme).append("://").append(serverName); - if (("http".equalsIgnoreCase(scheme) && serverPort != 80) || ("https".equalsIgnoreCase(scheme) && serverPort != 443) ) { + if (("http".equalsIgnoreCase(scheme) && serverPort != 80) + || ("https".equalsIgnoreCase(scheme) && serverPort != 443) ) { builder.append(":").append(serverPort); } From 2fa7cce5c719f41392d1cbfd6f8ea47ec1568b4e Mon Sep 17 00:00:00 2001 From: Brian Lowe Date: Tue, 30 Mar 2021 23:05:11 +0300 Subject: [PATCH 020/332] =?UTF-8?q?Move=20non-language-specific=20Vitro=20?= =?UTF-8?q?annotations=20to=20VIVO=20tbox=20firsttime=20d=E2=80=A6=20(#225?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Move non-language-specific Vitro annotations to VIVO tbox firsttime directory. * Update tbox/firsttime readme to document difference between vitroAnnotations.n3 and initialTBoxAnnotations.n3 --- .../resources/rdf/tbox/firsttime/README.md | 22 +- .../rdf/tbox/firsttime/vitroAnnotations.n3 | 7230 +++++++++++++++++ 2 files changed, 7248 insertions(+), 4 deletions(-) create mode 100644 home/src/main/resources/rdf/tbox/firsttime/vitroAnnotations.n3 diff --git a/home/src/main/resources/rdf/tbox/firsttime/README.md b/home/src/main/resources/rdf/tbox/firsttime/README.md index 2ee229c1..151cc2e7 100644 --- a/home/src/main/resources/rdf/tbox/firsttime/README.md +++ b/home/src/main/resources/rdf/tbox/firsttime/README.md @@ -1,6 +1,20 @@ -This directory contains ontology "TBox" files with class and property definitions. -These are loaded by the VIVO application when it starts for the first time, after -the initial installation or after an upgrade installation that involves changes -to these files. +This directory contains ontology "TBox" files with class and property +definitions or annotations that are intended to be editable in the VIVO GUI. + +These files are loaded by the VIVO application when it starts for the first time +and during later restarts if the contents have changed. A triple is updated +if there is no conflicting value for the same subject and predicate that was +added to the triple store via the GUI or data ingest (e.g. SPARQL UPDATE). + +The file vitroAnnotations.n3 contains triples with predicates in the vitro +namespace and objects that are not literals with language tags. + +The VIVO-languages project contains additional language-specific +vitroAnnotations.n3 files where all of the triples contain language-tagged +literals. + +VIVO-languages also provides additional annotation files +(e.g. initialTBoxAnnotations_en_US.n3) containing triples with predicates +in ontologies/voabularies outside the vitro namespace (e.g. rdfs:label). See ../filegraph/README.md for more information about "TBox" files. diff --git a/home/src/main/resources/rdf/tbox/firsttime/vitroAnnotations.n3 b/home/src/main/resources/rdf/tbox/firsttime/vitroAnnotations.n3 new file mode 100644 index 00000000..ca536ba7 --- /dev/null +++ b/home/src/main/resources/rdf/tbox/firsttime/vitroAnnotations.n3 @@ -0,0 +1,7230 @@ +@prefix bibo: . +@prefix cito: . +@prefix c4o: . +@prefix dcterms: . +@prefix event: . +@prefix fabio: . +@prefix foaf: . +@prefix geo: . +@prefix obo: . +@prefix ocrer: . +@prefix ocresd: . +@prefix ocresp: . +@prefix ocrest: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix ro: . +@prefix scires: . +@prefix skos: . +@prefix swo: . +@prefix vann: . +@prefix vcard: . +@prefix vitro: . +@prefix vitro-public: . +@prefix vivo: . +@prefix xsd: . + + + vitro:ontologyPrefixAnnot "bibo" . + + + vitro:ontologyPrefixAnnot "skos" . + + + vitro:ontologyPrefixAnnot "vivo" . + + + vitro:ontologyPrefixAnnot "ocrer" . + + + vitro:ontologyPrefixAnnot "ocresd" . + + + vitro:ontologyPrefixAnnot "ocresp" . + + + vitro:ontologyPrefixAnnot "ocresst" . + + + vitro:ontologyPrefixAnnot "geo" . + + + vitro:ontologyPrefixAnnot "event" . + + + vitro:ontologyPrefixAnnot "obo" . + + + vitro:ontologyPrefixAnnot "vcard" . + + + vitro:ontologyPrefixAnnot "foaf" . + + + vitro:ontologyPrefixAnnot "scires" . + + + vitro:ontologyPrefixAnnot "fabio" . + + + vitro:ontologyPrefixAnnot "c4o" . + + + vitro:ontologyPrefixAnnot "cito" . + + + vitro:ontologyPrefixAnnot "dcterms" . + + + vitro:ontologyPrefixAnnot "vann" . + + + vitro:ontologyPrefixAnnot "ro" . + + + vitro:ontologyPrefixAnnot "swo" . + +vivo:pmcid + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:ERO_0000071 + vitro:inClassGroup . + +bibo:Note + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:offeredBy + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "4"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +vivo:dateTimeValue + vitro:customEntryFormAnnot + "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.DateTimePropertyGenerator"^^xsd:string ; + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "5"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:selectFromExistingAnnot + "false"^^xsd:boolean . + +vivo:isCorrespondingAuthor + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "60"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:publicDescriptionAnnot + "Indicates whether the author handles correspondence about the work and is in effect the guarantor of the published work. The response is either 'true' or 'false' (without the quotes)."@en-US . + +vivo:SeminarSeries + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:ARG_0000172 + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:supplementalInformation + vitro:displayLimitAnnot + "3"^^xsd:int ; + vitro:displayRankAnnot + "40"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:chapter + vitro:displayRankAnnot + "53"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:Student + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:non_self_governing + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + + + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "4"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:assigneeFor + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "60"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean ; + vitro:inPropertyGroupAnnot + . + +geo:GDPTotalInCurrentPrices + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:Company + vitro:displayLimitAnnot + "2"^^xsd:int ; + vitro:displayRankAnnot + "2"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:NonAcademicPosition + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "4"^^xsd:int ; + vitro:extendedLinkedData + "true"^^xsd:boolean ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:other + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:sici + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:placeOfPublication + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "55"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:hasCollaborator + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:GovernmentAgency + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +skos:narrower + vitro:customEntryFormAnnot + "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.AddConceptThroughObjectPropertyGenerator"^^xsd:string ; + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "52"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean ; + vitro:inPropertyGroupAnnot + . + +vivo:affiliatedOrganization + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "40"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + + +vivo:License + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "5"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +foaf:Person + vitro:customDisplayViewAnnot + "individual--foaf-person.ftl"^^xsd:string ; + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:OBI_0000272 + vitro:inClassGroup . + +bibo:pageStart + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "12"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:countryAreaYear + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:reportId + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "20"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:hasMinLongitude + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:Manuscript + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +owl:sameAs + a owl:ObjectProperty ; + rdfs:domain owl:Thing ; + rdfs:range owl:Thing ; + rdfs:subPropertyOf owl:topObjectProperty ; + vitro:displayLimitAnnot + "5" ; + vitro:displayRankAnnot + "1"^^xsd:int ; + vitro:forceStubDeletionAnnot + "false"^^xsd:boolean ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean ; + vitro:stubObjectPropertyAnnot + "false"^^xsd:boolean . + +vivo:Presentation + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:ERO_0000007 + vitro:inClassGroup . + +vivo:SubnationalRegion + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "10"^^xsd:int ; + vitro:inClassGroup ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:territory + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:researchAreaOf + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "10"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +vivo:subjectAreaOf + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "10"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +geo:populationTotal + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:nationalityFR + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:ERO_0000006 + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:conceptAssociatedWith + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "20"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +geo:nameOfficialIT + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:reproduces + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "60"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +vivo:EmeritusFaculty + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:Video + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:IAO_0000142 + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:Issue + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "21"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vitro-public:File + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:AcademicYear + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:nameShortRU + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + + + +geo:codeISO3 + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:ERO_0000005 + vitro:inClassGroup . + +vitro:moniker + vitro:displayLimitAnnot + "3"^^xsd:int ; + vitro:displayRankAnnot + "100"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:codeFAOSTAT + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + + + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +vivo:AttendeeRole + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:extendedLinkedData + "true"^^xsd:boolean ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:NewsRelease + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + + + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:codeISO2 + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:nameOfficialFR + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:Authorship + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:extendedLinkedData + "true"^^xsd:boolean ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:ERO_0000004 + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "10"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:Workshop + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:roleContributesTo + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +bibo:pmid + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "12"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:Film + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:Consortium + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:Periodical + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:disputed + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:grantDirectCosts + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "61"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:nameListES + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:Continent + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:nameOfficialRU + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:ERO_0001255 + vitro:inClassGroup . + +vivo:features + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "60"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +vivo:featuredIn + vitro:customEntryFormAnnot + "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.AutocompleteObjectPropertyFormGenerator"^^xsd:string ; + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "50"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +vivo:ClinicalRole + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:extendedLinkedData + "true"^^xsd:boolean ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:hasCurrency + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:landArea + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:PeerReviewerRole + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:extendedLinkedData + "true"^^xsd:boolean ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:ExtensionUnit + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:distributor + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "70"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +vivo:eligibleFor + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "15"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +geo:nameCurrencyRU + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:ERO_0001254 + vitro:inClassGroup . + +bibo:affirmedBy + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +obo:ERO_0000774 + vitro:displayLimitAnnot + "2"^^xsd:int ; + vitro:displayRankAnnot + "20"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + . + +vivo:ServiceProvidingLaboratory + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:Facility + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:expirationDate + vitro:customEntryFormAnnot + "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.DateTimePropertyGenerator"^^xsd:string ; + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "19"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "false"^^xsd:boolean . + +vivo:Meeting + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:assignee + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "5"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +vivo:Blog + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:ERO_0001257 + vitro:inClassGroup . + +bibo:presents + vitro:displayRankAnnot + "200"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +obo:ERO_0000054 + vitro:displayRankAnnot + "120"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + . + +geo:hasShortName + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:PopulatedPlace + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:FacultyAdministrativePosition + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "1"^^xsd:int ; + vitro:extendedLinkedData + "true"^^xsd:boolean ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:Equipment + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:locator + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:Article + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:Abstract + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:Position + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:extendedLinkedData + "true"^^xsd:boolean ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:ERO_0001256 + vitro:inClassGroup . + +geo:GDPYear + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:degree + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +vivo:Laboratory + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:localAwardId + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "72"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:ARG_0000197 + vitro:inPropertyGroupAnnot + ; + vitro:displayRankAnnot + "40"^^xsd:int ; + vitro:displayLimitAnnot + "2"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + . + +vivo:iclCode + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "5"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:presentedAt + vitro:displayRankAnnot + "120"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +geo:agriculturalArea + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:publisherOf + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "25"^^xsd:int ; + vitro:customEntryFormAnnot + "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.AutocompleteObjectPropertyFormGenerator"^^xsd:string ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +obo:ERO_0001259 + vitro:inClassGroup . + +vivo:TeacherRole + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:extendedLinkedData + "true"^^xsd:boolean ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:population + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:Dataset + vitro:inClassGroup ; + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:Contract + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:Hearing + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:ERO_0001258 + vitro:inClassGroup . + +bibo:Brief + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:DateTimeValue + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:extendedLinkedData + "true"^^xsd:boolean ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:reproducedIn + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "60"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +geo:hasListName + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:asin + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:outreachOverview + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "10"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:editing + "HTML"^^xsd:string . + +obo:ERO_0000031 + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:Librarian + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:ERO_0000050 + vitro:displayLimitAnnot + "2"^^xsd:int ; + vitro:displayRankAnnot + "76"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + . + + +geo:nameCurrencyFR + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:hasGoverningAuthority + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "8"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +bibo:AcademicArticle + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:geographical_region + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:doi + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "3"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +obo:ERO_0000070 ## inverse of ERO_0000031 +# vitro:displayLimitAnnot +# "2"^^xsd:int ; +# vitro:displayRankAnnot +# "15"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . +# vitro:inPropertyGroupAnnot +# ; +# vitro:selectFromExistingAnnot +# "true"^^xsd:boolean ; +# vitro:offerCreateNewOptionAnnot +# "true"^^xsd:boolean . + +bibo:shortDescription + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:isAdministeredBy + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +bibo:volume + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "20"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:abstract + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:editing + "HTML"^^xsd:string . + +vivo:PrincipalInvestigatorRole + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:extendedLinkedData + "true"^^xsd:boolean ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:School + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:ERO_0000020 + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:nameShortFR + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:codeFAOTERM + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:sponsoredBy + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "20"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +vivo:Review + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + + + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "19"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:courseCredits + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "50"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + . + +bibo:issue + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "21"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:University + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:number + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "30"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:RO_0001025 + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean . + +vivo:Location + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + + + vitro:ontologyPrefixAnnot "ocresd"^^xsd:string . + +vivo:WorkingPaper + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:hasStatistics + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:populationUnit + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:teachingOverview + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "10"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:editing + "HTML"^^xsd:string . + +vivo:rank + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:issn + vitro:displayLimitAnnot + "2"^^xsd:int ; + vitro:displayRankAnnot + "1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:supports + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +obo:RO_0000057 + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:patentNumber + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:Journal + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:Newspaper + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:contactInformation + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "25"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:nameListEN + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:overview + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "10"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:editing + "HTML"^^xsd:string . + +vivo:description + vitro:displayLimitAnnot + "3"^^xsd:int ; + vitro:displayRankAnnot + "1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:hasCode + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:RO_0000056 + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + + + + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "3"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:Award + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:grantSubcontractedThrough + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "15"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean . + +obo:ERO_0001260 + vitro:inClassGroup . + +bibo:recipient + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +vivo:Building + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:EventSeries + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:hasSubjectArea + vitro:customEntryFormAnnot + "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.AddAssociatedConceptGenerator"^^xsd:string ; + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "20"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +obo:ERO_0000398 + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +vivo:geographicFocusOf + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "70"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +vivo:freetextKeyword + vitro:displayLimitAnnot + "10"^^xsd:int ; + vitro:displayRankAnnot + "140"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + . + +vivo:Credential + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "5"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:identifier + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:ERO_0000044 + vitro:displayLimitAnnot + "2"^^xsd:int ; + vitro:displayRankAnnot + "70"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + . + +obo:ERO_0001261 + vitro:inClassGroup . + +obo:ERO_0000775 + vitro:displayLimitAnnot + "2"^^xsd:int ; + vitro:displayRankAnnot + "21"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + . + +bibo:reviewOf + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "60"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +obo:ERO_0001263 + vitro:inClassGroup . + +vivo:informationResourceSupportedBy + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +# duplicate +# obo:ERO_0000397 +# vitro:displayLimitAnnot +# "61"^^xsd:int ; +# vitro:hiddenFromDisplayBelowRoleLevelAnnot +# ; +# vitro:offerCreateNewOptionAnnot +# "true"^^xsd:boolean ; +# vitro:prohibitedFromUpdateBelowRoleLevelAnnot +# ; +# vitro:selectFromExistingAnnot +# "true"^^xsd:boolean ; +# vitro:inPropertyGroupAnnot . + +vivo:ConferencePaper + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:landAreaYear + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:Website + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:nationalityIT + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:ARG_0000001 + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:CollectedDocument + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:Relationship + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:ERO_0000045 + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "30"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + . + +vivo:Division + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:Newsletter + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:ERO_0001262 + vitro:inClassGroup . + +obo:ERO_0000396 + vitro:inClassGroup . + +vivo:reviewedIn + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "60"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +vivo:contributingRole + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "15"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +vivo:Team + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:ClinicalOrganization + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:Program + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:Hospital + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:ThesisDegree + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:Center + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:countryArea + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:DateTimeValuePrecision + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:GraduateAdvisingRelationship + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:RO_0000052 + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:OBI_0000299 + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:proceedingsOf + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "30"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +bibo:Thesis + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:ERO_0000046 + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "32"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:inPropertyGroupAnnot + . + +obo:ERO_0000395 + vitro:inClassGroup . + +geo:isSuccessorOf + vitro:displayRankAnnot + "92"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean ; + vitro:inPropertyGroupAnnot + . + +geo:agriculturalAreaUnit + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:dateTimePrecision + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "5"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +bibo:Map + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:self_governing + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:hasPrerequisite + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "40"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:inPropertyGroupAnnot + . + +vivo:Database + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:validIn + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "2"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean ; + vitro:inPropertyGroupAnnot + . + +obo:IAO_0000221 + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:Conference + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:Department + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:RO_0002234 + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:F1000Link + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "6"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:BlogPosting + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:Collection + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:DocumentStatus + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:PrivateCompany + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:ERO_0001520 + vitro:displayRankAnnot + "90"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:offerCreateNewOptionAnnot "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + . + + +vivo:AcademicDegree + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:Legislation + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:ReviewerRole + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:extendedLinkedData + "true"^^xsd:boolean ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:StateOrProvince + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:pageEnd + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "13"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:AudioDocument + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:RO_0002233 + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:isPredecessorOf + vitro:displayRankAnnot + "94"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean ; + vitro:inPropertyGroupAnnot + . + +vivo:EmeritusLibrarian + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:LegalDecision + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:ERO_0000029 + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "50"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + + + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +geo:nameListIT + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:cites + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "4"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +bibo:AudioVisualDocument + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:GeographicRegion + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:Country + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:Speech + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "5"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:translationOf + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "52"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +vitro-public:FileByteStream + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:hasBorderWith + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean ; + vitro:displayRankAnnot + "69"^^xsd:int ; + vitro:inPropertyGroupAnnot + . + +bibo:performer + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +bibo:PersonalCommunicationDocument + vitro:displayLimitAnnot + "2"^^xsd:int ; + vitro:displayRankAnnot + "15"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:FundingOrganization + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:Publisher + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:StudentOrganization + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:OBI_0000312 + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + . + +# note that this applies to grants only; see hasOutputContext for obo:RO_0002234 in /rdf/display/everytime/propertyConfig.n3 +vivo:supportedInformationResource + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +geo:nameListRU + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:validUntil + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:hasMember + vitro:displayRankAnnot + "65"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean ; + vitro:inPropertyGroupAnnot + . + + +bibo:eissn + vitro:displayRankAnnot + "2"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:nameOfficialEN + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:Proceedings + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:OBI_0000293 + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "105"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean . + +vivo:publisher + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "18"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +vivo:Institute + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +foaf:Organization + vitro:customDisplayViewAnnot + "individual--foaf-organization.ftl"^^xsd:string ; + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:nationalityZH + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:Postdoc + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:seatingCapacity + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "50"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:ConferencePoster + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:middleName + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "3"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:WorkshopSeries + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:agriculturalAreaTotal + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +event:Event + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:hasMaxLongitude + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:nationalityEN + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:hasPredecessorOrganization + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "60"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +vivo:termType + vitro:displayRankAnnot + "1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:Image + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:AwardReceipt + vitro:extendedLinkedData + "true"^^xsd:boolean ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:FacultyMentoringRelationship + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:Bill + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:CoPrincipalInvestigatorRole + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:extendedLinkedData + "true"^^xsd:boolean ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:licenseNumber + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "4"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:FacultyPosition + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "2"^^xsd:int ; + vitro:extendedLinkedData + "true"^^xsd:boolean ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:RO_0001000 + ## note -- has a "some values from" restriction on Organism +# vitro:displayLimitAnnot +# "5"^^xsd:int ; +# vitro:displayRankAnnot +# "50"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . +# vitro:inPropertyGroupAnnot +# ; +# vitro:selectFromExistingAnnot +# "true"^^xsd:boolean ; +# vitro:offerCreateNewOptionAnnot +# "true"^^xsd:boolean . + + +bibo:gtin14 + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "80"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:AdvisingRelationship + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:extendedLinkedData + "true"^^xsd:boolean ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:entryTerm + vitro:displayRankAnnot + "40"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + + + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "5"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:ERO_0001521 + vitro:displayRankAnnot + "20"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:offerCreateNewOptionAnnot "true"^^xsd:boolean ; + vitro:inPropertyGroupAnnot + . + + +vivo:nihmsid + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:AcademicTerm + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:section + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:CaseStudy + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:populationYear + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:IAO_0000136 + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:nationalityES + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:interviewer + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +geo:codeUNDP + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +foaf: + vitro:ontologyPrefixAnnot + "foaf"^^xsd:string . + +geo:hasMaxLatitude + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:DateTimeInterval + vitro:displayLimitAnnot + "4"^^xsd:int ; + vitro:displayRankAnnot + "4"^^xsd:int ; + vitro:extendedLinkedData + "true"^^xsd:boolean ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:Patent + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:Screenplay + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:nameOfficialAR + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:validSince + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:isInGroup + vitro:displayRankAnnot + "67"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean ; + vitro:inPropertyGroupAnnot + . + + +vivo:EditorialArticle + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + + + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "4"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:orcidId + vitro:customEntryFormAnnot + "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.AddOrcidIdToPersonGenerator"^^xsd:string ; + vitro:displayLimitAnnot + "2"^^xsd:int ; + vitro:displayRankAnnot + "10"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:hasFacility + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "90"^^xsd:int ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +geo:nameListFR + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + + + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "4"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:organization + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:Slideshow + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:equipmentFor + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + + +geo:codeGAUL + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:geographicFocus + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "70"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +bibo:prefixName + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "32"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:nameShortAR + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + + + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "5"^^xsd:int ; + vitro:inClassGroup + ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:AcademicDepartment + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:researcherId + vitro:displayLimitAnnot + "2"^^xsd:int ; + vitro:displayRankAnnot + "20"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:hasPublicationVenue + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "60"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +bibo:Excerpt + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:NonFacultyAcademic + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:annotates + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +vivo:Score + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:Grant + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:nameOfficialZH + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:reversedBy + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +vivo:majorField + vitro:displayLimitAnnot + "3"^^xsd:int ; + vitro:displayRankAnnot + "50"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:GDPNotes + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:nameOfficialES + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:upc + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:FacultyMember + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:hideFromDisplay + vitro:displayRankAnnot + "100"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:ERO_0000481 + vitro:displayLimitAnnot + "3"^^xsd:int ; + vitro:displayRankAnnot + "85"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:inPropertyGroupAnnot + . + +obo:ERO_0000016 + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + + + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:Competition + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:ERO_0000482 # deprecated +# vitro:displayLimitAnnot +# "5"^^xsd:int ; +# vitro:displayRankAnnot +# "92"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . +# vitro:selectFromExistingAnnot +# "true"^^xsd:boolean ; +# vitro:offerCreateNewOptionAnnot +# "true"^^xsd:boolean ; +# vitro:inPropertyGroupAnnot +# . + +vivo:ResearchProposal + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:director + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +vivo:Course + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:Magazine + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:LibrarianPosition + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "3"^^xsd:int ; + vitro:extendedLinkedData + "true"^^xsd:boolean ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:nameShortIT + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:Internship + vitro:displayLimitAnnot + "10"^^xsd:int ; + vitro:displayRankAnnot + "10"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:ERO_0000460 + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "90"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:inPropertyGroupAnnot + . + +vivo:EditorRole + vitro:displayLimitAnnot + "2"^^xsd:int ; + vitro:displayRankAnnot + "2"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:lccn + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "15"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +foaf:Group + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:Chapter + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + + + vitro:ontologyPrefixAnnot + "vcard"^^xsd:string . + +vivo:Committee + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:Standard + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:supportedBy + vitro:displayLimitAnnot + "5"^^xsd:int . + +bibo:LegalDocument + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:CoreLaboratory + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + + + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +skos:broader + vitro:customEntryFormAnnot + "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.AddConceptThroughObjectPropertyGenerator"^^xsd:string ; + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "50"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +vivo:LeaderRole + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:extendedLinkedData + "true"^^xsd:boolean ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:Webpage + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:InvestigatorRole + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:extendedLinkedData + "true"^^xsd:boolean ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:BookSection + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:departmentOrSchool + vitro:displayLimitAnnot + "3"^^xsd:int ; + vitro:displayRankAnnot + "40"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:court + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +geo:countryAreaNotes + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:Interview + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + + + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "5"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:Museum + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:hasAssociatedConcept + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "20"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +bibo:LegalCaseDocument + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:nameCurrencyEN + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:offers + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "4"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +bibo:translator + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "14"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +obo:ERO_0000015 + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:distributesFundingFrom + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "64"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +bibo:citedBy + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "4"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +bibo:Manual + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + + + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + + + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "5"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:termLabel + vitro:displayRankAnnot + "1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +skos:related + vitro:customEntryFormAnnot + "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.AddConceptThroughObjectPropertyGenerator"^^xsd:string ; + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "54"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean ; + vitro:inPropertyGroupAnnot + . + +vivo:abbreviation + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "5"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + . + +obo:ERO_0000014 + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:UndergraduateAdvisingRelationship + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:NonAcademic + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:PostdocOrFellowAdvisingRelationship + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:governingAuthorityFor + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "70"^^xsd:int ; + vitro:inPropertyGroupAnnot + . + +geo:agriculturalAreaYear + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + + +vivo:providesFundingThrough + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "65"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +vivo:GeographicLocation + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:nameCurrencyAR + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:end + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "99"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "false"^^xsd:boolean . + +bibo:interviewee + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +vivo:researchOverview + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "10"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:editing + "HTML"^^xsd:string . + +obo:ERO_0000390 + vitro:displayLimitAnnot + "3"^^xsd:int ; + vitro:displayRankAnnot + "5"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:inPropertyGroupAnnot + . + +skos:Concept + vitro:customDisplayViewAnnot + "individual--skos-concept.ftl"^^xsd:string ; + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "35"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:ResearcherRole + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:extendedLinkedData + "true"^^xsd:boolean ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:transcriptOf + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +vivo:facilityFor + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:issuer + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +vivo:start + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "80"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "false"^^xsd:boolean . + + + vitro:ontologyPrefixAnnot + "vitro-public"^^xsd:string . + +geo:group + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:ERO_0000595 + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:oclcnum + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "4"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:isbn10 + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "10"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:MedicalResidency + vitro:displayLimitAnnot + "10"^^xsd:int ; + vitro:displayRankAnnot + "10"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:nameShortEN + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:RO_0003001 + vitro:displayLimitAnnot + "2"^^xsd:int ; + vitro:displayRankAnnot + "60"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean . + + + + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "5"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +geo:nameCurrencyIT + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:ERO_0000391 + vitro:inClassGroup . + +vivo:MemberRole + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:extendedLinkedData + "true"^^xsd:boolean ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo: + vitro:ontologyPrefixAnnot + "bibo"^^xsd:string . + + + vitro:ontologyPrefixAnnot "ocrer"^^xsd:string . + +geo:special_group + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:countryAreaUnit + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:hasSuccessorOrganization + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "61"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +obo:RO_0003000 + vitro:displayLimitAnnot + "2"^^xsd:int ; + vitro:displayRankAnnot + "63"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean . + + +vivo:prerequisiteFor + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "42"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:inPropertyGroupAnnot + . + +bibo:isbn13 + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "11"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:cclCode + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "5"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:hasNationality + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:InvitedTalk + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:uri + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "30"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:ERO_0000392 + vitro:inClassGroup . + + +vivo:translatorOf + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "70"^^xsd:int ; + vitro:inPropertyGroupAnnot + ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean . + +bibo:Document + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:ERO_0000394 + vitro:inClassGroup . + +geo:nameCurrencyES + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:countryAreaTotal + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:ReferenceSource + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:hasFundingVehicle + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "35"^^xsd:int ; + vitro:inPropertyGroupAnnot + ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:offerCreateNewAnnot + "true"^^xsd:boolean ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +geo:nationalityRU + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:eanucc13 + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:EditedBook + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:GeopoliticalEntity + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:ERO_0000393 + vitro:inClassGroup . + +vivo:sponsors + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "71"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +vivo:Room + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:eRACommonsId + vitro:displayRankAnnot + "15"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:ERO_0000034 +# vitro:displayLimitAnnot +# "2"^^xsd:int ; +# vitro:displayRankAnnot +# "73"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . +# vitro:inPropertyGroupAnnot +# ; +# vitro:selectFromExistingAnnot +# "true"^^xsd:boolean ; +# vitro:offerCreateNewOptionAnnot +# "true"^^xsd:boolean . + + +geo:area + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:codeCurrency + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:hasTranslation + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "51"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +obo:BFO_0000054 + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + + +vivo:College + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:nameShortES + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:dateIssued + vitro:customEntryFormAnnot + "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.DateTimePropertyGenerator"^^xsd:string ; + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "19"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "false"^^xsd:boolean . + +geo:GDP + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:BFO_0000055 + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:nationalityAR + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:CourtReporter + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:PresenterRole + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:extendedLinkedData + "true"^^xsd:boolean ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:PrimaryPosition + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "500"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:ERO_0000033 + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "62"^^xsd:int ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:inPropertyGroupAnnot + . + +obo:ERO_0000397 + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "61"^^xsd:int ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + . + +vivo:identifier + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:populationNotes + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:Campus + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:Slide + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:totalAwardAmount + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "60"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:Code + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:RO_0002353 + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:Library + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:Performance + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + + + vitro:displayLimitAnnot + "2"^^xsd:int ; + vitro:displayRankAnnot + "75"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean . + +obo:ERO_0000424 + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "15"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean . + +obo:BFO_0000050 + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:Letter + vitro:displayLimitAnnot + "3"^^xsd:int ; + vitro:displayRankAnnot + "15"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:nameCurrencyZH + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:distributes + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "70"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +obo:OBI_0000304 + vitro:displayLimitAnnot + "2"^^xsd:int ; + vitro:displayRankAnnot + "73"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean . + + + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "5"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +foaf:Agent + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:BFO_0000051 + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:GraduateStudent + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:publicationVenueFor + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "6"^^xsd:int ; + vitro:inPropertyGroupAnnot + ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + + + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "5"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:codeAGROVOC + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + + + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +obo:ERO_0000037 + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean ; + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "22"^^xsd:int . + +vivo:ResearchOrganization + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + + + vitro:displayLimitAnnot + "6"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:Translation + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:landAreaTotal + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:hrJobTitle + vitro:displayLimitAnnot + "3"^^xsd:int ; + vitro:displayRankAnnot + "9"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:hasResearchArea + vitro:customEntryFormAnnot + "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.AddAssociatedConceptGenerator"^^xsd:string ; + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "10"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +geo:hasCoordinate + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + + + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:Report + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:agriculturalAreaNotes + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:nameListZH + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + + + vitro:displayRankAnnot + "20"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:nameListAR + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:dateTimeInterval + vitro:customEntryFormAnnot + "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.DateTimeIntervalFormGenerator"^^xsd:string ; + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "9"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +geo:economic_region + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +rdfs:isDefinedBy + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +vivo:EmeritusProfessor + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:subcontractsGrant + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "63"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +vivo:ConferenceSeries + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + + + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +vivo:UndergraduateStudent + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:Quote + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:NonFacultyAcademicPosition + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "5"^^xsd:int ; + vitro:extendedLinkedData + "true"^^xsd:boolean ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:landAreaUnit + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:dateFiled + vitro:customEntryFormAnnot + "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.DateTimePropertyGenerator"^^xsd:string ; + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "19"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:individualSortDirectionAnnot + "desc"^^xsd:string ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "false"^^xsd:boolean . + +vcard:givenName + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "1"^^xsd:int ; + vitro:inPropertyGroupAnnot + . + +vivo:OutreachProviderRole + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:extendedLinkedData + "true"^^xsd:boolean ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:Series + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:Foundation + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:subsequentLegalDecision + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +bibo:coden + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:OrganizerRole + vitro:displayLimitAnnot + "10"^^xsd:int ; + vitro:displayRankAnnot + "4"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:Exhibit + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:hasMinLatitude + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:County + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:Certificate + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "5"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:scopusId + vitro:displayLimitAnnot + "2"^^xsd:int ; + vitro:displayRankAnnot + "30"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:Statute + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + + +vivo:fundingVehicleFor + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "58"^^xsd:int ; + vitro:inPropertyGroupAnnot + ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:offerCreateNewAnnot + "true"^^xsd:boolean ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +bibo:DocumentPart + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:Book + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:Project + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:PostdoctoralTraining + vitro:displayLimitAnnot + "10"^^xsd:int ; + vitro:displayRankAnnot + "10"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:ERO_0000918 + vitro:displayLimitAnnot + "2"^^xsd:int ; + vitro:displayRankAnnot + "20"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean . + +obo:OBI_0000417 + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "95"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean . + +vivo:preferredDisplayOrder + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:sponsorAwardId + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "70"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:ERO_0000543 + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "80"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean . + +bibo:numPages + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "11"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vcard:familyName + vitro:displayLimitAnnot + "1"^^xsd:int ; + vitro:displayRankAnnot + "2"^^xsd:int ; + vitro:inPropertyGroupAnnot + . + +vivo:Association + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:PostdocPosition + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "6"^^xsd:int ; + vitro:extendedLinkedData + "true"^^xsd:boolean ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:degreeCandidacy + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "25"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +geo:landAreaNotes + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:hasOfficialName + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:codeDBPediaID + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:hasProceedings + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "30"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +geo:GDPUnit + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +bibo:edition + vitro:displayLimitAnnot + "3"^^xsd:int ; + vitro:displayRankAnnot + "70"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:nameShortZH + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:RO_0001015 + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + + + vitro:ontologyPrefixAnnot + "vivo"^^xsd:string . + +vivo:dateTime + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "5"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:codeUN + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +obo:ERO_0000919 + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "95"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean . + +bibo:status + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "16"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + +vivo:Catalog + vitro:displayLimitAnnot + "-1"^^xsd:int ; + vitro:displayRankAnnot + "-1"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inClassGroup ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +geo:HDINotes + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + . + +geo:HDITotal + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + . + +geo:HDIYear + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + . + +geo:hasMaxLatitude + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + . + +geo:hasMinLatitude + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + . + +geo:hasMinLongitude + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + . + +geo:hasMaxLongitude + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + . + +geo:validSince + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + . + +geo:validUntil + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + . + + +vivo:hasEquipment + vitro:displayRankAnnot + "80"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean . + + + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "4"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + + + vitro:displayLimitAnnot + "5"^^xsd:int ; + vitro:displayRankAnnot + "4"^^xsd:int ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:hiddenFromPublishBelowRoleLevelAnnot + ; + vitro:inPropertyGroupAnnot + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + ; + vitro:selectFromExistingAnnot + "true"^^xsd:boolean . + + + vitro:inClassGroup ; ## classgroup label is research + vitro:displayRankAnnot + "1"^^xsd:int . + + + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + + + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:relates + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:relatedBy + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:assigns + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + +vivo:assignedBy + vitro:hiddenFromDisplayBelowRoleLevelAnnot + ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot + . + + + From d72472824ae73877fce8a00093a23f978742a366 Mon Sep 17 00:00:00 2001 From: Brian Lowe Date: Wed, 21 Apr 2021 17:19:44 +0300 Subject: [PATCH 021/332] Replace hardcoded en locale with current locale in lang attributes --- .../main/webapp/themes/tenderfoot/templates/page/page-home.ftl | 2 +- .../src/main/webapp/themes/tenderfoot/templates/page/page.ftl | 2 +- webapp/src/main/webapp/themes/wilma/templates/page-home.ftl | 2 +- webapp/src/main/webapp/themes/wilma/templates/page.ftl | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/webapp/src/main/webapp/themes/tenderfoot/templates/page/page-home.ftl b/webapp/src/main/webapp/themes/tenderfoot/templates/page/page-home.ftl index e2aa1b1c..d23c704d 100644 --- a/webapp/src/main/webapp/themes/tenderfoot/templates/page/page-home.ftl +++ b/webapp/src/main/webapp/themes/tenderfoot/templates/page/page-home.ftl @@ -15,7 +15,7 @@ <#import "lib-home-page.ftl" as lh> - + <#include "head.ftl"> <#if geoFocusMapsEnabled > diff --git a/webapp/src/main/webapp/themes/tenderfoot/templates/page/page.ftl b/webapp/src/main/webapp/themes/tenderfoot/templates/page/page.ftl index 648b7bf2..92897492 100644 --- a/webapp/src/main/webapp/themes/tenderfoot/templates/page/page.ftl +++ b/webapp/src/main/webapp/themes/tenderfoot/templates/page/page.ftl @@ -3,7 +3,7 @@ <#import "lib-list.ftl" as l> - + <#include "head.ftl"> diff --git a/webapp/src/main/webapp/themes/wilma/templates/page-home.ftl b/webapp/src/main/webapp/themes/wilma/templates/page-home.ftl index 8db75bb7..a9783906 100644 --- a/webapp/src/main/webapp/themes/wilma/templates/page-home.ftl +++ b/webapp/src/main/webapp/themes/wilma/templates/page-home.ftl @@ -15,7 +15,7 @@ <#import "lib-home-page.ftl" as lh> - + <#include "head.ftl"> <#if geoFocusMapsEnabled > diff --git a/webapp/src/main/webapp/themes/wilma/templates/page.ftl b/webapp/src/main/webapp/themes/wilma/templates/page.ftl index f1a2d5b2..7ab1fc89 100644 --- a/webapp/src/main/webapp/themes/wilma/templates/page.ftl +++ b/webapp/src/main/webapp/themes/wilma/templates/page.ftl @@ -3,7 +3,7 @@ <#import "lib-list.ftl" as l> - + <#include "head.ftl"> From 2be59bbe0254dc1475b8474108f48a709b064504 Mon Sep 17 00:00:00 2001 From: Brian Lowe Date: Wed, 21 Apr 2021 18:14:16 +0300 Subject: [PATCH 022/332] Fix issues preventing rendering and functioning of temporal graph. Resolve https://jira.lyrasis.org/browse/VIVO-1978 (#235) --- .../main/webapp/js/visualization/entitycomparison/util.js | 4 ++-- .../entitycomparison/entityComparisonSetup.ftl | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/webapp/src/main/webapp/js/visualization/entitycomparison/util.js b/webapp/src/main/webapp/js/visualization/entitycomparison/util.js index 1e081393..0e754460 100644 --- a/webapp/src/main/webapp/js/visualization/entitycomparison/util.js +++ b/webapp/src/main/webapp/js/visualization/entitycomparison/util.js @@ -1069,7 +1069,7 @@ function prepareTableForDataTablePagination(jsonData, dataTableParams){ // console.log(processJSONData.currentEntityLevel); - if (processJSONData.currentEntityLevel.toUpperCase() === "ORGANIZATIONS AND PEOPLE") { + if (processJSONData.currentEntityLevel === i18nStringsGuiEvents.organizationsAndPeople) { $.fn.dataTableExt.afnFiltering.push(DatatableCustomFilters.peopleOrOrganizations); } @@ -1193,7 +1193,7 @@ function prepareTableForDataTablePagination(jsonData, dataTableParams){ */ function reloadDataTablePagination(preselectedEntityURIs, jsonData){ - if (processJSONData.currentEntityLevel.toUpperCase() === "ORGANIZATIONS AND PEOPLE") { + if (processJSONData.currentEntityLevel === i18nStringsGuiEvents.organizationsAndPeople) { /* * This will make sure that duplicate filters are not added. diff --git a/webapp/src/main/webapp/templates/freemarker/visualization/entitycomparison/entityComparisonSetup.ftl b/webapp/src/main/webapp/templates/freemarker/visualization/entitycomparison/entityComparisonSetup.ftl index fd4b7b4b..fac30ed6 100644 --- a/webapp/src/main/webapp/templates/freemarker/visualization/entitycomparison/entityComparisonSetup.ftl +++ b/webapp/src/main/webapp/templates/freemarker/visualization/entitycomparison/entityComparisonSetup.ftl @@ -34,7 +34,7 @@ <#assign temporalGraphDownloadCSVCommonURL = '${urls.base}${dataVisualizationURLRoot}?uri=${organizationURI}&labelField=label'> -<#assign publicationParameter = { "name": "${i18n().publication?js_string}", +<#assign publicationParameter = { "name": "publication", "pluralName": "${i18n().publications?js_string}", "verbName": "${i18n().published?js_string}", "dropDownText": "${i18n().by_publications?js_string}", @@ -44,7 +44,7 @@ "csvLink": "${temporalGraphDownloadCSVCommonURL}&vis=entity_comparison", "value": "${i18n().publications?js_string}" }> -<#assign grantParameter = { "name": "${i18n().grant?js_string}", +<#assign grantParameter = { "name": "grant", "pluralName": "${i18n().grants?js_string}", "verbName": "${i18n().granted?js_string}", "dropDownText": "${i18n().by_grants?js_string}", @@ -74,7 +74,7 @@ var activitiesLabel = { plural: '${i18n().activities?js_string}' }; var i18nStringsGuiEvents = { - temporalGraphCapped: '${i18n().temporal_graph_capitalized?js_string?js_string}, + temporalGraphCapped: '${i18n().temporal_graph_capitalized?js_string?js_string}', temporalGraphLower: '${i18n().temporal_graph?js_string?js_string}', viewString: '${i18n().view?js_string}', entityMaxNote: '${i18n().max_entity_note?js_string}', From 250566446fd287dd74a4db3316f844f71f50cf32 Mon Sep 17 00:00:00 2001 From: Brian Lowe Date: Wed, 21 Apr 2021 19:53:35 +0300 Subject: [PATCH 023/332] Replace hardcoded en locale with current locale in lang attributes (#237) --- .../main/webapp/themes/tenderfoot/templates/page/page-home.ftl | 2 +- .../src/main/webapp/themes/tenderfoot/templates/page/page.ftl | 2 +- webapp/src/main/webapp/themes/wilma/templates/page-home.ftl | 2 +- webapp/src/main/webapp/themes/wilma/templates/page.ftl | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/webapp/src/main/webapp/themes/tenderfoot/templates/page/page-home.ftl b/webapp/src/main/webapp/themes/tenderfoot/templates/page/page-home.ftl index e2aa1b1c..d23c704d 100644 --- a/webapp/src/main/webapp/themes/tenderfoot/templates/page/page-home.ftl +++ b/webapp/src/main/webapp/themes/tenderfoot/templates/page/page-home.ftl @@ -15,7 +15,7 @@ <#import "lib-home-page.ftl" as lh> - + <#include "head.ftl"> <#if geoFocusMapsEnabled > diff --git a/webapp/src/main/webapp/themes/tenderfoot/templates/page/page.ftl b/webapp/src/main/webapp/themes/tenderfoot/templates/page/page.ftl index 648b7bf2..92897492 100644 --- a/webapp/src/main/webapp/themes/tenderfoot/templates/page/page.ftl +++ b/webapp/src/main/webapp/themes/tenderfoot/templates/page/page.ftl @@ -3,7 +3,7 @@ <#import "lib-list.ftl" as l> - + <#include "head.ftl"> diff --git a/webapp/src/main/webapp/themes/wilma/templates/page-home.ftl b/webapp/src/main/webapp/themes/wilma/templates/page-home.ftl index 8db75bb7..a9783906 100644 --- a/webapp/src/main/webapp/themes/wilma/templates/page-home.ftl +++ b/webapp/src/main/webapp/themes/wilma/templates/page-home.ftl @@ -15,7 +15,7 @@ <#import "lib-home-page.ftl" as lh> - + <#include "head.ftl"> <#if geoFocusMapsEnabled > diff --git a/webapp/src/main/webapp/themes/wilma/templates/page.ftl b/webapp/src/main/webapp/themes/wilma/templates/page.ftl index f1a2d5b2..7ab1fc89 100644 --- a/webapp/src/main/webapp/themes/wilma/templates/page.ftl +++ b/webapp/src/main/webapp/themes/wilma/templates/page.ftl @@ -3,7 +3,7 @@ <#import "lib-list.ftl" as l> - + <#include "head.ftl"> From 29728b3b408516649d9763d72af010b08015a482 Mon Sep 17 00:00:00 2001 From: Brian Lowe Date: Wed, 21 Apr 2021 19:54:23 +0300 Subject: [PATCH 024/332] =?UTF-8?q?Add=20additional=20URI=20finder=20that?= =?UTF-8?q?=20will=20reindex=20a=20person=20if=20its=20associate=E2=80=A6?= =?UTF-8?q?=20(#227)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add additional URI finder that will reindex a person if its associated title or email resource is deleted altogether. * Remove redundant identical query; eliminate unused prefix. --- .../everytime/searchIndexerConfigurationVivo.n3 | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/home/src/main/resources/rdf/display/everytime/searchIndexerConfigurationVivo.n3 b/home/src/main/resources/rdf/display/everytime/searchIndexerConfigurationVivo.n3 index 85abdeae..bdc8a4fa 100644 --- a/home/src/main/resources/rdf/display/everytime/searchIndexerConfigurationVivo.n3 +++ b/home/src/main/resources/rdf/display/everytime/searchIndexerConfigurationVivo.n3 @@ -117,6 +117,22 @@ } """ . +# URI finder that will find the relevant person to update when the +# property linking to the email or preferred title resource is removed +:vivoUriFinder_VCard_2 + a searchIndex:indexing.IndexingUriFinder , + searchIndex:indexing.SelectQueryUriFinder ; + rdfs:label "Preferred title / email person URI finder #2" ; + :hasPredicateRestriction "http://www.w3.org/2006/vcard/ns#hasTitle" ; + :hasPredicateRestriction "http://www.w3.org/2006/vcard/ns#hasEmail" ; + :hasSelectQuery """ + PREFIX obo: + SELECT ?uri + WHERE { + ?uri obo:ARG_2000028 ?subject . + } + """ . + :vivodocumentModifier_PreferredTitle a searchIndex:documentBuilding.SelectQueryDocumentModifier , searchIndex:documentBuilding.DocumentModifier ; From f4d187a60176737c1d137e4e80609ca565932aa7 Mon Sep 17 00:00:00 2001 From: Brian Lowe Date: Wed, 21 Apr 2021 20:38:32 +0300 Subject: [PATCH 025/332] Allow 'create new' for vivo:governingAuthorityFor. Resolve https://jira.lyrasis.org/browse/VIVO-1820 (#234) --- .../src/main/resources/rdf/tbox/firsttime/vitroAnnotations.n3 | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/home/src/main/resources/rdf/tbox/firsttime/vitroAnnotations.n3 b/home/src/main/resources/rdf/tbox/firsttime/vitroAnnotations.n3 index ca536ba7..2fcfd609 100644 --- a/home/src/main/resources/rdf/tbox/firsttime/vitroAnnotations.n3 +++ b/home/src/main/resources/rdf/tbox/firsttime/vitroAnnotations.n3 @@ -5071,7 +5071,9 @@ vivo:governingAuthorityFor vitro:displayRankAnnot "70"^^xsd:int ; vitro:inPropertyGroupAnnot - . + ; + vitro:offerCreateNewOptionAnnot + "true"^^xsd:boolean . geo:agriculturalAreaYear vitro:hiddenFromDisplayBelowRoleLevelAnnot From fe1498319aaacd173ac49c141bab87f65834b828 Mon Sep 17 00:00:00 2001 From: Brian Lowe Date: Tue, 27 Apr 2021 19:43:59 +0300 Subject: [PATCH 026/332] Add note to runtime.properties that TPF should not be used if VIVO contains restricted data. (#236) --- .../main/resources/config/example.runtime.properties | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/home/src/main/resources/config/example.runtime.properties b/home/src/main/resources/config/example.runtime.properties index e5a9da9d..260eb17f 100644 --- a/home/src/main/resources/config/example.runtime.properties +++ b/home/src/main/resources/config/example.runtime.properties @@ -407,7 +407,15 @@ Vitro.reconcile.defaultTypeList = http://vivoweb.org/ontology/core#Role, core:Ro # If you do not wish to use the claiming interface, set this property to nothing (empty) createAndLink.providers = doi, pmid - # Triple pattern fragments is a very fast, very simple means for querying a triple store. - # The triple pattern fragments API in VIVO puts little load on the server, providing a simple means for getting data from the triple store. The API has a web interface for manual use, can be used from the command line via curl, and can be used by programs. + # Triple Pattern Fragments is a very fast, very simple means for querying a + # triple store. The Triple Pattern Fragments API in VIVO puts little load on + # the server, providing a simple means for getting data from the triple store. + # The API has a web interface for manual use, can be used from the command + # line via curl, and can be used by programs. + # + # VIVO's Triple Pattern Fragments API does not require authentication and + # makes the full RDF graph available regardless of display or publish levels + # set on particular properties. Enable Triple Pattern Fragments only if your + # VIVO does not contain restricted data that should not be shared with others. # # tpf.activeFlag = true From 8b161f948e2c0aa0f9b27d2778bb9f4469b8346d Mon Sep 17 00:00:00 2001 From: Brian Lowe Date: Wed, 5 May 2021 19:36:46 +0300 Subject: [PATCH 027/332] Add usePreciseSubqueries property to example.runtime.properties (#233) --- .../resources/config/example.runtime.properties | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/home/src/main/resources/config/example.runtime.properties b/home/src/main/resources/config/example.runtime.properties index 260eb17f..366cfeb8 100644 --- a/home/src/main/resources/config/example.runtime.properties +++ b/home/src/main/resources/config/example.runtime.properties @@ -110,6 +110,22 @@ selfEditing.idMatchingProperty = http://vivo.mydomain.edu/ns#networkId # #externalAuth.netIdHeaderName = remote_userID +# ----------------------------------------------------------------------------- +# OPTIMIZING LIST VIEW QUERIES +# ----------------------------------------------------------------------------- + + # + # Include sections between + # tags when executing 'list view' queries that retrieve data + # for property lists on profile pages. + # + # Including these optional sections does not change the query + # semantics, but may improve performance. + # + # Default is true if not set. + # (Prior to v1.12, default was true for SDB and false for TDB.) + # +# listview.usePreciseSubquery = true # ----------------------------------------------------------------------------- # TUNING THE DATABASE CONNECTION POOL @@ -128,7 +144,6 @@ selfEditing.idMatchingProperty = http://vivo.mydomain.edu/ns#networkId # # VitroConnection.DataSource.pool.maxIdle = 10 - # ----------------------------------------------------------------------------- # USING A DIFFERENT DATABASE # ----------------------------------------------------------------------------- From 5d257cae6bace39af29278dadaf2015a6ca8ee45 Mon Sep 17 00:00:00 2001 From: Ben Date: Fri, 7 May 2021 02:46:57 -0600 Subject: [PATCH 028/332] [VIVO-1982] - Set default email params to blank (#238) * Set default email params to blank * Comment out email settings --- home/src/main/resources/config/example.runtime.properties | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/home/src/main/resources/config/example.runtime.properties b/home/src/main/resources/config/example.runtime.properties index 366cfeb8..7dfda99e 100644 --- a/home/src/main/resources/config/example.runtime.properties +++ b/home/src/main/resources/config/example.runtime.properties @@ -71,8 +71,12 @@ argon2.time = 1000 # Email parameters which VIVO can use to send mail. If these are left empty, # the "Contact Us" form will be disabled and users will not be notified of # changes to their accounts. -# email.smtpHost = smtp.mydomain.edu -# email.replyTo = vivoAdmin@mydomain.edu + # Example: + # email.smtpHost = smtp.mydomain.edu + # email.replyTo = vivoAdmin@mydomain.edu + # +# email.smtpHost = +# email.replyTo = # # URL of Solr context used in local VIVO search. This will usually consist of: From 631986a2d58c86c0913de350c2b467bb0eadb253 Mon Sep 17 00:00:00 2001 From: Brian Lowe Date: Tue, 11 May 2021 18:07:53 +0300 Subject: [PATCH 029/332] Issue/vivo 1981 (#239) * Replace hardcoded en locale with current locale in lang attributes * Update README with current wiki link; add details to Docker Compose installation instructino. --- README.md | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 3b7f6598..08fc328a 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ https://wiki.duraspace.org/display/VIVO/ ### Installation Instructions Installation instructions for the latest release can be found at this location on the wiki: -https://wiki.duraspace.org/display/VIVODOC110x/Installing+VIVO +https://wiki.duraspace.org/display/VIVODOC112x/Installing+VIVO ### Docker @@ -27,7 +27,7 @@ VIVO docker container is available at [vivoweb/vivo](https://hub.docker.com/repo ### Docker Compose -Docker Compose environment variables. +Docker Compose environment variables: .env defaults ``` @@ -36,12 +36,25 @@ RESET_HOME=false RESET_CORE=false ``` -- `LOCAL_VIVO_HOME`: VIVO home directory on your host machine which will mount to volume in docker container. -- `RESET_HOME`: Convinience to reset VIVO home when starting container. **Caution**, will delete local configuration, content, and configuration model. -- `RESET_CORE`: Convinience to reset VIVO Solr core when starting container. **Caution**, will require complete reindex. +- `LOCAL_VIVO_HOME`: VIVO home directory on your host machine which will mount to volume in docker container. Set this environment variable to persist your VIVO data on your host machine. +- `RESET_HOME`: Convenience to reset VIVO home when starting container. **Caution**, will delete local configuration, content, and configuration model. +- `RESET_CORE`: Convenience to reset VIVO Solr core when starting container. **Caution**, will require complete reindex. + +Before building VIVO, you will also need to clone (and switch to the same branch, if other than main) of [Vitro](https://github.com/vivo-project/Vitro). The Vitro project must be cloned to a sibling directory next to VIVO so that it can be found during the build. You will also need to clone (and switch to the appropriate branch) of [Vitro-languages](https://github.com/vivo-project/Vitro-languages) and [VIVO-languages](https://github.com/vivo-project/VIVO-languages). Build and start VIVO. +1. In Vitro-languages, run: +``` +mvn install +``` + +2. In VIVO-languages, run: +``` +mvn install +``` + +3. In VIVO (with Vitro cloned alongside it), run: ``` mvn clean package -s installer/example-settings.xml docker-compose up From 43289ba71e117f561f5814406cffb118ce59fbc2 Mon Sep 17 00:00:00 2001 From: Brian Lowe Date: Fri, 28 May 2021 15:52:16 +0300 Subject: [PATCH 030/332] Get language-aware results for existing labels in ManageLabelsForPersonGenerator --- .../generators/ManageLabelsForPersonGenerator.java | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/ManageLabelsForPersonGenerator.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/ManageLabelsForPersonGenerator.java index fe2f2609..41da2d39 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/ManageLabelsForPersonGenerator.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/ManageLabelsForPersonGenerator.java @@ -432,28 +432,27 @@ public class ManageLabelsForPersonGenerator extends BaseEditConfigurationGenerat + " ?subject rdfs:label ?label \n" + "} ORDER BY ?label"; - + private ArrayList getExistingLabels(String subjectUri, VitroRequest vreq) { String queryStr = QueryUtils.subUriForQueryVar(LABEL_QUERY, "subject", subjectUri); log.debug("queryStr = " + queryStr); ArrayList labels = new ArrayList(); try { - //We want to get the labels for all the languages, not just the display language - ResultSet results = QueryUtils.getLanguageNeutralQueryResults(queryStr, vreq); + // No longer retrieving language-neutral results here, so that + // language editing is consistent with other editing forms. + // Editable values depend on the interface's locale selector. + ResultSet results = QueryUtils.getQueryResults(queryStr, vreq); while (results.hasNext()) { QuerySolution soln = results.nextSolution(); Literal nodeLiteral = soln.get("label").asLiteral(); labels.add(nodeLiteral); - - } } catch (Exception e) { log.error(e, e); } return labels; -} - + } //Putting this into a method allows overriding it in subclasses From 49eedfe0a00fb2907eda321df338eb1072553d80 Mon Sep 17 00:00:00 2001 From: Brian Lowe Date: Thu, 3 Jun 2021 19:40:07 +0300 Subject: [PATCH 031/332] Retain language tags in manage publication query results to allow for language filtering --- .../freemarker/ManagePublicationsForIndividualController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/freemarker/ManagePublicationsForIndividualController.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/freemarker/ManagePublicationsForIndividualController.java index d1e6ff1c..dd836679 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/freemarker/ManagePublicationsForIndividualController.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/freemarker/ManagePublicationsForIndividualController.java @@ -69,7 +69,7 @@ public class ManagePublicationsForIndividualController extends FreemarkerHttpSer + "PREFIX core: \n" + "PREFIX rdfs: \n" + "PREFIX vitro: \n" - + "SELECT DISTINCT ?subclass ?authorship (str(?label) as ?title) ?pub ?hideThis WHERE { \n" + + "SELECT DISTINCT ?subclass ?authorship (?label as ?title) ?pub ?hideThis WHERE { \n" + " ?subject core:relatedBy ?authorship . \n" + " ?authorship a core:Authorship . \n" + " OPTIONAL { \n " From dc56107d4d870b04f1e88683324339c94de7c954 Mon Sep 17 00:00:00 2001 From: Brian Lowe Date: Fri, 4 Jun 2021 17:00:26 +0300 Subject: [PATCH 032/332] Pass languageCount value to label macro --- .../body/individual/individual--foaf-person-2column.ftl | 2 +- .../body/individual/individual--foaf-person-quickview.ftl | 2 +- .../templates/body/individual/individual--foaf-person.ftl | 2 +- .../webapp/themes/wilma/templates/individual--foaf-person.ftl | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/webapp/src/main/webapp/templates/freemarker/body/individual/individual--foaf-person-2column.ftl b/webapp/src/main/webapp/templates/freemarker/body/individual/individual--foaf-person-2column.ftl index 15b782f7..95231ad5 100644 --- a/webapp/src/main/webapp/templates/freemarker/body/individual/individual--foaf-person-2column.ftl +++ b/webapp/src/main/webapp/templates/freemarker/body/individual/individual--foaf-person-2column.ftl @@ -51,7 +51,7 @@ <#else>

style="float:left;border-right:1px solid #A6B1B0;"> <#-- Label --> - <@p.label individual editable labelCount localesCount/> + <@p.label individual editable labelCount localesCount languageCount />

<#-- Display preferredTitle if it exists; otherwise mostSpecificTypes --> <#assign title = propertyGroups.pullProperty("http://purl.obolibrary.org/obo/ARG_2000028","http://www.w3.org/2006/vcard/ns#Title")!> diff --git a/webapp/src/main/webapp/templates/freemarker/body/individual/individual--foaf-person-quickview.ftl b/webapp/src/main/webapp/templates/freemarker/body/individual/individual--foaf-person-quickview.ftl index 0745d7c4..fa2997ea 100644 --- a/webapp/src/main/webapp/templates/freemarker/body/individual/individual--foaf-person-quickview.ftl +++ b/webapp/src/main/webapp/templates/freemarker/body/individual/individual--foaf-person-quickview.ftl @@ -62,7 +62,7 @@
${individualImage}

style="float:left;border-right:1px solid #A6B1B0;"> <#-- Label --> - <@p.label individual editable labelCount localesCount/> + <@p.label individual editable labelCount localesCount languageCount />

<#-- Display preferredTitle if it exists; otherwise mostSpecificTypes --> <#assign title = propertyGroups.pullProperty("http://purl.obolibrary.org/obo/ARG_2000028","http://www.w3.org/2006/vcard/ns#Title")!> diff --git a/webapp/src/main/webapp/themes/tenderfoot/templates/body/individual/individual--foaf-person.ftl b/webapp/src/main/webapp/themes/tenderfoot/templates/body/individual/individual--foaf-person.ftl index 4d32f3e7..4c32496a 100644 --- a/webapp/src/main/webapp/themes/tenderfoot/templates/body/individual/individual--foaf-person.ftl +++ b/webapp/src/main/webapp/themes/tenderfoot/templates/body/individual/individual--foaf-person.ftl @@ -65,7 +65,7 @@

<#-- Label --> - <@p.label individual editable labelCount localesCount/> + <@p.label individual editable labelCount localesCount languageCount />

<#-- Display preferredTitle if it exists; otherwise mostSpecificTypes --> diff --git a/webapp/src/main/webapp/themes/wilma/templates/individual--foaf-person.ftl b/webapp/src/main/webapp/themes/wilma/templates/individual--foaf-person.ftl index 8dbf4623..0aaa19de 100644 --- a/webapp/src/main/webapp/themes/wilma/templates/individual--foaf-person.ftl +++ b/webapp/src/main/webapp/themes/wilma/templates/individual--foaf-person.ftl @@ -89,7 +89,7 @@ <#else>

<#-- Label --> - <@p.label individual editable labelCount localesCount/> + <@p.label individual editable labelCount localesCount languageCount />

<#-- Display preferredTitle if it exists; otherwise mostSpecificTypes --> From e3027841aa1d1129a7ab3a876eef57838ca9e7dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michel=20H=C3=A9on?= <71774817+michel-heon@users.noreply.github.com> Date: Fri, 4 Jun 2021 10:17:17 -0400 Subject: [PATCH 033/332] integrate in a single Maven call the compilation and installation of (#242) Integrate in a single Maven call the compilation and installation of VIVO-Languages and Vitro-Languages in VIVO. --- installer/example-settings.xml | 10 ++++++-- pom.xml | 45 ++++++++++++++++++++-------------- 2 files changed, 35 insertions(+), 20 deletions(-) diff --git a/installer/example-settings.xml b/installer/example-settings.xml index 0007c79c..d9b1a27b 100644 --- a/installer/example-settings.xml +++ b/installer/example-settings.xml @@ -1,5 +1,6 @@ - + @@ -17,5 +18,10 @@ defaults + + + diff --git a/pom.xml b/pom.xml index 0665c5f2..75016fc8 100644 --- a/pom.xml +++ b/pom.xml @@ -1,6 +1,4 @@ - 4.0.0 @@ -43,11 +41,9 @@ - + scm:git:git@github.com:vivo-project/VIVO.git scm:git:git@github.com:vivo-project/VIVO.git @@ -73,6 +69,16 @@ + i18n + + ../Vitro-languages + ../VIVO-languages + api + webapp + home + + + vitro @@ -335,7 +341,8 @@ - + org.apache.maven.plugins maven-checkstyle-plugin @@ -343,7 +350,8 @@ verify-style - + verify check @@ -352,10 +360,10 @@ - duraspace-checkstyle/checkstyle.xml + duraspace-checkstyle/checkstyle.xml - vitro-checkstyle/checkstyle-suppressions.xml + vitro-checkstyle/checkstyle-suppressions.xml UTF-8 true @@ -475,9 +483,11 @@ test-javadoc - + aggregate - false + false aggregate @@ -501,10 +511,9 @@ - + vivo-dependencies From 603e7f6bc85c885f8e5e57a12b8deef5bfc43302 Mon Sep 17 00:00:00 2001 From: Brian Lowe Date: Wed, 9 Jun 2021 17:02:46 +0300 Subject: [PATCH 034/332] Do not offer UMLS vocabulary in interface if umls.properties is absent. (#241) * Replace hardcoded en locale with current locale in lang attributes * Do not offer UMLS vocabulary service in interface if umls.properties is absent --- .../semservices/service/impl/UMLSService.java | 22 ++++++++++++++----- .../ConceptSearchServiceUtils.java | 6 ++++- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/api/src/main/java/edu/cornell/mannlib/semservices/service/impl/UMLSService.java b/api/src/main/java/edu/cornell/mannlib/semservices/service/impl/UMLSService.java index 59653f3f..040f7904 100644 --- a/api/src/main/java/edu/cornell/mannlib/semservices/service/impl/UMLSService.java +++ b/api/src/main/java/edu/cornell/mannlib/semservices/service/impl/UMLSService.java @@ -4,12 +4,18 @@ package edu.cornell.mannlib.semservices.service.impl; import java.io.IOException; import java.io.InputStream; +import java.net.URL; import java.util.ArrayList; import java.util.List; import java.util.Properties; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.http.HttpVersion; +import org.apache.http.client.fluent.Form; +import org.apache.http.client.fluent.Request; +import org.apache.http.client.utils.URIBuilder; +import org.springframework.util.StringUtils; import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.ObjectNode; @@ -18,11 +24,6 @@ import edu.cornell.mannlib.semservices.bo.Concept; import edu.cornell.mannlib.semservices.exceptions.ConceptsNotFoundException; import edu.cornell.mannlib.semservices.service.ExternalConceptService; import edu.cornell.mannlib.vitro.webapp.utils.json.JacksonUtils; -import org.apache.http.HttpVersion; -import org.apache.http.client.fluent.Form; -import org.apache.http.client.fluent.Request; -import org.apache.http.client.utils.URIBuilder; -import org.springframework.util.StringUtils; /** * @author jaf30 @@ -54,11 +55,13 @@ public class UMLSService implements ExternalConceptService { private static String UMLS_AUTH_USER_URL = "https://utslogin.nlm.nih.gov/cas/v1/tickets"; private static String UMLS_AUTH_KEY_URL = "https://utslogin.nlm.nih.gov/cas/v1/api-key"; private static String UTS_SERVICE_URL = "http://umlsks.nlm.nih.gov"; + private static final String UMLS_PROPERTIES = "/umls.properties"; + private static final Log log = LogFactory.getLog(UMLSService.class); { if (username == null || apikey == null) { final Properties properties = new Properties(); - try (InputStream stream = getClass().getResourceAsStream("/umls.properties")) { + try (InputStream stream = getClass().getResourceAsStream(UMLS_PROPERTIES)) { properties.load(stream); username = properties.getProperty("username"); password = properties.getProperty("password"); @@ -73,11 +76,18 @@ public class UMLSService implements ExternalConceptService { } } } catch (Exception e) { + log.error(e, e); } } catch (IOException e) { + log.error(e, e); } } } + + public static boolean configurationFileExists() { + URL config = UMLSService.class.getResource(UMLS_PROPERTIES); + return (config != null); + } public boolean isConfigured() { return !(StringUtils.isEmpty(username) && StringUtils.isEmpty(apikey)); diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/utils/ConceptSearchService/ConceptSearchServiceUtils.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/utils/ConceptSearchService/ConceptSearchServiceUtils.java index 70268cd9..d6b0e733 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/utils/ConceptSearchService/ConceptSearchServiceUtils.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/utils/ConceptSearchService/ConceptSearchServiceUtils.java @@ -12,6 +12,7 @@ import org.apache.commons.logging.LogFactory; import edu.cornell.mannlib.semservices.bo.Concept; import edu.cornell.mannlib.semservices.service.ExternalConceptService; +import edu.cornell.mannlib.semservices.service.impl.UMLSService; import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; /** * Utilities for search @@ -38,7 +39,9 @@ public class ConceptSearchServiceUtils { //URL to label public static HashMap getVocabSources() { HashMap map = new HashMap(); - map.put(UMLSVocabSource, new VocabSourceDescription("UMLS", UMLSVocabSource, "http://www.nlm.nih.gov/research/umls/", "Unified Medical Language System")); + if(UMLSService.configurationFileExists()) { + map.put(UMLSVocabSource, new VocabSourceDescription("UMLS", UMLSVocabSource, "http://www.nlm.nih.gov/research/umls/", "Unified Medical Language System")); + } //Commenting out agrovoc for now until implementation is updated map.put(AgrovocVocabSource, new VocabSourceDescription("AGROVOC", AgrovocVocabSource, "http://www.fao.org/agrovoc/", "Agricultural Vocabulary")); map.put(GemetVocabSource, new VocabSourceDescription("GEMET", GemetVocabSource, "http://www.eionet.europa.eu/gemet", "GEneral Multilingual Environmental Thesaurus")); @@ -53,6 +56,7 @@ public class ConceptSearchServiceUtils { //Get the hashmap mapping service name to Service class private static HashMap getMapping() { HashMap map = new HashMap(); + map.put(UMLSVocabSource, "edu.cornell.mannlib.semservices.service.impl.UMLSService"); map.put(AgrovocVocabSource, "edu.cornell.mannlib.semservices.service.impl.AgrovocService"); map.put(GemetVocabSource, "edu.cornell.mannlib.semservices.service.impl.GemetService"); From f4f6dddb118a644b5e627eedea97c6aa341d8f96 Mon Sep 17 00:00:00 2001 From: Brian Lowe Date: Wed, 16 Jun 2021 21:43:30 +0300 Subject: [PATCH 035/332] Retrieve locales used in label statements instead of only selectable locales --- .../ManageLabelsForPersonGenerator.java | 50 ++++++++++--------- 1 file changed, 27 insertions(+), 23 deletions(-) diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/ManageLabelsForPersonGenerator.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/ManageLabelsForPersonGenerator.java index 41da2d39..b2f0923e 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/ManageLabelsForPersonGenerator.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/ManageLabelsForPersonGenerator.java @@ -15,6 +15,7 @@ import java.util.HashSet; import java.util.List; import java.util.Locale; import java.util.Map; +import java.util.Set; import javax.servlet.http.HttpSession; @@ -41,6 +42,7 @@ import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.FieldVTwo; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.preprocessors.FoafNameToRdfsLabelPreprocessor; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.preprocessors.ManageLabelsForPersonPreprocessor; import edu.cornell.mannlib.vitro.webapp.i18n.selection.SelectedLocale; +import edu.cornell.mannlib.vitro.webapp.rdfservice.filter.LanguageFilteringUtils; import edu.cornell.mannlib.vitro.webapp.web.templatemodels.individual.DataPropertyStatementTemplateModel; /** @@ -246,12 +248,12 @@ public class ManageLabelsForPersonGenerator extends BaseEditConfigurationGenerat private void addFormSpecificData(EditConfigurationVTwo config, VitroRequest vreq) { + ArrayList existingLabels = this.getExistingLabels(config.getSubjectUri(), vreq); //Get all language codes/labels in the system, and this list is sorted by language name - List> locales = this.getLocales(vreq); + List> locales = this.getLocales(vreq, existingLabels); //Get code to label hashmap - we use this to get the language name for the language code returned in the rdf literal HashMap localeCodeToNameMap = this.getFullCodeToLanguageNameMap(locales); //the labels already added by the user - ArrayList existingLabels = this.getExistingLabels(config.getSubjectUri(), vreq); int numberExistingLabels = existingLabels.size(); //existing labels keyed by language name and each of the list of labels is sorted by language name HashMap> existingLabelsByLanguageName = this.getLabelsSortedByLanguageName(existingLabels, localeCodeToNameMap, config, vreq); @@ -466,30 +468,32 @@ public class ManageLabelsForPersonGenerator extends BaseEditConfigurationGenerat return template; } + //get locales present in list of literals + public List> getLocales(VitroRequest vreq, + List existingLiterals) { + Set locales = new HashSet(); + for(Literal literal : existingLiterals) { + String language = literal.getLanguage(); + if(!StringUtils.isEmpty(language)) { + locales.add(LanguageFilteringUtils.languageToLocale(language)); + } + } + if (locales.isEmpty()) { + return Collections.emptyList(); + } + List> list = new ArrayList>(); + Locale currentLocale = SelectedLocale.getCurrentLocale(vreq); + for (Locale locale : locales) { + try { + list.add(buildLocaleMap(locale, currentLocale)); + } catch (FileNotFoundException e) { + log.warn("Can't show locale '" + locale + "': " + e); + } + } - - //get locales - public List> getLocales(VitroRequest vreq) { - List selectables = SelectedLocale.getSelectableLocales(vreq); - if (selectables.isEmpty()) { - return Collections.emptyList(); - } - List> list = new ArrayList>(); - Locale currentLocale = SelectedLocale.getCurrentLocale(vreq); - for (Locale locale : selectables) { - try { - list.add(buildLocaleMap(locale, currentLocale)); - } catch (FileNotFoundException e) { - log.warn("Can't show the Locale selector for '" + locale - + "': " + e); - } - } - - return list; + return list; } - - public HashMap getFullCodeToLanguageNameMap(List> localesList) { HashMap codeToLanguageMap = new HashMap(); for(Map locale: localesList) { From 3de9a03ab54d0ba29ba3b7c0efa99b57b9fbff0a Mon Sep 17 00:00:00 2001 From: Brian Lowe Date: Wed, 16 Jun 2021 21:54:48 +0300 Subject: [PATCH 036/332] Update comment --- .../generators/ManageLabelsForPersonGenerator.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/ManageLabelsForPersonGenerator.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/ManageLabelsForPersonGenerator.java index b2f0923e..d9146213 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/ManageLabelsForPersonGenerator.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/ManageLabelsForPersonGenerator.java @@ -249,7 +249,7 @@ public class ManageLabelsForPersonGenerator extends BaseEditConfigurationGenerat private void addFormSpecificData(EditConfigurationVTwo config, VitroRequest vreq) { ArrayList existingLabels = this.getExistingLabels(config.getSubjectUri(), vreq); - //Get all language codes/labels in the system, and this list is sorted by language name + //Get language codes/labels for existing labels, and this list is sorted by language name List> locales = this.getLocales(vreq, existingLabels); //Get code to label hashmap - we use this to get the language name for the language code returned in the rdf literal HashMap localeCodeToNameMap = this.getFullCodeToLanguageNameMap(locales); From 109b5a4fe1007d9a5194a498e16cb560e001cae9 Mon Sep 17 00:00:00 2001 From: Brian Lowe Date: Mon, 21 Jun 2021 12:11:24 +0300 Subject: [PATCH 037/332] Update version numbers in pom.xmls (#244) * Update version numbers in pom.xmls * Restore -SNAPSHOT --- api/pom.xml | 4 ++-- home/pom.xml | 4 ++-- installer/home/pom.xml | 4 ++-- installer/pom.xml | 2 +- installer/webapp/pom.xml | 4 ++-- pom.xml | 2 +- webapp/pom.xml | 6 +++--- 7 files changed, 13 insertions(+), 13 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index 3b3bfb19..bf8aece9 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -7,13 +7,13 @@ org.vivoweb vivo-api - 1.11.2-SNAPSHOT + 1.12.0-SNAPSHOT jar org.vivoweb vivo-project - 1.11.2-SNAPSHOT + 1.12.0-SNAPSHOT .. diff --git a/home/pom.xml b/home/pom.xml index 18357bdf..20887fa3 100644 --- a/home/pom.xml +++ b/home/pom.xml @@ -7,13 +7,13 @@ org.vivoweb vivo-home - 1.11.2-SNAPSHOT + 1.12.0-SNAPSHOT pom org.vivoweb vivo-project - 1.11.2-SNAPSHOT + 1.12.0-SNAPSHOT .. diff --git a/installer/home/pom.xml b/installer/home/pom.xml index 059daab3..2a15fa91 100644 --- a/installer/home/pom.xml +++ b/installer/home/pom.xml @@ -7,13 +7,13 @@ org.vivoweb vivo-installer-home - 1.11.2-SNAPSHOT + 1.12.0-SNAPSHOT pom org.vivoweb vivo-installer - 1.11.2-SNAPSHOT + 1.12.0-SNAPSHOT .. diff --git a/installer/pom.xml b/installer/pom.xml index 2c966aa8..5474cd5e 100644 --- a/installer/pom.xml +++ b/installer/pom.xml @@ -7,7 +7,7 @@ org.vivoweb vivo-installer - 1.11.2-SNAPSHOT + 1.12.0-SNAPSHOT pom VIVO Installer diff --git a/installer/webapp/pom.xml b/installer/webapp/pom.xml index 78973a34..4578b6c6 100644 --- a/installer/webapp/pom.xml +++ b/installer/webapp/pom.xml @@ -7,13 +7,13 @@ org.vivoweb vivo-installer-vivo - 1.11.2-SNAPSHOT + 1.12.0-SNAPSHOT war org.vivoweb vivo-installer - 1.11.2-SNAPSHOT + 1.12.0-SNAPSHOT .. diff --git a/pom.xml b/pom.xml index 75016fc8..6cf39965 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.vivoweb vivo-project - 1.11.2-SNAPSHOT + 1.12.0-SNAPSHOT pom VIVO diff --git a/webapp/pom.xml b/webapp/pom.xml index 10f76e2f..6c483090 100644 --- a/webapp/pom.xml +++ b/webapp/pom.xml @@ -7,13 +7,13 @@ org.vivoweb vivo-webapp - 1.11.2-SNAPSHOT + 1.12.0-SNAPSHOT war org.vivoweb vivo-project - 1.11.2-SNAPSHOT + 1.12.0-SNAPSHOT .. @@ -69,7 +69,7 @@ org.vivoweb vivo-api - 1.11.2-SNAPSHOT + 1.12.0-SNAPSHOT From 09e4ea732a48a59c72bd78a0e8baa303f9618e44 Mon Sep 17 00:00:00 2001 From: Brian Lowe Date: Tue, 22 Jun 2021 21:48:05 +0300 Subject: [PATCH 038/332] =?UTF-8?q?Add=20self-activating=20profiles=20for?= =?UTF-8?q?=20building=20Vitro-languages=20and=20VIVO-l=E2=80=A6=20(#245)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add self-activating profiles for compiling Vitro-languages and VIVO-languages in place of i18n profile * Remove trailing whitespace --- installer/example-settings.xml | 5 ----- pom.xml | 26 +++++++++++++++++++------- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/installer/example-settings.xml b/installer/example-settings.xml index d9b1a27b..cae40e61 100644 --- a/installer/example-settings.xml +++ b/installer/example-settings.xml @@ -18,10 +18,5 @@ defaults - - - diff --git a/pom.xml b/pom.xml index 6cf39965..b4f42591 100644 --- a/pom.xml +++ b/pom.xml @@ -68,16 +68,28 @@ - - i18n + + Vitro-languages + + + ../Vitro-languages/pom.xml + + ../Vitro-languages - ../VIVO-languages - api - webapp - home - + + + VIVO-languages + + + ../VIVO-languages/pom.xml + + + + ../VIVO-languages + + vitro From 9b0de5f3d480497c0e6fc32ace5f2a3cc19a865d Mon Sep 17 00:00:00 2001 From: Ralph O'Flinn Date: Wed, 23 Jun 2021 00:16:40 -0500 Subject: [PATCH 039/332] [maven-scm-plugin] prepare release vivo-1.12.0 --- api/pom.xml | 4 ++-- home/pom.xml | 4 ++-- installer/home/pom.xml | 4 ++-- installer/pom.xml | 2 +- installer/webapp/pom.xml | 4 ++-- pom.xml | 2 +- webapp/pom.xml | 6 +++--- 7 files changed, 13 insertions(+), 13 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index bf8aece9..960eed3a 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -7,13 +7,13 @@ org.vivoweb vivo-api - 1.12.0-SNAPSHOT + 1.12.0 jar org.vivoweb vivo-project - 1.12.0-SNAPSHOT + 1.12.0 .. diff --git a/home/pom.xml b/home/pom.xml index 20887fa3..6cc0fa2b 100644 --- a/home/pom.xml +++ b/home/pom.xml @@ -7,13 +7,13 @@ org.vivoweb vivo-home - 1.12.0-SNAPSHOT + 1.12.0 pom org.vivoweb vivo-project - 1.12.0-SNAPSHOT + 1.12.0 .. diff --git a/installer/home/pom.xml b/installer/home/pom.xml index 2a15fa91..bf04c655 100644 --- a/installer/home/pom.xml +++ b/installer/home/pom.xml @@ -7,13 +7,13 @@ org.vivoweb vivo-installer-home - 1.12.0-SNAPSHOT + 1.12.0 pom org.vivoweb vivo-installer - 1.12.0-SNAPSHOT + 1.12.0 .. diff --git a/installer/pom.xml b/installer/pom.xml index 5474cd5e..ab70a541 100644 --- a/installer/pom.xml +++ b/installer/pom.xml @@ -7,7 +7,7 @@ org.vivoweb vivo-installer - 1.12.0-SNAPSHOT + 1.12.0 pom VIVO Installer diff --git a/installer/webapp/pom.xml b/installer/webapp/pom.xml index 4578b6c6..8800c34c 100644 --- a/installer/webapp/pom.xml +++ b/installer/webapp/pom.xml @@ -7,13 +7,13 @@ org.vivoweb vivo-installer-vivo - 1.12.0-SNAPSHOT + 1.12.0 war org.vivoweb vivo-installer - 1.12.0-SNAPSHOT + 1.12.0 .. diff --git a/pom.xml b/pom.xml index b4f42591..be09b0e4 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.vivoweb vivo-project - 1.12.0-SNAPSHOT + 1.12.0 pom VIVO diff --git a/webapp/pom.xml b/webapp/pom.xml index 6c483090..4e435332 100644 --- a/webapp/pom.xml +++ b/webapp/pom.xml @@ -7,13 +7,13 @@ org.vivoweb vivo-webapp - 1.12.0-SNAPSHOT + 1.12.0 war org.vivoweb vivo-project - 1.12.0-SNAPSHOT + 1.12.0 .. @@ -69,7 +69,7 @@ org.vivoweb vivo-api - 1.12.0-SNAPSHOT + 1.12.0 From 584b34c682f26efb159e61b461cea0a6ca4d12c1 Mon Sep 17 00:00:00 2001 From: Ralph O'Flinn Date: Wed, 23 Jun 2021 00:19:07 -0500 Subject: [PATCH 040/332] [maven-scm-plugin] prepare development vivo-1.12.1-SNAPSHOT-SNAPSHOT --- api/pom.xml | 4 ++-- home/pom.xml | 4 ++-- installer/home/pom.xml | 4 ++-- installer/pom.xml | 2 +- installer/webapp/pom.xml | 4 ++-- pom.xml | 2 +- webapp/pom.xml | 6 +++--- 7 files changed, 13 insertions(+), 13 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index 960eed3a..20bd479e 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -7,13 +7,13 @@ org.vivoweb vivo-api - 1.12.0 + 1.12.1-SNAPSHOT jar org.vivoweb vivo-project - 1.12.0 + 1.12.1-SNAPSHOT .. diff --git a/home/pom.xml b/home/pom.xml index 6cc0fa2b..4d076948 100644 --- a/home/pom.xml +++ b/home/pom.xml @@ -7,13 +7,13 @@ org.vivoweb vivo-home - 1.12.0 + 1.12.1-SNAPSHOT pom org.vivoweb vivo-project - 1.12.0 + 1.12.1-SNAPSHOT .. diff --git a/installer/home/pom.xml b/installer/home/pom.xml index bf04c655..b16d99c7 100644 --- a/installer/home/pom.xml +++ b/installer/home/pom.xml @@ -7,13 +7,13 @@ org.vivoweb vivo-installer-home - 1.12.0 + 1.12.1-SNAPSHOT pom org.vivoweb vivo-installer - 1.12.0 + 1.12.1-SNAPSHOT .. diff --git a/installer/pom.xml b/installer/pom.xml index ab70a541..fc834a47 100644 --- a/installer/pom.xml +++ b/installer/pom.xml @@ -7,7 +7,7 @@ org.vivoweb vivo-installer - 1.12.0 + 1.12.1-SNAPSHOT pom VIVO Installer diff --git a/installer/webapp/pom.xml b/installer/webapp/pom.xml index 8800c34c..f19c84ac 100644 --- a/installer/webapp/pom.xml +++ b/installer/webapp/pom.xml @@ -7,13 +7,13 @@ org.vivoweb vivo-installer-vivo - 1.12.0 + 1.12.1-SNAPSHOT war org.vivoweb vivo-installer - 1.12.0 + 1.12.1-SNAPSHOT .. diff --git a/pom.xml b/pom.xml index be09b0e4..ff267543 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.vivoweb vivo-project - 1.12.0 + 1.12.1-SNAPSHOT pom VIVO diff --git a/webapp/pom.xml b/webapp/pom.xml index 4e435332..3a9f7100 100644 --- a/webapp/pom.xml +++ b/webapp/pom.xml @@ -7,13 +7,13 @@ org.vivoweb vivo-webapp - 1.12.0 + 1.12.1-SNAPSHOT war org.vivoweb vivo-project - 1.12.0 + 1.12.1-SNAPSHOT .. @@ -69,7 +69,7 @@ org.vivoweb vivo-api - 1.12.0 + 1.12.1-SNAPSHOT From 657b6922f9d18038708cf32d66843a0309c842d0 Mon Sep 17 00:00:00 2001 From: Dragan Ivanovic Date: Wed, 6 Oct 2021 12:52:47 +0200 Subject: [PATCH 041/332] Update issue templates --- .github/ISSUE_TEMPLATE/bug_report.md | 34 ++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 00000000..e71b19cb --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,34 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: '' +assignees: '' + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Desktop (please complete the following information):** + - OS: [e.g. Windows, Linux] + - Browser [e.g. chrome, safari] + - Tomcat version [e.g. 8, 9] + - VIVO version [e.g. 1.11.0, 1.12.0] + - Apache Solr or ElasticSearch version + +**Additional context** +Add any other context about the problem here. From 7046bdfad7663270a4f3291b53d972e8f79d25ef Mon Sep 17 00:00:00 2001 From: Dragan Ivanovic Date: Wed, 6 Oct 2021 12:54:10 +0200 Subject: [PATCH 042/332] Update issue templates --- .github/ISSUE_TEMPLATE/feature_request.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 00000000..bbcbbe7d --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,20 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: '' +labels: '' +assignees: '' + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. From abd40c25f539a5b5a058717eb3fdcc9047b139c6 Mon Sep 17 00:00:00 2001 From: Ralph O'Flinn Date: Wed, 6 Oct 2021 06:38:19 -0500 Subject: [PATCH 043/332] updates to outdated URLs and branch names (#251) (#252) updates to outdated URLs and branch names (typically master -> main) --- .github/PULL_REQUEST_TEMPLATE.md | 2 +- .gitignore | 3 ++ README.md | 6 ++-- home/pom.xml | 7 ++--- .../config/example.runtime.properties | 2 +- installer/pom.xml | 2 +- pom.xml | 28 ++++++++++--------- rc_script.sh | 6 ++-- update-versions.sh | 2 +- .../config/listViewConfig-additionalEmail.xml | 2 +- .../config/listViewConfig-adviseeIn.xml | 2 +- .../config/listViewConfig-advisorIn.xml | 2 +- .../listViewConfig-authorInAuthorship.xml | 2 +- .../config/listViewConfig-awardOrHonor.xml | 2 +- .../listViewConfig-awardOrHonorGiven.xml | 2 +- .../listViewConfig-dateTimeInterval.xml | 2 +- .../config/listViewConfig-dateTimeValue.xml | 2 +- .../webapp/config/listViewConfig-default.xml | 2 +- .../config/listViewConfig-degreeEarned.xml | 2 +- .../main/webapp/config/listViewConfig-doi.xml | 2 +- .../config/listViewConfig-editorship.xml | 2 +- .../listViewConfig-educationalTraining.xml | 2 +- .../listViewConfig-fauxPropertyDefault.xml | 2 +- .../config/listViewConfig-faxNumber.xml | 2 +- .../webapp/config/listViewConfig-fullName.xml | 2 +- .../listViewConfig-grantAdministeredBy.xml | 2 +- .../listViewConfig-hasAssociatedConcept.xml | 2 +- .../config/listViewConfig-hasAttendeeRole.xml | 2 +- .../listViewConfig-hasClinicalActivity.xml | 2 +- ...wConfig-hasCoPrincipalInvestigatorRole.xml | 2 +- .../config/listViewConfig-hasEditorRole.xml | 2 +- .../listViewConfig-hasInvestigatorRole.xml | 2 +- .../listViewConfig-hasPresenterRole.xml | 2 +- ...iewConfig-hasPrincipalInvestigatorRole.xml | 2 +- .../config/listViewConfig-hasReviewerRole.xml | 2 +- .../webapp/config/listViewConfig-hasRole.xml | 2 +- ...Config-informationResourceInAuthorship.xml | 2 +- ...Config-informationResourceInEditorship.xml | 2 +- .../listViewConfig-issuedCredential.xml | 2 +- .../config/listViewConfig-mailingAddress.xml | 2 +- .../webapp/config/listViewConfig-orcidId.xml | 2 +- ...iewConfig-organizationAdministersGrant.xml | 2 +- ...listViewConfig-organizationAwardsGrant.xml | 2 +- ...listViewConfig-organizationForPosition.xml | 2 +- ...listViewConfig-organizationForTraining.xml | 2 +- .../listViewConfig-personInPosition.xml | 2 +- .../config/listViewConfig-preferredTitle.xml | 2 +- .../config/listViewConfig-primaryEmail.xml | 2 +- .../listViewConfig-publicationVenueFor.xml | 2 +- .../config/listViewConfig-publisherOf.xml | 2 +- .../config/listViewConfig-rangeUnion.xml | 2 +- .../config/listViewConfig-relatedRole.xml | 2 +- .../listViewConfig-researchActivities.xml | 2 +- .../config/listViewConfig-researchAreaOf.xml | 2 +- .../listViewConfig-roleContributesTo.xml | 2 +- .../config/listViewConfig-roleRealizedIn.xml | 2 +- .../webapp/config/listViewConfig-scopusId.xml | 2 +- .../config/listViewConfig-telephoneNumber.xml | 2 +- .../webapp/config/listViewConfig-webpage.xml | 2 +- .../bootstrap/css/bootstrap-theme.css | 2 +- .../bootstrap/css/bootstrap-theme.css.map | 2 +- .../bootstrap/css/bootstrap-theme.min.css | 2 +- .../bootstrap/css/bootstrap-theme.min.css.map | 2 +- .../tenderfoot/bootstrap/css/bootstrap.css | 4 +-- .../bootstrap/css/bootstrap.css.map | 2 +- .../bootstrap/css/bootstrap.min.css | 4 +-- .../bootstrap/css/bootstrap.min.css.map | 2 +- .../tenderfoot/bootstrap/js/bootstrap.js | 24 ++++++++-------- 68 files changed, 102 insertions(+), 100 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 0d0ac84f..8eddc16e 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,7 +1,7 @@ **Thank you for submitting a pull request! Title this pull request with a brief description of what the pull request fixes/improves/changes. Please describe the pull request in detail using the template below.** * * * -**[JIRA Issue](https://jira.duraspace.org/projects/VIVO)**: (please link to issue) +**[JIRA Issue](https://jira.lyrasis.org/projects/VIVO)**: (please link to issue) * Other Relevant Links (Mailing list discussion, related pull requests, etc.) diff --git a/.gitignore b/.gitignore index 40730697..7a359805 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,6 @@ utilities/rdbmigration/.work **/bin/ vivo-home/ + +.fake +.ionide \ No newline at end of file diff --git a/README.md b/README.md index 08fc328a..7085ef2b 100644 --- a/README.md +++ b/README.md @@ -14,12 +14,12 @@ desired information across disciplines. http://vivoweb.org/ ### VIVO Project Wiki -https://wiki.duraspace.org/display/VIVO/ +https://wiki.lyrasis.org/display/VIVO/ ### Installation Instructions Installation instructions for the latest release can be found at this location on the wiki: -https://wiki.duraspace.org/display/VIVODOC112x/Installing+VIVO +https://wiki.lyrasis.org/display/VIVODOC112x/Installing+VIVO ### Docker @@ -92,7 +92,7 @@ development, implementation, and testing. ## Contributing Code If you would like to contribute code to the VIVO project, please open a ticket -in our [JIRA](https://jira.duraspace.org/projects/VIVO), and prepare a +in our [JIRA](https://jira.lyrasis.org/projects/VIVO), and prepare a pull request that references your ticket. Contributors welcome! ## Citing VIVO diff --git a/home/pom.xml b/home/pom.xml index 4d076948..8b61e33e 100644 --- a/home/pom.xml +++ b/home/pom.xml @@ -1,7 +1,4 @@ - + 4.0.0 @@ -72,4 +69,4 @@ tar.gz - + \ No newline at end of file diff --git a/home/src/main/resources/config/example.runtime.properties b/home/src/main/resources/config/example.runtime.properties index 7dfda99e..bb558456 100644 --- a/home/src/main/resources/config/example.runtime.properties +++ b/home/src/main/resources/config/example.runtime.properties @@ -10,7 +10,7 @@ # For more information on specific properties, see the configuration reference # or installation options section of the technical documentation for the # version of VIVO you are running: -# https://wiki.duraspace.org/display/VIVO/VIVO+Technical+Documentation +# https://wiki.lyrasis.org/display/VIVO/VIVO+Technical+Documentation # # ----------------------------------------------------------------------------- diff --git a/installer/pom.xml b/installer/pom.xml index fc834a47..9dd4aef1 100644 --- a/installer/pom.xml +++ b/installer/pom.xml @@ -272,7 +272,7 @@ vivo-dependencies VIVO Dependencies - https://raw.github.com/vivo-project/dependencies/master/ + https://raw.github.com/vivo-project/dependencies/main/ diff --git a/pom.xml b/pom.xml index ff267543..bb38c0de 100644 --- a/pom.xml +++ b/pom.xml @@ -1,5 +1,4 @@ - + 4.0.0 @@ -68,7 +67,7 @@ - + Vitro-languages @@ -78,8 +77,8 @@ ../Vitro-languages - - + + VIVO-languages @@ -89,8 +88,8 @@ ../VIVO-languages - - + + vitro @@ -489,16 +488,19 @@ false - - + + + + javadoc test-javadoc - aggregate - false aggregate @@ -530,7 +532,7 @@ vivo-dependencies VIVO Dependencies - https://raw.github.com/vivo-project/dependencies/master/ + https://raw.github.com/vivo-project/dependencies/main/ @@ -560,4 +562,4 @@ https://oss.sonatype.org/service/local/staging/deploy/maven2/ - + \ No newline at end of file diff --git a/rc_script.sh b/rc_script.sh index d2407604..a7323784 100755 --- a/rc_script.sh +++ b/rc_script.sh @@ -1,12 +1,12 @@ #!/bin/bash # RC Script -RC_VERSION=1.11.1 +RC_VERSION=1.12.0 RC_NUM=1 -git checkout master +git checkout main git pull -git push origin master:rel-${RC_VERSION}-RC +git push origin main:rel-${RC_VERSION}-RC git checkout rel-${RC_VERSION}-RC diff --git a/update-versions.sh b/update-versions.sh index d5c4272d..97ef9113 100755 --- a/update-versions.sh +++ b/update-versions.sh @@ -2,7 +2,7 @@ if [ -z "$1" ] then - echo 'New version number required eg. 1.9.0-rc1' + echo 'New version number required eg. 1.12.0-RC1' exit 1 fi diff --git a/webapp/src/main/webapp/config/listViewConfig-additionalEmail.xml b/webapp/src/main/webapp/config/listViewConfig-additionalEmail.xml index ecc565ca..a9a08490 100644 --- a/webapp/src/main/webapp/config/listViewConfig-additionalEmail.xml +++ b/webapp/src/main/webapp/config/listViewConfig-additionalEmail.xml @@ -1,7 +1,7 @@ - + diff --git a/webapp/src/main/webapp/config/listViewConfig-adviseeIn.xml b/webapp/src/main/webapp/config/listViewConfig-adviseeIn.xml index 9acb938c..6f66ce66 100644 --- a/webapp/src/main/webapp/config/listViewConfig-adviseeIn.xml +++ b/webapp/src/main/webapp/config/listViewConfig-adviseeIn.xml @@ -1,7 +1,7 @@ - + diff --git a/webapp/src/main/webapp/config/listViewConfig-advisorIn.xml b/webapp/src/main/webapp/config/listViewConfig-advisorIn.xml index 689f8ab8..b0be2026 100644 --- a/webapp/src/main/webapp/config/listViewConfig-advisorIn.xml +++ b/webapp/src/main/webapp/config/listViewConfig-advisorIn.xml @@ -1,7 +1,7 @@ - + diff --git a/webapp/src/main/webapp/config/listViewConfig-authorInAuthorship.xml b/webapp/src/main/webapp/config/listViewConfig-authorInAuthorship.xml index b02165da..f60f4d59 100644 --- a/webapp/src/main/webapp/config/listViewConfig-authorInAuthorship.xml +++ b/webapp/src/main/webapp/config/listViewConfig-authorInAuthorship.xml @@ -1,7 +1,7 @@ - + diff --git a/webapp/src/main/webapp/config/listViewConfig-awardOrHonor.xml b/webapp/src/main/webapp/config/listViewConfig-awardOrHonor.xml index 584992c3..f608bb2a 100644 --- a/webapp/src/main/webapp/config/listViewConfig-awardOrHonor.xml +++ b/webapp/src/main/webapp/config/listViewConfig-awardOrHonor.xml @@ -1,7 +1,7 @@ - + diff --git a/webapp/src/main/webapp/config/listViewConfig-awardOrHonorGiven.xml b/webapp/src/main/webapp/config/listViewConfig-awardOrHonorGiven.xml index 8c5b9388..05d8586a 100644 --- a/webapp/src/main/webapp/config/listViewConfig-awardOrHonorGiven.xml +++ b/webapp/src/main/webapp/config/listViewConfig-awardOrHonorGiven.xml @@ -1,7 +1,7 @@ - + diff --git a/webapp/src/main/webapp/config/listViewConfig-dateTimeInterval.xml b/webapp/src/main/webapp/config/listViewConfig-dateTimeInterval.xml index 211f5c7e..9a65107e 100644 --- a/webapp/src/main/webapp/config/listViewConfig-dateTimeInterval.xml +++ b/webapp/src/main/webapp/config/listViewConfig-dateTimeInterval.xml @@ -1,7 +1,7 @@ - + diff --git a/webapp/src/main/webapp/config/listViewConfig-dateTimeValue.xml b/webapp/src/main/webapp/config/listViewConfig-dateTimeValue.xml index d2eae7b8..4ee0dc14 100644 --- a/webapp/src/main/webapp/config/listViewConfig-dateTimeValue.xml +++ b/webapp/src/main/webapp/config/listViewConfig-dateTimeValue.xml @@ -1,7 +1,7 @@ - + diff --git a/webapp/src/main/webapp/config/listViewConfig-default.xml b/webapp/src/main/webapp/config/listViewConfig-default.xml index b497c41f..620f9af7 100644 --- a/webapp/src/main/webapp/config/listViewConfig-default.xml +++ b/webapp/src/main/webapp/config/listViewConfig-default.xml @@ -3,7 +3,7 @@ + See guidelines at https://wiki.lyrasis.org/display/VIVODOC112x/Custom+List+View+Configurations --> diff --git a/webapp/src/main/webapp/config/listViewConfig-degreeEarned.xml b/webapp/src/main/webapp/config/listViewConfig-degreeEarned.xml index 5245714e..2c60a331 100644 --- a/webapp/src/main/webapp/config/listViewConfig-degreeEarned.xml +++ b/webapp/src/main/webapp/config/listViewConfig-degreeEarned.xml @@ -1,7 +1,7 @@ - + diff --git a/webapp/src/main/webapp/config/listViewConfig-doi.xml b/webapp/src/main/webapp/config/listViewConfig-doi.xml index 3cd5e6ae..48938bcd 100644 --- a/webapp/src/main/webapp/config/listViewConfig-doi.xml +++ b/webapp/src/main/webapp/config/listViewConfig-doi.xml @@ -3,7 +3,7 @@ + See guidelines at https://wiki.lyrasis.org/display/VIVODOC112x/Custom+List+View+Configurations --> diff --git a/webapp/src/main/webapp/config/listViewConfig-editorship.xml b/webapp/src/main/webapp/config/listViewConfig-editorship.xml index 0d0bf485..6b43b2a8 100644 --- a/webapp/src/main/webapp/config/listViewConfig-editorship.xml +++ b/webapp/src/main/webapp/config/listViewConfig-editorship.xml @@ -1,7 +1,7 @@ - + diff --git a/webapp/src/main/webapp/config/listViewConfig-educationalTraining.xml b/webapp/src/main/webapp/config/listViewConfig-educationalTraining.xml index 676c9aa5..ef99da28 100644 --- a/webapp/src/main/webapp/config/listViewConfig-educationalTraining.xml +++ b/webapp/src/main/webapp/config/listViewConfig-educationalTraining.xml @@ -1,7 +1,7 @@ - + diff --git a/webapp/src/main/webapp/config/listViewConfig-fauxPropertyDefault.xml b/webapp/src/main/webapp/config/listViewConfig-fauxPropertyDefault.xml index dec47497..a7f78596 100644 --- a/webapp/src/main/webapp/config/listViewConfig-fauxPropertyDefault.xml +++ b/webapp/src/main/webapp/config/listViewConfig-fauxPropertyDefault.xml @@ -3,7 +3,7 @@ + See guidelines at https://wiki.lyrasis.org/display/VIVODOC112x/Custom+List+View+Configurations --> diff --git a/webapp/src/main/webapp/config/listViewConfig-faxNumber.xml b/webapp/src/main/webapp/config/listViewConfig-faxNumber.xml index 5b6a5a96..8eec4f51 100644 --- a/webapp/src/main/webapp/config/listViewConfig-faxNumber.xml +++ b/webapp/src/main/webapp/config/listViewConfig-faxNumber.xml @@ -1,7 +1,7 @@ - + diff --git a/webapp/src/main/webapp/config/listViewConfig-fullName.xml b/webapp/src/main/webapp/config/listViewConfig-fullName.xml index 1c5df79b..0087de02 100644 --- a/webapp/src/main/webapp/config/listViewConfig-fullName.xml +++ b/webapp/src/main/webapp/config/listViewConfig-fullName.xml @@ -1,7 +1,7 @@ - + diff --git a/webapp/src/main/webapp/config/listViewConfig-grantAdministeredBy.xml b/webapp/src/main/webapp/config/listViewConfig-grantAdministeredBy.xml index c3a05eba..698881bd 100644 --- a/webapp/src/main/webapp/config/listViewConfig-grantAdministeredBy.xml +++ b/webapp/src/main/webapp/config/listViewConfig-grantAdministeredBy.xml @@ -1,7 +1,7 @@ - + diff --git a/webapp/src/main/webapp/config/listViewConfig-hasAssociatedConcept.xml b/webapp/src/main/webapp/config/listViewConfig-hasAssociatedConcept.xml index 9d563cc6..239ed0b0 100644 --- a/webapp/src/main/webapp/config/listViewConfig-hasAssociatedConcept.xml +++ b/webapp/src/main/webapp/config/listViewConfig-hasAssociatedConcept.xml @@ -1,7 +1,7 @@ - + diff --git a/webapp/src/main/webapp/config/listViewConfig-hasAttendeeRole.xml b/webapp/src/main/webapp/config/listViewConfig-hasAttendeeRole.xml index 3b7bc325..7ba52ee7 100644 --- a/webapp/src/main/webapp/config/listViewConfig-hasAttendeeRole.xml +++ b/webapp/src/main/webapp/config/listViewConfig-hasAttendeeRole.xml @@ -1,7 +1,7 @@ - + diff --git a/webapp/src/main/webapp/config/listViewConfig-hasClinicalActivity.xml b/webapp/src/main/webapp/config/listViewConfig-hasClinicalActivity.xml index 9cdba6e0..6d7bccdb 100644 --- a/webapp/src/main/webapp/config/listViewConfig-hasClinicalActivity.xml +++ b/webapp/src/main/webapp/config/listViewConfig-hasClinicalActivity.xml @@ -1,7 +1,7 @@ - + diff --git a/webapp/src/main/webapp/config/listViewConfig-hasCoPrincipalInvestigatorRole.xml b/webapp/src/main/webapp/config/listViewConfig-hasCoPrincipalInvestigatorRole.xml index b6442841..e0ea1490 100644 --- a/webapp/src/main/webapp/config/listViewConfig-hasCoPrincipalInvestigatorRole.xml +++ b/webapp/src/main/webapp/config/listViewConfig-hasCoPrincipalInvestigatorRole.xml @@ -1,7 +1,7 @@ - + diff --git a/webapp/src/main/webapp/config/listViewConfig-hasEditorRole.xml b/webapp/src/main/webapp/config/listViewConfig-hasEditorRole.xml index c87854f0..124f3d4c 100644 --- a/webapp/src/main/webapp/config/listViewConfig-hasEditorRole.xml +++ b/webapp/src/main/webapp/config/listViewConfig-hasEditorRole.xml @@ -1,7 +1,7 @@ - + diff --git a/webapp/src/main/webapp/config/listViewConfig-hasInvestigatorRole.xml b/webapp/src/main/webapp/config/listViewConfig-hasInvestigatorRole.xml index df031ec9..c2ea6896 100644 --- a/webapp/src/main/webapp/config/listViewConfig-hasInvestigatorRole.xml +++ b/webapp/src/main/webapp/config/listViewConfig-hasInvestigatorRole.xml @@ -1,7 +1,7 @@ - + diff --git a/webapp/src/main/webapp/config/listViewConfig-hasPresenterRole.xml b/webapp/src/main/webapp/config/listViewConfig-hasPresenterRole.xml index 7d0aa24f..768b0b53 100644 --- a/webapp/src/main/webapp/config/listViewConfig-hasPresenterRole.xml +++ b/webapp/src/main/webapp/config/listViewConfig-hasPresenterRole.xml @@ -1,7 +1,7 @@ - + diff --git a/webapp/src/main/webapp/config/listViewConfig-hasPrincipalInvestigatorRole.xml b/webapp/src/main/webapp/config/listViewConfig-hasPrincipalInvestigatorRole.xml index 9a0fab66..39c87151 100644 --- a/webapp/src/main/webapp/config/listViewConfig-hasPrincipalInvestigatorRole.xml +++ b/webapp/src/main/webapp/config/listViewConfig-hasPrincipalInvestigatorRole.xml @@ -1,7 +1,7 @@ - + diff --git a/webapp/src/main/webapp/config/listViewConfig-hasReviewerRole.xml b/webapp/src/main/webapp/config/listViewConfig-hasReviewerRole.xml index 403f86d5..69e31bef 100644 --- a/webapp/src/main/webapp/config/listViewConfig-hasReviewerRole.xml +++ b/webapp/src/main/webapp/config/listViewConfig-hasReviewerRole.xml @@ -1,7 +1,7 @@ - + diff --git a/webapp/src/main/webapp/config/listViewConfig-hasRole.xml b/webapp/src/main/webapp/config/listViewConfig-hasRole.xml index 51bf20ec..0d200f5b 100644 --- a/webapp/src/main/webapp/config/listViewConfig-hasRole.xml +++ b/webapp/src/main/webapp/config/listViewConfig-hasRole.xml @@ -1,7 +1,7 @@ - + diff --git a/webapp/src/main/webapp/config/listViewConfig-informationResourceInAuthorship.xml b/webapp/src/main/webapp/config/listViewConfig-informationResourceInAuthorship.xml index 9c1a98fb..c9d15ae6 100644 --- a/webapp/src/main/webapp/config/listViewConfig-informationResourceInAuthorship.xml +++ b/webapp/src/main/webapp/config/listViewConfig-informationResourceInAuthorship.xml @@ -1,7 +1,7 @@ - + diff --git a/webapp/src/main/webapp/config/listViewConfig-informationResourceInEditorship.xml b/webapp/src/main/webapp/config/listViewConfig-informationResourceInEditorship.xml index 11d43f4a..e6281ca0 100644 --- a/webapp/src/main/webapp/config/listViewConfig-informationResourceInEditorship.xml +++ b/webapp/src/main/webapp/config/listViewConfig-informationResourceInEditorship.xml @@ -1,7 +1,7 @@ - + diff --git a/webapp/src/main/webapp/config/listViewConfig-issuedCredential.xml b/webapp/src/main/webapp/config/listViewConfig-issuedCredential.xml index 1e741ae9..d79071ed 100644 --- a/webapp/src/main/webapp/config/listViewConfig-issuedCredential.xml +++ b/webapp/src/main/webapp/config/listViewConfig-issuedCredential.xml @@ -1,7 +1,7 @@ - + diff --git a/webapp/src/main/webapp/config/listViewConfig-mailingAddress.xml b/webapp/src/main/webapp/config/listViewConfig-mailingAddress.xml index 1a5bd4f9..61298008 100644 --- a/webapp/src/main/webapp/config/listViewConfig-mailingAddress.xml +++ b/webapp/src/main/webapp/config/listViewConfig-mailingAddress.xml @@ -1,7 +1,7 @@ - + diff --git a/webapp/src/main/webapp/config/listViewConfig-orcidId.xml b/webapp/src/main/webapp/config/listViewConfig-orcidId.xml index 67686c27..f4fdee64 100644 --- a/webapp/src/main/webapp/config/listViewConfig-orcidId.xml +++ b/webapp/src/main/webapp/config/listViewConfig-orcidId.xml @@ -3,7 +3,7 @@ + See guidelines at https://wiki.lyrasis.org/display/VIVODOC112x/Custom+List+View+Configurations --> diff --git a/webapp/src/main/webapp/config/listViewConfig-organizationAdministersGrant.xml b/webapp/src/main/webapp/config/listViewConfig-organizationAdministersGrant.xml index fcc09d57..da7f5838 100644 --- a/webapp/src/main/webapp/config/listViewConfig-organizationAdministersGrant.xml +++ b/webapp/src/main/webapp/config/listViewConfig-organizationAdministersGrant.xml @@ -1,7 +1,7 @@ - + diff --git a/webapp/src/main/webapp/config/listViewConfig-organizationAwardsGrant.xml b/webapp/src/main/webapp/config/listViewConfig-organizationAwardsGrant.xml index 522179de..6c56c26a 100644 --- a/webapp/src/main/webapp/config/listViewConfig-organizationAwardsGrant.xml +++ b/webapp/src/main/webapp/config/listViewConfig-organizationAwardsGrant.xml @@ -1,7 +1,7 @@ - + diff --git a/webapp/src/main/webapp/config/listViewConfig-organizationForPosition.xml b/webapp/src/main/webapp/config/listViewConfig-organizationForPosition.xml index 9565578a..8fde15da 100644 --- a/webapp/src/main/webapp/config/listViewConfig-organizationForPosition.xml +++ b/webapp/src/main/webapp/config/listViewConfig-organizationForPosition.xml @@ -1,7 +1,7 @@ - + diff --git a/webapp/src/main/webapp/config/listViewConfig-organizationForTraining.xml b/webapp/src/main/webapp/config/listViewConfig-organizationForTraining.xml index 4763c9d3..037a53f3 100644 --- a/webapp/src/main/webapp/config/listViewConfig-organizationForTraining.xml +++ b/webapp/src/main/webapp/config/listViewConfig-organizationForTraining.xml @@ -1,7 +1,7 @@ - + diff --git a/webapp/src/main/webapp/config/listViewConfig-personInPosition.xml b/webapp/src/main/webapp/config/listViewConfig-personInPosition.xml index 9a578c49..8fb58bb5 100644 --- a/webapp/src/main/webapp/config/listViewConfig-personInPosition.xml +++ b/webapp/src/main/webapp/config/listViewConfig-personInPosition.xml @@ -1,7 +1,7 @@ - + diff --git a/webapp/src/main/webapp/config/listViewConfig-preferredTitle.xml b/webapp/src/main/webapp/config/listViewConfig-preferredTitle.xml index 9cdaa46a..bff23dd1 100644 --- a/webapp/src/main/webapp/config/listViewConfig-preferredTitle.xml +++ b/webapp/src/main/webapp/config/listViewConfig-preferredTitle.xml @@ -1,7 +1,7 @@ - + diff --git a/webapp/src/main/webapp/config/listViewConfig-primaryEmail.xml b/webapp/src/main/webapp/config/listViewConfig-primaryEmail.xml index 32a26ebe..d920f1a0 100644 --- a/webapp/src/main/webapp/config/listViewConfig-primaryEmail.xml +++ b/webapp/src/main/webapp/config/listViewConfig-primaryEmail.xml @@ -1,7 +1,7 @@ - + diff --git a/webapp/src/main/webapp/config/listViewConfig-publicationVenueFor.xml b/webapp/src/main/webapp/config/listViewConfig-publicationVenueFor.xml index f83ae2fc..b96d04db 100644 --- a/webapp/src/main/webapp/config/listViewConfig-publicationVenueFor.xml +++ b/webapp/src/main/webapp/config/listViewConfig-publicationVenueFor.xml @@ -1,7 +1,7 @@ - + diff --git a/webapp/src/main/webapp/config/listViewConfig-publisherOf.xml b/webapp/src/main/webapp/config/listViewConfig-publisherOf.xml index d31ea7c7..b39e816f 100644 --- a/webapp/src/main/webapp/config/listViewConfig-publisherOf.xml +++ b/webapp/src/main/webapp/config/listViewConfig-publisherOf.xml @@ -1,7 +1,7 @@ - + diff --git a/webapp/src/main/webapp/config/listViewConfig-rangeUnion.xml b/webapp/src/main/webapp/config/listViewConfig-rangeUnion.xml index acca40d3..a7b19bfe 100644 --- a/webapp/src/main/webapp/config/listViewConfig-rangeUnion.xml +++ b/webapp/src/main/webapp/config/listViewConfig-rangeUnion.xml @@ -3,7 +3,7 @@ + See guidelines at https://wiki.lyrasis.org/display/VIVODOC112x/Custom+List+View+Configurations --> diff --git a/webapp/src/main/webapp/config/listViewConfig-relatedRole.xml b/webapp/src/main/webapp/config/listViewConfig-relatedRole.xml index 193fa951..17f7dc0f 100644 --- a/webapp/src/main/webapp/config/listViewConfig-relatedRole.xml +++ b/webapp/src/main/webapp/config/listViewConfig-relatedRole.xml @@ -1,7 +1,7 @@ - + diff --git a/webapp/src/main/webapp/config/listViewConfig-researchActivities.xml b/webapp/src/main/webapp/config/listViewConfig-researchActivities.xml index 7bfe4279..e7e95584 100644 --- a/webapp/src/main/webapp/config/listViewConfig-researchActivities.xml +++ b/webapp/src/main/webapp/config/listViewConfig-researchActivities.xml @@ -1,7 +1,7 @@ - + diff --git a/webapp/src/main/webapp/config/listViewConfig-researchAreaOf.xml b/webapp/src/main/webapp/config/listViewConfig-researchAreaOf.xml index e37be248..ee4cae86 100644 --- a/webapp/src/main/webapp/config/listViewConfig-researchAreaOf.xml +++ b/webapp/src/main/webapp/config/listViewConfig-researchAreaOf.xml @@ -3,7 +3,7 @@ + See guidelines at https://wiki.lyrasis.org/display/VIVODOC112x/Custom+List+View+Configurations --> diff --git a/webapp/src/main/webapp/config/listViewConfig-roleContributesTo.xml b/webapp/src/main/webapp/config/listViewConfig-roleContributesTo.xml index dd87a529..7da48fd2 100644 --- a/webapp/src/main/webapp/config/listViewConfig-roleContributesTo.xml +++ b/webapp/src/main/webapp/config/listViewConfig-roleContributesTo.xml @@ -1,7 +1,7 @@ - diff --git a/webapp/src/main/webapp/config/listViewConfig-roleRealizedIn.xml b/webapp/src/main/webapp/config/listViewConfig-roleRealizedIn.xml index 4aef99e6..0162f28e 100644 --- a/webapp/src/main/webapp/config/listViewConfig-roleRealizedIn.xml +++ b/webapp/src/main/webapp/config/listViewConfig-roleRealizedIn.xml @@ -1,7 +1,7 @@ - + diff --git a/webapp/src/main/webapp/config/listViewConfig-scopusId.xml b/webapp/src/main/webapp/config/listViewConfig-scopusId.xml index e910dc9e..c3a918e8 100644 --- a/webapp/src/main/webapp/config/listViewConfig-scopusId.xml +++ b/webapp/src/main/webapp/config/listViewConfig-scopusId.xml @@ -3,7 +3,7 @@ + See guidelines at https://wiki.lyrasis.org/display/VIVODOC112x/Custom+List+View+Configurations --> diff --git a/webapp/src/main/webapp/config/listViewConfig-telephoneNumber.xml b/webapp/src/main/webapp/config/listViewConfig-telephoneNumber.xml index 97ac5991..d83d5780 100644 --- a/webapp/src/main/webapp/config/listViewConfig-telephoneNumber.xml +++ b/webapp/src/main/webapp/config/listViewConfig-telephoneNumber.xml @@ -1,7 +1,7 @@ - + diff --git a/webapp/src/main/webapp/config/listViewConfig-webpage.xml b/webapp/src/main/webapp/config/listViewConfig-webpage.xml index d6d4a5c2..2d7b5cbe 100644 --- a/webapp/src/main/webapp/config/listViewConfig-webpage.xml +++ b/webapp/src/main/webapp/config/listViewConfig-webpage.xml @@ -3,7 +3,7 @@ + See guidelines at https://wiki.lyrasis.org/display/VIVODOC112x/Custom+List+View+Configurations --> diff --git a/webapp/src/main/webapp/themes/tenderfoot/bootstrap/css/bootstrap-theme.css b/webapp/src/main/webapp/themes/tenderfoot/bootstrap/css/bootstrap-theme.css index 31d88826..93298420 100644 --- a/webapp/src/main/webapp/themes/tenderfoot/bootstrap/css/bootstrap-theme.css +++ b/webapp/src/main/webapp/themes/tenderfoot/bootstrap/css/bootstrap-theme.css @@ -1,7 +1,7 @@ /*! * Bootstrap v3.3.7 (http://getbootstrap.com) * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) */ .btn-default, .btn-primary, diff --git a/webapp/src/main/webapp/themes/tenderfoot/bootstrap/css/bootstrap-theme.css.map b/webapp/src/main/webapp/themes/tenderfoot/bootstrap/css/bootstrap-theme.css.map index d876f60f..277a8d21 100644 --- a/webapp/src/main/webapp/themes/tenderfoot/bootstrap/css/bootstrap-theme.css.map +++ b/webapp/src/main/webapp/themes/tenderfoot/bootstrap/css/bootstrap-theme.css.map @@ -1 +1 @@ -{"version":3,"sources":["bootstrap-theme.css","less/theme.less","less/mixins/vendor-prefixes.less","less/mixins/gradients.less","less/mixins/reset-filter.less"],"names":[],"mappings":"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","file":"bootstrap-theme.css","sourcesContent":["/*!\n * Bootstrap v3.3.7 (http://getbootstrap.com)\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.btn-default:active,\n.btn-primary:active,\n.btn-success:active,\n.btn-info:active,\n.btn-warning:active,\n.btn-danger:active,\n.btn-default.active,\n.btn-primary.active,\n.btn-success.active,\n.btn-info.active,\n.btn-warning.active,\n.btn-danger.active {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-default.disabled,\n.btn-primary.disabled,\n.btn-success.disabled,\n.btn-info.disabled,\n.btn-warning.disabled,\n.btn-danger.disabled,\n.btn-default[disabled],\n.btn-primary[disabled],\n.btn-success[disabled],\n.btn-info[disabled],\n.btn-warning[disabled],\n.btn-danger[disabled],\nfieldset[disabled] .btn-default,\nfieldset[disabled] .btn-primary,\nfieldset[disabled] .btn-success,\nfieldset[disabled] .btn-info,\nfieldset[disabled] .btn-warning,\nfieldset[disabled] .btn-danger {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-default .badge,\n.btn-primary .badge,\n.btn-success .badge,\n.btn-info .badge,\n.btn-warning .badge,\n.btn-danger .badge {\n text-shadow: none;\n}\n.btn:active,\n.btn.active {\n background-image: none;\n}\n.btn-default {\n background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);\n background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);\n background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #dbdbdb;\n text-shadow: 0 1px 0 #fff;\n border-color: #ccc;\n}\n.btn-default:hover,\n.btn-default:focus {\n background-color: #e0e0e0;\n background-position: 0 -15px;\n}\n.btn-default:active,\n.btn-default.active {\n background-color: #e0e0e0;\n border-color: #dbdbdb;\n}\n.btn-default.disabled,\n.btn-default[disabled],\nfieldset[disabled] .btn-default,\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus,\n.btn-default.disabled:active,\n.btn-default[disabled]:active,\nfieldset[disabled] .btn-default:active,\n.btn-default.disabled.active,\n.btn-default[disabled].active,\nfieldset[disabled] .btn-default.active {\n background-color: #e0e0e0;\n background-image: none;\n}\n.btn-primary {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #245580;\n}\n.btn-primary:hover,\n.btn-primary:focus {\n background-color: #265a88;\n background-position: 0 -15px;\n}\n.btn-primary:active,\n.btn-primary.active {\n background-color: #265a88;\n border-color: #245580;\n}\n.btn-primary.disabled,\n.btn-primary[disabled],\nfieldset[disabled] .btn-primary,\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus,\n.btn-primary.disabled:active,\n.btn-primary[disabled]:active,\nfieldset[disabled] .btn-primary:active,\n.btn-primary.disabled.active,\n.btn-primary[disabled].active,\nfieldset[disabled] .btn-primary.active {\n background-color: #265a88;\n background-image: none;\n}\n.btn-success {\n background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);\n background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);\n background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #3e8f3e;\n}\n.btn-success:hover,\n.btn-success:focus {\n background-color: #419641;\n background-position: 0 -15px;\n}\n.btn-success:active,\n.btn-success.active {\n background-color: #419641;\n border-color: #3e8f3e;\n}\n.btn-success.disabled,\n.btn-success[disabled],\nfieldset[disabled] .btn-success,\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus,\n.btn-success.disabled:active,\n.btn-success[disabled]:active,\nfieldset[disabled] .btn-success:active,\n.btn-success.disabled.active,\n.btn-success[disabled].active,\nfieldset[disabled] .btn-success.active {\n background-color: #419641;\n background-image: none;\n}\n.btn-info {\n background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #28a4c9;\n}\n.btn-info:hover,\n.btn-info:focus {\n background-color: #2aabd2;\n background-position: 0 -15px;\n}\n.btn-info:active,\n.btn-info.active {\n background-color: #2aabd2;\n border-color: #28a4c9;\n}\n.btn-info.disabled,\n.btn-info[disabled],\nfieldset[disabled] .btn-info,\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus,\n.btn-info.disabled:active,\n.btn-info[disabled]:active,\nfieldset[disabled] .btn-info:active,\n.btn-info.disabled.active,\n.btn-info[disabled].active,\nfieldset[disabled] .btn-info.active {\n background-color: #2aabd2;\n background-image: none;\n}\n.btn-warning {\n background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #e38d13;\n}\n.btn-warning:hover,\n.btn-warning:focus {\n background-color: #eb9316;\n background-position: 0 -15px;\n}\n.btn-warning:active,\n.btn-warning.active {\n background-color: #eb9316;\n border-color: #e38d13;\n}\n.btn-warning.disabled,\n.btn-warning[disabled],\nfieldset[disabled] .btn-warning,\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus,\n.btn-warning.disabled:active,\n.btn-warning[disabled]:active,\nfieldset[disabled] .btn-warning:active,\n.btn-warning.disabled.active,\n.btn-warning[disabled].active,\nfieldset[disabled] .btn-warning.active {\n background-color: #eb9316;\n background-image: none;\n}\n.btn-danger {\n background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #b92c28;\n}\n.btn-danger:hover,\n.btn-danger:focus {\n background-color: #c12e2a;\n background-position: 0 -15px;\n}\n.btn-danger:active,\n.btn-danger.active {\n background-color: #c12e2a;\n border-color: #b92c28;\n}\n.btn-danger.disabled,\n.btn-danger[disabled],\nfieldset[disabled] .btn-danger,\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus,\n.btn-danger.disabled:active,\n.btn-danger[disabled]:active,\nfieldset[disabled] .btn-danger:active,\n.btn-danger.disabled.active,\n.btn-danger[disabled].active,\nfieldset[disabled] .btn-danger.active {\n background-color: #c12e2a;\n background-image: none;\n}\n.thumbnail,\n.img-thumbnail {\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n background-color: #e8e8e8;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n background-color: #2e6da4;\n}\n.navbar-default {\n background-image: -webkit-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n background-image: -o-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n background-image: linear-gradient(to bottom, #ffffff 0%, #f8f8f8 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .active > a {\n background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);\n -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255, 255, 255, 0.25);\n}\n.navbar-inverse {\n background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);\n background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%);\n background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n border-radius: 4px;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .active > a {\n background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);\n -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n}\n.navbar-inverse .navbar-brand,\n.navbar-inverse .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n@media (max-width: 767px) {\n .navbar .navbar-nav .open .dropdown-menu > .active > a,\n .navbar .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #fff;\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n }\n}\n.alert {\n text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2);\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.alert-success {\n background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);\n border-color: #b2dba1;\n}\n.alert-info {\n background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);\n border-color: #9acfea;\n}\n.alert-warning {\n background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);\n border-color: #f5e79e;\n}\n.alert-danger {\n background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);\n border-color: #dca7a7;\n}\n.progress {\n background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);\n}\n.progress-bar {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);\n}\n.progress-bar-success {\n background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);\n}\n.progress-bar-info {\n background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);\n}\n.progress-bar-warning {\n background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);\n}\n.progress-bar-danger {\n background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);\n}\n.progress-bar-striped {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.list-group {\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 #286090;\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);\n border-color: #2b669a;\n}\n.list-group-item.active .badge,\n.list-group-item.active:hover .badge,\n.list-group-item.active:focus .badge {\n text-shadow: none;\n}\n.panel {\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.panel-default > .panel-heading {\n background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n}\n.panel-primary > .panel-heading {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n}\n.panel-success > .panel-heading {\n background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);\n}\n.panel-info > .panel-heading {\n background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);\n}\n.panel-warning > .panel-heading {\n background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);\n}\n.panel-danger > .panel-heading {\n background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);\n}\n.well {\n background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);\n border-color: #dcdcdc;\n -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n}\n/*# sourceMappingURL=bootstrap-theme.css.map */","/*!\n * Bootstrap v3.3.7 (http://getbootstrap.com)\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n//\n// Load core variables and mixins\n// --------------------------------------------------\n\n@import \"variables.less\";\n@import \"mixins.less\";\n\n\n//\n// Buttons\n// --------------------------------------------------\n\n// Common styles\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0,0,0,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n // Reset the shadow\n &:active,\n &.active {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n .box-shadow(none);\n }\n\n .badge {\n text-shadow: none;\n }\n}\n\n// Mixin for generating new styles\n.btn-styles(@btn-color: #555) {\n #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%));\n .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners; see https://github.com/twbs/bootstrap/issues/10620\n background-repeat: repeat-x;\n border-color: darken(@btn-color, 14%);\n\n &:hover,\n &:focus {\n background-color: darken(@btn-color, 12%);\n background-position: 0 -15px;\n }\n\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n border-color: darken(@btn-color, 14%);\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &,\n &:hover,\n &:focus,\n &.focus,\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n background-image: none;\n }\n }\n}\n\n// Common styles\n.btn {\n // Remove the gradient for the pressed/active state\n &:active,\n &.active {\n background-image: none;\n }\n}\n\n// Apply the mixin to the buttons\n.btn-default { .btn-styles(@btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; }\n.btn-primary { .btn-styles(@btn-primary-bg); }\n.btn-success { .btn-styles(@btn-success-bg); }\n.btn-info { .btn-styles(@btn-info-bg); }\n.btn-warning { .btn-styles(@btn-warning-bg); }\n.btn-danger { .btn-styles(@btn-danger-bg); }\n\n\n//\n// Images\n// --------------------------------------------------\n\n.thumbnail,\n.img-thumbnail {\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n\n\n//\n// Dropdowns\n// --------------------------------------------------\n\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%));\n background-color: darken(@dropdown-link-hover-bg, 5%);\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n background-color: darken(@dropdown-link-active-bg, 5%);\n}\n\n\n//\n// Navbar\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n #gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-color: @navbar-default-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n border-radius: @navbar-border-radius;\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: darken(@navbar-default-link-active-bg, 5%); @end-color: darken(@navbar-default-link-active-bg, 2%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.075));\n }\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255,255,255,.25);\n}\n\n// Inverted navbar\n.navbar-inverse {\n #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered; see https://github.com/twbs/bootstrap/issues/10257\n border-radius: @navbar-border-radius;\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: @navbar-inverse-link-active-bg; @end-color: lighten(@navbar-inverse-link-active-bg, 2.5%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.25));\n }\n\n .navbar-brand,\n .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0,0,0,.25);\n }\n}\n\n// Undo rounded corners in static and fixed navbars\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n\n// Fix active state of dropdown items in collapsed mode\n@media (max-width: @grid-float-breakpoint-max) {\n .navbar .navbar-nav .open .dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: #fff;\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n }\n }\n}\n\n\n//\n// Alerts\n// --------------------------------------------------\n\n// Common styles\n.alert {\n text-shadow: 0 1px 0 rgba(255,255,255,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05);\n .box-shadow(@shadow);\n}\n\n// Mixin for generating new styles\n.alert-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%));\n border-color: darken(@color, 15%);\n}\n\n// Apply the mixin to the alerts\n.alert-success { .alert-styles(@alert-success-bg); }\n.alert-info { .alert-styles(@alert-info-bg); }\n.alert-warning { .alert-styles(@alert-warning-bg); }\n.alert-danger { .alert-styles(@alert-danger-bg); }\n\n\n//\n// Progress bars\n// --------------------------------------------------\n\n// Give the progress background some depth\n.progress {\n #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg)\n}\n\n// Mixin for generating new styles\n.progress-bar-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%));\n}\n\n// Apply the mixin to the progress bars\n.progress-bar { .progress-bar-styles(@progress-bar-bg); }\n.progress-bar-success { .progress-bar-styles(@progress-bar-success-bg); }\n.progress-bar-info { .progress-bar-styles(@progress-bar-info-bg); }\n.progress-bar-warning { .progress-bar-styles(@progress-bar-warning-bg); }\n.progress-bar-danger { .progress-bar-styles(@progress-bar-danger-bg); }\n\n// Reset the striped class because our mixins don't do multiple gradients and\n// the above custom styles override the new `.progress-bar-striped` in v3.2.0.\n.progress-bar-striped {\n #gradient > .striped();\n}\n\n\n//\n// List groups\n// --------------------------------------------------\n\n.list-group {\n border-radius: @border-radius-base;\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%);\n #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%));\n border-color: darken(@list-group-active-border, 7.5%);\n\n .badge {\n text-shadow: none;\n }\n}\n\n\n//\n// Panels\n// --------------------------------------------------\n\n// Common styles\n.panel {\n .box-shadow(0 1px 2px rgba(0,0,0,.05));\n}\n\n// Mixin for generating new styles\n.panel-heading-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%));\n}\n\n// Apply the mixin to the panel headings only\n.panel-default > .panel-heading { .panel-heading-styles(@panel-default-heading-bg); }\n.panel-primary > .panel-heading { .panel-heading-styles(@panel-primary-heading-bg); }\n.panel-success > .panel-heading { .panel-heading-styles(@panel-success-heading-bg); }\n.panel-info > .panel-heading { .panel-heading-styles(@panel-info-heading-bg); }\n.panel-warning > .panel-heading { .panel-heading-styles(@panel-warning-heading-bg); }\n.panel-danger > .panel-heading { .panel-heading-styles(@panel-danger-heading-bg); }\n\n\n//\n// Wells\n// --------------------------------------------------\n\n.well {\n #gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg);\n border-color: darken(@well-bg, 10%);\n @shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They have been removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility) {\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","// Gradients\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n"]} \ No newline at end of file +{"version":3,"sources":["bootstrap-theme.css","less/theme.less","less/mixins/vendor-prefixes.less","less/mixins/gradients.less","less/mixins/reset-filter.less"],"names":[],"mappings":"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","file":"bootstrap-theme.css","sourcesContent":["/*!\n * Bootstrap v3.3.7 (http://getbootstrap.com)\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.btn-default:active,\n.btn-primary:active,\n.btn-success:active,\n.btn-info:active,\n.btn-warning:active,\n.btn-danger:active,\n.btn-default.active,\n.btn-primary.active,\n.btn-success.active,\n.btn-info.active,\n.btn-warning.active,\n.btn-danger.active {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-default.disabled,\n.btn-primary.disabled,\n.btn-success.disabled,\n.btn-info.disabled,\n.btn-warning.disabled,\n.btn-danger.disabled,\n.btn-default[disabled],\n.btn-primary[disabled],\n.btn-success[disabled],\n.btn-info[disabled],\n.btn-warning[disabled],\n.btn-danger[disabled],\nfieldset[disabled] .btn-default,\nfieldset[disabled] .btn-primary,\nfieldset[disabled] .btn-success,\nfieldset[disabled] .btn-info,\nfieldset[disabled] .btn-warning,\nfieldset[disabled] .btn-danger {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-default .badge,\n.btn-primary .badge,\n.btn-success .badge,\n.btn-info .badge,\n.btn-warning .badge,\n.btn-danger .badge {\n text-shadow: none;\n}\n.btn:active,\n.btn.active {\n background-image: none;\n}\n.btn-default {\n background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);\n background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);\n background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #dbdbdb;\n text-shadow: 0 1px 0 #fff;\n border-color: #ccc;\n}\n.btn-default:hover,\n.btn-default:focus {\n background-color: #e0e0e0;\n background-position: 0 -15px;\n}\n.btn-default:active,\n.btn-default.active {\n background-color: #e0e0e0;\n border-color: #dbdbdb;\n}\n.btn-default.disabled,\n.btn-default[disabled],\nfieldset[disabled] .btn-default,\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus,\n.btn-default.disabled:active,\n.btn-default[disabled]:active,\nfieldset[disabled] .btn-default:active,\n.btn-default.disabled.active,\n.btn-default[disabled].active,\nfieldset[disabled] .btn-default.active {\n background-color: #e0e0e0;\n background-image: none;\n}\n.btn-primary {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #245580;\n}\n.btn-primary:hover,\n.btn-primary:focus {\n background-color: #265a88;\n background-position: 0 -15px;\n}\n.btn-primary:active,\n.btn-primary.active {\n background-color: #265a88;\n border-color: #245580;\n}\n.btn-primary.disabled,\n.btn-primary[disabled],\nfieldset[disabled] .btn-primary,\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus,\n.btn-primary.disabled:active,\n.btn-primary[disabled]:active,\nfieldset[disabled] .btn-primary:active,\n.btn-primary.disabled.active,\n.btn-primary[disabled].active,\nfieldset[disabled] .btn-primary.active {\n background-color: #265a88;\n background-image: none;\n}\n.btn-success {\n background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);\n background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);\n background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #3e8f3e;\n}\n.btn-success:hover,\n.btn-success:focus {\n background-color: #419641;\n background-position: 0 -15px;\n}\n.btn-success:active,\n.btn-success.active {\n background-color: #419641;\n border-color: #3e8f3e;\n}\n.btn-success.disabled,\n.btn-success[disabled],\nfieldset[disabled] .btn-success,\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus,\n.btn-success.disabled:active,\n.btn-success[disabled]:active,\nfieldset[disabled] .btn-success:active,\n.btn-success.disabled.active,\n.btn-success[disabled].active,\nfieldset[disabled] .btn-success.active {\n background-color: #419641;\n background-image: none;\n}\n.btn-info {\n background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #28a4c9;\n}\n.btn-info:hover,\n.btn-info:focus {\n background-color: #2aabd2;\n background-position: 0 -15px;\n}\n.btn-info:active,\n.btn-info.active {\n background-color: #2aabd2;\n border-color: #28a4c9;\n}\n.btn-info.disabled,\n.btn-info[disabled],\nfieldset[disabled] .btn-info,\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus,\n.btn-info.disabled:active,\n.btn-info[disabled]:active,\nfieldset[disabled] .btn-info:active,\n.btn-info.disabled.active,\n.btn-info[disabled].active,\nfieldset[disabled] .btn-info.active {\n background-color: #2aabd2;\n background-image: none;\n}\n.btn-warning {\n background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #e38d13;\n}\n.btn-warning:hover,\n.btn-warning:focus {\n background-color: #eb9316;\n background-position: 0 -15px;\n}\n.btn-warning:active,\n.btn-warning.active {\n background-color: #eb9316;\n border-color: #e38d13;\n}\n.btn-warning.disabled,\n.btn-warning[disabled],\nfieldset[disabled] .btn-warning,\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus,\n.btn-warning.disabled:active,\n.btn-warning[disabled]:active,\nfieldset[disabled] .btn-warning:active,\n.btn-warning.disabled.active,\n.btn-warning[disabled].active,\nfieldset[disabled] .btn-warning.active {\n background-color: #eb9316;\n background-image: none;\n}\n.btn-danger {\n background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #b92c28;\n}\n.btn-danger:hover,\n.btn-danger:focus {\n background-color: #c12e2a;\n background-position: 0 -15px;\n}\n.btn-danger:active,\n.btn-danger.active {\n background-color: #c12e2a;\n border-color: #b92c28;\n}\n.btn-danger.disabled,\n.btn-danger[disabled],\nfieldset[disabled] .btn-danger,\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus,\n.btn-danger.disabled:active,\n.btn-danger[disabled]:active,\nfieldset[disabled] .btn-danger:active,\n.btn-danger.disabled.active,\n.btn-danger[disabled].active,\nfieldset[disabled] .btn-danger.active {\n background-color: #c12e2a;\n background-image: none;\n}\n.thumbnail,\n.img-thumbnail {\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n background-color: #e8e8e8;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n background-color: #2e6da4;\n}\n.navbar-default {\n background-image: -webkit-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n background-image: -o-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n background-image: linear-gradient(to bottom, #ffffff 0%, #f8f8f8 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .active > a {\n background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);\n -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255, 255, 255, 0.25);\n}\n.navbar-inverse {\n background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);\n background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%);\n background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n border-radius: 4px;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .active > a {\n background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);\n -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n}\n.navbar-inverse .navbar-brand,\n.navbar-inverse .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n@media (max-width: 767px) {\n .navbar .navbar-nav .open .dropdown-menu > .active > a,\n .navbar .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #fff;\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n }\n}\n.alert {\n text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2);\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.alert-success {\n background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);\n border-color: #b2dba1;\n}\n.alert-info {\n background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);\n border-color: #9acfea;\n}\n.alert-warning {\n background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);\n border-color: #f5e79e;\n}\n.alert-danger {\n background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);\n border-color: #dca7a7;\n}\n.progress {\n background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);\n}\n.progress-bar {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);\n}\n.progress-bar-success {\n background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);\n}\n.progress-bar-info {\n background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);\n}\n.progress-bar-warning {\n background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);\n}\n.progress-bar-danger {\n background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);\n}\n.progress-bar-striped {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.list-group {\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 #286090;\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);\n border-color: #2b669a;\n}\n.list-group-item.active .badge,\n.list-group-item.active:hover .badge,\n.list-group-item.active:focus .badge {\n text-shadow: none;\n}\n.panel {\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.panel-default > .panel-heading {\n background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n}\n.panel-primary > .panel-heading {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n}\n.panel-success > .panel-heading {\n background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);\n}\n.panel-info > .panel-heading {\n background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);\n}\n.panel-warning > .panel-heading {\n background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);\n}\n.panel-danger > .panel-heading {\n background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);\n}\n.well {\n background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);\n border-color: #dcdcdc;\n -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n}\n/*# sourceMappingURL=bootstrap-theme.css.map */","/*!\n * Bootstrap v3.3.7 (http://getbootstrap.com)\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n\n//\n// Load core variables and mixins\n// --------------------------------------------------\n\n@import \"variables.less\";\n@import \"mixins.less\";\n\n\n//\n// Buttons\n// --------------------------------------------------\n\n// Common styles\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0,0,0,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n // Reset the shadow\n &:active,\n &.active {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n .box-shadow(none);\n }\n\n .badge {\n text-shadow: none;\n }\n}\n\n// Mixin for generating new styles\n.btn-styles(@btn-color: #555) {\n #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%));\n .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners; see https://github.com/twbs/bootstrap/issues/10620\n background-repeat: repeat-x;\n border-color: darken(@btn-color, 14%);\n\n &:hover,\n &:focus {\n background-color: darken(@btn-color, 12%);\n background-position: 0 -15px;\n }\n\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n border-color: darken(@btn-color, 14%);\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &,\n &:hover,\n &:focus,\n &.focus,\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n background-image: none;\n }\n }\n}\n\n// Common styles\n.btn {\n // Remove the gradient for the pressed/active state\n &:active,\n &.active {\n background-image: none;\n }\n}\n\n// Apply the mixin to the buttons\n.btn-default { .btn-styles(@btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; }\n.btn-primary { .btn-styles(@btn-primary-bg); }\n.btn-success { .btn-styles(@btn-success-bg); }\n.btn-info { .btn-styles(@btn-info-bg); }\n.btn-warning { .btn-styles(@btn-warning-bg); }\n.btn-danger { .btn-styles(@btn-danger-bg); }\n\n\n//\n// Images\n// --------------------------------------------------\n\n.thumbnail,\n.img-thumbnail {\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n\n\n//\n// Dropdowns\n// --------------------------------------------------\n\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%));\n background-color: darken(@dropdown-link-hover-bg, 5%);\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n background-color: darken(@dropdown-link-active-bg, 5%);\n}\n\n\n//\n// Navbar\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n #gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-color: @navbar-default-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n border-radius: @navbar-border-radius;\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: darken(@navbar-default-link-active-bg, 5%); @end-color: darken(@navbar-default-link-active-bg, 2%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.075));\n }\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255,255,255,.25);\n}\n\n// Inverted navbar\n.navbar-inverse {\n #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered; see https://github.com/twbs/bootstrap/issues/10257\n border-radius: @navbar-border-radius;\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: @navbar-inverse-link-active-bg; @end-color: lighten(@navbar-inverse-link-active-bg, 2.5%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.25));\n }\n\n .navbar-brand,\n .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0,0,0,.25);\n }\n}\n\n// Undo rounded corners in static and fixed navbars\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n\n// Fix active state of dropdown items in collapsed mode\n@media (max-width: @grid-float-breakpoint-max) {\n .navbar .navbar-nav .open .dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: #fff;\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n }\n }\n}\n\n\n//\n// Alerts\n// --------------------------------------------------\n\n// Common styles\n.alert {\n text-shadow: 0 1px 0 rgba(255,255,255,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05);\n .box-shadow(@shadow);\n}\n\n// Mixin for generating new styles\n.alert-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%));\n border-color: darken(@color, 15%);\n}\n\n// Apply the mixin to the alerts\n.alert-success { .alert-styles(@alert-success-bg); }\n.alert-info { .alert-styles(@alert-info-bg); }\n.alert-warning { .alert-styles(@alert-warning-bg); }\n.alert-danger { .alert-styles(@alert-danger-bg); }\n\n\n//\n// Progress bars\n// --------------------------------------------------\n\n// Give the progress background some depth\n.progress {\n #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg)\n}\n\n// Mixin for generating new styles\n.progress-bar-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%));\n}\n\n// Apply the mixin to the progress bars\n.progress-bar { .progress-bar-styles(@progress-bar-bg); }\n.progress-bar-success { .progress-bar-styles(@progress-bar-success-bg); }\n.progress-bar-info { .progress-bar-styles(@progress-bar-info-bg); }\n.progress-bar-warning { .progress-bar-styles(@progress-bar-warning-bg); }\n.progress-bar-danger { .progress-bar-styles(@progress-bar-danger-bg); }\n\n// Reset the striped class because our mixins don't do multiple gradients and\n// the above custom styles override the new `.progress-bar-striped` in v3.2.0.\n.progress-bar-striped {\n #gradient > .striped();\n}\n\n\n//\n// List groups\n// --------------------------------------------------\n\n.list-group {\n border-radius: @border-radius-base;\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%);\n #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%));\n border-color: darken(@list-group-active-border, 7.5%);\n\n .badge {\n text-shadow: none;\n }\n}\n\n\n//\n// Panels\n// --------------------------------------------------\n\n// Common styles\n.panel {\n .box-shadow(0 1px 2px rgba(0,0,0,.05));\n}\n\n// Mixin for generating new styles\n.panel-heading-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%));\n}\n\n// Apply the mixin to the panel headings only\n.panel-default > .panel-heading { .panel-heading-styles(@panel-default-heading-bg); }\n.panel-primary > .panel-heading { .panel-heading-styles(@panel-primary-heading-bg); }\n.panel-success > .panel-heading { .panel-heading-styles(@panel-success-heading-bg); }\n.panel-info > .panel-heading { .panel-heading-styles(@panel-info-heading-bg); }\n.panel-warning > .panel-heading { .panel-heading-styles(@panel-warning-heading-bg); }\n.panel-danger > .panel-heading { .panel-heading-styles(@panel-danger-heading-bg); }\n\n\n//\n// Wells\n// --------------------------------------------------\n\n.well {\n #gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg);\n border-color: darken(@well-bg, 10%);\n @shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They have been removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility) {\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","// Gradients\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n"]} \ No newline at end of file diff --git a/webapp/src/main/webapp/themes/tenderfoot/bootstrap/css/bootstrap-theme.min.css b/webapp/src/main/webapp/themes/tenderfoot/bootstrap/css/bootstrap-theme.min.css index 7c1405dc..8b87cfbf 100644 --- a/webapp/src/main/webapp/themes/tenderfoot/bootstrap/css/bootstrap-theme.min.css +++ b/webapp/src/main/webapp/themes/tenderfoot/bootstrap/css/bootstrap-theme.min.css @@ -1,6 +1,6 @@ /*! * Bootstrap v3.3.7 (http://getbootstrap.com) * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) */.btn-danger,.btn-default,.btn-info,.btn-primary,.btn-success,.btn-warning{text-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-success.active,.btn-success:active,.btn-warning.active,.btn-warning:active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-danger.disabled,.btn-danger[disabled],.btn-default.disabled,.btn-default[disabled],.btn-info.disabled,.btn-info[disabled],.btn-primary.disabled,.btn-primary[disabled],.btn-success.disabled,.btn-success[disabled],.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-danger,fieldset[disabled] .btn-default,fieldset[disabled] .btn-info,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-success,fieldset[disabled] .btn-warning{-webkit-box-shadow:none;box-shadow:none}.btn-danger .badge,.btn-default .badge,.btn-info .badge,.btn-primary .badge,.btn-success .badge,.btn-warning .badge{text-shadow:none}.btn.active,.btn:active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-o-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e0e0e0));background-image:linear-gradient(to bottom,#fff 0,#e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#dbdbdb;border-color:#ccc}.btn-default:focus,.btn-default:hover{background-color:#e0e0e0;background-position:0 -15px}.btn-default.active,.btn-default:active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#e0e0e0;background-image:none}.btn-primary{background-image:-webkit-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-o-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#265a88));background-image:linear-gradient(to bottom,#337ab7 0,#265a88 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#245580}.btn-primary:focus,.btn-primary:hover{background-color:#265a88;background-position:0 -15px}.btn-primary.active,.btn-primary:active{background-color:#265a88;border-color:#245580}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#265a88;background-image:none}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#419641));background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:focus,.btn-success:hover{background-color:#419641;background-position:0 -15px}.btn-success.active,.btn-success:active{background-color:#419641;border-color:#3e8f3e}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#419641;background-image:none}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#2aabd2));background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:focus,.btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.btn-info.active,.btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#2aabd2;background-image:none}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#eb9316));background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:focus,.btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.btn-warning.active,.btn-warning:active{background-color:#eb9316;border-color:#e38d13}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#eb9316;background-image:none}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c12e2a));background-image:linear-gradient(to bottom,#d9534f 0,#c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:focus,.btn-danger:hover{background-color:#c12e2a;background-position:0 -15px}.btn-danger.active,.btn-danger:active{background-color:#c12e2a;border-color:#b92c28}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#c12e2a;background-image:none}.img-thumbnail,.thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#2e6da4;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-o-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f8f8f8));background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-o-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dbdbdb),to(#e2e2e2));background-image:linear-gradient(to bottom,#dbdbdb 0,#e2e2e2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-o-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#222));background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-o-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#080808),to(#0f0f0f));background-image:linear-gradient(to bottom,#080808 0,#0f0f0f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}@media (max-width:767px){.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}}.alert{text-shadow:0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);background-repeat:repeat-x;border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#b9def0));background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);background-repeat:repeat-x;border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#f8efc0));background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);background-repeat:repeat-x;border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-o-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#e7c3c3));background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);background-repeat:repeat-x;border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#f5f5f5));background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x}.progress-bar{background-image:-webkit-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-o-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#286090));background-image:linear-gradient(to bottom,#337ab7 0,#286090 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);background-repeat:repeat-x}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#449d44));background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);background-repeat:repeat-x}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#31b0d5));background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);background-repeat:repeat-x}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#ec971f));background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);background-repeat:repeat-x}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c9302c));background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);background-repeat:repeat-x}.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{text-shadow:0 -1px 0 #286090;background-image:-webkit-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2b669a));background-image:linear-gradient(to bottom,#337ab7 0,#2b669a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);background-repeat:repeat-x;border-color:#2b669a}.list-group-item.active .badge,.list-group-item.active:focus .badge,.list-group-item.active:hover .badge{text-shadow:none}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#d0e9c6));background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);background-repeat:repeat-x}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#c4e3f3));background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);background-repeat:repeat-x}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#faf2cc));background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);background-repeat:repeat-x}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-o-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#ebcccc));background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);background-repeat:repeat-x}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#e8e8e8),to(#f5f5f5));background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x;border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)} /*# sourceMappingURL=bootstrap-theme.min.css.map */ diff --git a/webapp/src/main/webapp/themes/tenderfoot/bootstrap/css/bootstrap-theme.min.css.map b/webapp/src/main/webapp/themes/tenderfoot/bootstrap/css/bootstrap-theme.min.css.map index 94813e90..d1f1a237 100644 --- a/webapp/src/main/webapp/themes/tenderfoot/bootstrap/css/bootstrap-theme.min.css.map +++ b/webapp/src/main/webapp/themes/tenderfoot/bootstrap/css/bootstrap-theme.min.css.map @@ -1 +1 @@ -{"version":3,"sources":["less/theme.less","less/mixins/vendor-prefixes.less","less/mixins/gradients.less","less/mixins/reset-filter.less"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Bootstrap v3.3.7 (http://getbootstrap.com)\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n//\n// Load core variables and mixins\n// --------------------------------------------------\n\n@import \"variables.less\";\n@import \"mixins.less\";\n\n\n//\n// Buttons\n// --------------------------------------------------\n\n// Common styles\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0,0,0,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n // Reset the shadow\n &:active,\n &.active {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n .box-shadow(none);\n }\n\n .badge {\n text-shadow: none;\n }\n}\n\n// Mixin for generating new styles\n.btn-styles(@btn-color: #555) {\n #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%));\n .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners; see https://github.com/twbs/bootstrap/issues/10620\n background-repeat: repeat-x;\n border-color: darken(@btn-color, 14%);\n\n &:hover,\n &:focus {\n background-color: darken(@btn-color, 12%);\n background-position: 0 -15px;\n }\n\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n border-color: darken(@btn-color, 14%);\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &,\n &:hover,\n &:focus,\n &.focus,\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n background-image: none;\n }\n }\n}\n\n// Common styles\n.btn {\n // Remove the gradient for the pressed/active state\n &:active,\n &.active {\n background-image: none;\n }\n}\n\n// Apply the mixin to the buttons\n.btn-default { .btn-styles(@btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; }\n.btn-primary { .btn-styles(@btn-primary-bg); }\n.btn-success { .btn-styles(@btn-success-bg); }\n.btn-info { .btn-styles(@btn-info-bg); }\n.btn-warning { .btn-styles(@btn-warning-bg); }\n.btn-danger { .btn-styles(@btn-danger-bg); }\n\n\n//\n// Images\n// --------------------------------------------------\n\n.thumbnail,\n.img-thumbnail {\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n\n\n//\n// Dropdowns\n// --------------------------------------------------\n\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%));\n background-color: darken(@dropdown-link-hover-bg, 5%);\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n background-color: darken(@dropdown-link-active-bg, 5%);\n}\n\n\n//\n// Navbar\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n #gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-color: @navbar-default-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n border-radius: @navbar-border-radius;\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: darken(@navbar-default-link-active-bg, 5%); @end-color: darken(@navbar-default-link-active-bg, 2%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.075));\n }\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255,255,255,.25);\n}\n\n// Inverted navbar\n.navbar-inverse {\n #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered; see https://github.com/twbs/bootstrap/issues/10257\n border-radius: @navbar-border-radius;\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: @navbar-inverse-link-active-bg; @end-color: lighten(@navbar-inverse-link-active-bg, 2.5%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.25));\n }\n\n .navbar-brand,\n .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0,0,0,.25);\n }\n}\n\n// Undo rounded corners in static and fixed navbars\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n\n// Fix active state of dropdown items in collapsed mode\n@media (max-width: @grid-float-breakpoint-max) {\n .navbar .navbar-nav .open .dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: #fff;\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n }\n }\n}\n\n\n//\n// Alerts\n// --------------------------------------------------\n\n// Common styles\n.alert {\n text-shadow: 0 1px 0 rgba(255,255,255,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05);\n .box-shadow(@shadow);\n}\n\n// Mixin for generating new styles\n.alert-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%));\n border-color: darken(@color, 15%);\n}\n\n// Apply the mixin to the alerts\n.alert-success { .alert-styles(@alert-success-bg); }\n.alert-info { .alert-styles(@alert-info-bg); }\n.alert-warning { .alert-styles(@alert-warning-bg); }\n.alert-danger { .alert-styles(@alert-danger-bg); }\n\n\n//\n// Progress bars\n// --------------------------------------------------\n\n// Give the progress background some depth\n.progress {\n #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg)\n}\n\n// Mixin for generating new styles\n.progress-bar-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%));\n}\n\n// Apply the mixin to the progress bars\n.progress-bar { .progress-bar-styles(@progress-bar-bg); }\n.progress-bar-success { .progress-bar-styles(@progress-bar-success-bg); }\n.progress-bar-info { .progress-bar-styles(@progress-bar-info-bg); }\n.progress-bar-warning { .progress-bar-styles(@progress-bar-warning-bg); }\n.progress-bar-danger { .progress-bar-styles(@progress-bar-danger-bg); }\n\n// Reset the striped class because our mixins don't do multiple gradients and\n// the above custom styles override the new `.progress-bar-striped` in v3.2.0.\n.progress-bar-striped {\n #gradient > .striped();\n}\n\n\n//\n// List groups\n// --------------------------------------------------\n\n.list-group {\n border-radius: @border-radius-base;\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%);\n #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%));\n border-color: darken(@list-group-active-border, 7.5%);\n\n .badge {\n text-shadow: none;\n }\n}\n\n\n//\n// Panels\n// --------------------------------------------------\n\n// Common styles\n.panel {\n .box-shadow(0 1px 2px rgba(0,0,0,.05));\n}\n\n// Mixin for generating new styles\n.panel-heading-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%));\n}\n\n// Apply the mixin to the panel headings only\n.panel-default > .panel-heading { .panel-heading-styles(@panel-default-heading-bg); }\n.panel-primary > .panel-heading { .panel-heading-styles(@panel-primary-heading-bg); }\n.panel-success > .panel-heading { .panel-heading-styles(@panel-success-heading-bg); }\n.panel-info > .panel-heading { .panel-heading-styles(@panel-info-heading-bg); }\n.panel-warning > .panel-heading { .panel-heading-styles(@panel-warning-heading-bg); }\n.panel-danger > .panel-heading { .panel-heading-styles(@panel-danger-heading-bg); }\n\n\n//\n// Wells\n// --------------------------------------------------\n\n.well {\n #gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg);\n border-color: darken(@well-bg, 10%);\n @shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They have been removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility) {\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","// Gradients\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n"]} \ No newline at end of file +{"version":3,"sources":["less/theme.less","less/mixins/vendor-prefixes.less","less/mixins/gradients.less","less/mixins/reset-filter.less"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Bootstrap v3.3.7 (http://getbootstrap.com)\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n\n//\n// Load core variables and mixins\n// --------------------------------------------------\n\n@import \"variables.less\";\n@import \"mixins.less\";\n\n\n//\n// Buttons\n// --------------------------------------------------\n\n// Common styles\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0,0,0,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n // Reset the shadow\n &:active,\n &.active {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n .box-shadow(none);\n }\n\n .badge {\n text-shadow: none;\n }\n}\n\n// Mixin for generating new styles\n.btn-styles(@btn-color: #555) {\n #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%));\n .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners; see https://github.com/twbs/bootstrap/issues/10620\n background-repeat: repeat-x;\n border-color: darken(@btn-color, 14%);\n\n &:hover,\n &:focus {\n background-color: darken(@btn-color, 12%);\n background-position: 0 -15px;\n }\n\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n border-color: darken(@btn-color, 14%);\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &,\n &:hover,\n &:focus,\n &.focus,\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n background-image: none;\n }\n }\n}\n\n// Common styles\n.btn {\n // Remove the gradient for the pressed/active state\n &:active,\n &.active {\n background-image: none;\n }\n}\n\n// Apply the mixin to the buttons\n.btn-default { .btn-styles(@btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; }\n.btn-primary { .btn-styles(@btn-primary-bg); }\n.btn-success { .btn-styles(@btn-success-bg); }\n.btn-info { .btn-styles(@btn-info-bg); }\n.btn-warning { .btn-styles(@btn-warning-bg); }\n.btn-danger { .btn-styles(@btn-danger-bg); }\n\n\n//\n// Images\n// --------------------------------------------------\n\n.thumbnail,\n.img-thumbnail {\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n\n\n//\n// Dropdowns\n// --------------------------------------------------\n\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%));\n background-color: darken(@dropdown-link-hover-bg, 5%);\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n background-color: darken(@dropdown-link-active-bg, 5%);\n}\n\n\n//\n// Navbar\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n #gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-color: @navbar-default-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n border-radius: @navbar-border-radius;\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: darken(@navbar-default-link-active-bg, 5%); @end-color: darken(@navbar-default-link-active-bg, 2%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.075));\n }\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255,255,255,.25);\n}\n\n// Inverted navbar\n.navbar-inverse {\n #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered; see https://github.com/twbs/bootstrap/issues/10257\n border-radius: @navbar-border-radius;\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: @navbar-inverse-link-active-bg; @end-color: lighten(@navbar-inverse-link-active-bg, 2.5%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.25));\n }\n\n .navbar-brand,\n .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0,0,0,.25);\n }\n}\n\n// Undo rounded corners in static and fixed navbars\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n\n// Fix active state of dropdown items in collapsed mode\n@media (max-width: @grid-float-breakpoint-max) {\n .navbar .navbar-nav .open .dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: #fff;\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n }\n }\n}\n\n\n//\n// Alerts\n// --------------------------------------------------\n\n// Common styles\n.alert {\n text-shadow: 0 1px 0 rgba(255,255,255,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05);\n .box-shadow(@shadow);\n}\n\n// Mixin for generating new styles\n.alert-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%));\n border-color: darken(@color, 15%);\n}\n\n// Apply the mixin to the alerts\n.alert-success { .alert-styles(@alert-success-bg); }\n.alert-info { .alert-styles(@alert-info-bg); }\n.alert-warning { .alert-styles(@alert-warning-bg); }\n.alert-danger { .alert-styles(@alert-danger-bg); }\n\n\n//\n// Progress bars\n// --------------------------------------------------\n\n// Give the progress background some depth\n.progress {\n #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg)\n}\n\n// Mixin for generating new styles\n.progress-bar-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%));\n}\n\n// Apply the mixin to the progress bars\n.progress-bar { .progress-bar-styles(@progress-bar-bg); }\n.progress-bar-success { .progress-bar-styles(@progress-bar-success-bg); }\n.progress-bar-info { .progress-bar-styles(@progress-bar-info-bg); }\n.progress-bar-warning { .progress-bar-styles(@progress-bar-warning-bg); }\n.progress-bar-danger { .progress-bar-styles(@progress-bar-danger-bg); }\n\n// Reset the striped class because our mixins don't do multiple gradients and\n// the above custom styles override the new `.progress-bar-striped` in v3.2.0.\n.progress-bar-striped {\n #gradient > .striped();\n}\n\n\n//\n// List groups\n// --------------------------------------------------\n\n.list-group {\n border-radius: @border-radius-base;\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%);\n #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%));\n border-color: darken(@list-group-active-border, 7.5%);\n\n .badge {\n text-shadow: none;\n }\n}\n\n\n//\n// Panels\n// --------------------------------------------------\n\n// Common styles\n.panel {\n .box-shadow(0 1px 2px rgba(0,0,0,.05));\n}\n\n// Mixin for generating new styles\n.panel-heading-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%));\n}\n\n// Apply the mixin to the panel headings only\n.panel-default > .panel-heading { .panel-heading-styles(@panel-default-heading-bg); }\n.panel-primary > .panel-heading { .panel-heading-styles(@panel-primary-heading-bg); }\n.panel-success > .panel-heading { .panel-heading-styles(@panel-success-heading-bg); }\n.panel-info > .panel-heading { .panel-heading-styles(@panel-info-heading-bg); }\n.panel-warning > .panel-heading { .panel-heading-styles(@panel-warning-heading-bg); }\n.panel-danger > .panel-heading { .panel-heading-styles(@panel-danger-heading-bg); }\n\n\n//\n// Wells\n// --------------------------------------------------\n\n.well {\n #gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg);\n border-color: darken(@well-bg, 10%);\n @shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They have been removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility) {\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","// Gradients\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n"]} \ No newline at end of file diff --git a/webapp/src/main/webapp/themes/tenderfoot/bootstrap/css/bootstrap.css b/webapp/src/main/webapp/themes/tenderfoot/bootstrap/css/bootstrap.css index 6167622c..b6161467 100644 --- a/webapp/src/main/webapp/themes/tenderfoot/bootstrap/css/bootstrap.css +++ b/webapp/src/main/webapp/themes/tenderfoot/bootstrap/css/bootstrap.css @@ -1,7 +1,7 @@ /*! * Bootstrap v3.3.7 (http://getbootstrap.com) * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) */ /*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ html { @@ -187,7 +187,7 @@ td, th { padding: 0; } -/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ +/*! Source: https://github.com/h5bp/html5-boilerplate/blob/main/src/css/main.css */ @media print { *, *:before, diff --git a/webapp/src/main/webapp/themes/tenderfoot/bootstrap/css/bootstrap.css.map b/webapp/src/main/webapp/themes/tenderfoot/bootstrap/css/bootstrap.css.map index f010c82d..93b9b16f 100644 --- a/webapp/src/main/webapp/themes/tenderfoot/bootstrap/css/bootstrap.css.map +++ b/webapp/src/main/webapp/themes/tenderfoot/bootstrap/css/bootstrap.css.map @@ -1 +1 @@ -{"version":3,"sources":["bootstrap.css","less/normalize.less","less/print.less","less/glyphicons.less","less/scaffolding.less","less/mixins/vendor-prefixes.less","less/mixins/tab-focus.less","less/mixins/image.less","less/type.less","less/mixins/text-emphasis.less","less/mixins/background-variant.less","less/mixins/text-overflow.less","less/code.less","less/grid.less","less/mixins/grid.less","less/mixins/grid-framework.less","less/tables.less","less/mixins/table-row.less","less/forms.less","less/mixins/forms.less","less/buttons.less","less/mixins/buttons.less","less/mixins/opacity.less","less/component-animations.less","less/dropdowns.less","less/mixins/nav-divider.less","less/mixins/reset-filter.less","less/button-groups.less","less/mixins/border-radius.less","less/input-groups.less","less/navs.less","less/navbar.less","less/mixins/nav-vertical-align.less","less/utilities.less","less/breadcrumbs.less","less/pagination.less","less/mixins/pagination.less","less/pager.less","less/labels.less","less/mixins/labels.less","less/badges.less","less/jumbotron.less","less/thumbnails.less","less/alerts.less","less/mixins/alerts.less","less/progress-bars.less","less/mixins/gradients.less","less/mixins/progress-bar.less","less/media.less","less/list-group.less","less/mixins/list-group.less","less/panels.less","less/mixins/panels.less","less/responsive-embed.less","less/wells.less","less/close.less","less/modals.less","less/tooltip.less","less/mixins/reset-text.less","less/popovers.less","less/carousel.less","less/mixins/clearfix.less","less/mixins/center-block.less","less/mixins/hide-text.less","less/responsive-utilities.less","less/mixins/responsive-visibility.less"],"names":[],"mappings":"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AW,iBAAA;CHsR9C;AGrRmC;EAAW,iBAAA;CHwR9C;AGvRmC;EAAW,iBAAA;CH0R9C;AGzRmC;EAAW,iBAAA;CH4R9C;AG3RmC;EAAW,iBAAA;CH8R9C;AG7RmC;EAAW,iBAAA;CHgS9C;AG/RmC;EAAW,iBAAA;CHkS9C;AGjSmC;EAAW,iBAAA;CHoS9C;AGnSmC;EAAW,iBAAA;CHsS9C;AGrSmC;EAAW,iBAAA;CHwS9C;AGvSmC;EAAW,iBAAA;CH0S9C;AGzSmC;EAAW,iBAAA;CH4S9C;AG3SmC;EAAW,iBAAA;CH8S9C;AG7SmC;EAAW,iBAAA;CHgT9C;AG/SmC;EAAW,iBAAA;CHkT9C;AGjTmC;EAAW,iBAAA;CHoT9C;AGnTmC;EAAW,iBAAA;CHsT9C;AGrTmC;EAAW,iBAAA;CHwT9C;AGvTmC;EAAW,iBAAA;CH0T9C;AGzTmC;EAAW,iBAAA;CH4T9C;AG3TmC;EAAW,iBAAA;CH8T9C;AG7TmC;EAAW,iBAAA;CHgU9C;AG/TmC;EAAW,iBAAA;CHkU9C;AGjUmC;EAAW,iBAAA;CHoU9C;AGnUmC;EAAW,iBAAA;CHsU9C;AGrUmC;EAAW,iBAAA;CHwU9C;AGvUmC;EAAW,iBAAA;CH0U9C;AGzUmC;EAAW,iBAAA;CH4U9C;AG3UmC;EAAW,iBAAA;CH8U9C;AG7UmC;EAAW,iBAAA;CHgV9C;AG/UmC;EAAW,iBAAA;CHkV9C;AGjVmC;EAAW,iBAAA;CHoV9C;AGnVmC;EAAW,iBAAA;CHsV9C;AGrVmC;EAAW,iBAAA;CHwV9C;AGvVmC;EAAW,iBAAA;CH0V9C;AGzVmC;EAAW,iBAAA;CH4V9C;AG3VmC;EAAW,iBAAA;CH8V9C;AG7VmC;EAAW,iBAAA;CHgW9C;AG/VmC;EAAW,iBAAA;CHkW9C;AGjWmC;EAAW,iBAAA;CHoW9C;AGnWmC;EAAW,iBAAA;CHsW9C;AGrWmC;EAAW,iBAAA;CHwW9C;AGvWmC;EAAW,iBAAA;CH0W9C;AGzWmC;EAAW,iBAAA;CH4W9C;AG3WmC;EAAW,iBAAA;CH8W9C;AG7WmC;EAAW,iBAAA;CHgX9C;AG/WmC;EAAW,iBAAA;CHkX9C;AGjXmC;EAAW,iBAAA;CHoX9C;AGnXmC;EAAW,iBAAA;CHsX9C;AGrXmC;EAAW,iBAAA;CHwX9C;AGvXmC;EAAW,iBAAA;CH0X9C;AGzXmC;EAAW,iBAAA;CH4X9C;AG3XmC;EAAW,iBAAA;CH8X9C;AG7XmC;EAAW,iBAAA;CHgY9C;AG/XmC;EAAW,iBAAA;CHkY9C;AGjYmC;EAAW,iBAAA;CHoY9C;AGnYmC;EAAW,iBAAA;CHsY9C;AGrYmC;EAAW,iBAAA;CHwY9C;AGvYmC;EAAW,iBAAA;CH0Y9C;AGzYmC;EAAW,iBAAA;CH4Y9C;AG3YmC;EAAW,iBAAA;CH8Y9C;AG7YmC;EAAW,iBAAA;CHgZ9C;AG/YmC;EAAW,iBAAA;CHkZ9C;AGjZmC;EAAW,iBAAA;CHoZ9C;AGnZmC;EAAW,iBAAA;CHsZ9C;AGrZmC;EAAW,iBAAA;CHwZ9C;AGvZmC;EAAW,iBAAA;CH0Z9C;AGzZmC;EAAW,iBAAA;CH4Z9C;AG3ZmC;EAAW,iBAAA;CH8Z9C;AG7ZmC;EAAW,iBAAA;CHga9C;AG/ZmC;EAAW,iBAAA;CHka9C;AGjamC;EAAW,iBAAA;CHoa9C;AGnamC;EAAW,iBAAA;CHsa9C;AGramC;EAAW,iBAAA;CHwa9C;AGvamC;EAAW,iBAAA;CH0a9C;AGzamC;EAAW,iBAAA;CH4a9C;AG3amC;EAAW,iBAAA;CH8a9C;AG7amC;EAAW,iBAAA;CHgb9C;AG/amC;EAAW,iBAAA;CHkb9C;AGjbmC;EAAW,iBAAA;CHob9C;AGnbmC;EAAW,iBAAA;CHsb9C;AGrbmC;EAAW,iBAAA;CHwb9C;AGvbmC;EAAW,iBAAA;CH0b9C;AGzbmC;EAAW,iBAAA;CH4b9C;AG3bmC;EAAW,iBAAA;CH8b9C;AG7bmC;EAAW,iBAAA;CHgc9C;AG/bmC;EAAW,iBAAA;CHkc9C;AGjcmC;EAAW,iBAAA;CHoc9C;AGncmC;EAAW,iBAAA;CHsc9C;AGrcmC;EAAW,iBAAA;CHwc9C;AGvcmC;EAAW,iBAAA;CH0c9C;AGzcmC;EAAW,iBAAA;CH4c9C;AG3cmC;EAAW,iBAAA;CH8c9C;AG7cmC;EAAW,iBAAA;CHgd9C;AG/cmC;EAAW,iBAAA;CHkd9C;AGjdmC;EAAW,iBAAA;CHod9C;AGndmC;EAAW,iBAAA;CHsd9C;AGrdmC;EAAW,iBAAA;CHwd9C;AGvdmC;EAAW,iBAAA;CH0d9C;AGzdmC;EAAW,iBAAA;CH4d9C;AG3dmC;EAAW,iBAAA;CH8d9C;AG7dmC;EAAW,iBAAA;CHge9C;AG/dmC;EAAW,iBAAA;CHke9C;AGjemC;EAAW,iBAAA;CHoe9C;AGnemC;EAAW,iBAAA;CHse9C;AGremC;EAAW,iBAAA;CHwe9C;AGvemC;EAAW,iBAAA;CH0e9C;AGzemC;EAAW,iBAAA;CH4e9C;AG3emC;EAAW,iBAAA;CH8e9C;AG7emC;EAAW,iBAAA;CHgf9C;AG/emC;EAAW,iBAAA;CHkf9C;AGjfmC;EAAW,iBAAA;CHof9C;AGnfmC;EAAW,iBAAA;CHsf9C;AGrfmC;EAAW,iBAAA;CHwf9C;AGvfmC;EAAW,iBAAA;CH0f9C;AGzfmC;EAAW,iBAAA;CH4f9C;AG3fmC;EAAW,iBAAA;CH8f9C;AG7fmC;EAAW,iBAAA;CHggB9C;AG/fmC;EAAW,iBAAA;CHkgB9C;AGjgBmC;EAAW,iBAAA;CHogB9C;AGngBmC;EAAW,iBAAA;CHsgB9C;AGrgBmC;EAAW,iBAAA;CHwgB9C;AGvgBmC;EAAW,iBAAA;CH0gB9C;AGzgBmC;EAAW,iBAAA;CH4gB9C;AG3gBmC;EAAW,iBAAA;CH8gB9C;AG7gBmC;EAAW,iBAAA;CHghB9C;AG/gBmC;EAAW,iBAAA;CHkhB9C;AGjhBmC;EAAW,iBAAA;CHohB9C;AGnhBmC;EAAW,iBAAA;CHshB9C;AGrhBmC;EAAW,iBAAA;CHwhB9C;AGvhBmC;EAAW,iBAAA;CH0hB9C;AGzhBmC;EAAW,iBAAA;CH4hB9C;AG3hBmC;EAAW,iBAAA;CH8hB9C;AG7hBmC;EAAW,iBAAA;CHgiB9C;AG/hBmC;EAAW,iBAAA;CHkiB9C;AGjiBmC;EAAW,iBAAA;CHoiB9C;AGniBmC;EAAW,iBAAA;CHsiB9C;AGriBmC;EAAW,iBAAA;CHwiB9C;AGviBmC;EAAW,iBAAA;CH0iB9C;AGziBmC;EAAW,iBAAA;CH4iB9C;AG3iBmC;EAAW,iBAAA;CH8iB9C;AG7iBmC;EAAW,iBAAA;CHgjB9C;AG/iBmC;EAAW,iBAAA;CHkjB9C;AGjjBmC;EAAW,iBAAA;CHojB9C;AGnjBmC;EAAW,iBAAA;CHsjB9C;AGrjBmC;EAAW,iBAAA;CHwjB9C;AGvjBmC;EAAW,iBAAA;CH0jB9C;AGzjBmC;EAAW,iBAAA;CH4jB9C;AG3jBmC;EAAW,iBAAA;CH8jB9C;AG7jBmC;EAAW,iBAAA;CHgkB9C;AG/jBmC;EAAW,iBAAA;CHkkB9C;AGjkBmC;EAAW,iBAAA;CHokB9C;AGnkBmC;EAAW,iBAAA;CHskB9C;AGrkBmC;EAAW,iBAAA;CHwkB9C;AGvkBmC;EAAW,iBAAA;CH0kB9C;AGzkBmC;EAAW,iBAAA;CH4kB9C;AG3kBmC;EAAW,iBAAA;CH8kB9C;AG7kBmC;EAAW,iBAAA;CHglB9C;AG/kBmC;EAAW,iBAAA;CHklB9C;AGjlBmC;EAAW,iBAAA;CHolB9C;AGnlBmC;EAAW,iBAAA;CHslB9C;AGrlBmC;EAAW,iBAAA;CHwlB9C;AGvlBmC;EAAW,iBAAA;CH0lB9C;AGzlBmC;EAAW,iBAAA;CH4lB9C;AG3lBmC;EAAW,iBAAA;CH8lB9C;AG7lBmC;EAAW,iBAAA;CHgmB9C;AG/lBmC;EAAW,iBAAA;CHkmB9C;AGjmBmC;EAAW,iBAAA;CHomB9C;AGnmBmC;EAAW,iBAAA;CHsmB9C;AGrmBmC;EAAW,iBAAA;CHwmB9C;AGvmBmC;EAAW,iBAAA;CH0mB9C;AGzmBmC;EAAW,iBAAA;CH4mB9C;AG3mBmC;EAAW,iBAAA;CH8mB9C;AG7mBmC;EAAW,iBAAA;CHgnB9C;AG/mBmC;EAAW,iBAAA;CHknB9C;AGjnBmC;EAAW,iBAAA;CHonB9C;AGnnBmC;EAAW,iBAAA;CHsnB9C;AGrnBmC;EAAW,iBAAA;CHwnB9C;AGvnBmC;EAAW,iBAAA;CH0nB9C;AGznBmC;EAAW,iBAAA;CH4nB9C;AG3nBmC;EAAW,iBAAA;CH8nB9C;AG7nBmC;EAAW,iBAAA;CHgoB9C;AG/nBmC;EAAW,iBAAA;CHkoB9C;AGjoBmC;EAAW,iBAAA;CHooB9C;AGnoBmC;EAAW,iBAAA;CHsoB9C;AGroBmC;EAAW,iBAAA;CHwoB9C;AG/nBmC;EAAW,iBAAA;CHkoB9C;AGjoBmC;EAAW,iBAAA;CHooB9C;AGnoBmC;EAAW,iBAAA;CHsoB9C;AGroBmC;EAAW,iBAAA;CHwoB9C;AGvoBmC;EAAW,iBAAA;CH0oB9C;AGzoBmC;EAAW,iBAAA;CH4oB9C;AG3oBmC;EAAW,iBAAA;CH8oB9C;AG7oBmC;EAAW,iBAAA;CHgpB9C;AG/oBmC;EAAW,iBAAA;CHkpB9C;AGjpBmC;EAAW,iBAAA;CHopB9C;AGnpBmC;EAAW,iBAAA;CHspB9C;AGrpBmC;EAAW,iBAAA;CHwpB9C;AGvpBmC;EAAW,iBAAA;CH0pB9C;AGzpBmC;EAAW,iBAAA;CH4pB9C;AG3pBmC;EAAW,iBAAA;CH8pB9C;AG7pBmC;EAAW,iBAAA;CHgqB9C;AG/pBmC;EAAW,iBAAA;CHkqB9C;AGjqBmC;EAAW,iBAAA;CHoqB9C;AGnqBmC;EAAW,iBAAA;CHsqB9C;AGrqBmC;EAAW,iBAAA;CHwqB9C;AGvqBmC;EAAW,iBAAA;CH0qB9C;AGzqBmC;EAAW,iBAAA;CH4qB9C;AG3qBmC;EAAW,iBAAA;CH8qB9C;AG7qBmC;EAAW,iBAAA;CHgrB9C;AG/qBmC;EAAW,iBAAA;CHkrB9C;AGjrBmC;EAAW,iBAAA;CHorB9C;AGnrBmC;EAAW,iBAAA;CHsrB9C;AGrrBmC;EAAW,iBAAA;CHwrB9C;AGvrBmC;EAAW,iBAAA;CH0rB9C;AGzrBmC;EAAW,iBAAA;CH4rB9C;AG3rBmC;EAAW,iBAAA;CH8rB9C;AG7rBmC;EAAW,iBAAA;CHgsB9C;AG/rBmC;EAAW,iBAAA;CHksB9C;AGjsBmC;EAAW,iBAAA;CHosB9C;AGnsBmC;EAAW,iBAAA;CHssB9C;AGrsBmC;EAAW,iBAAA;CHwsB9C;AGvsBmC;EAAW,iBAAA;CH0sB9C;AGzsBmC;EAAW,iBAAA;CH4sB9C;AG3sBmC;EAAW,iBAAA;CH8sB9C;AG7sBmC;EAAW,iBAAA;CHgtB9C;AG/sBmC;EAAW,iBAAA;CHktB9C;AGjtBmC;EAAW,iBAAA;CHotB9C;AGntBmC;EAAW,iBAAA;CHstB9C;AGrtBmC;EAAW,iBAAA;CHwtB9C;AGvtBmC;EAAW,iBAAA;CH0tB9C;AGztBmC;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ukDH;AexkDC;EACE,oBAAA;Cf0kDH;Ae3kDC;EACE,WAAA;Cf6kDH;Ae9kDC;EACE,oBAAA;CfglDH;AejlDC;EACE,mBAAA;CfmlDH;Ae/kDC;EACE,YAAA;CfilDH;AejmDC;EACE,WAAA;CfmmDH;AepmDC;EACE,mBAAA;CfsmDH;AevmDC;EACE,mBAAA;CfymDH;Ae1mDC;EACE,UAAA;Cf4mDH;Ae7mDC;EACE,mBAAA;Cf+mDH;AehnDC;EACE,mBAAA;CfknDH;AennDC;EACE,UAAA;CfqnDH;AetnDC;EACE,mBAAA;CfwnDH;AeznDC;EACE,mBAAA;Cf2nDH;Ae5nDC;EACE,UAAA;Cf8nDH;Ae/nDC;EACE,mBAAA;CfioDH;AeloDC;EACE,kBAAA;CfooDH;AehoDC;EACE,WAAA;CfkoDH;AepnDC;EACE,kBAAA;CfsnDH;AevnDC;EACE,0BAAA;CfynDH;Ae1nDC;EACE,0BAAA;Cf4nDH;Ae7nDC;EACE,iBAAA;Cf+nDH;AehoDC;EACE,0BAAA;CfkoDH;AenoDC;EACE,0BAAA;CfqoDH;AetoDC;EACE,iBAAA;CfwoDH;AezoDC;EACE,0BAAA;Cf2oDH;Ae5oDC;EACE,0BAAA;Cf8oDH;Ae/oDC;EACE,iBAAA;CfipDH;AelpDC;EACE,0BAAA;CfopDH;AerpDC;EACE,yBAAA;CfupDH;AexpDC;EACE,gBAAA;Cf0pDH;Aa1pDD;EElCI;IACE,YAAA;Gf+rDH;EexrDD;IACE,YAAA;Gf0rDD;Ee3rDD;IACE,oBAAA;Gf6rDD;Ee9rDD;IACE,oBAAA;GfgsDD;EejsDD;IACE,WAAA;GfmsDD;EepsDD;IACE,oBAAA;GfssDD;EevsDD;IACE,oBAAA;GfysDD;Ee1sDD;IACE,WAAA;Gf4sDD;Ee7sDD;IACE,oBAAA;Gf+sDD;EehtDD;IACE,oBAAA;GfktDD;EentDD;IACE,WAAA;GfqtDD;EettDD;IACE,oBAAA;GfwtDD;EeztDD;IACE,mBAAA;Gf2tDD;Ee7sDD;IACE,YAAA;Gf+sDD;EehtDD;IACE,oBAAA;GfktDD;EentDD;IACE,oBAAA;GfqtDD;EettDD;IACE,WAAA;GfwtDD;EeztDD;IACE,oBAAA;Gf2tDD;Ee5tDD;IACE,oBAAA;Gf8tDD;Ee/tDD;IACE,WAAA;GfiuDD;EeluDD;IACE,oBAAA;GfouDD;EeruDD;IACE,oBAAA;GfuuDD;EexuDD;IACE,WAAA;Gf0uDD;Ee3uDD;IACE,oBAAA;Gf6uDD;Ee9uDD;IACE,mBAAA;GfgvDD;Ee5uDD;IACE,YAAA;Gf8uDD;Ee9vDD;IACE,WAAA;GfgwDD;EejwDD;IACE,mBAAA;GfmwDD;EepwDD;IACE,mBAAA;GfswDD;EevwDD;IACE,UAAA;GfywDD;Ee1wDD;IACE,mBAAA;Gf4wDD;Ee7wDD;IACE,mBAAA;Gf+wDD;EehxDD;IACE,UAAA;GfkxDD;EenxDD;IACE,mBAAA;GfqxDD;EetxDD;IACE,mBAAA;GfwxDD;EezxDD;IACE,UAAA;Gf2xDD;Ee5xDD;IACE,mBAAA;Gf8xDD;Ee/xDD;IACE,kBAAA;GfiyDD;Ee7xDD;IACE,WAAA;Gf+xDD;EejxDD;IACE,kBAAA;GfmxDD;EepxDD;IACE,0BAAA;GfsxDD;EevxDD;IACE,0BAAA;GfyxDD;Ee1xDD;IACE,iBAAA;Gf4xDD;Ee7xDD;IACE,0BAAA;Gf+xDD;EehyDD;IACE,0BAAA;GfkyDD;EenyDD;IACE,iBAAA;GfqyDD;EetyDD;IACE,0BAAA;GfwyDD;EezyDD;IACE,0BAAA;Gf2yDD;Ee5yDD;IACE,iBAAA;Gf8yDD;Ee/yDD;IACE,0BAAA;GfizDD;EelzDD;IACE,yBAAA;GfozDD;EerzDD;IACE,gBAAA;GfuzDD;CACF;Aa/yDD;EE3CI;IACE,YAAA;Gf61DH;Eet1DD;IACE,YAAA;Gfw1DD;Eez1DD;IACE,oBAAA;Gf21DD;Ee51DD;IACE,oBAAA;Gf81DD;Ee/1DD;IACE,WAAA;Gfi2DD;Eel2DD;IACE,oBAAA;Gfo2DD;Eer2DD;IACE,oBAAA;Gfu2DD;Eex2DD;IACE,WAAA;Gf02DD;Ee32DD;IACE,oBAAA;Gf62DD;Ee92DD;IACE,oBAAA;Gfg3DD;Eej3DD;IACE,WAAA;Gfm3DD;Eep3DD;IACE,oBAAA;Gfs3DD;Eev3DD;IACE,mBAAA;Gfy3DD;Ee32DD;IACE,YAAA;Gf62DD;Ee92DD;IACE,oBAAA;Gfg3DD;Eej3DD;IACE,oBAAA;Gfm3DD;Eep3DD;IACE,WAAA;Gfs3DD;Eev3DD;IACE,oBAAA;Gfy3DD;Ee13DD;IACE,oBAAA;Gf43DD;Ee73DD;IACE,WAAA;Gf+3DD;Eeh4DD;IACE,oBAAA;Gfk4DD;Een4DD;IACE,oBAAA;Gfq4DD;Eet4DD;IACE,WAAA;Gfw4DD;Eez4DD;IACE,oBAAA;Gf24DD;Ee54DD;IACE,mBAAA;Gf84DD;Ee14DD;IACE,YAAA;Gf44DD;Ee55DD;IACE,WAAA;Gf85DD;Ee/5DD;IACE,mBAAA;Gfi6DD;Eel6DD;IACE,mBAAA;Gfo6DD;Eer6DD;IACE,UAAA;Gfu6DD;Eex6DD;IACE,mBAAA;Gf06DD;Ee36DD;IACE,mBAAA;Gf66DD;Ee96DD;IACE,UAAA;Gfg7DD;Eej7DD;IACE,mBAAA;Gfm7DD;Eep7DD;IACE,mBAAA;Gfs7DD;Eev7DD;IACE,UAAA;Gfy7DD;Ee17DD;IACE,mBAAA;Gf47DD;Ee77DD;IACE,kBAAA;Gf+7DD;Ee37DD;IACE,WAAA;Gf67DD;Ee/6DD;IACE,kBAAA;Gfi7DD;Eel7DD;IACE,0BAAA;Gfo7DD;Eer7DD;IACE,0BAAA;Gfu7DD;Eex7DD;IACE,iBAAA;Gf07DD;Ee37DD;IACE,0BAAA;Gf67DD;Ee97DD;IACE,0BAAA;Gfg8DD;Eej8DD;IACE,iBAAA;Gfm8DD;Eep8DD;IACE,0BAAA;Gfs8DD;Eev8DD;IACE,0BAAA;Gfy8DD;Ee18DD;IACE,iBAAA;Gf48DD;Ee78DD;IACE,0BAAA;Gf+8DD;Eeh9DD;IACE,yBAAA;Gfk9DD;Een9DD;IACE,gBAAA;Gfq9DD;CACF;Aa18DD;EE9CI;IACE,YAAA;Gf2/DH;Eep/DD;IACE,YAAA;Gfs/DD;Eev/DD;IACE,oBAAA;Gfy/DD;Ee1/DD;IACE,oBAAA;Gf4/DD;Ee7/DD;IACE,WAAA;Gf+/DD;EehgED;IACE,oBAAA;GfkgED;EengED;IACE,oBAAA;GfqgED;EetgED;IACE,WAAA;GfwgED;EezgED;IACE,oBAAA;Gf2gED;Ee5gED;IACE,oBAAA;Gf8gED;Ee/gED;IACE,WAAA;GfihED;EelhED;IACE,oBAAA;GfohED;EerhED;IACE,mBAAA;GfuhED;EezgED;IACE,YAAA;Gf2gED;Ee5gED;IACE,oBAAA;Gf8gED;Ee/gED;IACE,oBAAA;GfihED;EelhED;IACE,WAAA;GfohED;EerhED;IACE,oBAAA;GfuhED;EexhED;IACE,oBAAA;Gf0hED;Ee3hED;IACE,WAAA;Gf6hED;Ee9hED;IACE,oBAAA;GfgiED;EejiED;IACE,oBAAA;GfmiED;EepiED;IACE,WAAA;GfsiED;EeviED;IACE,oBAAA;GfyiED;Ee1iED;IACE,mBAAA;Gf4iED;EexiED;IACE,YAAA;Gf0iED;Ee1jED;IACE,WAAA;Gf4jED;Ee7jED;IACE,mBAAA;Gf+jED;EehkED;IACE,mBAAA;GfkkED;EenkED;IACE,UAAA;GfqkED;EetkED;IACE,mBAAA;GfwkED;EezkED;IACE,mBAAA;Gf2kED;Ee5kED;IACE,UAAA;Gf8kED;Ee/kED;IACE,mBAAA;GfilED;EellED;IACE,mBAAA;GfolED;EerlED;IACE,UAAA;GfulED;EexlED;IACE,mBAAA;Gf0lED;Ee3lED;IACE,kBAAA;Gf6lED;EezlED;IACE,WAAA;Gf2lED;Ee7kED;IACE,kBAAA;Gf+kED;EehlED;IACE,0BAAA;GfklED;EenlED;IACE,0BAAA;GfqlED;EetlED;IACE,iBAAA;GfwlED;EezlED;IACE,0BAAA;Gf2lED;Ee5lED;IACE,0BAAA;Gf8lED;Ee/lED;IACE,iBAAA;GfimED;EelmED;IACE,0BAAA;GfomED;EermED;IACE,0BAAA;GfumED;EexmED;IACE,iBAAA;Gf0mED;Ee3mED;IACE,0BAAA;Gf6mED;Ee9mED;IACE,yBAAA;GfgnED;EejnED;IACE,gBAAA;GfmnED;CACF;AgBvrED;EACE,8BAAA;ChByrED;AgBvrED;EACE,iBAAA;EACA,oBAAA;EACA,eAAA;EACA,iBAAA;ChByrED;AgBvrED;EACE,iBAAA;ChByrED;AgBnrED;EACE,YAAA;EACA,gBA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","file":"bootstrap.css","sourcesContent":["/*!\n * Bootstrap v3.3.7 (http://getbootstrap.com)\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\nhtml {\n font-family: sans-serif;\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n}\nbody {\n margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block;\n vertical-align: baseline;\n}\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n[hidden],\ntemplate {\n display: none;\n}\na {\n background-color: transparent;\n}\na:active,\na:hover {\n outline: 0;\n}\nabbr[title] {\n border-bottom: 1px dotted;\n}\nb,\nstrong {\n font-weight: bold;\n}\ndfn {\n font-style: italic;\n}\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\nmark {\n background: #ff0;\n color: #000;\n}\nsmall {\n font-size: 80%;\n}\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\nsup {\n top: -0.5em;\n}\nsub {\n bottom: -0.25em;\n}\nimg {\n border: 0;\n}\nsvg:not(:root) {\n overflow: hidden;\n}\nfigure {\n margin: 1em 40px;\n}\nhr {\n box-sizing: content-box;\n height: 0;\n}\npre {\n overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit;\n font: inherit;\n margin: 0;\n}\nbutton {\n overflow: visible;\n}\nbutton,\nselect {\n text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button;\n cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\ninput {\n line-height: normal;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box;\n padding: 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-appearance: textfield;\n box-sizing: content-box;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\nlegend {\n border: 0;\n padding: 0;\n}\ntextarea {\n overflow: auto;\n}\noptgroup {\n font-weight: bold;\n}\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\ntd,\nth {\n padding: 0;\n}\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n@media print {\n *,\n *:before,\n *:after {\n background: transparent !important;\n color: #000 !important;\n box-shadow: none !important;\n text-shadow: none !important;\n }\n a,\n a:visited {\n text-decoration: underline;\n }\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n img {\n max-width: 100% !important;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n .navbar {\n display: none;\n }\n .btn > .caret,\n .dropup > .btn > .caret {\n border-top-color: #000 !important;\n }\n .label {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #ddd !important;\n }\n}\n@font-face {\n font-family: 'Glyphicons Halflings';\n src: url('../fonts/glyphicons-halflings-regular.eot');\n src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');\n}\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.glyphicon-asterisk:before {\n content: \"\\002a\";\n}\n.glyphicon-plus:before {\n content: \"\\002b\";\n}\n.glyphicon-euro:before,\n.glyphicon-eur:before {\n content: \"\\20ac\";\n}\n.glyphicon-minus:before {\n content: \"\\2212\";\n}\n.glyphicon-cloud:before {\n content: \"\\2601\";\n}\n.glyphicon-envelope:before {\n content: \"\\2709\";\n}\n.glyphicon-pencil:before {\n content: \"\\270f\";\n}\n.glyphicon-glass:before {\n content: \"\\e001\";\n}\n.glyphicon-music:before {\n content: \"\\e002\";\n}\n.glyphicon-search:before {\n content: \"\\e003\";\n}\n.glyphicon-heart:before {\n content: \"\\e005\";\n}\n.glyphicon-star:before {\n content: \"\\e006\";\n}\n.glyphicon-star-empty:before {\n content: \"\\e007\";\n}\n.glyphicon-user:before {\n content: \"\\e008\";\n}\n.glyphicon-film:before {\n content: \"\\e009\";\n}\n.glyphicon-th-large:before {\n content: \"\\e010\";\n}\n.glyphicon-th:before {\n content: \"\\e011\";\n}\n.glyphicon-th-list:before {\n content: \"\\e012\";\n}\n.glyphicon-ok:before {\n content: \"\\e013\";\n}\n.glyphicon-remove:before {\n content: \"\\e014\";\n}\n.glyphicon-zoom-in:before {\n content: \"\\e015\";\n}\n.glyphicon-zoom-out:before {\n content: \"\\e016\";\n}\n.glyphicon-off:before {\n content: \"\\e017\";\n}\n.glyphicon-signal:before {\n content: \"\\e018\";\n}\n.glyphicon-cog:before {\n content: \"\\e019\";\n}\n.glyphicon-trash:before {\n content: \"\\e020\";\n}\n.glyphicon-home:before {\n content: \"\\e021\";\n}\n.glyphicon-file:before {\n content: \"\\e022\";\n}\n.glyphicon-time:before {\n content: \"\\e023\";\n}\n.glyphicon-road:before {\n content: \"\\e024\";\n}\n.glyphicon-download-alt:before {\n content: \"\\e025\";\n}\n.glyphicon-download:before {\n content: \"\\e026\";\n}\n.glyphicon-upload:before {\n content: \"\\e027\";\n}\n.glyphicon-inbox:before {\n content: \"\\e028\";\n}\n.glyphicon-play-circle:before {\n content: \"\\e029\";\n}\n.glyphicon-repeat:before {\n content: \"\\e030\";\n}\n.glyphicon-refresh:before {\n content: \"\\e031\";\n}\n.glyphicon-list-alt:before {\n content: \"\\e032\";\n}\n.glyphicon-lock:before {\n content: \"\\e033\";\n}\n.glyphicon-flag:before {\n content: \"\\e034\";\n}\n.glyphicon-headphones:before {\n content: \"\\e035\";\n}\n.glyphicon-volume-off:before {\n content: \"\\e036\";\n}\n.glyphicon-volume-down:before {\n content: \"\\e037\";\n}\n.glyphicon-volume-up:before {\n content: \"\\e038\";\n}\n.glyphicon-qrcode:before {\n content: \"\\e039\";\n}\n.glyphicon-barcode:before {\n content: \"\\e040\";\n}\n.glyphicon-tag:before {\n content: \"\\e041\";\n}\n.glyphicon-tags:before {\n content: \"\\e042\";\n}\n.glyphicon-book:before {\n content: \"\\e043\";\n}\n.glyphicon-bookmark:before {\n content: \"\\e044\";\n}\n.glyphicon-print:before {\n content: \"\\e045\";\n}\n.glyphicon-camera:before {\n content: \"\\e046\";\n}\n.glyphicon-font:before {\n content: \"\\e047\";\n}\n.glyphicon-bold:before {\n content: \"\\e048\";\n}\n.glyphicon-italic:before {\n content: \"\\e049\";\n}\n.glyphicon-text-height:before {\n content: \"\\e050\";\n}\n.glyphicon-text-width:before {\n content: \"\\e051\";\n}\n.glyphicon-align-left:before {\n content: \"\\e052\";\n}\n.glyphicon-align-center:before {\n content: \"\\e053\";\n}\n.glyphicon-align-right:before {\n content: \"\\e054\";\n}\n.glyphicon-align-justify:before {\n content: \"\\e055\";\n}\n.glyphicon-list:before {\n content: \"\\e056\";\n}\n.glyphicon-indent-left:before {\n content: \"\\e057\";\n}\n.glyphicon-indent-right:before {\n content: \"\\e058\";\n}\n.glyphicon-facetime-video:before {\n content: \"\\e059\";\n}\n.glyphicon-picture:before {\n content: \"\\e060\";\n}\n.glyphicon-map-marker:before {\n content: \"\\e062\";\n}\n.glyphicon-adjust:before {\n content: \"\\e063\";\n}\n.glyphicon-tint:before {\n content: \"\\e064\";\n}\n.glyphicon-edit:before {\n content: \"\\e065\";\n}\n.glyphicon-share:before {\n content: \"\\e066\";\n}\n.glyphicon-check:before {\n content: \"\\e067\";\n}\n.glyphicon-move:before {\n content: \"\\e068\";\n}\n.glyphicon-step-backward:before {\n content: \"\\e069\";\n}\n.glyphicon-fast-backward:before {\n content: \"\\e070\";\n}\n.glyphicon-backward:before {\n content: \"\\e071\";\n}\n.glyphicon-play:before {\n content: \"\\e072\";\n}\n.glyphicon-pause:before {\n content: \"\\e073\";\n}\n.glyphicon-stop:before {\n content: \"\\e074\";\n}\n.glyphicon-forward:before {\n content: \"\\e075\";\n}\n.glyphicon-fast-forward:before {\n content: \"\\e076\";\n}\n.glyphicon-step-forward:before {\n content: \"\\e077\";\n}\n.glyphicon-eject:before {\n content: \"\\e078\";\n}\n.glyphicon-chevron-left:before {\n content: \"\\e079\";\n}\n.glyphicon-chevron-right:before {\n content: \"\\e080\";\n}\n.glyphicon-plus-sign:before {\n content: \"\\e081\";\n}\n.glyphicon-minus-sign:before {\n content: \"\\e082\";\n}\n.glyphicon-remove-sign:before {\n content: \"\\e083\";\n}\n.glyphicon-ok-sign:before {\n content: \"\\e084\";\n}\n.glyphicon-question-sign:before {\n content: \"\\e085\";\n}\n.glyphicon-info-sign:before {\n content: \"\\e086\";\n}\n.glyphicon-screenshot:before {\n content: \"\\e087\";\n}\n.glyphicon-remove-circle:before {\n content: \"\\e088\";\n}\n.glyphicon-ok-circle:before {\n content: \"\\e089\";\n}\n.glyphicon-ban-circle:before {\n content: \"\\e090\";\n}\n.glyphicon-arrow-left:before {\n content: \"\\e091\";\n}\n.glyphicon-arrow-right:before {\n content: \"\\e092\";\n}\n.glyphicon-arrow-up:before {\n content: \"\\e093\";\n}\n.glyphicon-arrow-down:before {\n content: \"\\e094\";\n}\n.glyphicon-share-alt:before {\n content: \"\\e095\";\n}\n.glyphicon-resize-full:before {\n content: \"\\e096\";\n}\n.glyphicon-resize-small:before {\n content: \"\\e097\";\n}\n.glyphicon-exclamation-sign:before {\n content: \"\\e101\";\n}\n.glyphicon-gift:before {\n content: \"\\e102\";\n}\n.glyphicon-leaf:before {\n content: \"\\e103\";\n}\n.glyphicon-fire:before {\n content: \"\\e104\";\n}\n.glyphicon-eye-open:before {\n content: \"\\e105\";\n}\n.glyphicon-eye-close:before {\n content: \"\\e106\";\n}\n.glyphicon-warning-sign:before {\n content: \"\\e107\";\n}\n.glyphicon-plane:before {\n content: \"\\e108\";\n}\n.glyphicon-calendar:before {\n content: \"\\e109\";\n}\n.glyphicon-random:before {\n content: \"\\e110\";\n}\n.glyphicon-comment:before {\n content: \"\\e111\";\n}\n.glyphicon-magnet:before {\n content: \"\\e112\";\n}\n.glyphicon-chevron-up:before {\n content: \"\\e113\";\n}\n.glyphicon-chevron-down:before {\n content: \"\\e114\";\n}\n.glyphicon-retweet:before {\n content: \"\\e115\";\n}\n.glyphicon-shopping-cart:before {\n content: \"\\e116\";\n}\n.glyphicon-folder-close:before {\n content: \"\\e117\";\n}\n.glyphicon-folder-open:before {\n content: \"\\e118\";\n}\n.glyphicon-resize-vertical:before {\n content: \"\\e119\";\n}\n.glyphicon-resize-horizontal:before {\n content: \"\\e120\";\n}\n.glyphicon-hdd:before {\n content: \"\\e121\";\n}\n.glyphicon-bullhorn:before {\n content: \"\\e122\";\n}\n.glyphicon-bell:before {\n content: \"\\e123\";\n}\n.glyphicon-certificate:before {\n content: \"\\e124\";\n}\n.glyphicon-thumbs-up:before {\n content: \"\\e125\";\n}\n.glyphicon-thumbs-down:before {\n content: \"\\e126\";\n}\n.glyphicon-hand-right:before {\n content: \"\\e127\";\n}\n.glyphicon-hand-left:before {\n content: \"\\e128\";\n}\n.glyphicon-hand-up:before {\n content: \"\\e129\";\n}\n.glyphicon-hand-down:before {\n content: \"\\e130\";\n}\n.glyphicon-circle-arrow-right:before {\n content: \"\\e131\";\n}\n.glyphicon-circle-arrow-left:before {\n content: \"\\e132\";\n}\n.glyphicon-circle-arrow-up:before {\n content: \"\\e133\";\n}\n.glyphicon-circle-arrow-down:before {\n content: \"\\e134\";\n}\n.glyphicon-globe:before {\n content: \"\\e135\";\n}\n.glyphicon-wrench:before {\n content: \"\\e136\";\n}\n.glyphicon-tasks:before {\n content: \"\\e137\";\n}\n.glyphicon-filter:before {\n content: \"\\e138\";\n}\n.glyphicon-briefcase:before {\n content: \"\\e139\";\n}\n.glyphicon-fullscreen:before {\n content: \"\\e140\";\n}\n.glyphicon-dashboard:before {\n content: \"\\e141\";\n}\n.glyphicon-paperclip:before {\n content: \"\\e142\";\n}\n.glyphicon-heart-empty:before {\n content: \"\\e143\";\n}\n.glyphicon-link:before {\n content: \"\\e144\";\n}\n.glyphicon-phone:before {\n content: \"\\e145\";\n}\n.glyphicon-pushpin:before {\n content: \"\\e146\";\n}\n.glyphicon-usd:before {\n content: \"\\e148\";\n}\n.glyphicon-gbp:before {\n content: \"\\e149\";\n}\n.glyphicon-sort:before {\n content: \"\\e150\";\n}\n.glyphicon-sort-by-alphabet:before {\n content: \"\\e151\";\n}\n.glyphicon-sort-by-alphabet-alt:before {\n content: \"\\e152\";\n}\n.glyphicon-sort-by-order:before {\n content: \"\\e153\";\n}\n.glyphicon-sort-by-order-alt:before {\n content: \"\\e154\";\n}\n.glyphicon-sort-by-attributes:before {\n content: \"\\e155\";\n}\n.glyphicon-sort-by-attributes-alt:before {\n content: \"\\e156\";\n}\n.glyphicon-unchecked:before {\n content: \"\\e157\";\n}\n.glyphicon-expand:before {\n content: \"\\e158\";\n}\n.glyphicon-collapse-down:before {\n content: \"\\e159\";\n}\n.glyphicon-collapse-up:before {\n content: \"\\e160\";\n}\n.glyphicon-log-in:before {\n content: \"\\e161\";\n}\n.glyphicon-flash:before {\n content: \"\\e162\";\n}\n.glyphicon-log-out:before {\n content: \"\\e163\";\n}\n.glyphicon-new-window:before {\n content: \"\\e164\";\n}\n.glyphicon-record:before {\n content: \"\\e165\";\n}\n.glyphicon-save:before {\n content: \"\\e166\";\n}\n.glyphicon-open:before {\n content: \"\\e167\";\n}\n.glyphicon-saved:before {\n content: \"\\e168\";\n}\n.glyphicon-import:before {\n content: \"\\e169\";\n}\n.glyphicon-export:before {\n content: \"\\e170\";\n}\n.glyphicon-send:before {\n content: \"\\e171\";\n}\n.glyphicon-floppy-disk:before {\n content: \"\\e172\";\n}\n.glyphicon-floppy-saved:before {\n content: \"\\e173\";\n}\n.glyphicon-floppy-remove:before {\n content: \"\\e174\";\n}\n.glyphicon-floppy-save:before {\n content: \"\\e175\";\n}\n.glyphicon-floppy-open:before {\n content: \"\\e176\";\n}\n.glyphicon-credit-card:before {\n content: \"\\e177\";\n}\n.glyphicon-transfer:before {\n content: \"\\e178\";\n}\n.glyphicon-cutlery:before {\n content: \"\\e179\";\n}\n.glyphicon-header:before {\n content: \"\\e180\";\n}\n.glyphicon-compressed:before {\n content: \"\\e181\";\n}\n.glyphicon-earphone:before {\n content: \"\\e182\";\n}\n.glyphicon-phone-alt:before {\n content: \"\\e183\";\n}\n.glyphicon-tower:before {\n content: \"\\e184\";\n}\n.glyphicon-stats:before {\n content: \"\\e185\";\n}\n.glyphicon-sd-video:before {\n content: \"\\e186\";\n}\n.glyphicon-hd-video:before {\n content: \"\\e187\";\n}\n.glyphicon-subtitles:before {\n content: \"\\e188\";\n}\n.glyphicon-sound-stereo:before {\n content: \"\\e189\";\n}\n.glyphicon-sound-dolby:before {\n content: \"\\e190\";\n}\n.glyphicon-sound-5-1:before {\n content: \"\\e191\";\n}\n.glyphicon-sound-6-1:before {\n content: \"\\e192\";\n}\n.glyphicon-sound-7-1:before {\n content: \"\\e193\";\n}\n.glyphicon-copyright-mark:before {\n content: \"\\e194\";\n}\n.glyphicon-registration-mark:before {\n content: \"\\e195\";\n}\n.glyphicon-cloud-download:before {\n content: \"\\e197\";\n}\n.glyphicon-cloud-upload:before {\n content: \"\\e198\";\n}\n.glyphicon-tree-conifer:before {\n content: \"\\e199\";\n}\n.glyphicon-tree-deciduous:before {\n content: \"\\e200\";\n}\n.glyphicon-cd:before {\n content: \"\\e201\";\n}\n.glyphicon-save-file:before {\n content: \"\\e202\";\n}\n.glyphicon-open-file:before {\n content: \"\\e203\";\n}\n.glyphicon-level-up:before {\n content: \"\\e204\";\n}\n.glyphicon-copy:before {\n content: \"\\e205\";\n}\n.glyphicon-paste:before {\n content: \"\\e206\";\n}\n.glyphicon-alert:before {\n content: \"\\e209\";\n}\n.glyphicon-equalizer:before {\n content: \"\\e210\";\n}\n.glyphicon-king:before {\n content: \"\\e211\";\n}\n.glyphicon-queen:before {\n content: \"\\e212\";\n}\n.glyphicon-pawn:before {\n content: \"\\e213\";\n}\n.glyphicon-bishop:before {\n content: \"\\e214\";\n}\n.glyphicon-knight:before {\n content: \"\\e215\";\n}\n.glyphicon-baby-formula:before {\n content: \"\\e216\";\n}\n.glyphicon-tent:before {\n content: \"\\26fa\";\n}\n.glyphicon-blackboard:before {\n content: \"\\e218\";\n}\n.glyphicon-bed:before {\n content: \"\\e219\";\n}\n.glyphicon-apple:before {\n content: \"\\f8ff\";\n}\n.glyphicon-erase:before {\n content: \"\\e221\";\n}\n.glyphicon-hourglass:before {\n content: \"\\231b\";\n}\n.glyphicon-lamp:before {\n content: \"\\e223\";\n}\n.glyphicon-duplicate:before {\n content: \"\\e224\";\n}\n.glyphicon-piggy-bank:before {\n content: \"\\e225\";\n}\n.glyphicon-scissors:before {\n content: \"\\e226\";\n}\n.glyphicon-bitcoin:before {\n content: \"\\e227\";\n}\n.glyphicon-btc:before {\n content: \"\\e227\";\n}\n.glyphicon-xbt:before {\n content: \"\\e227\";\n}\n.glyphicon-yen:before {\n content: \"\\00a5\";\n}\n.glyphicon-jpy:before {\n content: \"\\00a5\";\n}\n.glyphicon-ruble:before {\n content: \"\\20bd\";\n}\n.glyphicon-rub:before {\n content: \"\\20bd\";\n}\n.glyphicon-scale:before {\n content: \"\\e230\";\n}\n.glyphicon-ice-lolly:before {\n content: \"\\e231\";\n}\n.glyphicon-ice-lolly-tasted:before {\n content: \"\\e232\";\n}\n.glyphicon-education:before {\n content: \"\\e233\";\n}\n.glyphicon-option-horizontal:before {\n content: \"\\e234\";\n}\n.glyphicon-option-vertical:before {\n content: \"\\e235\";\n}\n.glyphicon-menu-hamburger:before {\n content: \"\\e236\";\n}\n.glyphicon-modal-window:before {\n content: \"\\e237\";\n}\n.glyphicon-oil:before {\n content: \"\\e238\";\n}\n.glyphicon-grain:before {\n content: \"\\e239\";\n}\n.glyphicon-sunglasses:before {\n content: \"\\e240\";\n}\n.glyphicon-text-size:before {\n content: \"\\e241\";\n}\n.glyphicon-text-color:before {\n content: \"\\e242\";\n}\n.glyphicon-text-background:before {\n content: \"\\e243\";\n}\n.glyphicon-object-align-top:before {\n content: \"\\e244\";\n}\n.glyphicon-object-align-bottom:before {\n content: \"\\e245\";\n}\n.glyphicon-object-align-horizontal:before {\n content: \"\\e246\";\n}\n.glyphicon-object-align-left:before {\n content: \"\\e247\";\n}\n.glyphicon-object-align-vertical:before {\n content: \"\\e248\";\n}\n.glyphicon-object-align-right:before {\n content: \"\\e249\";\n}\n.glyphicon-triangle-right:before {\n content: \"\\e250\";\n}\n.glyphicon-triangle-left:before {\n content: \"\\e251\";\n}\n.glyphicon-triangle-bottom:before {\n content: \"\\e252\";\n}\n.glyphicon-triangle-top:before {\n content: \"\\e253\";\n}\n.glyphicon-console:before {\n content: \"\\e254\";\n}\n.glyphicon-superscript:before {\n content: \"\\e255\";\n}\n.glyphicon-subscript:before {\n content: \"\\e256\";\n}\n.glyphicon-menu-left:before {\n content: \"\\e257\";\n}\n.glyphicon-menu-right:before {\n content: \"\\e258\";\n}\n.glyphicon-menu-down:before {\n content: \"\\e259\";\n}\n.glyphicon-menu-up:before {\n content: \"\\e260\";\n}\n* {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n*:before,\n*:after {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\nhtml {\n font-size: 10px;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 14px;\n line-height: 1.42857143;\n color: #333333;\n background-color: #fff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\na {\n color: #337ab7;\n text-decoration: none;\n}\na:hover,\na:focus {\n color: #23527c;\n text-decoration: underline;\n}\na:focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\nfigure {\n margin: 0;\n}\nimg {\n vertical-align: middle;\n}\n.img-responsive,\n.thumbnail > img,\n.thumbnail a > img,\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n display: block;\n max-width: 100%;\n height: auto;\n}\n.img-rounded {\n border-radius: 6px;\n}\n.img-thumbnail {\n padding: 4px;\n line-height: 1.42857143;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n -webkit-transition: all 0.2s ease-in-out;\n -o-transition: all 0.2s ease-in-out;\n transition: all 0.2s ease-in-out;\n display: inline-block;\n max-width: 100%;\n height: auto;\n}\n.img-circle {\n border-radius: 50%;\n}\nhr {\n margin-top: 20px;\n margin-bottom: 20px;\n border: 0;\n border-top: 1px solid #eeeeee;\n}\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n}\n[role=\"button\"] {\n cursor: pointer;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n font-family: inherit;\n font-weight: 500;\n line-height: 1.1;\n color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n font-weight: normal;\n line-height: 1;\n color: #777777;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n margin-top: 20px;\n margin-bottom: 10px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n margin-top: 10px;\n margin-bottom: 10px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .small,\n.h5 .small,\nh6 .small,\n.h6 .small {\n font-size: 75%;\n}\nh1,\n.h1 {\n font-size: 36px;\n}\nh2,\n.h2 {\n font-size: 30px;\n}\nh3,\n.h3 {\n font-size: 24px;\n}\nh4,\n.h4 {\n font-size: 18px;\n}\nh5,\n.h5 {\n font-size: 14px;\n}\nh6,\n.h6 {\n font-size: 12px;\n}\np {\n margin: 0 0 10px;\n}\n.lead {\n margin-bottom: 20px;\n font-size: 16px;\n font-weight: 300;\n line-height: 1.4;\n}\n@media (min-width: 768px) {\n .lead {\n font-size: 21px;\n }\n}\nsmall,\n.small {\n font-size: 85%;\n}\nmark,\n.mark {\n background-color: #fcf8e3;\n padding: .2em;\n}\n.text-left {\n text-align: left;\n}\n.text-right {\n text-align: right;\n}\n.text-center {\n text-align: center;\n}\n.text-justify {\n text-align: justify;\n}\n.text-nowrap {\n white-space: nowrap;\n}\n.text-lowercase {\n text-transform: lowercase;\n}\n.text-uppercase {\n text-transform: uppercase;\n}\n.text-capitalize {\n text-transform: capitalize;\n}\n.text-muted {\n color: #777777;\n}\n.text-primary {\n color: #337ab7;\n}\na.text-primary:hover,\na.text-primary:focus {\n color: #286090;\n}\n.text-success {\n color: #3c763d;\n}\na.text-success:hover,\na.text-success:focus {\n color: #2b542c;\n}\n.text-info {\n color: #31708f;\n}\na.text-info:hover,\na.text-info:focus {\n color: #245269;\n}\n.text-warning {\n color: #8a6d3b;\n}\na.text-warning:hover,\na.text-warning:focus {\n color: #66512c;\n}\n.text-danger {\n color: #a94442;\n}\na.text-danger:hover,\na.text-danger:focus {\n color: #843534;\n}\n.bg-primary {\n color: #fff;\n background-color: #337ab7;\n}\na.bg-primary:hover,\na.bg-primary:focus {\n background-color: #286090;\n}\n.bg-success {\n background-color: #dff0d8;\n}\na.bg-success:hover,\na.bg-success:focus {\n background-color: #c1e2b3;\n}\n.bg-info {\n background-color: #d9edf7;\n}\na.bg-info:hover,\na.bg-info:focus {\n background-color: #afd9ee;\n}\n.bg-warning {\n background-color: #fcf8e3;\n}\na.bg-warning:hover,\na.bg-warning:focus {\n background-color: #f7ecb5;\n}\n.bg-danger {\n background-color: #f2dede;\n}\na.bg-danger:hover,\na.bg-danger:focus {\n background-color: #e4b9b9;\n}\n.page-header {\n padding-bottom: 9px;\n margin: 40px 0 20px;\n border-bottom: 1px solid #eeeeee;\n}\nul,\nol {\n margin-top: 0;\n margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n margin-bottom: 0;\n}\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n.list-inline {\n padding-left: 0;\n list-style: none;\n margin-left: -5px;\n}\n.list-inline > li {\n display: inline-block;\n padding-left: 5px;\n padding-right: 5px;\n}\ndl {\n margin-top: 0;\n margin-bottom: 20px;\n}\ndt,\ndd {\n line-height: 1.42857143;\n}\ndt {\n font-weight: bold;\n}\ndd {\n margin-left: 0;\n}\n@media (min-width: 768px) {\n .dl-horizontal dt {\n float: left;\n width: 160px;\n clear: left;\n text-align: right;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .dl-horizontal dd {\n margin-left: 180px;\n }\n}\nabbr[title],\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted #777777;\n}\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\nblockquote {\n padding: 10px 20px;\n margin: 0 0 20px;\n font-size: 17.5px;\n border-left: 5px solid #eeeeee;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n display: block;\n font-size: 80%;\n line-height: 1.42857143;\n color: #777777;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n content: '\\2014 \\00A0';\n}\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n border-right: 5px solid #eeeeee;\n border-left: 0;\n text-align: right;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n content: '';\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-right small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n content: '\\00A0 \\2014';\n}\naddress {\n margin-bottom: 20px;\n font-style: normal;\n line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: #c7254e;\n background-color: #f9f2f4;\n border-radius: 4px;\n}\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: #fff;\n background-color: #333;\n border-radius: 3px;\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n box-shadow: none;\n}\npre {\n display: block;\n padding: 9.5px;\n margin: 0 0 10px;\n font-size: 13px;\n line-height: 1.42857143;\n word-break: break-all;\n word-wrap: break-word;\n color: #333333;\n background-color: #f5f5f5;\n border: 1px solid #ccc;\n border-radius: 4px;\n}\npre code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n}\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n.container {\n margin-right: auto;\n margin-left: auto;\n padding-left: 15px;\n padding-right: 15px;\n}\n@media (min-width: 768px) {\n .container {\n width: 750px;\n }\n}\n@media (min-width: 992px) {\n .container {\n width: 970px;\n }\n}\n@media (min-width: 1200px) {\n .container {\n width: 1170px;\n }\n}\n.container-fluid {\n margin-right: auto;\n margin-left: auto;\n padding-left: 15px;\n padding-right: 15px;\n}\n.row {\n margin-left: -15px;\n margin-right: -15px;\n}\n.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {\n position: relative;\n min-height: 1px;\n padding-left: 15px;\n padding-right: 15px;\n}\n.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {\n float: left;\n}\n.col-xs-12 {\n width: 100%;\n}\n.col-xs-11 {\n width: 91.66666667%;\n}\n.col-xs-10 {\n width: 83.33333333%;\n}\n.col-xs-9 {\n width: 75%;\n}\n.col-xs-8 {\n width: 66.66666667%;\n}\n.col-xs-7 {\n width: 58.33333333%;\n}\n.col-xs-6 {\n width: 50%;\n}\n.col-xs-5 {\n width: 41.66666667%;\n}\n.col-xs-4 {\n width: 33.33333333%;\n}\n.col-xs-3 {\n width: 25%;\n}\n.col-xs-2 {\n width: 16.66666667%;\n}\n.col-xs-1 {\n width: 8.33333333%;\n}\n.col-xs-pull-12 {\n right: 100%;\n}\n.col-xs-pull-11 {\n right: 91.66666667%;\n}\n.col-xs-pull-10 {\n right: 83.33333333%;\n}\n.col-xs-pull-9 {\n right: 75%;\n}\n.col-xs-pull-8 {\n right: 66.66666667%;\n}\n.col-xs-pull-7 {\n right: 58.33333333%;\n}\n.col-xs-pull-6 {\n right: 50%;\n}\n.col-xs-pull-5 {\n right: 41.66666667%;\n}\n.col-xs-pull-4 {\n right: 33.33333333%;\n}\n.col-xs-pull-3 {\n right: 25%;\n}\n.col-xs-pull-2 {\n right: 16.66666667%;\n}\n.col-xs-pull-1 {\n right: 8.33333333%;\n}\n.col-xs-pull-0 {\n right: auto;\n}\n.col-xs-push-12 {\n left: 100%;\n}\n.col-xs-push-11 {\n left: 91.66666667%;\n}\n.col-xs-push-10 {\n left: 83.33333333%;\n}\n.col-xs-push-9 {\n left: 75%;\n}\n.col-xs-push-8 {\n left: 66.66666667%;\n}\n.col-xs-push-7 {\n left: 58.33333333%;\n}\n.col-xs-push-6 {\n left: 50%;\n}\n.col-xs-push-5 {\n left: 41.66666667%;\n}\n.col-xs-push-4 {\n left: 33.33333333%;\n}\n.col-xs-push-3 {\n left: 25%;\n}\n.col-xs-push-2 {\n left: 16.66666667%;\n}\n.col-xs-push-1 {\n left: 8.33333333%;\n}\n.col-xs-push-0 {\n left: auto;\n}\n.col-xs-offset-12 {\n margin-left: 100%;\n}\n.col-xs-offset-11 {\n margin-left: 91.66666667%;\n}\n.col-xs-offset-10 {\n margin-left: 83.33333333%;\n}\n.col-xs-offset-9 {\n margin-left: 75%;\n}\n.col-xs-offset-8 {\n margin-left: 66.66666667%;\n}\n.col-xs-offset-7 {\n margin-left: 58.33333333%;\n}\n.col-xs-offset-6 {\n margin-left: 50%;\n}\n.col-xs-offset-5 {\n margin-left: 41.66666667%;\n}\n.col-xs-offset-4 {\n margin-left: 33.33333333%;\n}\n.col-xs-offset-3 {\n margin-left: 25%;\n}\n.col-xs-offset-2 {\n margin-left: 16.66666667%;\n}\n.col-xs-offset-1 {\n margin-left: 8.33333333%;\n}\n.col-xs-offset-0 {\n margin-left: 0%;\n}\n@media (min-width: 768px) {\n .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {\n float: left;\n }\n .col-sm-12 {\n width: 100%;\n }\n .col-sm-11 {\n width: 91.66666667%;\n }\n .col-sm-10 {\n width: 83.33333333%;\n }\n .col-sm-9 {\n width: 75%;\n }\n .col-sm-8 {\n width: 66.66666667%;\n }\n .col-sm-7 {\n width: 58.33333333%;\n }\n .col-sm-6 {\n width: 50%;\n }\n .col-sm-5 {\n width: 41.66666667%;\n }\n .col-sm-4 {\n width: 33.33333333%;\n }\n .col-sm-3 {\n width: 25%;\n }\n .col-sm-2 {\n width: 16.66666667%;\n }\n .col-sm-1 {\n width: 8.33333333%;\n }\n .col-sm-pull-12 {\n right: 100%;\n }\n .col-sm-pull-11 {\n right: 91.66666667%;\n }\n .col-sm-pull-10 {\n right: 83.33333333%;\n }\n .col-sm-pull-9 {\n right: 75%;\n }\n .col-sm-pull-8 {\n right: 66.66666667%;\n }\n .col-sm-pull-7 {\n right: 58.33333333%;\n }\n .col-sm-pull-6 {\n right: 50%;\n }\n .col-sm-pull-5 {\n right: 41.66666667%;\n }\n .col-sm-pull-4 {\n right: 33.33333333%;\n }\n .col-sm-pull-3 {\n right: 25%;\n }\n .col-sm-pull-2 {\n right: 16.66666667%;\n }\n .col-sm-pull-1 {\n right: 8.33333333%;\n }\n .col-sm-pull-0 {\n right: auto;\n }\n .col-sm-push-12 {\n left: 100%;\n }\n .col-sm-push-11 {\n left: 91.66666667%;\n }\n .col-sm-push-10 {\n left: 83.33333333%;\n }\n .col-sm-push-9 {\n left: 75%;\n }\n .col-sm-push-8 {\n left: 66.66666667%;\n }\n .col-sm-push-7 {\n left: 58.33333333%;\n }\n .col-sm-push-6 {\n left: 50%;\n }\n .col-sm-push-5 {\n left: 41.66666667%;\n }\n .col-sm-push-4 {\n left: 33.33333333%;\n }\n .col-sm-push-3 {\n left: 25%;\n }\n .col-sm-push-2 {\n left: 16.66666667%;\n }\n .col-sm-push-1 {\n left: 8.33333333%;\n }\n .col-sm-push-0 {\n left: auto;\n }\n .col-sm-offset-12 {\n margin-left: 100%;\n }\n .col-sm-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-sm-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-sm-offset-9 {\n margin-left: 75%;\n }\n .col-sm-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-sm-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-sm-offset-6 {\n margin-left: 50%;\n }\n .col-sm-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-sm-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-sm-offset-3 {\n margin-left: 25%;\n }\n .col-sm-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-sm-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-sm-offset-0 {\n margin-left: 0%;\n }\n}\n@media (min-width: 992px) {\n .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {\n float: left;\n }\n .col-md-12 {\n width: 100%;\n }\n .col-md-11 {\n width: 91.66666667%;\n }\n .col-md-10 {\n width: 83.33333333%;\n }\n .col-md-9 {\n width: 75%;\n }\n .col-md-8 {\n width: 66.66666667%;\n }\n .col-md-7 {\n width: 58.33333333%;\n }\n .col-md-6 {\n width: 50%;\n }\n .col-md-5 {\n width: 41.66666667%;\n }\n .col-md-4 {\n width: 33.33333333%;\n }\n .col-md-3 {\n width: 25%;\n }\n .col-md-2 {\n width: 16.66666667%;\n }\n .col-md-1 {\n width: 8.33333333%;\n }\n .col-md-pull-12 {\n right: 100%;\n }\n .col-md-pull-11 {\n right: 91.66666667%;\n }\n .col-md-pull-10 {\n right: 83.33333333%;\n }\n .col-md-pull-9 {\n right: 75%;\n }\n .col-md-pull-8 {\n right: 66.66666667%;\n }\n .col-md-pull-7 {\n right: 58.33333333%;\n }\n .col-md-pull-6 {\n right: 50%;\n }\n .col-md-pull-5 {\n right: 41.66666667%;\n }\n .col-md-pull-4 {\n right: 33.33333333%;\n }\n .col-md-pull-3 {\n right: 25%;\n }\n .col-md-pull-2 {\n right: 16.66666667%;\n }\n .col-md-pull-1 {\n right: 8.33333333%;\n }\n .col-md-pull-0 {\n right: auto;\n }\n .col-md-push-12 {\n left: 100%;\n }\n .col-md-push-11 {\n left: 91.66666667%;\n }\n .col-md-push-10 {\n left: 83.33333333%;\n }\n .col-md-push-9 {\n left: 75%;\n }\n .col-md-push-8 {\n left: 66.66666667%;\n }\n .col-md-push-7 {\n left: 58.33333333%;\n }\n .col-md-push-6 {\n left: 50%;\n }\n .col-md-push-5 {\n left: 41.66666667%;\n }\n .col-md-push-4 {\n left: 33.33333333%;\n }\n .col-md-push-3 {\n left: 25%;\n }\n .col-md-push-2 {\n left: 16.66666667%;\n }\n .col-md-push-1 {\n left: 8.33333333%;\n }\n .col-md-push-0 {\n left: auto;\n }\n .col-md-offset-12 {\n margin-left: 100%;\n }\n .col-md-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-md-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-md-offset-9 {\n margin-left: 75%;\n }\n .col-md-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-md-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-md-offset-6 {\n margin-left: 50%;\n }\n .col-md-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-md-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-md-offset-3 {\n margin-left: 25%;\n }\n .col-md-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-md-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-md-offset-0 {\n margin-left: 0%;\n }\n}\n@media (min-width: 1200px) {\n .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {\n float: left;\n }\n .col-lg-12 {\n width: 100%;\n }\n .col-lg-11 {\n width: 91.66666667%;\n }\n .col-lg-10 {\n width: 83.33333333%;\n }\n .col-lg-9 {\n width: 75%;\n }\n .col-lg-8 {\n width: 66.66666667%;\n }\n .col-lg-7 {\n width: 58.33333333%;\n }\n .col-lg-6 {\n width: 50%;\n }\n .col-lg-5 {\n width: 41.66666667%;\n }\n .col-lg-4 {\n width: 33.33333333%;\n }\n .col-lg-3 {\n width: 25%;\n }\n .col-lg-2 {\n width: 16.66666667%;\n }\n .col-lg-1 {\n width: 8.33333333%;\n }\n .col-lg-pull-12 {\n right: 100%;\n }\n .col-lg-pull-11 {\n right: 91.66666667%;\n }\n .col-lg-pull-10 {\n right: 83.33333333%;\n }\n .col-lg-pull-9 {\n right: 75%;\n }\n .col-lg-pull-8 {\n right: 66.66666667%;\n }\n .col-lg-pull-7 {\n right: 58.33333333%;\n }\n .col-lg-pull-6 {\n right: 50%;\n }\n .col-lg-pull-5 {\n right: 41.66666667%;\n }\n .col-lg-pull-4 {\n right: 33.33333333%;\n }\n .col-lg-pull-3 {\n right: 25%;\n }\n .col-lg-pull-2 {\n right: 16.66666667%;\n }\n .col-lg-pull-1 {\n right: 8.33333333%;\n }\n .col-lg-pull-0 {\n right: auto;\n }\n .col-lg-push-12 {\n left: 100%;\n }\n .col-lg-push-11 {\n left: 91.66666667%;\n }\n .col-lg-push-10 {\n left: 83.33333333%;\n }\n .col-lg-push-9 {\n left: 75%;\n }\n .col-lg-push-8 {\n left: 66.66666667%;\n }\n .col-lg-push-7 {\n left: 58.33333333%;\n }\n .col-lg-push-6 {\n left: 50%;\n }\n .col-lg-push-5 {\n left: 41.66666667%;\n }\n .col-lg-push-4 {\n left: 33.33333333%;\n }\n .col-lg-push-3 {\n left: 25%;\n }\n .col-lg-push-2 {\n left: 16.66666667%;\n }\n .col-lg-push-1 {\n left: 8.33333333%;\n }\n .col-lg-push-0 {\n left: auto;\n }\n .col-lg-offset-12 {\n margin-left: 100%;\n }\n .col-lg-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-lg-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-lg-offset-9 {\n margin-left: 75%;\n }\n .col-lg-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-lg-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-lg-offset-6 {\n margin-left: 50%;\n }\n .col-lg-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-lg-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-lg-offset-3 {\n margin-left: 25%;\n }\n .col-lg-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-lg-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-lg-offset-0 {\n margin-left: 0%;\n }\n}\ntable {\n background-color: transparent;\n}\ncaption {\n padding-top: 8px;\n padding-bottom: 8px;\n color: #777777;\n text-align: left;\n}\nth {\n text-align: left;\n}\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: 20px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n padding: 8px;\n line-height: 1.42857143;\n vertical-align: top;\n border-top: 1px solid #ddd;\n}\n.table > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid #ddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n border-top: 0;\n}\n.table > tbody + tbody {\n border-top: 2px solid #ddd;\n}\n.table .table {\n background-color: #fff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n padding: 5px;\n}\n.table-bordered {\n border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-of-type(odd) {\n background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover {\n background-color: #f5f5f5;\n}\ntable col[class*=\"col-\"] {\n position: static;\n float: none;\n display: table-column;\n}\ntable td[class*=\"col-\"],\ntable th[class*=\"col-\"] {\n position: static;\n float: none;\n display: table-cell;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n background-color: #f5f5f5;\n}\n.table-hover > tbody > tr > td.active:hover,\n.table-hover > tbody > tr > th.active:hover,\n.table-hover > tbody > tr.active:hover > td,\n.table-hover > tbody > tr:hover > .active,\n.table-hover > tbody > tr.active:hover > th {\n background-color: #e8e8e8;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n background-color: #dff0d8;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td,\n.table-hover > tbody > tr:hover > .success,\n.table-hover > tbody > tr.success:hover > th {\n background-color: #d0e9c6;\n}\n.table > thead > tr > td.info,\n.table > tbody > tr > td.info,\n.table > tfoot > tr > td.info,\n.table > thead > tr > th.info,\n.table > tbody > tr > th.info,\n.table > tfoot > tr > th.info,\n.table > thead > tr.info > td,\n.table > tbody > tr.info > td,\n.table > tfoot > tr.info > td,\n.table > thead > tr.info > th,\n.table > tbody > tr.info > th,\n.table > tfoot > tr.info > th {\n background-color: #d9edf7;\n}\n.table-hover > tbody > tr > td.info:hover,\n.table-hover > tbody > tr > th.info:hover,\n.table-hover > tbody > tr.info:hover > td,\n.table-hover > tbody > tr:hover > .info,\n.table-hover > tbody > tr.info:hover > th {\n background-color: #c4e3f3;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n background-color: #fcf8e3;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td,\n.table-hover > tbody > tr:hover > .warning,\n.table-hover > tbody > tr.warning:hover > th {\n background-color: #faf2cc;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n background-color: #f2dede;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td,\n.table-hover > tbody > tr:hover > .danger,\n.table-hover > tbody > tr.danger:hover > th {\n background-color: #ebcccc;\n}\n.table-responsive {\n overflow-x: auto;\n min-height: 0.01%;\n}\n@media screen and (max-width: 767px) {\n .table-responsive {\n width: 100%;\n margin-bottom: 15px;\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid #ddd;\n }\n .table-responsive > .table {\n margin-bottom: 0;\n }\n .table-responsive > .table > thead > tr > th,\n .table-responsive > .table > tbody > tr > th,\n .table-responsive > .table > tfoot > tr > th,\n .table-responsive > .table > thead > tr > td,\n .table-responsive > .table > tbody > tr > td,\n .table-responsive > .table > tfoot > tr > td {\n white-space: nowrap;\n }\n .table-responsive > .table-bordered {\n border: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:first-child,\n .table-responsive > .table-bordered > tbody > tr > th:first-child,\n .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n .table-responsive > .table-bordered > thead > tr > td:first-child,\n .table-responsive > .table-bordered > tbody > tr > td:first-child,\n .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:last-child,\n .table-responsive > .table-bordered > tbody > tr > th:last-child,\n .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n .table-responsive > .table-bordered > thead > tr > td:last-child,\n .table-responsive > .table-bordered > tbody > tr > td:last-child,\n .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n }\n .table-responsive > .table-bordered > tbody > tr:last-child > th,\n .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n .table-responsive > .table-bordered > tbody > tr:last-child > td,\n .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n border-bottom: 0;\n }\n}\nfieldset {\n padding: 0;\n margin: 0;\n border: 0;\n min-width: 0;\n}\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: 20px;\n font-size: 21px;\n line-height: inherit;\n color: #333333;\n border: 0;\n border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n display: inline-block;\n max-width: 100%;\n margin-bottom: 5px;\n font-weight: bold;\n}\ninput[type=\"search\"] {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9;\n line-height: normal;\n}\ninput[type=\"file\"] {\n display: block;\n}\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\nselect[multiple],\nselect[size] {\n height: auto;\n}\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\noutput {\n display: block;\n padding-top: 7px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555555;\n}\n.form-control {\n display: block;\n width: 100%;\n height: 34px;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555555;\n background-color: #fff;\n background-image: none;\n border: 1px solid #ccc;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n}\n.form-control:focus {\n border-color: #66afe9;\n outline: 0;\n -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n}\n.form-control::-moz-placeholder {\n color: #999;\n opacity: 1;\n}\n.form-control:-ms-input-placeholder {\n color: #999;\n}\n.form-control::-webkit-input-placeholder {\n color: #999;\n}\n.form-control::-ms-expand {\n border: 0;\n background-color: transparent;\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n background-color: #eeeeee;\n opacity: 1;\n}\n.form-control[disabled],\nfieldset[disabled] .form-control {\n cursor: not-allowed;\n}\ntextarea.form-control {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-appearance: none;\n}\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n input[type=\"date\"].form-control,\n input[type=\"time\"].form-control,\n input[type=\"datetime-local\"].form-control,\n input[type=\"month\"].form-control {\n line-height: 34px;\n }\n input[type=\"date\"].input-sm,\n input[type=\"time\"].input-sm,\n input[type=\"datetime-local\"].input-sm,\n input[type=\"month\"].input-sm,\n .input-group-sm input[type=\"date\"],\n .input-group-sm input[type=\"time\"],\n .input-group-sm input[type=\"datetime-local\"],\n .input-group-sm input[type=\"month\"] {\n line-height: 30px;\n }\n input[type=\"date\"].input-lg,\n input[type=\"time\"].input-lg,\n input[type=\"datetime-local\"].input-lg,\n input[type=\"month\"].input-lg,\n .input-group-lg input[type=\"date\"],\n .input-group-lg input[type=\"time\"],\n .input-group-lg input[type=\"datetime-local\"],\n .input-group-lg input[type=\"month\"] {\n line-height: 46px;\n }\n}\n.form-group {\n margin-bottom: 15px;\n}\n.radio,\n.checkbox {\n position: relative;\n display: block;\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.radio label,\n.checkbox label {\n min-height: 20px;\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: normal;\n cursor: pointer;\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n position: absolute;\n margin-left: -20px;\n margin-top: 4px \\9;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n position: relative;\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n vertical-align: middle;\n font-weight: normal;\n cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px;\n}\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\ninput[type=\"radio\"].disabled,\ninput[type=\"checkbox\"].disabled,\nfieldset[disabled] input[type=\"radio\"],\nfieldset[disabled] input[type=\"checkbox\"] {\n cursor: not-allowed;\n}\n.radio-inline.disabled,\n.checkbox-inline.disabled,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox-inline {\n cursor: not-allowed;\n}\n.radio.disabled label,\n.checkbox.disabled label,\nfieldset[disabled] .radio label,\nfieldset[disabled] .checkbox label {\n cursor: not-allowed;\n}\n.form-control-static {\n padding-top: 7px;\n padding-bottom: 7px;\n margin-bottom: 0;\n min-height: 34px;\n}\n.form-control-static.input-lg,\n.form-control-static.input-sm {\n padding-left: 0;\n padding-right: 0;\n}\n.input-sm {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-sm {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-sm,\nselect[multiple].input-sm {\n height: auto;\n}\n.form-group-sm .form-control {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.form-group-sm select.form-control {\n height: 30px;\n line-height: 30px;\n}\n.form-group-sm textarea.form-control,\n.form-group-sm select[multiple].form-control {\n height: auto;\n}\n.form-group-sm .form-control-static {\n height: 30px;\n min-height: 32px;\n padding: 6px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.input-lg {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-lg {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-lg,\nselect[multiple].input-lg {\n height: auto;\n}\n.form-group-lg .form-control {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.form-group-lg select.form-control {\n height: 46px;\n line-height: 46px;\n}\n.form-group-lg textarea.form-control,\n.form-group-lg select[multiple].form-control {\n height: auto;\n}\n.form-group-lg .form-control-static {\n height: 46px;\n min-height: 38px;\n padding: 11px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n}\n.has-feedback {\n position: relative;\n}\n.has-feedback .form-control {\n padding-right: 42.5px;\n}\n.form-control-feedback {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n display: block;\n width: 34px;\n height: 34px;\n line-height: 34px;\n text-align: center;\n pointer-events: none;\n}\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback,\n.form-group-lg .form-control + .form-control-feedback {\n width: 46px;\n height: 46px;\n line-height: 46px;\n}\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback,\n.form-group-sm .form-control + .form-control-feedback {\n width: 30px;\n height: 30px;\n line-height: 30px;\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline,\n.has-success.radio label,\n.has-success.checkbox label,\n.has-success.radio-inline label,\n.has-success.checkbox-inline label {\n color: #3c763d;\n}\n.has-success .form-control {\n border-color: #3c763d;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-success .form-control:focus {\n border-color: #2b542c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n}\n.has-success .input-group-addon {\n color: #3c763d;\n border-color: #3c763d;\n background-color: #dff0d8;\n}\n.has-success .form-control-feedback {\n color: #3c763d;\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline,\n.has-warning.radio label,\n.has-warning.checkbox label,\n.has-warning.radio-inline label,\n.has-warning.checkbox-inline label {\n color: #8a6d3b;\n}\n.has-warning .form-control {\n border-color: #8a6d3b;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-warning .form-control:focus {\n border-color: #66512c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n}\n.has-warning .input-group-addon {\n color: #8a6d3b;\n border-color: #8a6d3b;\n background-color: #fcf8e3;\n}\n.has-warning .form-control-feedback {\n color: #8a6d3b;\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline,\n.has-error.radio label,\n.has-error.checkbox label,\n.has-error.radio-inline label,\n.has-error.checkbox-inline label {\n color: #a94442;\n}\n.has-error .form-control {\n border-color: #a94442;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-error .form-control:focus {\n border-color: #843534;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n}\n.has-error .input-group-addon {\n color: #a94442;\n border-color: #a94442;\n background-color: #f2dede;\n}\n.has-error .form-control-feedback {\n color: #a94442;\n}\n.has-feedback label ~ .form-control-feedback {\n top: 25px;\n}\n.has-feedback label.sr-only ~ .form-control-feedback {\n top: 0;\n}\n.help-block {\n display: block;\n margin-top: 5px;\n margin-bottom: 10px;\n color: #737373;\n}\n@media (min-width: 768px) {\n .form-inline .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-static {\n display: inline-block;\n }\n .form-inline .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .form-inline .input-group .input-group-addon,\n .form-inline .input-group .input-group-btn,\n .form-inline .input-group .form-control {\n width: auto;\n }\n .form-inline .input-group > .form-control {\n width: 100%;\n }\n .form-inline .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio,\n .form-inline .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio label,\n .form-inline .checkbox label {\n padding-left: 0;\n }\n .form-inline .radio input[type=\"radio\"],\n .form-inline .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .form-inline .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n margin-top: 0;\n margin-bottom: 0;\n padding-top: 7px;\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox {\n min-height: 27px;\n}\n.form-horizontal .form-group {\n margin-left: -15px;\n margin-right: -15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .control-label {\n text-align: right;\n margin-bottom: 0;\n padding-top: 7px;\n }\n}\n.form-horizontal .has-feedback .form-control-feedback {\n right: 15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-lg .control-label {\n padding-top: 11px;\n font-size: 18px;\n }\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-sm .control-label {\n padding-top: 6px;\n font-size: 12px;\n }\n}\n.btn {\n display: inline-block;\n margin-bottom: 0;\n font-weight: normal;\n text-align: center;\n vertical-align: middle;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none;\n border: 1px solid transparent;\n white-space: nowrap;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n border-radius: 4px;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus,\n.btn.focus,\n.btn:active.focus,\n.btn.active.focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus,\n.btn.focus {\n color: #333;\n text-decoration: none;\n}\n.btn:active,\n.btn.active {\n outline: 0;\n background-image: none;\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n cursor: not-allowed;\n opacity: 0.65;\n filter: alpha(opacity=65);\n -webkit-box-shadow: none;\n box-shadow: none;\n}\na.btn.disabled,\nfieldset[disabled] a.btn {\n pointer-events: none;\n}\n.btn-default {\n color: #333;\n background-color: #fff;\n border-color: #ccc;\n}\n.btn-default:focus,\n.btn-default.focus {\n color: #333;\n background-color: #e6e6e6;\n border-color: #8c8c8c;\n}\n.btn-default:hover {\n color: #333;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n color: #333;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n.btn-default:active:hover,\n.btn-default.active:hover,\n.open > .dropdown-toggle.btn-default:hover,\n.btn-default:active:focus,\n.btn-default.active:focus,\n.open > .dropdown-toggle.btn-default:focus,\n.btn-default:active.focus,\n.btn-default.active.focus,\n.open > .dropdown-toggle.btn-default.focus {\n color: #333;\n background-color: #d4d4d4;\n border-color: #8c8c8c;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n background-image: none;\n}\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus {\n background-color: #fff;\n border-color: #ccc;\n}\n.btn-default .badge {\n color: #fff;\n background-color: #333;\n}\n.btn-primary {\n color: #fff;\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary:focus,\n.btn-primary.focus {\n color: #fff;\n background-color: #286090;\n border-color: #122b40;\n}\n.btn-primary:hover {\n color: #fff;\n background-color: #286090;\n border-color: #204d74;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n color: #fff;\n background-color: #286090;\n border-color: #204d74;\n}\n.btn-primary:active:hover,\n.btn-primary.active:hover,\n.open > .dropdown-toggle.btn-primary:hover,\n.btn-primary:active:focus,\n.btn-primary.active:focus,\n.open > .dropdown-toggle.btn-primary:focus,\n.btn-primary:active.focus,\n.btn-primary.active.focus,\n.open > .dropdown-toggle.btn-primary.focus {\n color: #fff;\n background-color: #204d74;\n border-color: #122b40;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n background-image: none;\n}\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus {\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.btn-success {\n color: #fff;\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success:focus,\n.btn-success.focus {\n color: #fff;\n background-color: #449d44;\n border-color: #255625;\n}\n.btn-success:hover {\n color: #fff;\n background-color: #449d44;\n border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n color: #fff;\n background-color: #449d44;\n border-color: #398439;\n}\n.btn-success:active:hover,\n.btn-success.active:hover,\n.open > .dropdown-toggle.btn-success:hover,\n.btn-success:active:focus,\n.btn-success.active:focus,\n.open > .dropdown-toggle.btn-success:focus,\n.btn-success:active.focus,\n.btn-success.active.focus,\n.open > .dropdown-toggle.btn-success.focus {\n color: #fff;\n background-color: #398439;\n border-color: #255625;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n background-image: none;\n}\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus {\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success .badge {\n color: #5cb85c;\n background-color: #fff;\n}\n.btn-info {\n color: #fff;\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info:focus,\n.btn-info.focus {\n color: #fff;\n background-color: #31b0d5;\n border-color: #1b6d85;\n}\n.btn-info:hover {\n color: #fff;\n background-color: #31b0d5;\n border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n color: #fff;\n background-color: #31b0d5;\n border-color: #269abc;\n}\n.btn-info:active:hover,\n.btn-info.active:hover,\n.open > .dropdown-toggle.btn-info:hover,\n.btn-info:active:focus,\n.btn-info.active:focus,\n.open > .dropdown-toggle.btn-info:focus,\n.btn-info:active.focus,\n.btn-info.active.focus,\n.open > .dropdown-toggle.btn-info.focus {\n color: #fff;\n background-color: #269abc;\n border-color: #1b6d85;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n background-image: none;\n}\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus {\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info .badge {\n color: #5bc0de;\n background-color: #fff;\n}\n.btn-warning {\n color: #fff;\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning:focus,\n.btn-warning.focus {\n color: #fff;\n background-color: #ec971f;\n border-color: #985f0d;\n}\n.btn-warning:hover {\n color: #fff;\n background-color: #ec971f;\n border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n color: #fff;\n background-color: #ec971f;\n border-color: #d58512;\n}\n.btn-warning:active:hover,\n.btn-warning.active:hover,\n.open > .dropdown-toggle.btn-warning:hover,\n.btn-warning:active:focus,\n.btn-warning.active:focus,\n.open > .dropdown-toggle.btn-warning:focus,\n.btn-warning:active.focus,\n.btn-warning.active.focus,\n.open > .dropdown-toggle.btn-warning.focus {\n color: #fff;\n background-color: #d58512;\n border-color: #985f0d;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n background-image: none;\n}\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus {\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning .badge {\n color: #f0ad4e;\n background-color: #fff;\n}\n.btn-danger {\n color: #fff;\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger:focus,\n.btn-danger.focus {\n color: #fff;\n background-color: #c9302c;\n border-color: #761c19;\n}\n.btn-danger:hover {\n color: #fff;\n background-color: #c9302c;\n border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n color: #fff;\n background-color: #c9302c;\n border-color: #ac2925;\n}\n.btn-danger:active:hover,\n.btn-danger.active:hover,\n.open > .dropdown-toggle.btn-danger:hover,\n.btn-danger:active:focus,\n.btn-danger.active:focus,\n.open > .dropdown-toggle.btn-danger:focus,\n.btn-danger:active.focus,\n.btn-danger.active.focus,\n.open > .dropdown-toggle.btn-danger.focus {\n color: #fff;\n background-color: #ac2925;\n border-color: #761c19;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n background-image: none;\n}\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus {\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger .badge {\n color: #d9534f;\n background-color: #fff;\n}\n.btn-link {\n color: #337ab7;\n font-weight: normal;\n border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link.active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n background-color: transparent;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n color: #23527c;\n text-decoration: underline;\n background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n color: #777777;\n text-decoration: none;\n}\n.btn-lg,\n.btn-group-lg > .btn {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.btn-sm,\n.btn-group-sm > .btn {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-xs,\n.btn-group-xs > .btn {\n padding: 1px 5px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-block {\n display: block;\n width: 100%;\n}\n.btn-block + .btn-block {\n margin-top: 5px;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n width: 100%;\n}\n.fade {\n opacity: 0;\n -webkit-transition: opacity 0.15s linear;\n -o-transition: opacity 0.15s linear;\n transition: opacity 0.15s linear;\n}\n.fade.in {\n opacity: 1;\n}\n.collapse {\n display: none;\n}\n.collapse.in {\n display: block;\n}\ntr.collapse.in {\n display: table-row;\n}\ntbody.collapse.in {\n display: table-row-group;\n}\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n -webkit-transition-property: height, visibility;\n transition-property: height, visibility;\n -webkit-transition-duration: 0.35s;\n transition-duration: 0.35s;\n -webkit-transition-timing-function: ease;\n transition-timing-function: ease;\n}\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: 4px dashed;\n border-top: 4px solid \\9;\n border-right: 4px solid transparent;\n border-left: 4px solid transparent;\n}\n.dropup,\n.dropdown {\n position: relative;\n}\n.dropdown-toggle:focus {\n outline: 0;\n}\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0;\n list-style: none;\n font-size: 14px;\n text-align: left;\n background-color: #fff;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 4px;\n -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n background-clip: padding-box;\n}\n.dropdown-menu.pull-right {\n right: 0;\n left: auto;\n}\n.dropdown-menu .divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: 1.42857143;\n color: #333333;\n white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n text-decoration: none;\n color: #262626;\n background-color: #f5f5f5;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n color: #fff;\n text-decoration: none;\n outline: 0;\n background-color: #337ab7;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n color: #777777;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n text-decoration: none;\n background-color: transparent;\n background-image: none;\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n cursor: not-allowed;\n}\n.open > .dropdown-menu {\n display: block;\n}\n.open > a {\n outline: 0;\n}\n.dropdown-menu-right {\n left: auto;\n right: 0;\n}\n.dropdown-menu-left {\n left: 0;\n right: auto;\n}\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: 12px;\n line-height: 1.42857143;\n color: #777777;\n white-space: nowrap;\n}\n.dropdown-backdrop {\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n z-index: 990;\n}\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n border-top: 0;\n border-bottom: 4px dashed;\n border-bottom: 4px solid \\9;\n content: \"\";\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n}\n@media (min-width: 768px) {\n .navbar-right .dropdown-menu {\n left: auto;\n right: 0;\n }\n .navbar-right .dropdown-menu-left {\n left: 0;\n right: auto;\n }\n}\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n z-index: 2;\n}\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group {\n margin-left: -1px;\n}\n.btn-toolbar {\n margin-left: -5px;\n}\n.btn-toolbar .btn,\n.btn-toolbar .btn-group,\n.btn-toolbar .input-group {\n float: left;\n}\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n.btn-group > .btn:first-child {\n margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n.btn-group > .btn + .dropdown-toggle {\n padding-left: 8px;\n padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-left: 12px;\n padding-right: 12px;\n}\n.btn-group.open .dropdown-toggle {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-group.open .dropdown-toggle.btn-link {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn .caret {\n margin-left: 0;\n}\n.btn-lg .caret {\n border-width: 5px 5px 0;\n border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group,\n.btn-group-vertical > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n}\n.btn-group-vertical > .btn-group > .btn {\n float: none;\n}\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n}\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n}\n.btn-group-justified > .btn,\n.btn-group-justified > .btn-group {\n float: none;\n display: table-cell;\n width: 1%;\n}\n.btn-group-justified > .btn-group .btn {\n width: 100%;\n}\n.btn-group-justified > .btn-group .dropdown-menu {\n left: auto;\n}\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n.input-group {\n position: relative;\n display: table;\n border-collapse: separate;\n}\n.input-group[class*=\"col-\"] {\n float: none;\n padding-left: 0;\n padding-right: 0;\n}\n.input-group .form-control {\n position: relative;\n z-index: 2;\n float: left;\n width: 100%;\n margin-bottom: 0;\n}\n.input-group .form-control:focus {\n z-index: 3;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle;\n}\n.input-group-addon {\n padding: 6px 12px;\n font-size: 14px;\n font-weight: normal;\n line-height: 1;\n color: #555555;\n text-align: center;\n background-color: #eeeeee;\n border: 1px solid #ccc;\n border-radius: 4px;\n}\n.input-group-addon.input-sm {\n padding: 5px 10px;\n font-size: 12px;\n border-radius: 3px;\n}\n.input-group-addon.input-lg {\n padding: 10px 16px;\n font-size: 18px;\n border-radius: 6px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n.input-group-btn {\n position: relative;\n font-size: 0;\n white-space: nowrap;\n}\n.input-group-btn > .btn {\n position: relative;\n}\n.input-group-btn > .btn + .btn {\n margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n z-index: 2;\n margin-left: -1px;\n}\n.nav {\n margin-bottom: 0;\n padding-left: 0;\n list-style: none;\n}\n.nav > li {\n position: relative;\n display: block;\n}\n.nav > li > a {\n position: relative;\n display: block;\n padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n text-decoration: none;\n background-color: #eeeeee;\n}\n.nav > li.disabled > a {\n color: #777777;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n color: #777777;\n text-decoration: none;\n background-color: transparent;\n cursor: not-allowed;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n background-color: #eeeeee;\n border-color: #337ab7;\n}\n.nav .nav-divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.nav > li > a > img {\n max-width: none;\n}\n.nav-tabs {\n border-bottom: 1px solid #ddd;\n}\n.nav-tabs > li {\n float: left;\n margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n margin-right: 2px;\n line-height: 1.42857143;\n border: 1px solid transparent;\n border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n border-color: #eeeeee #eeeeee #ddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n color: #555555;\n background-color: #fff;\n border: 1px solid #ddd;\n border-bottom-color: transparent;\n cursor: default;\n}\n.nav-tabs.nav-justified {\n width: 100%;\n border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n float: none;\n}\n.nav-tabs.nav-justified > li > a {\n text-align: center;\n margin-bottom: 5px;\n}\n.nav-tabs.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-tabs.nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs.nav-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs.nav-justified > .active > a,\n.nav-tabs.nav-justified > .active > a:hover,\n.nav-tabs.nav-justified > .active > a:focus {\n border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li > a {\n border-bottom: 1px solid #ddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs.nav-justified > .active > a,\n .nav-tabs.nav-justified > .active > a:hover,\n .nav-tabs.nav-justified > .active > a:focus {\n border-bottom-color: #fff;\n }\n}\n.nav-pills > li {\n float: left;\n}\n.nav-pills > li > a {\n border-radius: 4px;\n}\n.nav-pills > li + li {\n margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n color: #fff;\n background-color: #337ab7;\n}\n.nav-stacked > li {\n float: none;\n}\n.nav-stacked > li + li {\n margin-top: 2px;\n margin-left: 0;\n}\n.nav-justified {\n width: 100%;\n}\n.nav-justified > li {\n float: none;\n}\n.nav-justified > li > a {\n text-align: center;\n margin-bottom: 5px;\n}\n.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs-justified {\n border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs-justified > .active > a,\n.nav-tabs-justified > .active > a:hover,\n.nav-tabs-justified > .active > a:focus {\n border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n .nav-tabs-justified > li > a {\n border-bottom: 1px solid #ddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs-justified > .active > a,\n .nav-tabs-justified > .active > a:hover,\n .nav-tabs-justified > .active > a:focus {\n border-bottom-color: #fff;\n }\n}\n.tab-content > .tab-pane {\n display: none;\n}\n.tab-content > .active {\n display: block;\n}\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.navbar {\n position: relative;\n min-height: 50px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n}\n@media (min-width: 768px) {\n .navbar {\n border-radius: 4px;\n }\n}\n@media (min-width: 768px) {\n .navbar-header {\n float: left;\n }\n}\n.navbar-collapse {\n overflow-x: visible;\n padding-right: 15px;\n padding-left: 15px;\n border-top: 1px solid transparent;\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n -webkit-overflow-scrolling: touch;\n}\n.navbar-collapse.in {\n overflow-y: auto;\n}\n@media (min-width: 768px) {\n .navbar-collapse {\n width: auto;\n border-top: 0;\n box-shadow: none;\n }\n .navbar-collapse.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0;\n overflow: visible !important;\n }\n .navbar-collapse.in {\n overflow-y: visible;\n }\n .navbar-fixed-top .navbar-collapse,\n .navbar-static-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n padding-left: 0;\n padding-right: 0;\n }\n}\n.navbar-fixed-top .navbar-collapse,\n.navbar-fixed-bottom .navbar-collapse {\n max-height: 340px;\n}\n@media (max-device-width: 480px) and (orientation: landscape) {\n .navbar-fixed-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n max-height: 200px;\n }\n}\n.container > .navbar-header,\n.container-fluid > .navbar-header,\n.container > .navbar-collapse,\n.container-fluid > .navbar-collapse {\n margin-right: -15px;\n margin-left: -15px;\n}\n@media (min-width: 768px) {\n .container > .navbar-header,\n .container-fluid > .navbar-header,\n .container > .navbar-collapse,\n .container-fluid > .navbar-collapse {\n margin-right: 0;\n margin-left: 0;\n }\n}\n.navbar-static-top {\n z-index: 1000;\n border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n .navbar-static-top {\n border-radius: 0;\n }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n@media (min-width: 768px) {\n .navbar-fixed-top,\n .navbar-fixed-bottom {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0;\n border-width: 1px 0 0;\n}\n.navbar-brand {\n float: left;\n padding: 15px 15px;\n font-size: 18px;\n line-height: 20px;\n height: 50px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n text-decoration: none;\n}\n.navbar-brand > img {\n display: block;\n}\n@media (min-width: 768px) {\n .navbar > .container .navbar-brand,\n .navbar > .container-fluid .navbar-brand {\n margin-left: -15px;\n }\n}\n.navbar-toggle {\n position: relative;\n float: right;\n margin-right: 15px;\n padding: 9px 10px;\n margin-top: 8px;\n margin-bottom: 8px;\n background-color: transparent;\n background-image: none;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.navbar-toggle:focus {\n outline: 0;\n}\n.navbar-toggle .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n margin-top: 4px;\n}\n@media (min-width: 768px) {\n .navbar-toggle {\n display: none;\n }\n}\n.navbar-nav {\n margin: 7.5px -15px;\n}\n.navbar-nav > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: 20px;\n}\n@media (max-width: 767px) {\n .navbar-nav .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n box-shadow: none;\n }\n .navbar-nav .open .dropdown-menu > li > a,\n .navbar-nav .open .dropdown-menu .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n .navbar-nav .open .dropdown-menu > li > a {\n line-height: 20px;\n }\n .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-nav .open .dropdown-menu > li > a:focus {\n background-image: none;\n }\n}\n@media (min-width: 768px) {\n .navbar-nav {\n float: left;\n margin: 0;\n }\n .navbar-nav > li {\n float: left;\n }\n .navbar-nav > li > a {\n padding-top: 15px;\n padding-bottom: 15px;\n }\n}\n.navbar-form {\n margin-left: -15px;\n margin-right: -15px;\n padding: 10px 15px;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n margin-top: 8px;\n margin-bottom: 8px;\n}\n@media (min-width: 768px) {\n .navbar-form .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .navbar-form .form-control-static {\n display: inline-block;\n }\n .navbar-form .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .navbar-form .input-group .input-group-addon,\n .navbar-form .input-group .input-group-btn,\n .navbar-form .input-group .form-control {\n width: auto;\n }\n .navbar-form .input-group > .form-control {\n width: 100%;\n }\n .navbar-form .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio,\n .navbar-form .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio label,\n .navbar-form .checkbox label {\n padding-left: 0;\n }\n .navbar-form .radio input[type=\"radio\"],\n .navbar-form .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .navbar-form .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n@media (max-width: 767px) {\n .navbar-form .form-group {\n margin-bottom: 5px;\n }\n .navbar-form .form-group:last-child {\n margin-bottom: 0;\n }\n}\n@media (min-width: 768px) {\n .navbar-form {\n width: auto;\n border: 0;\n margin-left: 0;\n margin-right: 0;\n padding-top: 0;\n padding-bottom: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n}\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.navbar-btn {\n margin-top: 8px;\n margin-bottom: 8px;\n}\n.navbar-btn.btn-sm {\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.navbar-btn.btn-xs {\n margin-top: 14px;\n margin-bottom: 14px;\n}\n.navbar-text {\n margin-top: 15px;\n margin-bottom: 15px;\n}\n@media (min-width: 768px) {\n .navbar-text {\n float: left;\n margin-left: 15px;\n margin-right: 15px;\n }\n}\n@media (min-width: 768px) {\n .navbar-left {\n float: left !important;\n }\n .navbar-right {\n float: right !important;\n margin-right: -15px;\n }\n .navbar-right ~ .navbar-right {\n margin-right: 0;\n }\n}\n.navbar-default {\n background-color: #f8f8f8;\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-brand {\n color: #777;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n color: #5e5e5e;\n background-color: transparent;\n}\n.navbar-default .navbar-text {\n color: #777;\n}\n.navbar-default .navbar-nav > li > a {\n color: #777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n color: #333;\n background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n color: #555;\n background-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n color: #ccc;\n background-color: transparent;\n}\n.navbar-default .navbar-toggle {\n border-color: #ddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n background-color: #ddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n background-color: #888;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n background-color: #e7e7e7;\n color: #555;\n}\n@media (max-width: 767px) {\n .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n color: #777;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #333;\n background-color: transparent;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #555;\n background-color: #e7e7e7;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #ccc;\n background-color: transparent;\n }\n}\n.navbar-default .navbar-link {\n color: #777;\n}\n.navbar-default .navbar-link:hover {\n color: #333;\n}\n.navbar-default .btn-link {\n color: #777;\n}\n.navbar-default .btn-link:hover,\n.navbar-default .btn-link:focus {\n color: #333;\n}\n.navbar-default .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-default .btn-link:hover,\n.navbar-default .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-default .btn-link:focus {\n color: #ccc;\n}\n.navbar-inverse {\n background-color: #222;\n border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n color: #fff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n color: #fff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n color: #fff;\n background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n}\n.navbar-inverse .navbar-toggle {\n border-color: #333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n background-color: #333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n background-color: #fff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n border-color: #101010;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n background-color: #080808;\n color: #fff;\n}\n@media (max-width: 767px) {\n .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n border-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n color: #9d9d9d;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #fff;\n background-color: transparent;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #fff;\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n }\n}\n.navbar-inverse .navbar-link {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-link:hover {\n color: #fff;\n}\n.navbar-inverse .btn-link {\n color: #9d9d9d;\n}\n.navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link:focus {\n color: #fff;\n}\n.navbar-inverse .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-inverse .btn-link:focus {\n color: #444;\n}\n.breadcrumb {\n padding: 8px 15px;\n margin-bottom: 20px;\n list-style: none;\n background-color: #f5f5f5;\n border-radius: 4px;\n}\n.breadcrumb > li {\n display: inline-block;\n}\n.breadcrumb > li + li:before {\n content: \"/\\00a0\";\n padding: 0 5px;\n color: #ccc;\n}\n.breadcrumb > .active {\n color: #777777;\n}\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: 20px 0;\n border-radius: 4px;\n}\n.pagination > li {\n display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n position: relative;\n float: left;\n padding: 6px 12px;\n line-height: 1.42857143;\n text-decoration: none;\n color: #337ab7;\n background-color: #fff;\n border: 1px solid #ddd;\n margin-left: -1px;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n margin-left: 0;\n border-bottom-left-radius: 4px;\n border-top-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n border-bottom-right-radius: 4px;\n border-top-right-radius: 4px;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n z-index: 2;\n color: #23527c;\n background-color: #eeeeee;\n border-color: #ddd;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n z-index: 3;\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n cursor: default;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > span:hover,\n.pagination > .disabled > span:focus,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n color: #777777;\n background-color: #fff;\n border-color: #ddd;\n cursor: not-allowed;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n border-bottom-left-radius: 6px;\n border-top-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n border-bottom-right-radius: 6px;\n border-top-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n border-bottom-left-radius: 3px;\n border-top-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n border-bottom-right-radius: 3px;\n border-top-right-radius: 3px;\n}\n.pager {\n padding-left: 0;\n margin: 20px 0;\n list-style: none;\n text-align: center;\n}\n.pager li {\n display: inline;\n}\n.pager li > a,\n.pager li > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n text-decoration: none;\n background-color: #eeeeee;\n}\n.pager .next > a,\n.pager .next > span {\n float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n color: #777777;\n background-color: #fff;\n cursor: not-allowed;\n}\n.label {\n display: inline;\n padding: .2em .6em .3em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: .25em;\n}\na.label:hover,\na.label:focus {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n}\n.label:empty {\n display: none;\n}\n.btn .label {\n position: relative;\n top: -1px;\n}\n.label-default {\n background-color: #777777;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n background-color: #5e5e5e;\n}\n.label-primary {\n background-color: #337ab7;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n background-color: #286090;\n}\n.label-success {\n background-color: #5cb85c;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n background-color: #449d44;\n}\n.label-info {\n background-color: #5bc0de;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n background-color: #31b0d5;\n}\n.label-warning {\n background-color: #f0ad4e;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n background-color: #ec971f;\n}\n.label-danger {\n background-color: #d9534f;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n background-color: #c9302c;\n}\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: 12px;\n font-weight: bold;\n color: #fff;\n line-height: 1;\n vertical-align: middle;\n white-space: nowrap;\n text-align: center;\n background-color: #777777;\n border-radius: 10px;\n}\n.badge:empty {\n display: none;\n}\n.btn .badge {\n position: relative;\n top: -1px;\n}\n.btn-xs .badge,\n.btn-group-xs > .btn .badge {\n top: 0;\n padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n}\n.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.list-group-item > .badge {\n float: right;\n}\n.list-group-item > .badge + .badge {\n margin-right: 5px;\n}\n.nav-pills > li > a > .badge {\n margin-left: 3px;\n}\n.jumbotron {\n padding-top: 30px;\n padding-bottom: 30px;\n margin-bottom: 30px;\n color: inherit;\n background-color: #eeeeee;\n}\n.jumbotron h1,\n.jumbotron .h1 {\n color: inherit;\n}\n.jumbotron p {\n margin-bottom: 15px;\n font-size: 21px;\n font-weight: 200;\n}\n.jumbotron > hr {\n border-top-color: #d5d5d5;\n}\n.container .jumbotron,\n.container-fluid .jumbotron {\n border-radius: 6px;\n padding-left: 15px;\n padding-right: 15px;\n}\n.jumbotron .container {\n max-width: 100%;\n}\n@media screen and (min-width: 768px) {\n .jumbotron {\n padding-top: 48px;\n padding-bottom: 48px;\n }\n .container .jumbotron,\n .container-fluid .jumbotron {\n padding-left: 60px;\n padding-right: 60px;\n }\n .jumbotron h1,\n .jumbotron .h1 {\n font-size: 63px;\n }\n}\n.thumbnail {\n display: block;\n padding: 4px;\n margin-bottom: 20px;\n line-height: 1.42857143;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n -webkit-transition: border 0.2s ease-in-out;\n -o-transition: border 0.2s ease-in-out;\n transition: border 0.2s ease-in-out;\n}\n.thumbnail > img,\n.thumbnail a > img {\n margin-left: auto;\n margin-right: auto;\n}\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n border-color: #337ab7;\n}\n.thumbnail .caption {\n padding: 9px;\n color: #333333;\n}\n.alert {\n padding: 15px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.alert h4 {\n margin-top: 0;\n color: inherit;\n}\n.alert .alert-link {\n font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n margin-bottom: 0;\n}\n.alert > p + p {\n margin-top: 5px;\n}\n.alert-dismissable,\n.alert-dismissible {\n padding-right: 35px;\n}\n.alert-dismissable .close,\n.alert-dismissible .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n}\n.alert-success {\n background-color: #dff0d8;\n border-color: #d6e9c6;\n color: #3c763d;\n}\n.alert-success hr {\n border-top-color: #c9e2b3;\n}\n.alert-success .alert-link {\n color: #2b542c;\n}\n.alert-info {\n background-color: #d9edf7;\n border-color: #bce8f1;\n color: #31708f;\n}\n.alert-info hr {\n border-top-color: #a6e1ec;\n}\n.alert-info .alert-link {\n color: #245269;\n}\n.alert-warning {\n background-color: #fcf8e3;\n border-color: #faebcc;\n color: #8a6d3b;\n}\n.alert-warning hr {\n border-top-color: #f7e1b5;\n}\n.alert-warning .alert-link {\n color: #66512c;\n}\n.alert-danger {\n background-color: #f2dede;\n border-color: #ebccd1;\n color: #a94442;\n}\n.alert-danger hr {\n border-top-color: #e4b9c0;\n}\n.alert-danger .alert-link {\n color: #843534;\n}\n@-webkit-keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n@keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n.progress {\n overflow: hidden;\n height: 20px;\n margin-bottom: 20px;\n background-color: #f5f5f5;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n.progress-bar {\n float: left;\n width: 0%;\n height: 100%;\n font-size: 12px;\n line-height: 20px;\n color: #fff;\n text-align: center;\n background-color: #337ab7;\n -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n -webkit-transition: width 0.6s ease;\n -o-transition: width 0.6s ease;\n transition: width 0.6s ease;\n}\n.progress-striped .progress-bar,\n.progress-bar-striped {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-size: 40px 40px;\n}\n.progress.active .progress-bar,\n.progress-bar.active {\n -webkit-animation: progress-bar-stripes 2s linear infinite;\n -o-animation: progress-bar-stripes 2s linear infinite;\n animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n background-color: #5cb85c;\n}\n.progress-striped .progress-bar-success {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-info {\n background-color: #5bc0de;\n}\n.progress-striped .progress-bar-info {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-warning {\n background-color: #f0ad4e;\n}\n.progress-striped .progress-bar-warning {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-danger {\n background-color: #d9534f;\n}\n.progress-striped .progress-bar-danger {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.media {\n margin-top: 15px;\n}\n.media:first-child {\n margin-top: 0;\n}\n.media,\n.media-body {\n zoom: 1;\n overflow: hidden;\n}\n.media-body {\n width: 10000px;\n}\n.media-object {\n display: block;\n}\n.media-object.img-thumbnail {\n max-width: none;\n}\n.media-right,\n.media > .pull-right {\n padding-left: 10px;\n}\n.media-left,\n.media > .pull-left {\n padding-right: 10px;\n}\n.media-left,\n.media-right,\n.media-body {\n display: table-cell;\n vertical-align: top;\n}\n.media-middle {\n vertical-align: middle;\n}\n.media-bottom {\n vertical-align: bottom;\n}\n.media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n.list-group {\n margin-bottom: 20px;\n padding-left: 0;\n}\n.list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n margin-bottom: -1px;\n background-color: #fff;\n border: 1px solid #ddd;\n}\n.list-group-item:first-child {\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n}\n.list-group-item:last-child {\n margin-bottom: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px;\n}\na.list-group-item,\nbutton.list-group-item {\n color: #555;\n}\na.list-group-item .list-group-item-heading,\nbutton.list-group-item .list-group-item-heading {\n color: #333;\n}\na.list-group-item:hover,\nbutton.list-group-item:hover,\na.list-group-item:focus,\nbutton.list-group-item:focus {\n text-decoration: none;\n color: #555;\n background-color: #f5f5f5;\n}\nbutton.list-group-item {\n width: 100%;\n text-align: left;\n}\n.list-group-item.disabled,\n.list-group-item.disabled:hover,\n.list-group-item.disabled:focus {\n background-color: #eeeeee;\n color: #777777;\n cursor: not-allowed;\n}\n.list-group-item.disabled .list-group-item-heading,\n.list-group-item.disabled:hover .list-group-item-heading,\n.list-group-item.disabled:focus .list-group-item-heading {\n color: inherit;\n}\n.list-group-item.disabled .list-group-item-text,\n.list-group-item.disabled:hover .list-group-item-text,\n.list-group-item.disabled:focus .list-group-item-text {\n color: #777777;\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n z-index: 2;\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active:hover .list-group-item-heading,\n.list-group-item.active:focus .list-group-item-heading,\n.list-group-item.active .list-group-item-heading > small,\n.list-group-item.active:hover .list-group-item-heading > small,\n.list-group-item.active:focus .list-group-item-heading > small,\n.list-group-item.active .list-group-item-heading > .small,\n.list-group-item.active:hover .list-group-item-heading > .small,\n.list-group-item.active:focus .list-group-item-heading > .small {\n color: inherit;\n}\n.list-group-item.active .list-group-item-text,\n.list-group-item.active:hover .list-group-item-text,\n.list-group-item.active:focus .list-group-item-text {\n color: #c7ddef;\n}\n.list-group-item-success {\n color: #3c763d;\n background-color: #dff0d8;\n}\na.list-group-item-success,\nbutton.list-group-item-success {\n color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading,\nbutton.list-group-item-success .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-success:hover,\nbutton.list-group-item-success:hover,\na.list-group-item-success:focus,\nbutton.list-group-item-success:focus {\n color: #3c763d;\n background-color: #d0e9c6;\n}\na.list-group-item-success.active,\nbutton.list-group-item-success.active,\na.list-group-item-success.active:hover,\nbutton.list-group-item-success.active:hover,\na.list-group-item-success.active:focus,\nbutton.list-group-item-success.active:focus {\n color: #fff;\n background-color: #3c763d;\n border-color: #3c763d;\n}\n.list-group-item-info {\n color: #31708f;\n background-color: #d9edf7;\n}\na.list-group-item-info,\nbutton.list-group-item-info {\n color: #31708f;\n}\na.list-group-item-info .list-group-item-heading,\nbutton.list-group-item-info .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-info:hover,\nbutton.list-group-item-info:hover,\na.list-group-item-info:focus,\nbutton.list-group-item-info:focus {\n color: #31708f;\n background-color: #c4e3f3;\n}\na.list-group-item-info.active,\nbutton.list-group-item-info.active,\na.list-group-item-info.active:hover,\nbutton.list-group-item-info.active:hover,\na.list-group-item-info.active:focus,\nbutton.list-group-item-info.active:focus {\n color: #fff;\n background-color: #31708f;\n border-color: #31708f;\n}\n.list-group-item-warning {\n color: #8a6d3b;\n background-color: #fcf8e3;\n}\na.list-group-item-warning,\nbutton.list-group-item-warning {\n color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading,\nbutton.list-group-item-warning .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-warning:hover,\nbutton.list-group-item-warning:hover,\na.list-group-item-warning:focus,\nbutton.list-group-item-warning:focus {\n color: #8a6d3b;\n background-color: #faf2cc;\n}\na.list-group-item-warning.active,\nbutton.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\nbutton.list-group-item-warning.active:hover,\na.list-group-item-warning.active:focus,\nbutton.list-group-item-warning.active:focus {\n color: #fff;\n background-color: #8a6d3b;\n border-color: #8a6d3b;\n}\n.list-group-item-danger {\n color: #a94442;\n background-color: #f2dede;\n}\na.list-group-item-danger,\nbutton.list-group-item-danger {\n color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading,\nbutton.list-group-item-danger .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-danger:hover,\nbutton.list-group-item-danger:hover,\na.list-group-item-danger:focus,\nbutton.list-group-item-danger:focus {\n color: #a94442;\n background-color: #ebcccc;\n}\na.list-group-item-danger.active,\nbutton.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\nbutton.list-group-item-danger.active:hover,\na.list-group-item-danger.active:focus,\nbutton.list-group-item-danger.active:focus {\n color: #fff;\n background-color: #a94442;\n border-color: #a94442;\n}\n.list-group-item-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.list-group-item-text {\n margin-bottom: 0;\n line-height: 1.3;\n}\n.panel {\n margin-bottom: 20px;\n background-color: #fff;\n border: 1px solid transparent;\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.panel-body {\n padding: 15px;\n}\n.panel-heading {\n padding: 10px 15px;\n border-bottom: 1px solid transparent;\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n color: inherit;\n}\n.panel-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: 16px;\n color: inherit;\n}\n.panel-title > a,\n.panel-title > small,\n.panel-title > .small,\n.panel-title > small > a,\n.panel-title > .small > a {\n color: inherit;\n}\n.panel-footer {\n padding: 10px 15px;\n background-color: #f5f5f5;\n border-top: 1px solid #ddd;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .list-group,\n.panel > .panel-collapse > .list-group {\n margin-bottom: 0;\n}\n.panel > .list-group .list-group-item,\n.panel > .panel-collapse > .list-group .list-group-item {\n border-width: 1px 0;\n border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child,\n.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n border-top: 0;\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel > .list-group:last-child .list-group-item:last-child,\n.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n border-bottom: 0;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n border-top-width: 0;\n}\n.list-group + .panel-footer {\n border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table,\n.panel > .panel-collapse > .table {\n margin-bottom: 0;\n}\n.panel > .table caption,\n.panel > .table-responsive > .table caption,\n.panel > .panel-collapse > .table caption {\n padding-left: 15px;\n padding-right: 15px;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n border-top-right-radius: 3px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n border-bottom-left-radius: 3px;\n border-bottom-right-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n border-bottom-right-radius: 3px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive,\n.panel > .table + .panel-body,\n.panel > .table-responsive + .panel-body {\n border-top: 1px solid #ddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n border-bottom: 0;\n}\n.panel > .table-responsive {\n border: 0;\n margin-bottom: 0;\n}\n.panel-group {\n margin-bottom: 20px;\n}\n.panel-group .panel {\n margin-bottom: 0;\n border-radius: 4px;\n}\n.panel-group .panel + .panel {\n margin-top: 5px;\n}\n.panel-group .panel-heading {\n border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse > .panel-body,\n.panel-group .panel-heading + .panel-collapse > .list-group {\n border-top: 1px solid #ddd;\n}\n.panel-group .panel-footer {\n border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n border-bottom: 1px solid #ddd;\n}\n.panel-default {\n border-color: #ddd;\n}\n.panel-default > .panel-heading {\n color: #333333;\n background-color: #f5f5f5;\n border-color: #ddd;\n}\n.panel-default > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ddd;\n}\n.panel-default > .panel-heading .badge {\n color: #f5f5f5;\n background-color: #333333;\n}\n.panel-default > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ddd;\n}\n.panel-primary {\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading {\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #337ab7;\n}\n.panel-primary > .panel-heading .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.panel-primary > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #337ab7;\n}\n.panel-success {\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #d6e9c6;\n}\n.panel-success > .panel-heading .badge {\n color: #dff0d8;\n background-color: #3c763d;\n}\n.panel-success > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #d6e9c6;\n}\n.panel-info {\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n color: #31708f;\n background-color: #d9edf7;\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #bce8f1;\n}\n.panel-info > .panel-heading .badge {\n color: #d9edf7;\n background-color: #31708f;\n}\n.panel-info > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #bce8f1;\n}\n.panel-warning {\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #faebcc;\n}\n.panel-warning > .panel-heading .badge {\n color: #fcf8e3;\n background-color: #8a6d3b;\n}\n.panel-warning > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #faebcc;\n}\n.panel-danger {\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ebccd1;\n}\n.panel-danger > .panel-heading .badge {\n color: #f2dede;\n background-color: #a94442;\n}\n.panel-danger > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ebccd1;\n}\n.embed-responsive {\n position: relative;\n display: block;\n height: 0;\n padding: 0;\n overflow: hidden;\n}\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n height: 100%;\n width: 100%;\n border: 0;\n}\n.embed-responsive-16by9 {\n padding-bottom: 56.25%;\n}\n.embed-responsive-4by3 {\n padding-bottom: 75%;\n}\n.well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: #f5f5f5;\n border: 1px solid #e3e3e3;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.well blockquote {\n border-color: #ddd;\n border-color: rgba(0, 0, 0, 0.15);\n}\n.well-lg {\n padding: 24px;\n border-radius: 6px;\n}\n.well-sm {\n padding: 9px;\n border-radius: 3px;\n}\n.close {\n float: right;\n font-size: 21px;\n font-weight: bold;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n opacity: 0.2;\n filter: alpha(opacity=20);\n}\n.close:hover,\n.close:focus {\n color: #000;\n text-decoration: none;\n cursor: pointer;\n opacity: 0.5;\n filter: alpha(opacity=50);\n}\nbutton.close {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n}\n.modal-open {\n overflow: hidden;\n}\n.modal {\n display: none;\n overflow: hidden;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1050;\n -webkit-overflow-scrolling: touch;\n outline: 0;\n}\n.modal.fade .modal-dialog {\n -webkit-transform: translate(0, -25%);\n -ms-transform: translate(0, -25%);\n -o-transform: translate(0, -25%);\n transform: translate(0, -25%);\n -webkit-transition: -webkit-transform 0.3s ease-out;\n -moz-transition: -moz-transform 0.3s ease-out;\n -o-transition: -o-transform 0.3s ease-out;\n transition: transform 0.3s ease-out;\n}\n.modal.in .modal-dialog {\n -webkit-transform: translate(0, 0);\n -ms-transform: translate(0, 0);\n -o-transform: translate(0, 0);\n transform: translate(0, 0);\n}\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n.modal-content {\n position: relative;\n background-color: #fff;\n border: 1px solid #999;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n background-clip: padding-box;\n outline: 0;\n}\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1040;\n background-color: #000;\n}\n.modal-backdrop.fade {\n opacity: 0;\n filter: alpha(opacity=0);\n}\n.modal-backdrop.in {\n opacity: 0.5;\n filter: alpha(opacity=50);\n}\n.modal-header {\n padding: 15px;\n border-bottom: 1px solid #e5e5e5;\n}\n.modal-header .close {\n margin-top: -2px;\n}\n.modal-title {\n margin: 0;\n line-height: 1.42857143;\n}\n.modal-body {\n position: relative;\n padding: 15px;\n}\n.modal-footer {\n padding: 15px;\n text-align: right;\n border-top: 1px solid #e5e5e5;\n}\n.modal-footer .btn + .btn {\n margin-left: 5px;\n margin-bottom: 0;\n}\n.modal-footer .btn-group .btn + .btn {\n margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n margin-left: 0;\n}\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n@media (min-width: 768px) {\n .modal-dialog {\n width: 600px;\n margin: 30px auto;\n }\n .modal-content {\n -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n }\n .modal-sm {\n width: 300px;\n }\n}\n@media (min-width: 992px) {\n .modal-lg {\n width: 900px;\n }\n}\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-break: auto;\n line-height: 1.42857143;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n white-space: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n font-size: 12px;\n opacity: 0;\n filter: alpha(opacity=0);\n}\n.tooltip.in {\n opacity: 0.9;\n filter: alpha(opacity=90);\n}\n.tooltip.top {\n margin-top: -3px;\n padding: 5px 0;\n}\n.tooltip.right {\n margin-left: 3px;\n padding: 0 5px;\n}\n.tooltip.bottom {\n margin-top: 3px;\n padding: 5px 0;\n}\n.tooltip.left {\n margin-left: -3px;\n padding: 0 5px;\n}\n.tooltip-inner {\n max-width: 200px;\n padding: 3px 8px;\n color: #fff;\n text-align: center;\n background-color: #000;\n border-radius: 4px;\n}\n.tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.tooltip.top .tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.top-left .tooltip-arrow {\n bottom: 0;\n right: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.top-right .tooltip-arrow {\n bottom: 0;\n left: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.right .tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -5px;\n border-width: 5px 5px 5px 0;\n border-right-color: #000;\n}\n.tooltip.left .tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -5px;\n border-width: 5px 0 5px 5px;\n border-left-color: #000;\n}\n.tooltip.bottom .tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.tooltip.bottom-left .tooltip-arrow {\n top: 0;\n right: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.tooltip.bottom-right .tooltip-arrow {\n top: 0;\n left: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: none;\n max-width: 276px;\n padding: 1px;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-break: auto;\n line-height: 1.42857143;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n white-space: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n font-size: 14px;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n}\n.popover.top {\n margin-top: -10px;\n}\n.popover.right {\n margin-left: 10px;\n}\n.popover.bottom {\n margin-top: 10px;\n}\n.popover.left {\n margin-left: -10px;\n}\n.popover-title {\n margin: 0;\n padding: 8px 14px;\n font-size: 14px;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-radius: 5px 5px 0 0;\n}\n.popover-content {\n padding: 9px 14px;\n}\n.popover > .arrow,\n.popover > .arrow:after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.popover > .arrow {\n border-width: 11px;\n}\n.popover > .arrow:after {\n border-width: 10px;\n content: \"\";\n}\n.popover.top > .arrow {\n left: 50%;\n margin-left: -11px;\n border-bottom-width: 0;\n border-top-color: #999999;\n border-top-color: rgba(0, 0, 0, 0.25);\n bottom: -11px;\n}\n.popover.top > .arrow:after {\n content: \" \";\n bottom: 1px;\n margin-left: -10px;\n border-bottom-width: 0;\n border-top-color: #fff;\n}\n.popover.right > .arrow {\n top: 50%;\n left: -11px;\n margin-top: -11px;\n border-left-width: 0;\n border-right-color: #999999;\n border-right-color: rgba(0, 0, 0, 0.25);\n}\n.popover.right > .arrow:after {\n content: \" \";\n left: 1px;\n bottom: -10px;\n border-left-width: 0;\n border-right-color: #fff;\n}\n.popover.bottom > .arrow {\n left: 50%;\n margin-left: -11px;\n border-top-width: 0;\n border-bottom-color: #999999;\n border-bottom-color: rgba(0, 0, 0, 0.25);\n top: -11px;\n}\n.popover.bottom > .arrow:after {\n content: \" \";\n top: 1px;\n margin-left: -10px;\n border-top-width: 0;\n border-bottom-color: #fff;\n}\n.popover.left > .arrow {\n top: 50%;\n right: -11px;\n margin-top: -11px;\n border-right-width: 0;\n border-left-color: #999999;\n border-left-color: rgba(0, 0, 0, 0.25);\n}\n.popover.left > .arrow:after {\n content: \" \";\n right: 1px;\n border-right-width: 0;\n border-left-color: #fff;\n bottom: -10px;\n}\n.carousel {\n position: relative;\n}\n.carousel-inner {\n position: relative;\n overflow: hidden;\n width: 100%;\n}\n.carousel-inner > .item {\n display: none;\n position: relative;\n -webkit-transition: 0.6s ease-in-out left;\n -o-transition: 0.6s ease-in-out left;\n transition: 0.6s ease-in-out left;\n}\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n line-height: 1;\n}\n@media all and (transform-3d), (-webkit-transform-3d) {\n .carousel-inner > .item {\n -webkit-transition: -webkit-transform 0.6s ease-in-out;\n -moz-transition: -moz-transform 0.6s ease-in-out;\n -o-transition: -o-transform 0.6s ease-in-out;\n transition: transform 0.6s ease-in-out;\n -webkit-backface-visibility: hidden;\n -moz-backface-visibility: hidden;\n backface-visibility: hidden;\n -webkit-perspective: 1000px;\n -moz-perspective: 1000px;\n perspective: 1000px;\n }\n .carousel-inner > .item.next,\n .carousel-inner > .item.active.right {\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n left: 0;\n }\n .carousel-inner > .item.prev,\n .carousel-inner > .item.active.left {\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n left: 0;\n }\n .carousel-inner > .item.next.left,\n .carousel-inner > .item.prev.right,\n .carousel-inner > .item.active {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n left: 0;\n }\n}\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n display: block;\n}\n.carousel-inner > .active {\n left: 0;\n}\n.carousel-inner > .next,\n.carousel-inner > .prev {\n position: absolute;\n top: 0;\n width: 100%;\n}\n.carousel-inner > .next {\n left: 100%;\n}\n.carousel-inner > .prev {\n left: -100%;\n}\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n left: 0;\n}\n.carousel-inner > .active.left {\n left: -100%;\n}\n.carousel-inner > .active.right {\n left: 100%;\n}\n.carousel-control {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: 15%;\n opacity: 0.5;\n filter: alpha(opacity=50);\n font-size: 20px;\n color: #fff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n background-color: rgba(0, 0, 0, 0);\n}\n.carousel-control.left {\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n}\n.carousel-control.right {\n left: auto;\n right: 0;\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n}\n.carousel-control:hover,\n.carousel-control:focus {\n outline: 0;\n color: #fff;\n text-decoration: none;\n opacity: 0.9;\n filter: alpha(opacity=90);\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-left,\n.carousel-control .glyphicon-chevron-right {\n position: absolute;\n top: 50%;\n margin-top: -10px;\n z-index: 5;\n display: inline-block;\n}\n.carousel-control .icon-prev,\n.carousel-control .glyphicon-chevron-left {\n left: 50%;\n margin-left: -10px;\n}\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-right {\n right: 50%;\n margin-right: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next {\n width: 20px;\n height: 20px;\n line-height: 1;\n font-family: serif;\n}\n.carousel-control .icon-prev:before {\n content: '\\2039';\n}\n.carousel-control .icon-next:before {\n content: '\\203a';\n}\n.carousel-indicators {\n position: absolute;\n bottom: 10px;\n left: 50%;\n z-index: 15;\n width: 60%;\n margin-left: -30%;\n padding-left: 0;\n list-style: none;\n text-align: center;\n}\n.carousel-indicators li {\n display: inline-block;\n width: 10px;\n height: 10px;\n margin: 1px;\n text-indent: -999px;\n border: 1px solid #fff;\n border-radius: 10px;\n cursor: pointer;\n background-color: #000 \\9;\n background-color: rgba(0, 0, 0, 0);\n}\n.carousel-indicators .active {\n margin: 0;\n width: 12px;\n height: 12px;\n background-color: #fff;\n}\n.carousel-caption {\n position: absolute;\n left: 15%;\n right: 15%;\n bottom: 20px;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #fff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n.carousel-caption .btn {\n text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-prev,\n .carousel-control .icon-next {\n width: 30px;\n height: 30px;\n margin-top: -10px;\n font-size: 30px;\n }\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .icon-prev {\n margin-left: -10px;\n }\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-next {\n margin-right: -10px;\n }\n .carousel-caption {\n left: 20%;\n right: 20%;\n padding-bottom: 30px;\n }\n .carousel-indicators {\n bottom: 20px;\n }\n}\n.clearfix:before,\n.clearfix:after,\n.dl-horizontal dd:before,\n.dl-horizontal dd:after,\n.container:before,\n.container:after,\n.container-fluid:before,\n.container-fluid:after,\n.row:before,\n.row:after,\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after,\n.btn-toolbar:before,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after,\n.nav:before,\n.nav:after,\n.navbar:before,\n.navbar:after,\n.navbar-header:before,\n.navbar-header:after,\n.navbar-collapse:before,\n.navbar-collapse:after,\n.pager:before,\n.pager:after,\n.panel-body:before,\n.panel-body:after,\n.modal-header:before,\n.modal-header:after,\n.modal-footer:before,\n.modal-footer:after {\n content: \" \";\n display: table;\n}\n.clearfix:after,\n.dl-horizontal dd:after,\n.container:after,\n.container-fluid:after,\n.row:after,\n.form-horizontal .form-group:after,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:after,\n.nav:after,\n.navbar:after,\n.navbar-header:after,\n.navbar-collapse:after,\n.pager:after,\n.panel-body:after,\n.modal-header:after,\n.modal-footer:after {\n clear: both;\n}\n.center-block {\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n.hidden {\n display: none !important;\n}\n.affix {\n position: fixed;\n}\n@-ms-viewport {\n width: device-width;\n}\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n display: none !important;\n}\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n display: none !important;\n}\n@media (max-width: 767px) {\n .visible-xs {\n display: block !important;\n }\n table.visible-xs {\n display: table !important;\n }\n tr.visible-xs {\n display: table-row !important;\n }\n th.visible-xs,\n td.visible-xs {\n display: table-cell !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-block {\n display: block !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline {\n display: inline !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm {\n display: block !important;\n }\n table.visible-sm {\n display: table !important;\n }\n tr.visible-sm {\n display: table-row !important;\n }\n th.visible-sm,\n td.visible-sm {\n display: table-cell !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-block {\n display: block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline {\n display: inline !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md {\n display: block !important;\n }\n table.visible-md {\n display: table !important;\n }\n tr.visible-md {\n display: table-row !important;\n }\n th.visible-md,\n td.visible-md {\n display: table-cell !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-block {\n display: block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline {\n display: inline !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg {\n display: block !important;\n }\n table.visible-lg {\n display: table !important;\n }\n tr.visible-lg {\n display: table-row !important;\n }\n th.visible-lg,\n td.visible-lg {\n display: table-cell !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-block {\n display: block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline {\n display: inline !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline-block {\n display: inline-block !important;\n }\n}\n@media (max-width: 767px) {\n .hidden-xs {\n display: none !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .hidden-sm {\n display: none !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .hidden-md {\n display: none !important;\n }\n}\n@media (min-width: 1200px) {\n .hidden-lg {\n display: none !important;\n }\n}\n.visible-print {\n display: none !important;\n}\n@media print {\n .visible-print {\n display: block !important;\n }\n table.visible-print {\n display: table !important;\n }\n tr.visible-print {\n display: table-row !important;\n }\n th.visible-print,\n td.visible-print {\n display: table-cell !important;\n }\n}\n.visible-print-block {\n display: none !important;\n}\n@media print {\n .visible-print-block {\n display: block !important;\n }\n}\n.visible-print-inline {\n display: none !important;\n}\n@media print {\n .visible-print-inline {\n display: inline !important;\n }\n}\n.visible-print-inline-block {\n display: none !important;\n}\n@media print {\n .visible-print-inline-block {\n display: inline-block !important;\n }\n}\n@media print {\n .hidden-print {\n display: none !important;\n }\n}\n/*# sourceMappingURL=bootstrap.css.map */","/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n\n//\n// 1. Set default font family to sans-serif.\n// 2. Prevent iOS and IE text size adjust after device orientation change,\n// without disabling user zoom.\n//\n\nhtml {\n font-family: sans-serif; // 1\n -ms-text-size-adjust: 100%; // 2\n -webkit-text-size-adjust: 100%; // 2\n}\n\n//\n// Remove default margin.\n//\n\nbody {\n margin: 0;\n}\n\n// HTML5 display definitions\n// ==========================================================================\n\n//\n// Correct `block` display not defined for any HTML5 element in IE 8/9.\n// Correct `block` display not defined for `details` or `summary` in IE 10/11\n// and Firefox.\n// Correct `block` display not defined for `main` in IE 11.\n//\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\n\n//\n// 1. Correct `inline-block` display not defined in IE 8/9.\n// 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n//\n\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block; // 1\n vertical-align: baseline; // 2\n}\n\n//\n// Prevent modern browsers from displaying `audio` without controls.\n// Remove excess height in iOS 5 devices.\n//\n\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n\n//\n// Address `[hidden]` styling not present in IE 8/9/10.\n// Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.\n//\n\n[hidden],\ntemplate {\n display: none;\n}\n\n// Links\n// ==========================================================================\n\n//\n// Remove the gray background color from active links in IE 10.\n//\n\na {\n background-color: transparent;\n}\n\n//\n// Improve readability of focused elements when they are also in an\n// active/hover state.\n//\n\na:active,\na:hover {\n outline: 0;\n}\n\n// Text-level semantics\n// ==========================================================================\n\n//\n// Address styling not present in IE 8/9/10/11, Safari, and Chrome.\n//\n\nabbr[title] {\n border-bottom: 1px dotted;\n}\n\n//\n// Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\n//\n\nb,\nstrong {\n font-weight: bold;\n}\n\n//\n// Address styling not present in Safari and Chrome.\n//\n\ndfn {\n font-style: italic;\n}\n\n//\n// Address variable `h1` font-size and margin within `section` and `article`\n// contexts in Firefox 4+, Safari, and Chrome.\n//\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n//\n// Address styling not present in IE 8/9.\n//\n\nmark {\n background: #ff0;\n color: #000;\n}\n\n//\n// Address inconsistent and variable font size in all browsers.\n//\n\nsmall {\n font-size: 80%;\n}\n\n//\n// Prevent `sub` and `sup` affecting `line-height` in all browsers.\n//\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsup {\n top: -0.5em;\n}\n\nsub {\n bottom: -0.25em;\n}\n\n// Embedded content\n// ==========================================================================\n\n//\n// Remove border when inside `a` element in IE 8/9/10.\n//\n\nimg {\n border: 0;\n}\n\n//\n// Correct overflow not hidden in IE 9/10/11.\n//\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\n// Grouping content\n// ==========================================================================\n\n//\n// Address margin not present in IE 8/9 and Safari.\n//\n\nfigure {\n margin: 1em 40px;\n}\n\n//\n// Address differences between Firefox and other browsers.\n//\n\nhr {\n box-sizing: content-box;\n height: 0;\n}\n\n//\n// Contain overflow in all browsers.\n//\n\npre {\n overflow: auto;\n}\n\n//\n// Address odd `em`-unit font size rendering in all browsers.\n//\n\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\n// Forms\n// ==========================================================================\n\n//\n// Known limitation: by default, Chrome and Safari on OS X allow very limited\n// styling of `select`, unless a `border` property is set.\n//\n\n//\n// 1. Correct color not being inherited.\n// Known issue: affects color of disabled elements.\n// 2. Correct font properties not being inherited.\n// 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\n//\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit; // 1\n font: inherit; // 2\n margin: 0; // 3\n}\n\n//\n// Address `overflow` set to `hidden` in IE 8/9/10/11.\n//\n\nbutton {\n overflow: visible;\n}\n\n//\n// Address inconsistent `text-transform` inheritance for `button` and `select`.\n// All other form control elements do not inherit `text-transform` values.\n// Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\n// Correct `select` style inheritance in Firefox.\n//\n\nbutton,\nselect {\n text-transform: none;\n}\n\n//\n// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n// and `video` controls.\n// 2. Correct inability to style clickable `input` types in iOS.\n// 3. Improve usability and consistency of cursor style between image-type\n// `input` and others.\n//\n\nbutton,\nhtml input[type=\"button\"], // 1\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button; // 2\n cursor: pointer; // 3\n}\n\n//\n// Re-set default cursor for disabled elements.\n//\n\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\n\n//\n// Remove inner padding and border in Firefox 4+.\n//\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\n\n//\n// Address Firefox 4+ setting `line-height` on `input` using `!important` in\n// the UA stylesheet.\n//\n\ninput {\n line-height: normal;\n}\n\n//\n// It's recommended that you don't attempt to style these elements.\n// Firefox's implementation doesn't respect box-sizing, padding, or width.\n//\n// 1. Address box sizing set to `content-box` in IE 8/9/10.\n// 2. Remove excess padding in IE 8/9/10.\n//\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box; // 1\n padding: 0; // 2\n}\n\n//\n// Fix the cursor style for Chrome's increment/decrement buttons. For certain\n// `font-size` values of the `input`, it causes the cursor style of the\n// decrement button to change from `default` to `text`.\n//\n\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n//\n// 1. Address `appearance` set to `searchfield` in Safari and Chrome.\n// 2. Address `box-sizing` set to `border-box` in Safari and Chrome.\n//\n\ninput[type=\"search\"] {\n -webkit-appearance: textfield; // 1\n box-sizing: content-box; //2\n}\n\n//\n// Remove inner padding and search cancel button in Safari and Chrome on OS X.\n// Safari (but not Chrome) clips the cancel button when the search input has\n// padding (and `textfield` appearance).\n//\n\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n//\n// Define consistent border, margin, and padding.\n//\n\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\n\n//\n// 1. Correct `color` not being inherited in IE 8/9/10/11.\n// 2. Remove padding so people aren't caught out if they zero out fieldsets.\n//\n\nlegend {\n border: 0; // 1\n padding: 0; // 2\n}\n\n//\n// Remove default vertical scrollbar in IE 8/9/10/11.\n//\n\ntextarea {\n overflow: auto;\n}\n\n//\n// Don't inherit the `font-weight` (applied by a rule above).\n// NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n//\n\noptgroup {\n font-weight: bold;\n}\n\n// Tables\n// ==========================================================================\n\n//\n// Remove most spacing between table cells.\n//\n\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\ntd,\nth {\n padding: 0;\n}\n","/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n\n// ==========================================================================\n// Print styles.\n// Inlined to avoid the additional HTTP request: h5bp.com/r\n// ==========================================================================\n\n@media print {\n *,\n *:before,\n *:after {\n background: transparent !important;\n color: #000 !important; // Black prints faster: h5bp.com/s\n box-shadow: none !important;\n text-shadow: none !important;\n }\n\n a,\n a:visited {\n text-decoration: underline;\n }\n\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n\n // Don't show links that are fragment identifiers,\n // or use the `javascript:` pseudo protocol\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n\n thead {\n display: table-header-group; // h5bp.com/t\n }\n\n tr,\n img {\n page-break-inside: avoid;\n }\n\n img {\n max-width: 100% !important;\n }\n\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n\n h2,\n h3 {\n page-break-after: avoid;\n }\n\n // Bootstrap specific changes start\n\n // Bootstrap components\n .navbar {\n display: none;\n }\n .btn,\n .dropup > .btn {\n > .caret {\n border-top-color: #000 !important;\n }\n }\n .label {\n border: 1px solid #000;\n }\n\n .table {\n border-collapse: collapse !important;\n\n td,\n th {\n background-color: #fff !important;\n }\n }\n .table-bordered {\n th,\n td {\n border: 1px solid #ddd !important;\n }\n }\n\n // Bootstrap specific changes end\n}\n","//\n// Glyphicons for Bootstrap\n//\n// Since icons are fonts, they can be placed anywhere text is placed and are\n// thus automatically sized to match the surrounding child. To use, create an\n// inline element with the appropriate classes, like so:\n//\n// Star\n\n// Import the fonts\n@font-face {\n font-family: 'Glyphicons Halflings';\n src: url('@{icon-font-path}@{icon-font-name}.eot');\n src: url('@{icon-font-path}@{icon-font-name}.eot?#iefix') format('embedded-opentype'),\n url('@{icon-font-path}@{icon-font-name}.woff2') format('woff2'),\n url('@{icon-font-path}@{icon-font-name}.woff') format('woff'),\n url('@{icon-font-path}@{icon-font-name}.ttf') format('truetype'),\n url('@{icon-font-path}@{icon-font-name}.svg#@{icon-font-svg-id}') format('svg');\n}\n\n// Catchall baseclass\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n// Individual icons\n.glyphicon-asterisk { &:before { content: \"\\002a\"; } }\n.glyphicon-plus { &:before { content: \"\\002b\"; } }\n.glyphicon-euro,\n.glyphicon-eur { &:before { content: \"\\20ac\"; } }\n.glyphicon-minus { &:before { content: \"\\2212\"; } }\n.glyphicon-cloud { &:before { content: \"\\2601\"; } }\n.glyphicon-envelope { &:before { content: \"\\2709\"; } }\n.glyphicon-pencil { &:before { content: \"\\270f\"; } }\n.glyphicon-glass { &:before { content: \"\\e001\"; } }\n.glyphicon-music { &:before { content: \"\\e002\"; } }\n.glyphicon-search { &:before { content: \"\\e003\"; } }\n.glyphicon-heart { &:before { content: \"\\e005\"; } }\n.glyphicon-star { &:before { content: \"\\e006\"; } }\n.glyphicon-star-empty { &:before { content: \"\\e007\"; } }\n.glyphicon-user { &:before { content: \"\\e008\"; } }\n.glyphicon-film { &:before { content: \"\\e009\"; } }\n.glyphicon-th-large { &:before { content: \"\\e010\"; } }\n.glyphicon-th { &:before { content: \"\\e011\"; } }\n.glyphicon-th-list { &:before { content: \"\\e012\"; } }\n.glyphicon-ok { &:before { content: \"\\e013\"; } }\n.glyphicon-remove { &:before { content: \"\\e014\"; } }\n.glyphicon-zoom-in { &:before { content: \"\\e015\"; } }\n.glyphicon-zoom-out { &:before { content: \"\\e016\"; } }\n.glyphicon-off { &:before { content: \"\\e017\"; } }\n.glyphicon-signal { &:before { content: \"\\e018\"; } }\n.glyphicon-cog { &:before { content: \"\\e019\"; } }\n.glyphicon-trash { &:before { content: \"\\e020\"; } }\n.glyphicon-home { &:before { content: \"\\e021\"; } }\n.glyphicon-file { &:before { content: \"\\e022\"; } }\n.glyphicon-time { &:before { content: \"\\e023\"; } }\n.glyphicon-road { &:before { content: \"\\e024\"; } }\n.glyphicon-download-alt { &:before { content: \"\\e025\"; } }\n.glyphicon-download { &:before { content: \"\\e026\"; } }\n.glyphicon-upload { &:before { content: \"\\e027\"; } }\n.glyphicon-inbox { &:before { content: \"\\e028\"; } }\n.glyphicon-play-circle { &:before { content: \"\\e029\"; } }\n.glyphicon-repeat { &:before { content: \"\\e030\"; } }\n.glyphicon-refresh { &:before { content: \"\\e031\"; } }\n.glyphicon-list-alt { &:before { content: \"\\e032\"; } }\n.glyphicon-lock { &:before { content: \"\\e033\"; } }\n.glyphicon-flag { &:before { content: \"\\e034\"; } }\n.glyphicon-headphones { &:before { content: \"\\e035\"; } }\n.glyphicon-volume-off { &:before { content: \"\\e036\"; } }\n.glyphicon-volume-down { &:before { content: \"\\e037\"; } }\n.glyphicon-volume-up { &:before { content: \"\\e038\"; } }\n.glyphicon-qrcode { &:before { content: \"\\e039\"; } }\n.glyphicon-barcode { &:before { content: \"\\e040\"; } }\n.glyphicon-tag { &:before { content: \"\\e041\"; } }\n.glyphicon-tags { &:before { content: \"\\e042\"; } }\n.glyphicon-book { &:before { content: \"\\e043\"; } }\n.glyphicon-bookmark { &:before { content: \"\\e044\"; } }\n.glyphicon-print { &:before { content: \"\\e045\"; } }\n.glyphicon-camera { &:before { content: \"\\e046\"; } }\n.glyphicon-font { &:before { content: \"\\e047\"; } }\n.glyphicon-bold { &:before { content: \"\\e048\"; } }\n.glyphicon-italic { &:before { content: \"\\e049\"; } }\n.glyphicon-text-height { &:before { content: \"\\e050\"; } }\n.glyphicon-text-width { &:before { content: \"\\e051\"; } }\n.glyphicon-align-left { &:before { content: \"\\e052\"; } }\n.glyphicon-align-center { &:before { content: \"\\e053\"; } }\n.glyphicon-align-right { &:before { content: \"\\e054\"; } }\n.glyphicon-align-justify { &:before { content: \"\\e055\"; } }\n.glyphicon-list { &:before { content: \"\\e056\"; } }\n.glyphicon-indent-left { &:before { content: \"\\e057\"; } }\n.glyphicon-indent-right { &:before { content: \"\\e058\"; } }\n.glyphicon-facetime-video { &:before { content: \"\\e059\"; } }\n.glyphicon-picture { &:before { content: \"\\e060\"; } }\n.glyphicon-map-marker { &:before { content: \"\\e062\"; } }\n.glyphicon-adjust { &:before { content: \"\\e063\"; } }\n.glyphicon-tint { &:before { content: \"\\e064\"; } }\n.glyphicon-edit { &:before { content: \"\\e065\"; } }\n.glyphicon-share { &:before { content: \"\\e066\"; } }\n.glyphicon-check { &:before { content: \"\\e067\"; } }\n.glyphicon-move { &:before { content: \"\\e068\"; } }\n.glyphicon-step-backward { &:before { content: \"\\e069\"; } }\n.glyphicon-fast-backward { &:before { content: \"\\e070\"; } }\n.glyphicon-backward { &:before { content: \"\\e071\"; } }\n.glyphicon-play { &:before { content: \"\\e072\"; } }\n.glyphicon-pause { &:before { content: \"\\e073\"; } }\n.glyphicon-stop { &:before { content: \"\\e074\"; } }\n.glyphicon-forward { &:before { content: \"\\e075\"; } }\n.glyphicon-fast-forward { &:before { content: \"\\e076\"; } }\n.glyphicon-step-forward { &:before { content: \"\\e077\"; } }\n.glyphicon-eject { &:before { content: \"\\e078\"; } }\n.glyphicon-chevron-left { &:before { content: \"\\e079\"; } }\n.glyphicon-chevron-right { &:before { content: \"\\e080\"; } }\n.glyphicon-plus-sign { &:before { content: \"\\e081\"; } }\n.glyphicon-minus-sign { &:before { content: \"\\e082\"; } }\n.glyphicon-remove-sign { &:before { content: \"\\e083\"; } }\n.glyphicon-ok-sign { &:before { content: \"\\e084\"; } }\n.glyphicon-question-sign { &:before { content: \"\\e085\"; } }\n.glyphicon-info-sign { &:before { content: \"\\e086\"; } }\n.glyphicon-screenshot { &:before { content: \"\\e087\"; } }\n.glyphicon-remove-circle { &:before { content: \"\\e088\"; } }\n.glyphicon-ok-circle { &:before { content: \"\\e089\"; } }\n.glyphicon-ban-circle { &:before { content: \"\\e090\"; } }\n.glyphicon-arrow-left { &:before { content: \"\\e091\"; } }\n.glyphicon-arrow-right { &:before { content: \"\\e092\"; } }\n.glyphicon-arrow-up { &:before { content: \"\\e093\"; } }\n.glyphicon-arrow-down { &:before { content: \"\\e094\"; } }\n.glyphicon-share-alt { &:before { content: \"\\e095\"; } }\n.glyphicon-resize-full { &:before { content: \"\\e096\"; } }\n.glyphicon-resize-small { &:before { content: \"\\e097\"; } }\n.glyphicon-exclamation-sign { &:before { content: \"\\e101\"; } }\n.glyphicon-gift { &:before { content: \"\\e102\"; } }\n.glyphicon-leaf { &:before { content: \"\\e103\"; } }\n.glyphicon-fire { &:before { content: \"\\e104\"; } }\n.glyphicon-eye-open { &:before { content: \"\\e105\"; } }\n.glyphicon-eye-close { &:before { content: \"\\e106\"; } }\n.glyphicon-warning-sign { &:before { content: \"\\e107\"; } }\n.glyphicon-plane { &:before { content: \"\\e108\"; } }\n.glyphicon-calendar { &:before { content: \"\\e109\"; } }\n.glyphicon-random { &:before { content: \"\\e110\"; } }\n.glyphicon-comment { &:before { content: \"\\e111\"; } }\n.glyphicon-magnet { &:before { content: \"\\e112\"; } }\n.glyphicon-chevron-up { &:before { content: \"\\e113\"; } }\n.glyphicon-chevron-down { &:before { content: \"\\e114\"; } }\n.glyphicon-retweet { &:before { content: \"\\e115\"; } }\n.glyphicon-shopping-cart { &:before { content: \"\\e116\"; } }\n.glyphicon-folder-close { &:before { content: \"\\e117\"; } }\n.glyphicon-folder-open { &:before { content: \"\\e118\"; } }\n.glyphicon-resize-vertical { &:before { content: \"\\e119\"; } }\n.glyphicon-resize-horizontal { &:before { content: \"\\e120\"; } }\n.glyphicon-hdd { &:before { content: \"\\e121\"; } }\n.glyphicon-bullhorn { &:before { content: \"\\e122\"; } }\n.glyphicon-bell { &:before { content: \"\\e123\"; } }\n.glyphicon-certificate { &:before { content: \"\\e124\"; } }\n.glyphicon-thumbs-up { &:before { content: \"\\e125\"; } }\n.glyphicon-thumbs-down { &:before { content: \"\\e126\"; } }\n.glyphicon-hand-right { &:before { content: \"\\e127\"; } }\n.glyphicon-hand-left { &:before { content: \"\\e128\"; } }\n.glyphicon-hand-up { &:before { content: \"\\e129\"; } }\n.glyphicon-hand-down { &:before { content: \"\\e130\"; } }\n.glyphicon-circle-arrow-right { &:before { content: \"\\e131\"; } }\n.glyphicon-circle-arrow-left { &:before { content: \"\\e132\"; } }\n.glyphicon-circle-arrow-up { &:before { content: \"\\e133\"; } }\n.glyphicon-circle-arrow-down { &:before { content: \"\\e134\"; } }\n.glyphicon-globe { &:before { content: \"\\e135\"; } }\n.glyphicon-wrench { &:before { content: \"\\e136\"; } }\n.glyphicon-tasks { &:before { content: \"\\e137\"; } }\n.glyphicon-filter { &:before { content: \"\\e138\"; } }\n.glyphicon-briefcase { &:before { content: \"\\e139\"; } }\n.glyphicon-fullscreen { &:before { content: \"\\e140\"; } }\n.glyphicon-dashboard { &:before { content: \"\\e141\"; } }\n.glyphicon-paperclip { &:before { content: \"\\e142\"; } }\n.glyphicon-heart-empty { &:before { content: \"\\e143\"; } }\n.glyphicon-link { &:before { content: \"\\e144\"; } }\n.glyphicon-phone { &:before { content: \"\\e145\"; } }\n.glyphicon-pushpin { &:before { content: \"\\e146\"; } }\n.glyphicon-usd { &:before { content: \"\\e148\"; } }\n.glyphicon-gbp { &:before { content: \"\\e149\"; } }\n.glyphicon-sort { &:before { content: \"\\e150\"; } }\n.glyphicon-sort-by-alphabet { &:before { content: \"\\e151\"; } }\n.glyphicon-sort-by-alphabet-alt { &:before { content: \"\\e152\"; } }\n.glyphicon-sort-by-order { &:before { content: \"\\e153\"; } }\n.glyphicon-sort-by-order-alt { &:before { content: \"\\e154\"; } }\n.glyphicon-sort-by-attributes { &:before { content: \"\\e155\"; } }\n.glyphicon-sort-by-attributes-alt { &:before { content: \"\\e156\"; } }\n.glyphicon-unchecked { &:before { content: \"\\e157\"; } }\n.glyphicon-expand { &:before { content: \"\\e158\"; } }\n.glyphicon-collapse-down { &:before { content: \"\\e159\"; } }\n.glyphicon-collapse-up { &:before { content: \"\\e160\"; } }\n.glyphicon-log-in { &:before { content: \"\\e161\"; } }\n.glyphicon-flash { &:before { content: \"\\e162\"; } }\n.glyphicon-log-out { &:before { content: \"\\e163\"; } }\n.glyphicon-new-window { &:before { content: \"\\e164\"; } }\n.glyphicon-record { &:before { content: \"\\e165\"; } }\n.glyphicon-save { &:before { content: \"\\e166\"; } }\n.glyphicon-open { &:before { content: \"\\e167\"; } }\n.glyphicon-saved { &:before { content: \"\\e168\"; } }\n.glyphicon-import { &:before { content: \"\\e169\"; } }\n.glyphicon-export { &:before { content: \"\\e170\"; } }\n.glyphicon-send { &:before { content: \"\\e171\"; } }\n.glyphicon-floppy-disk { &:before { content: \"\\e172\"; } }\n.glyphicon-floppy-saved { &:before { content: \"\\e173\"; } }\n.glyphicon-floppy-remove { &:before { content: \"\\e174\"; } }\n.glyphicon-floppy-save { &:before { content: \"\\e175\"; } }\n.glyphicon-floppy-open { &:before { content: \"\\e176\"; } }\n.glyphicon-credit-card { &:before { content: \"\\e177\"; } }\n.glyphicon-transfer { &:before { content: \"\\e178\"; } }\n.glyphicon-cutlery { &:before { content: \"\\e179\"; } }\n.glyphicon-header { &:before { content: \"\\e180\"; } }\n.glyphicon-compressed { &:before { content: \"\\e181\"; } }\n.glyphicon-earphone { &:before { content: \"\\e182\"; } }\n.glyphicon-phone-alt { &:before { content: \"\\e183\"; } }\n.glyphicon-tower { &:before { content: \"\\e184\"; } }\n.glyphicon-stats { &:before { content: \"\\e185\"; } }\n.glyphicon-sd-video { &:before { content: \"\\e186\"; } }\n.glyphicon-hd-video { &:before { content: \"\\e187\"; } }\n.glyphicon-subtitles { &:before { content: \"\\e188\"; } }\n.glyphicon-sound-stereo { &:before { content: \"\\e189\"; } }\n.glyphicon-sound-dolby { &:before { content: \"\\e190\"; } }\n.glyphicon-sound-5-1 { &:before { content: \"\\e191\"; } }\n.glyphicon-sound-6-1 { &:before { content: \"\\e192\"; } }\n.glyphicon-sound-7-1 { &:before { content: \"\\e193\"; } }\n.glyphicon-copyright-mark { &:before { content: \"\\e194\"; } }\n.glyphicon-registration-mark { &:before { content: \"\\e195\"; } }\n.glyphicon-cloud-download { &:before { content: \"\\e197\"; } }\n.glyphicon-cloud-upload { &:before { content: \"\\e198\"; } }\n.glyphicon-tree-conifer { &:before { content: \"\\e199\"; } }\n.glyphicon-tree-deciduous { &:before { content: \"\\e200\"; } }\n.glyphicon-cd { &:before { content: \"\\e201\"; } }\n.glyphicon-save-file { &:before { content: \"\\e202\"; } }\n.glyphicon-open-file { &:before { content: \"\\e203\"; } }\n.glyphicon-level-up { &:before { content: \"\\e204\"; } }\n.glyphicon-copy { &:before { content: \"\\e205\"; } }\n.glyphicon-paste { &:before { content: \"\\e206\"; } }\n// The following 2 Glyphicons are omitted for the time being because\n// they currently use Unicode codepoints that are outside the\n// Basic Multilingual Plane (BMP). Older buggy versions of WebKit can't handle\n// non-BMP codepoints in CSS string escapes, and thus can't display these two icons.\n// Notably, the bug affects some older versions of the Android Browser.\n// More info: https://github.com/twbs/bootstrap/issues/10106\n// .glyphicon-door { &:before { content: \"\\1f6aa\"; } }\n// .glyphicon-key { &:before { content: \"\\1f511\"; } }\n.glyphicon-alert { &:before { content: \"\\e209\"; } }\n.glyphicon-equalizer { &:before { content: \"\\e210\"; } }\n.glyphicon-king { &:before { content: \"\\e211\"; } }\n.glyphicon-queen { &:before { content: \"\\e212\"; } }\n.glyphicon-pawn { &:before { content: \"\\e213\"; } }\n.glyphicon-bishop { &:before { content: \"\\e214\"; } }\n.glyphicon-knight { &:before { content: \"\\e215\"; } }\n.glyphicon-baby-formula { &:before { content: \"\\e216\"; } }\n.glyphicon-tent { &:before { content: \"\\26fa\"; } }\n.glyphicon-blackboard { &:before { content: \"\\e218\"; } }\n.glyphicon-bed { &:before { content: \"\\e219\"; } }\n.glyphicon-apple { &:before { content: \"\\f8ff\"; } }\n.glyphicon-erase { &:before { content: \"\\e221\"; } }\n.glyphicon-hourglass { &:before { content: \"\\231b\"; } }\n.glyphicon-lamp { &:before { content: \"\\e223\"; } }\n.glyphicon-duplicate { &:before { content: \"\\e224\"; } }\n.glyphicon-piggy-bank { &:before { content: \"\\e225\"; } }\n.glyphicon-scissors { &:before { content: \"\\e226\"; } }\n.glyphicon-bitcoin { &:before { content: \"\\e227\"; } }\n.glyphicon-btc { &:before { content: \"\\e227\"; } }\n.glyphicon-xbt { &:before { content: \"\\e227\"; } }\n.glyphicon-yen { &:before { content: \"\\00a5\"; } }\n.glyphicon-jpy { &:before { content: \"\\00a5\"; } }\n.glyphicon-ruble { &:before { content: \"\\20bd\"; } }\n.glyphicon-rub { &:before { content: \"\\20bd\"; } }\n.glyphicon-scale { &:before { content: \"\\e230\"; } }\n.glyphicon-ice-lolly { &:before { content: \"\\e231\"; } }\n.glyphicon-ice-lolly-tasted { &:before { content: \"\\e232\"; } }\n.glyphicon-education { &:before { content: \"\\e233\"; } }\n.glyphicon-option-horizontal { &:before { content: \"\\e234\"; } }\n.glyphicon-option-vertical { &:before { content: \"\\e235\"; } }\n.glyphicon-menu-hamburger { &:before { content: \"\\e236\"; } }\n.glyphicon-modal-window { &:before { content: \"\\e237\"; } }\n.glyphicon-oil { &:before { content: \"\\e238\"; } }\n.glyphicon-grain { &:before { content: \"\\e239\"; } }\n.glyphicon-sunglasses { &:before { content: \"\\e240\"; } }\n.glyphicon-text-size { &:before { content: \"\\e241\"; } }\n.glyphicon-text-color { &:before { content: \"\\e242\"; } }\n.glyphicon-text-background { &:before { content: \"\\e243\"; } }\n.glyphicon-object-align-top { &:before { content: \"\\e244\"; } }\n.glyphicon-object-align-bottom { &:before { content: \"\\e245\"; } }\n.glyphicon-object-align-horizontal{ &:before { content: \"\\e246\"; } }\n.glyphicon-object-align-left { &:before { content: \"\\e247\"; } }\n.glyphicon-object-align-vertical { &:before { content: \"\\e248\"; } }\n.glyphicon-object-align-right { &:before { content: \"\\e249\"; } }\n.glyphicon-triangle-right { &:before { content: \"\\e250\"; } }\n.glyphicon-triangle-left { &:before { content: \"\\e251\"; } }\n.glyphicon-triangle-bottom { &:before { content: \"\\e252\"; } }\n.glyphicon-triangle-top { &:before { content: \"\\e253\"; } }\n.glyphicon-console { &:before { content: \"\\e254\"; } }\n.glyphicon-superscript { &:before { content: \"\\e255\"; } }\n.glyphicon-subscript { &:before { content: \"\\e256\"; } }\n.glyphicon-menu-left { &:before { content: \"\\e257\"; } }\n.glyphicon-menu-right { &:before { content: \"\\e258\"; } }\n.glyphicon-menu-down { &:before { content: \"\\e259\"; } }\n.glyphicon-menu-up { &:before { content: \"\\e260\"; } }\n","//\n// Scaffolding\n// --------------------------------------------------\n\n\n// Reset the box-sizing\n//\n// Heads up! This reset may cause conflicts with some third-party widgets.\n// For recommendations on resolving such conflicts, see\n// http://getbootstrap.com/getting-started/#third-box-sizing\n* {\n .box-sizing(border-box);\n}\n*:before,\n*:after {\n .box-sizing(border-box);\n}\n\n\n// Body reset\n\nhtml {\n font-size: 10px;\n -webkit-tap-highlight-color: rgba(0,0,0,0);\n}\n\nbody {\n font-family: @font-family-base;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @text-color;\n background-color: @body-bg;\n}\n\n// Reset fonts for relevant elements\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\n\n// Links\n\na {\n color: @link-color;\n text-decoration: none;\n\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: @link-hover-decoration;\n }\n\n &:focus {\n .tab-focus();\n }\n}\n\n\n// Figures\n//\n// We reset this here because previously Normalize had no `figure` margins. This\n// ensures we don't break anyone's use of the element.\n\nfigure {\n margin: 0;\n}\n\n\n// Images\n\nimg {\n vertical-align: middle;\n}\n\n// Responsive images (ensure images don't scale beyond their parents)\n.img-responsive {\n .img-responsive();\n}\n\n// Rounded corners\n.img-rounded {\n border-radius: @border-radius-large;\n}\n\n// Image thumbnails\n//\n// Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`.\n.img-thumbnail {\n padding: @thumbnail-padding;\n line-height: @line-height-base;\n background-color: @thumbnail-bg;\n border: 1px solid @thumbnail-border;\n border-radius: @thumbnail-border-radius;\n .transition(all .2s ease-in-out);\n\n // Keep them at most 100% wide\n .img-responsive(inline-block);\n}\n\n// Perfect circle\n.img-circle {\n border-radius: 50%; // set radius in percents\n}\n\n\n// Horizontal rules\n\nhr {\n margin-top: @line-height-computed;\n margin-bottom: @line-height-computed;\n border: 0;\n border-top: 1px solid @hr-border;\n}\n\n\n// Only display content to screen readers\n//\n// See: http://a11yproject.com/posts/how-to-hide-content\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0,0,0,0);\n border: 0;\n}\n\n// Use in conjunction with .sr-only to only display content when it's focused.\n// Useful for \"Skip to main content\" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n// Credit: HTML5 Boilerplate\n\n.sr-only-focusable {\n &:active,\n &:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n }\n}\n\n\n// iOS \"clickable elements\" fix for role=\"button\"\n//\n// Fixes \"clickability\" issue (and more generally, the firing of events such as focus as well)\n// for traditionally non-focusable elements with role=\"button\"\n// see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n\n[role=\"button\"] {\n cursor: pointer;\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They have been removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility) {\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","// WebKit-style focus\n\n.tab-focus() {\n // WebKit-specific. Other browsers will keep their default outline style.\n // (Initially tried to also force default via `outline: initial`,\n // but that seems to erroneously remove the outline in Firefox altogether.)\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n","// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n.img-responsive(@display: block) {\n display: @display;\n max-width: 100%; // Part 1: Set a maximum relative to the parent\n height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size. Note that the\n// spelling of `min--moz-device-pixel-ratio` is intentional.\n.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) {\n background-image: url(\"@{file-1x}\");\n\n @media\n only screen and (-webkit-min-device-pixel-ratio: 2),\n only screen and ( min--moz-device-pixel-ratio: 2),\n only screen and ( -o-min-device-pixel-ratio: 2/1),\n only screen and ( min-device-pixel-ratio: 2),\n only screen and ( min-resolution: 192dpi),\n only screen and ( min-resolution: 2dppx) {\n background-image: url(\"@{file-2x}\");\n background-size: @width-1x @height-1x;\n }\n}\n","//\n// Typography\n// --------------------------------------------------\n\n\n// Headings\n// -------------------------\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n font-family: @headings-font-family;\n font-weight: @headings-font-weight;\n line-height: @headings-line-height;\n color: @headings-color;\n\n small,\n .small {\n font-weight: normal;\n line-height: 1;\n color: @headings-small-color;\n }\n}\n\nh1, .h1,\nh2, .h2,\nh3, .h3 {\n margin-top: @line-height-computed;\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 65%;\n }\n}\nh4, .h4,\nh5, .h5,\nh6, .h6 {\n margin-top: (@line-height-computed / 2);\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 75%;\n }\n}\n\nh1, .h1 { font-size: @font-size-h1; }\nh2, .h2 { font-size: @font-size-h2; }\nh3, .h3 { font-size: @font-size-h3; }\nh4, .h4 { font-size: @font-size-h4; }\nh5, .h5 { font-size: @font-size-h5; }\nh6, .h6 { font-size: @font-size-h6; }\n\n\n// Body text\n// -------------------------\n\np {\n margin: 0 0 (@line-height-computed / 2);\n}\n\n.lead {\n margin-bottom: @line-height-computed;\n font-size: floor((@font-size-base * 1.15));\n font-weight: 300;\n line-height: 1.4;\n\n @media (min-width: @screen-sm-min) {\n font-size: (@font-size-base * 1.5);\n }\n}\n\n\n// Emphasis & misc\n// -------------------------\n\n// Ex: (12px small font / 14px base font) * 100% = about 85%\nsmall,\n.small {\n font-size: floor((100% * @font-size-small / @font-size-base));\n}\n\nmark,\n.mark {\n background-color: @state-warning-bg;\n padding: .2em;\n}\n\n// Alignment\n.text-left { text-align: left; }\n.text-right { text-align: right; }\n.text-center { text-align: center; }\n.text-justify { text-align: justify; }\n.text-nowrap { white-space: nowrap; }\n\n// Transformation\n.text-lowercase { text-transform: lowercase; }\n.text-uppercase { text-transform: uppercase; }\n.text-capitalize { text-transform: capitalize; }\n\n// Contextual colors\n.text-muted {\n color: @text-muted;\n}\n.text-primary {\n .text-emphasis-variant(@brand-primary);\n}\n.text-success {\n .text-emphasis-variant(@state-success-text);\n}\n.text-info {\n .text-emphasis-variant(@state-info-text);\n}\n.text-warning {\n .text-emphasis-variant(@state-warning-text);\n}\n.text-danger {\n .text-emphasis-variant(@state-danger-text);\n}\n\n// Contextual backgrounds\n// For now we'll leave these alongside the text classes until v4 when we can\n// safely shift things around (per SemVer rules).\n.bg-primary {\n // Given the contrast here, this is the only class to have its color inverted\n // automatically.\n color: #fff;\n .bg-variant(@brand-primary);\n}\n.bg-success {\n .bg-variant(@state-success-bg);\n}\n.bg-info {\n .bg-variant(@state-info-bg);\n}\n.bg-warning {\n .bg-variant(@state-warning-bg);\n}\n.bg-danger {\n .bg-variant(@state-danger-bg);\n}\n\n\n// Page header\n// -------------------------\n\n.page-header {\n padding-bottom: ((@line-height-computed / 2) - 1);\n margin: (@line-height-computed * 2) 0 @line-height-computed;\n border-bottom: 1px solid @page-header-border-color;\n}\n\n\n// Lists\n// -------------------------\n\n// Unordered and Ordered lists\nul,\nol {\n margin-top: 0;\n margin-bottom: (@line-height-computed / 2);\n ul,\n ol {\n margin-bottom: 0;\n }\n}\n\n// List options\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n .list-unstyled();\n margin-left: -5px;\n\n > li {\n display: inline-block;\n padding-left: 5px;\n padding-right: 5px;\n }\n}\n\n// Description Lists\ndl {\n margin-top: 0; // Remove browser default\n margin-bottom: @line-height-computed;\n}\ndt,\ndd {\n line-height: @line-height-base;\n}\ndt {\n font-weight: bold;\n}\ndd {\n margin-left: 0; // Undo browser default\n}\n\n// Horizontal description lists\n//\n// Defaults to being stacked without any of the below styles applied, until the\n// grid breakpoint is reached (default of ~768px).\n\n.dl-horizontal {\n dd {\n &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present\n }\n\n @media (min-width: @dl-horizontal-breakpoint) {\n dt {\n float: left;\n width: (@dl-horizontal-offset - 20);\n clear: left;\n text-align: right;\n .text-overflow();\n }\n dd {\n margin-left: @dl-horizontal-offset;\n }\n }\n}\n\n\n// Misc\n// -------------------------\n\n// Abbreviations and acronyms\nabbr[title],\n// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted @abbr-border-color;\n}\n.initialism {\n font-size: 90%;\n .text-uppercase();\n}\n\n// Blockquotes\nblockquote {\n padding: (@line-height-computed / 2) @line-height-computed;\n margin: 0 0 @line-height-computed;\n font-size: @blockquote-font-size;\n border-left: 5px solid @blockquote-border-color;\n\n p,\n ul,\n ol {\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n // Note: Deprecated small and .small as of v3.1.0\n // Context: https://github.com/twbs/bootstrap/issues/11660\n footer,\n small,\n .small {\n display: block;\n font-size: 80%; // back to default font-size\n line-height: @line-height-base;\n color: @blockquote-small-color;\n\n &:before {\n content: '\\2014 \\00A0'; // em dash, nbsp\n }\n }\n}\n\n// Opposite alignment of blockquote\n//\n// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0.\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n border-right: 5px solid @blockquote-border-color;\n border-left: 0;\n text-align: right;\n\n // Account for citation\n footer,\n small,\n .small {\n &:before { content: ''; }\n &:after {\n content: '\\00A0 \\2014'; // nbsp, em dash\n }\n }\n}\n\n// Addresses\naddress {\n margin-bottom: @line-height-computed;\n font-style: normal;\n line-height: @line-height-base;\n}\n","// Typography\n\n.text-emphasis-variant(@color) {\n color: @color;\n a&:hover,\n a&:focus {\n color: darken(@color, 10%);\n }\n}\n","// Contextual backgrounds\n\n.bg-variant(@color) {\n background-color: @color;\n a&:hover,\n a&:focus {\n background-color: darken(@color, 10%);\n }\n}\n","// Text overflow\n// Requires inline-block or block for proper styling\n\n.text-overflow() {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n","//\n// Code (inline and block)\n// --------------------------------------------------\n\n\n// Inline and block code styles\ncode,\nkbd,\npre,\nsamp {\n font-family: @font-family-monospace;\n}\n\n// Inline code\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: @code-color;\n background-color: @code-bg;\n border-radius: @border-radius-base;\n}\n\n// User input typically entered via keyboard\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: @kbd-color;\n background-color: @kbd-bg;\n border-radius: @border-radius-small;\n box-shadow: inset 0 -1px 0 rgba(0,0,0,.25);\n\n kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n box-shadow: none;\n }\n}\n\n// Blocks of code\npre {\n display: block;\n padding: ((@line-height-computed - 1) / 2);\n margin: 0 0 (@line-height-computed / 2);\n font-size: (@font-size-base - 1); // 14px to 13px\n line-height: @line-height-base;\n word-break: break-all;\n word-wrap: break-word;\n color: @pre-color;\n background-color: @pre-bg;\n border: 1px solid @pre-border-color;\n border-radius: @border-radius-base;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n max-height: @pre-scrollable-max-height;\n overflow-y: scroll;\n}\n","//\n// Grid system\n// --------------------------------------------------\n\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n.container {\n .container-fixed();\n\n @media (min-width: @screen-sm-min) {\n width: @container-sm;\n }\n @media (min-width: @screen-md-min) {\n width: @container-md;\n }\n @media (min-width: @screen-lg-min) {\n width: @container-lg;\n }\n}\n\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but without any defined\n// width for fluid, full width layouts.\n\n.container-fluid {\n .container-fixed();\n}\n\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n.row {\n .make-row();\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n.make-grid-columns();\n\n\n// Extra small grid\n//\n// Columns, offsets, pushes, and pulls for extra small devices like\n// smartphones.\n\n.make-grid(xs);\n\n\n// Small grid\n//\n// Columns, offsets, pushes, and pulls for the small device range, from phones\n// to tablets.\n\n@media (min-width: @screen-sm-min) {\n .make-grid(sm);\n}\n\n\n// Medium grid\n//\n// Columns, offsets, pushes, and pulls for the desktop device range.\n\n@media (min-width: @screen-md-min) {\n .make-grid(md);\n}\n\n\n// Large grid\n//\n// Columns, offsets, pushes, and pulls for the large desktop device range.\n\n@media (min-width: @screen-lg-min) {\n .make-grid(lg);\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n// Centered container element\n.container-fixed(@gutter: @grid-gutter-width) {\n margin-right: auto;\n margin-left: auto;\n padding-left: floor((@gutter / 2));\n padding-right: ceil((@gutter / 2));\n &:extend(.clearfix all);\n}\n\n// Creates a wrapper for a series of columns\n.make-row(@gutter: @grid-gutter-width) {\n margin-left: ceil((@gutter / -2));\n margin-right: floor((@gutter / -2));\n &:extend(.clearfix all);\n}\n\n// Generate the extra small columns\n.make-xs-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n float: left;\n width: percentage((@columns / @grid-columns));\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n}\n.make-xs-column-offset(@columns) {\n margin-left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-push(@columns) {\n left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-pull(@columns) {\n right: percentage((@columns / @grid-columns));\n}\n\n// Generate the small columns\n.make-sm-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-sm-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-offset(@columns) {\n @media (min-width: @screen-sm-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-push(@columns) {\n @media (min-width: @screen-sm-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-pull(@columns) {\n @media (min-width: @screen-sm-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n// Generate the medium columns\n.make-md-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-md-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-offset(@columns) {\n @media (min-width: @screen-md-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-push(@columns) {\n @media (min-width: @screen-md-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-pull(@columns) {\n @media (min-width: @screen-md-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n// Generate the large columns\n.make-lg-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-lg-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-offset(@columns) {\n @media (min-width: @screen-lg-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-push(@columns) {\n @media (min-width: @screen-lg-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-pull(@columns) {\n @media (min-width: @screen-lg-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n","// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `@grid-columns`.\n\n.make-grid-columns() {\n // Common styles for all sizes of grid columns, widths 1-12\n .col(@index) { // initial\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general; \"=<\" isn't a typo\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n position: relative;\n // Prevent columns from collapsing when empty\n min-height: 1px;\n // Inner gutter via padding\n padding-left: ceil((@grid-gutter-width / 2));\n padding-right: floor((@grid-gutter-width / 2));\n }\n }\n .col(1); // kickstart it\n}\n\n.float-grid-columns(@class) {\n .col(@index) { // initial\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n float: left;\n }\n }\n .col(1); // kickstart it\n}\n\n.calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) {\n .col-@{class}-@{index} {\n width: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index > 0) {\n .col-@{class}-push-@{index} {\n left: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index = 0) {\n .col-@{class}-push-0 {\n left: auto;\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index > 0) {\n .col-@{class}-pull-@{index} {\n right: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index = 0) {\n .col-@{class}-pull-0 {\n right: auto;\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = offset) {\n .col-@{class}-offset-@{index} {\n margin-left: percentage((@index / @grid-columns));\n }\n}\n\n// Basic looping in LESS\n.loop-grid-columns(@index, @class, @type) when (@index >= 0) {\n .calc-grid-column(@index, @class, @type);\n // next iteration\n .loop-grid-columns((@index - 1), @class, @type);\n}\n\n// Create grid for specific class\n.make-grid(@class) {\n .float-grid-columns(@class);\n .loop-grid-columns(@grid-columns, @class, width);\n .loop-grid-columns(@grid-columns, @class, pull);\n .loop-grid-columns(@grid-columns, @class, push);\n .loop-grid-columns(@grid-columns, @class, offset);\n}\n","//\n// Tables\n// --------------------------------------------------\n\n\ntable {\n background-color: @table-bg;\n}\ncaption {\n padding-top: @table-cell-padding;\n padding-bottom: @table-cell-padding;\n color: @text-muted;\n text-align: left;\n}\nth {\n text-align: left;\n}\n\n\n// Baseline styles\n\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: @line-height-computed;\n // Cells\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-cell-padding;\n line-height: @line-height-base;\n vertical-align: top;\n border-top: 1px solid @table-border-color;\n }\n }\n }\n // Bottom align for column headings\n > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid @table-border-color;\n }\n // Remove top border from thead by default\n > caption + thead,\n > colgroup + thead,\n > thead:first-child {\n > tr:first-child {\n > th,\n > td {\n border-top: 0;\n }\n }\n }\n // Account for multiple tbody instances\n > tbody + tbody {\n border-top: 2px solid @table-border-color;\n }\n\n // Nesting\n .table {\n background-color: @body-bg;\n }\n}\n\n\n// Condensed table w/ half padding\n\n.table-condensed {\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-condensed-cell-padding;\n }\n }\n }\n}\n\n\n// Bordered version\n//\n// Add borders all around the table and between all the columns.\n\n.table-bordered {\n border: 1px solid @table-border-color;\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n border: 1px solid @table-border-color;\n }\n }\n }\n > thead > tr {\n > th,\n > td {\n border-bottom-width: 2px;\n }\n }\n}\n\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n > tbody > tr:nth-of-type(odd) {\n background-color: @table-bg-accent;\n }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n > tbody > tr:hover {\n background-color: @table-bg-hover;\n }\n}\n\n\n// Table cell sizing\n//\n// Reset default table behavior\n\ntable col[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n float: none;\n display: table-column;\n}\ntable {\n td,\n th {\n &[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n float: none;\n display: table-cell;\n }\n }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n// Generate the contextual variants\n.table-row-variant(active; @table-bg-active);\n.table-row-variant(success; @state-success-bg);\n.table-row-variant(info; @state-info-bg);\n.table-row-variant(warning; @state-warning-bg);\n.table-row-variant(danger; @state-danger-bg);\n\n\n// Responsive tables\n//\n// Wrap your tables in `.table-responsive` and we'll make them mobile friendly\n// by enabling horizontal scrolling. Only applies <768px. Everything above that\n// will display normally.\n\n.table-responsive {\n overflow-x: auto;\n min-height: 0.01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837)\n\n @media screen and (max-width: @screen-xs-max) {\n width: 100%;\n margin-bottom: (@line-height-computed * 0.75);\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid @table-border-color;\n\n // Tighten up spacing\n > .table {\n margin-bottom: 0;\n\n // Ensure the content doesn't wrap\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n white-space: nowrap;\n }\n }\n }\n }\n\n // Special overrides for the bordered tables\n > .table-bordered {\n border: 0;\n\n // Nuke the appropriate borders so that the parent can handle them\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th:first-child,\n > td:first-child {\n border-left: 0;\n }\n > th:last-child,\n > td:last-child {\n border-right: 0;\n }\n }\n }\n\n // Only nuke the last row's bottom-border in `tbody` and `tfoot` since\n // chances are there will be only one `tr` in a `thead` and that would\n // remove the border altogether.\n > tbody,\n > tfoot {\n > tr:last-child {\n > th,\n > td {\n border-bottom: 0;\n }\n }\n }\n\n }\n }\n}\n","// Tables\n\n.table-row-variant(@state; @background) {\n // Exact selectors below required to override `.table-striped` and prevent\n // inheritance to nested tables.\n .table > thead > tr,\n .table > tbody > tr,\n .table > tfoot > tr {\n > td.@{state},\n > th.@{state},\n &.@{state} > td,\n &.@{state} > th {\n background-color: @background;\n }\n }\n\n // Hover states for `.table-hover`\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\n .table-hover > tbody > tr {\n > td.@{state}:hover,\n > th.@{state}:hover,\n &.@{state}:hover > td,\n &:hover > .@{state},\n &.@{state}:hover > th {\n background-color: darken(@background, 5%);\n }\n }\n}\n","//\n// Forms\n// --------------------------------------------------\n\n\n// Normalize non-controls\n//\n// Restyle and baseline non-control form elements.\n\nfieldset {\n padding: 0;\n margin: 0;\n border: 0;\n // Chrome and Firefox set a `min-width: min-content;` on fieldsets,\n // so we reset that to ensure it behaves more like a standard block element.\n // See https://github.com/twbs/bootstrap/issues/12359.\n min-width: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: @line-height-computed;\n font-size: (@font-size-base * 1.5);\n line-height: inherit;\n color: @legend-color;\n border: 0;\n border-bottom: 1px solid @legend-border-color;\n}\n\nlabel {\n display: inline-block;\n max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141)\n margin-bottom: 5px;\n font-weight: bold;\n}\n\n\n// Normalize form controls\n//\n// While most of our form styles require extra classes, some basic normalization\n// is required to ensure optimum display with or without those classes to better\n// address browser inconsistencies.\n\n// Override content-box in Normalize (* isn't specific enough)\ninput[type=\"search\"] {\n .box-sizing(border-box);\n}\n\n// Position radios and checkboxes better\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9; // IE8-9\n line-height: normal;\n}\n\ninput[type=\"file\"] {\n display: block;\n}\n\n// Make range inputs behave like textual form controls\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\n\n// Make multiple select elements height not fixed\nselect[multiple],\nselect[size] {\n height: auto;\n}\n\n// Focus for file, radio, and checkbox\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n .tab-focus();\n}\n\n// Adjust output element\noutput {\n display: block;\n padding-top: (@padding-base-vertical + 1);\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n}\n\n\n// Common form controls\n//\n// Shared size and type resets for form controls. Apply `.form-control` to any\n// of the following form controls:\n//\n// select\n// textarea\n// input[type=\"text\"]\n// input[type=\"password\"]\n// input[type=\"datetime\"]\n// input[type=\"datetime-local\"]\n// input[type=\"date\"]\n// input[type=\"month\"]\n// input[type=\"time\"]\n// input[type=\"week\"]\n// input[type=\"number\"]\n// input[type=\"email\"]\n// input[type=\"url\"]\n// input[type=\"search\"]\n// input[type=\"tel\"]\n// input[type=\"color\"]\n\n.form-control {\n display: block;\n width: 100%;\n height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n background-color: @input-bg;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid @input-border;\n border-radius: @input-border-radius; // Note: This has no effect on s in CSS.\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.075));\n .transition(~\"border-color ease-in-out .15s, box-shadow ease-in-out .15s\");\n\n // Customize the `:focus` state to imitate native WebKit styles.\n .form-control-focus();\n\n // Placeholder\n .placeholder();\n\n // Unstyle the caret on ``\n// element gets special love because it's special, and that's a fact!\n.input-size(@input-height; @padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n height: @input-height;\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n\n select& {\n height: @input-height;\n line-height: @input-height;\n }\n\n textarea&,\n select[multiple]& {\n height: auto;\n }\n}\n","//\n// Buttons\n// --------------------------------------------------\n\n\n// Base styles\n// --------------------------------------------------\n\n.btn {\n display: inline-block;\n margin-bottom: 0; // For input.btn\n font-weight: @btn-font-weight;\n text-align: center;\n vertical-align: middle;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid transparent;\n white-space: nowrap;\n .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @btn-border-radius-base);\n .user-select(none);\n\n &,\n &:active,\n &.active {\n &:focus,\n &.focus {\n .tab-focus();\n }\n }\n\n &:hover,\n &:focus,\n &.focus {\n color: @btn-default-color;\n text-decoration: none;\n }\n\n &:active,\n &.active {\n outline: 0;\n background-image: none;\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n .opacity(.65);\n .box-shadow(none);\n }\n\n a& {\n &.disabled,\n fieldset[disabled] & {\n pointer-events: none; // Future-proof disabling of clicks on `` elements\n }\n }\n}\n\n\n// Alternate buttons\n// --------------------------------------------------\n\n.btn-default {\n .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border);\n}\n.btn-primary {\n .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border);\n}\n// Success appears as green\n.btn-success {\n .button-variant(@btn-success-color; @btn-success-bg; @btn-success-border);\n}\n// Info appears as blue-green\n.btn-info {\n .button-variant(@btn-info-color; @btn-info-bg; @btn-info-border);\n}\n// Warning appears as orange\n.btn-warning {\n .button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border);\n}\n// Danger and error appear as red\n.btn-danger {\n .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border);\n}\n\n\n// Link buttons\n// -------------------------\n\n// Make a button look and behave like a link\n.btn-link {\n color: @link-color;\n font-weight: normal;\n border-radius: 0;\n\n &,\n &:active,\n &.active,\n &[disabled],\n fieldset[disabled] & {\n background-color: transparent;\n .box-shadow(none);\n }\n &,\n &:hover,\n &:focus,\n &:active {\n border-color: transparent;\n }\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: @link-hover-decoration;\n background-color: transparent;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @btn-link-disabled-color;\n text-decoration: none;\n }\n }\n}\n\n\n// Button Sizes\n// --------------------------------------------------\n\n.btn-lg {\n // line-height: ensure even-numbered height of button next to large input\n .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @btn-border-radius-large);\n}\n.btn-sm {\n // line-height: ensure proper height of button next to small input\n .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);\n}\n.btn-xs {\n .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);\n}\n\n\n// Block button\n// --------------------------------------------------\n\n.btn-block {\n display: block;\n width: 100%;\n}\n\n// Vertically space out multiple block buttons\n.btn-block + .btn-block {\n margin-top: 5px;\n}\n\n// Specificity overrides\ninput[type=\"submit\"],\ninput[type=\"reset\"],\ninput[type=\"button\"] {\n &.btn-block {\n width: 100%;\n }\n}\n","// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n.button-variant(@color; @background; @border) {\n color: @color;\n background-color: @background;\n border-color: @border;\n\n &:focus,\n &.focus {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 25%);\n }\n &:hover {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 12%);\n }\n &:active,\n &.active,\n .open > .dropdown-toggle& {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 12%);\n\n &:hover,\n &:focus,\n &.focus {\n color: @color;\n background-color: darken(@background, 17%);\n border-color: darken(@border, 25%);\n }\n }\n &:active,\n &.active,\n .open > .dropdown-toggle& {\n background-image: none;\n }\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus,\n &.focus {\n background-color: @background;\n border-color: @border;\n }\n }\n\n .badge {\n color: @background;\n background-color: @color;\n }\n}\n\n// Button sizes\n.button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n}\n","// Opacity\n\n.opacity(@opacity) {\n opacity: @opacity;\n // IE8 filter\n @opacity-ie: (@opacity * 100);\n filter: ~\"alpha(opacity=@{opacity-ie})\";\n}\n","//\n// Component animations\n// --------------------------------------------------\n\n// Heads up!\n//\n// We don't use the `.opacity()` mixin here since it causes a bug with text\n// fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552.\n\n.fade {\n opacity: 0;\n .transition(opacity .15s linear);\n &.in {\n opacity: 1;\n }\n}\n\n.collapse {\n display: none;\n\n &.in { display: block; }\n tr&.in { display: table-row; }\n tbody&.in { display: table-row-group; }\n}\n\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n .transition-property(~\"height, visibility\");\n .transition-duration(.35s);\n .transition-timing-function(ease);\n}\n","//\n// Dropdown menus\n// --------------------------------------------------\n\n\n// Dropdown arrow/caret\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: @caret-width-base dashed;\n border-top: @caret-width-base solid ~\"\\9\"; // IE8\n border-right: @caret-width-base solid transparent;\n border-left: @caret-width-base solid transparent;\n}\n\n// The dropdown wrapper (div)\n.dropup,\n.dropdown {\n position: relative;\n}\n\n// Prevent the focus on the dropdown toggle when closing dropdowns\n.dropdown-toggle:focus {\n outline: 0;\n}\n\n// The dropdown menu (ul)\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: @zindex-dropdown;\n display: none; // none by default, but block on \"open\" of the menu\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0; // override default ul\n list-style: none;\n font-size: @font-size-base;\n text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)\n background-color: @dropdown-bg;\n border: 1px solid @dropdown-fallback-border; // IE8 fallback\n border: 1px solid @dropdown-border;\n border-radius: @border-radius-base;\n .box-shadow(0 6px 12px rgba(0,0,0,.175));\n background-clip: padding-box;\n\n // Aligns the dropdown menu to right\n //\n // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]`\n &.pull-right {\n right: 0;\n left: auto;\n }\n\n // Dividers (basically an hr) within the dropdown\n .divider {\n .nav-divider(@dropdown-divider-bg);\n }\n\n // Links within the dropdown menu\n > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: @line-height-base;\n color: @dropdown-link-color;\n white-space: nowrap; // prevent links from randomly breaking onto new lines\n }\n}\n\n// Hover/Focus state\n.dropdown-menu > li > a {\n &:hover,\n &:focus {\n text-decoration: none;\n color: @dropdown-link-hover-color;\n background-color: @dropdown-link-hover-bg;\n }\n}\n\n// Active state\n.dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: @dropdown-link-active-color;\n text-decoration: none;\n outline: 0;\n background-color: @dropdown-link-active-bg;\n }\n}\n\n// Disabled state\n//\n// Gray out text and ensure the hover/focus state remains gray\n\n.dropdown-menu > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @dropdown-link-disabled-color;\n }\n\n // Nuke hover/focus effects\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: transparent;\n background-image: none; // Remove CSS gradient\n .reset-filter();\n cursor: @cursor-disabled;\n }\n}\n\n// Open state for the dropdown\n.open {\n // Show the menu\n > .dropdown-menu {\n display: block;\n }\n\n // Remove the outline when :focus is triggered\n > a {\n outline: 0;\n }\n}\n\n// Menu positioning\n//\n// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown\n// menu with the parent.\n.dropdown-menu-right {\n left: auto; // Reset the default from `.dropdown-menu`\n right: 0;\n}\n// With v3, we enabled auto-flipping if you have a dropdown within a right\n// aligned nav component. To enable the undoing of that, we provide an override\n// to restore the default dropdown menu alignment.\n//\n// This is only for left-aligning a dropdown menu within a `.navbar-right` or\n// `.pull-right` nav component.\n.dropdown-menu-left {\n left: 0;\n right: auto;\n}\n\n// Dropdown section headers\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: @font-size-small;\n line-height: @line-height-base;\n color: @dropdown-header-color;\n white-space: nowrap; // as with > li > a\n}\n\n// Backdrop to catch body clicks on mobile, etc.\n.dropdown-backdrop {\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n z-index: (@zindex-dropdown - 10);\n}\n\n// Right aligned dropdowns\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n\n// Allow for dropdowns to go bottom up (aka, dropup-menu)\n//\n// Just add .dropup after the standard .dropdown class and you're set, bro.\n// TODO: abstract this so that the navbar fixed styles are not placed here?\n\n.dropup,\n.navbar-fixed-bottom .dropdown {\n // Reverse the caret\n .caret {\n border-top: 0;\n border-bottom: @caret-width-base dashed;\n border-bottom: @caret-width-base solid ~\"\\9\"; // IE8\n content: \"\";\n }\n // Different positioning for bottom up menu\n .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n }\n}\n\n\n// Component alignment\n//\n// Reiterate per navbar.less and the modified component alignment there.\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-right {\n .dropdown-menu {\n .dropdown-menu-right();\n }\n // Necessary for overrides of the default right aligned menu.\n // Will remove come v4 in all likelihood.\n .dropdown-menu-left {\n .dropdown-menu-left();\n }\n }\n}\n","// Horizontal dividers\n//\n// Dividers (basically an hr) within dropdowns and nav lists\n\n.nav-divider(@color: #e5e5e5) {\n height: 1px;\n margin: ((@line-height-computed / 2) - 1) 0;\n overflow: hidden;\n background-color: @color;\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n","//\n// Button groups\n// --------------------------------------------------\n\n// Make the div behave like a button\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle; // match .btn alignment given font-size hack above\n > .btn {\n position: relative;\n float: left;\n // Bring the \"active\" button to the front\n &:hover,\n &:focus,\n &:active,\n &.active {\n z-index: 2;\n }\n }\n}\n\n// Prevent double borders when buttons are next to each other\n.btn-group {\n .btn + .btn,\n .btn + .btn-group,\n .btn-group + .btn,\n .btn-group + .btn-group {\n margin-left: -1px;\n }\n}\n\n// Optional: Group multiple button groups together for a toolbar\n.btn-toolbar {\n margin-left: -5px; // Offset the first child's margin\n &:extend(.clearfix all);\n\n .btn,\n .btn-group,\n .input-group {\n float: left;\n }\n > .btn,\n > .btn-group,\n > .input-group {\n margin-left: 5px;\n }\n}\n\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n\n// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match\n.btn-group > .btn:first-child {\n margin-left: 0;\n &:not(:last-child):not(.dropdown-toggle) {\n .border-right-radius(0);\n }\n}\n// Need .dropdown-toggle since :last-child doesn't apply, given that a .dropdown-menu is used immediately after it\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n .border-left-radius(0);\n}\n\n// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-right-radius(0);\n }\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n .border-left-radius(0);\n}\n\n// On active and open, don't show outline\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n\n\n// Sizing\n//\n// Remix the default button sizing classes into new ones for easier manipulation.\n\n.btn-group-xs > .btn { &:extend(.btn-xs); }\n.btn-group-sm > .btn { &:extend(.btn-sm); }\n.btn-group-lg > .btn { &:extend(.btn-lg); }\n\n\n// Split button dropdowns\n// ----------------------\n\n// Give the line between buttons some depth\n.btn-group > .btn + .dropdown-toggle {\n padding-left: 8px;\n padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-left: 12px;\n padding-right: 12px;\n}\n\n// The clickable button for toggling the menu\n// Remove the gradient and set the same inset shadow as the :active state\n.btn-group.open .dropdown-toggle {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n\n // Show no shadow for `.btn-link` since it has no other button styles.\n &.btn-link {\n .box-shadow(none);\n }\n}\n\n\n// Reposition the caret\n.btn .caret {\n margin-left: 0;\n}\n// Carets in other button sizes\n.btn-lg .caret {\n border-width: @caret-width-large @caret-width-large 0;\n border-bottom-width: 0;\n}\n// Upside down carets for .dropup\n.dropup .btn-lg .caret {\n border-width: 0 @caret-width-large @caret-width-large;\n}\n\n\n// Vertical button groups\n// ----------------------\n\n.btn-group-vertical {\n > .btn,\n > .btn-group,\n > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n }\n\n // Clear floats so dropdown menus can be properly placed\n > .btn-group {\n &:extend(.clearfix all);\n > .btn {\n float: none;\n }\n }\n\n > .btn + .btn,\n > .btn + .btn-group,\n > .btn-group + .btn,\n > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n }\n}\n\n.btn-group-vertical > .btn {\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n &:first-child:not(:last-child) {\n .border-top-radius(@btn-border-radius-base);\n .border-bottom-radius(0);\n }\n &:last-child:not(:first-child) {\n .border-top-radius(0);\n .border-bottom-radius(@btn-border-radius-base);\n }\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-bottom-radius(0);\n }\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n .border-top-radius(0);\n}\n\n\n// Justified button groups\n// ----------------------\n\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n > .btn,\n > .btn-group {\n float: none;\n display: table-cell;\n width: 1%;\n }\n > .btn-group .btn {\n width: 100%;\n }\n\n > .btn-group .dropdown-menu {\n left: auto;\n }\n}\n\n\n// Checkbox and radio options\n//\n// In order to support the browser's form validation feedback, powered by the\n// `required` attribute, we have to \"hide\" the inputs via `clip`. We cannot use\n// `display: none;` or `visibility: hidden;` as that also hides the popover.\n// Simply visually hiding the inputs via `opacity` would leave them clickable in\n// certain cases which is prevented by using `clip` and `pointer-events`.\n// This way, we ensure a DOM element is visible to position the popover from.\n//\n// See https://github.com/twbs/bootstrap/pull/12794 and\n// https://github.com/twbs/bootstrap/pull/14559 for more information.\n\n[data-toggle=\"buttons\"] {\n > .btn,\n > .btn-group > .btn {\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0,0,0,0);\n pointer-events: none;\n }\n }\n}\n","// Single side border-radius\n\n.border-top-radius(@radius) {\n border-top-right-radius: @radius;\n border-top-left-radius: @radius;\n}\n.border-right-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-top-right-radius: @radius;\n}\n.border-bottom-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-bottom-left-radius: @radius;\n}\n.border-left-radius(@radius) {\n border-bottom-left-radius: @radius;\n border-top-left-radius: @radius;\n}\n","//\n// Input groups\n// --------------------------------------------------\n\n// Base styles\n// -------------------------\n.input-group {\n position: relative; // For dropdowns\n display: table;\n border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table\n\n // Undo padding and float of grid classes\n &[class*=\"col-\"] {\n float: none;\n padding-left: 0;\n padding-right: 0;\n }\n\n .form-control {\n // Ensure that the input is always above the *appended* addon button for\n // proper border colors.\n position: relative;\n z-index: 2;\n\n // IE9 fubars the placeholder attribute in text inputs and the arrows on\n // select elements in input groups. To fix it, we float the input. Details:\n // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855\n float: left;\n\n width: 100%;\n margin-bottom: 0;\n\n &:focus {\n z-index: 3;\n }\n }\n}\n\n// Sizing options\n//\n// Remix the default form control sizing classes into new ones for easier\n// manipulation.\n\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n .input-lg();\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n .input-sm();\n}\n\n\n// Display as table-cell\n// -------------------------\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n}\n// Addon and addon wrapper for buttons\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle; // Match the inputs\n}\n\n// Text input groups\n// -------------------------\n.input-group-addon {\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n font-weight: normal;\n line-height: 1;\n color: @input-color;\n text-align: center;\n background-color: @input-group-addon-bg;\n border: 1px solid @input-group-addon-border-color;\n border-radius: @input-border-radius;\n\n // Sizing\n &.input-sm {\n padding: @padding-small-vertical @padding-small-horizontal;\n font-size: @font-size-small;\n border-radius: @input-border-radius-small;\n }\n &.input-lg {\n padding: @padding-large-vertical @padding-large-horizontal;\n font-size: @font-size-large;\n border-radius: @input-border-radius-large;\n }\n\n // Nuke default margins from checkboxes and radios to vertically center within.\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n margin-top: 0;\n }\n}\n\n// Reset rounded corners\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n .border-right-radius(0);\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n .border-left-radius(0);\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n\n// Button input groups\n// -------------------------\n.input-group-btn {\n position: relative;\n // Jankily prevent input button groups from wrapping with `white-space` and\n // `font-size` in combination with `inline-block` on buttons.\n font-size: 0;\n white-space: nowrap;\n\n // Negative margin for spacing, position for bringing hovered/focused/actived\n // element above the siblings.\n > .btn {\n position: relative;\n + .btn {\n margin-left: -1px;\n }\n // Bring the \"active\" button to the front\n &:hover,\n &:focus,\n &:active {\n z-index: 2;\n }\n }\n\n // Negative margin to only have a 1px border between the two\n &:first-child {\n > .btn,\n > .btn-group {\n margin-right: -1px;\n }\n }\n &:last-child {\n > .btn,\n > .btn-group {\n z-index: 2;\n margin-left: -1px;\n }\n }\n}\n","//\n// Navs\n// --------------------------------------------------\n\n\n// Base class\n// --------------------------------------------------\n\n.nav {\n margin-bottom: 0;\n padding-left: 0; // Override default ul/ol\n list-style: none;\n &:extend(.clearfix all);\n\n > li {\n position: relative;\n display: block;\n\n > a {\n position: relative;\n display: block;\n padding: @nav-link-padding;\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: @nav-link-hover-bg;\n }\n }\n\n // Disabled state sets text to gray and nukes hover/tab effects\n &.disabled > a {\n color: @nav-disabled-link-color;\n\n &:hover,\n &:focus {\n color: @nav-disabled-link-hover-color;\n text-decoration: none;\n background-color: transparent;\n cursor: @cursor-disabled;\n }\n }\n }\n\n // Open dropdowns\n .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @nav-link-hover-bg;\n border-color: @link-color;\n }\n }\n\n // Nav dividers (deprecated with v3.0.1)\n //\n // This should have been removed in v3 with the dropping of `.nav-list`, but\n // we missed it. We don't currently support this anywhere, but in the interest\n // of maintaining backward compatibility in case you use it, it's deprecated.\n .nav-divider {\n .nav-divider();\n }\n\n // Prevent IE8 from misplacing imgs\n //\n // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989\n > li > a > img {\n max-width: none;\n }\n}\n\n\n// Tabs\n// -------------------------\n\n// Give the tabs something to sit on\n.nav-tabs {\n border-bottom: 1px solid @nav-tabs-border-color;\n > li {\n float: left;\n // Make the list-items overlay the bottom border\n margin-bottom: -1px;\n\n // Actual tabs (as links)\n > a {\n margin-right: 2px;\n line-height: @line-height-base;\n border: 1px solid transparent;\n border-radius: @border-radius-base @border-radius-base 0 0;\n &:hover {\n border-color: @nav-tabs-link-hover-border-color @nav-tabs-link-hover-border-color @nav-tabs-border-color;\n }\n }\n\n // Active state, and its :hover to override normal :hover\n &.active > a {\n &,\n &:hover,\n &:focus {\n color: @nav-tabs-active-link-hover-color;\n background-color: @nav-tabs-active-link-hover-bg;\n border: 1px solid @nav-tabs-active-link-hover-border-color;\n border-bottom-color: transparent;\n cursor: default;\n }\n }\n }\n // pulling this in mainly for less shorthand\n &.nav-justified {\n .nav-justified();\n .nav-tabs-justified();\n }\n}\n\n\n// Pills\n// -------------------------\n.nav-pills {\n > li {\n float: left;\n\n // Links rendered as pills\n > a {\n border-radius: @nav-pills-border-radius;\n }\n + li {\n margin-left: 2px;\n }\n\n // Active state\n &.active > a {\n &,\n &:hover,\n &:focus {\n color: @nav-pills-active-link-hover-color;\n background-color: @nav-pills-active-link-hover-bg;\n }\n }\n }\n}\n\n\n// Stacked pills\n.nav-stacked {\n > li {\n float: none;\n + li {\n margin-top: 2px;\n margin-left: 0; // no need for this gap between nav items\n }\n }\n}\n\n\n// Nav variations\n// --------------------------------------------------\n\n// Justified nav links\n// -------------------------\n\n.nav-justified {\n width: 100%;\n\n > li {\n float: none;\n > a {\n text-align: center;\n margin-bottom: 5px;\n }\n }\n\n > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n }\n\n @media (min-width: @screen-sm-min) {\n > li {\n display: table-cell;\n width: 1%;\n > a {\n margin-bottom: 0;\n }\n }\n }\n}\n\n// Move borders to anchors instead of bottom of list\n//\n// Mixin for adding on top the shared `.nav-justified` styles for our tabs\n.nav-tabs-justified {\n border-bottom: 0;\n\n > li > a {\n // Override margin from .nav-tabs\n margin-right: 0;\n border-radius: @border-radius-base;\n }\n\n > .active > a,\n > .active > a:hover,\n > .active > a:focus {\n border: 1px solid @nav-tabs-justified-link-border-color;\n }\n\n @media (min-width: @screen-sm-min) {\n > li > a {\n border-bottom: 1px solid @nav-tabs-justified-link-border-color;\n border-radius: @border-radius-base @border-radius-base 0 0;\n }\n > .active > a,\n > .active > a:hover,\n > .active > a:focus {\n border-bottom-color: @nav-tabs-justified-active-link-border-color;\n }\n }\n}\n\n\n// Tabbable tabs\n// -------------------------\n\n// Hide tabbable panes to start, show them when `.active`\n.tab-content {\n > .tab-pane {\n display: none;\n }\n > .active {\n display: block;\n }\n}\n\n\n// Dropdowns\n// -------------------------\n\n// Specific dropdowns\n.nav-tabs .dropdown-menu {\n // make dropdown border overlap tab border\n margin-top: -1px;\n // Remove the top rounded corners here since there is a hard edge above the menu\n .border-top-radius(0);\n}\n","//\n// Navbars\n// --------------------------------------------------\n\n\n// Wrapper and base class\n//\n// Provide a static navbar from which we expand to create full-width, fixed, and\n// other navbar variations.\n\n.navbar {\n position: relative;\n min-height: @navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode)\n margin-bottom: @navbar-margin-bottom;\n border: 1px solid transparent;\n\n // Prevent floats from breaking the navbar\n &:extend(.clearfix all);\n\n @media (min-width: @grid-float-breakpoint) {\n border-radius: @navbar-border-radius;\n }\n}\n\n\n// Navbar heading\n//\n// Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy\n// styling of responsive aspects.\n\n.navbar-header {\n &:extend(.clearfix all);\n\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n }\n}\n\n\n// Navbar collapse (body)\n//\n// Group your navbar content into this for easy collapsing and expanding across\n// various device sizes. By default, this content is collapsed when <768px, but\n// will expand past that for a horizontal display.\n//\n// To start (on mobile devices) the navbar links, forms, and buttons are stacked\n// vertically and include a `max-height` to overflow in case you have too much\n// content for the user's viewport.\n\n.navbar-collapse {\n overflow-x: visible;\n padding-right: @navbar-padding-horizontal;\n padding-left: @navbar-padding-horizontal;\n border-top: 1px solid transparent;\n box-shadow: inset 0 1px 0 rgba(255,255,255,.1);\n &:extend(.clearfix all);\n -webkit-overflow-scrolling: touch;\n\n &.in {\n overflow-y: auto;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n width: auto;\n border-top: 0;\n box-shadow: none;\n\n &.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0; // Override default setting\n overflow: visible !important;\n }\n\n &.in {\n overflow-y: visible;\n }\n\n // Undo the collapse side padding for navbars with containers to ensure\n // alignment of right-aligned contents.\n .navbar-fixed-top &,\n .navbar-static-top &,\n .navbar-fixed-bottom & {\n padding-left: 0;\n padding-right: 0;\n }\n }\n}\n\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n .navbar-collapse {\n max-height: @navbar-collapse-max-height;\n\n @media (max-device-width: @screen-xs-min) and (orientation: landscape) {\n max-height: 200px;\n }\n }\n}\n\n\n// Both navbar header and collapse\n//\n// When a container is present, change the behavior of the header and collapse.\n\n.container,\n.container-fluid {\n > .navbar-header,\n > .navbar-collapse {\n margin-right: -@navbar-padding-horizontal;\n margin-left: -@navbar-padding-horizontal;\n\n @media (min-width: @grid-float-breakpoint) {\n margin-right: 0;\n margin-left: 0;\n }\n }\n}\n\n\n//\n// Navbar alignment options\n//\n// Display the navbar across the entirety of the page or fixed it to the top or\n// bottom of the page.\n\n// Static top (unfixed, but 100% wide) navbar\n.navbar-static-top {\n z-index: @zindex-navbar;\n border-width: 0 0 1px;\n\n @media (min-width: @grid-float-breakpoint) {\n border-radius: 0;\n }\n}\n\n// Fix the top/bottom navbars when screen real estate supports it\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: @zindex-navbar-fixed;\n\n // Undo the rounded corners\n @media (min-width: @grid-float-breakpoint) {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0; // override .navbar defaults\n border-width: 1px 0 0;\n}\n\n\n// Brand/project name\n\n.navbar-brand {\n float: left;\n padding: @navbar-padding-vertical @navbar-padding-horizontal;\n font-size: @font-size-large;\n line-height: @line-height-computed;\n height: @navbar-height;\n\n &:hover,\n &:focus {\n text-decoration: none;\n }\n\n > img {\n display: block;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n .navbar > .container &,\n .navbar > .container-fluid & {\n margin-left: -@navbar-padding-horizontal;\n }\n }\n}\n\n\n// Navbar toggle\n//\n// Custom button for toggling the `.navbar-collapse`, powered by the collapse\n// JavaScript plugin.\n\n.navbar-toggle {\n position: relative;\n float: right;\n margin-right: @navbar-padding-horizontal;\n padding: 9px 10px;\n .navbar-vertical-align(34px);\n background-color: transparent;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid transparent;\n border-radius: @border-radius-base;\n\n // We remove the `outline` here, but later compensate by attaching `:hover`\n // styles to `:focus`.\n &:focus {\n outline: 0;\n }\n\n // Bars\n .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n }\n .icon-bar + .icon-bar {\n margin-top: 4px;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n display: none;\n }\n}\n\n\n// Navbar nav links\n//\n// Builds on top of the `.nav` components with its own modifier class to make\n// the nav the full height of the horizontal nav (above 768px).\n\n.navbar-nav {\n margin: (@navbar-padding-vertical / 2) -@navbar-padding-horizontal;\n\n > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: @line-height-computed;\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display when collapsed\n .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n box-shadow: none;\n > li > a,\n .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n > li > a {\n line-height: @line-height-computed;\n &:hover,\n &:focus {\n background-image: none;\n }\n }\n }\n }\n\n // Uncollapse the nav\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n margin: 0;\n\n > li {\n float: left;\n > a {\n padding-top: @navbar-padding-vertical;\n padding-bottom: @navbar-padding-vertical;\n }\n }\n }\n}\n\n\n// Navbar form\n//\n// Extension of the `.form-inline` with some extra flavor for optimum display in\n// our navbars.\n\n.navbar-form {\n margin-left: -@navbar-padding-horizontal;\n margin-right: -@navbar-padding-horizontal;\n padding: 10px @navbar-padding-horizontal;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n @shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n\n // Mixin behavior for optimum display\n .form-inline();\n\n .form-group {\n @media (max-width: @grid-float-breakpoint-max) {\n margin-bottom: 5px;\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n }\n\n // Vertically center in expanded, horizontal navbar\n .navbar-vertical-align(@input-height-base);\n\n // Undo 100% width for pull classes\n @media (min-width: @grid-float-breakpoint) {\n width: auto;\n border: 0;\n margin-left: 0;\n margin-right: 0;\n padding-top: 0;\n padding-bottom: 0;\n .box-shadow(none);\n }\n}\n\n\n// Dropdown menus\n\n// Menu position and menu carets\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n .border-top-radius(0);\n}\n// Menu position and menu caret support for dropups via extra dropup class\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n .border-top-radius(@navbar-border-radius);\n .border-bottom-radius(0);\n}\n\n\n// Buttons in navbars\n//\n// Vertically center a button within a navbar (when *not* in a form).\n\n.navbar-btn {\n .navbar-vertical-align(@input-height-base);\n\n &.btn-sm {\n .navbar-vertical-align(@input-height-small);\n }\n &.btn-xs {\n .navbar-vertical-align(22);\n }\n}\n\n\n// Text in navbars\n//\n// Add a class to make any element properly align itself vertically within the navbars.\n\n.navbar-text {\n .navbar-vertical-align(@line-height-computed);\n\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n margin-left: @navbar-padding-horizontal;\n margin-right: @navbar-padding-horizontal;\n }\n}\n\n\n// Component alignment\n//\n// Repurpose the pull utilities as their own navbar utilities to avoid specificity\n// issues with parents and chaining. Only do this when the navbar is uncollapsed\n// though so that navbar contents properly stack and align in mobile.\n//\n// Declared after the navbar components to ensure more specificity on the margins.\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-left { .pull-left(); }\n .navbar-right {\n .pull-right();\n margin-right: -@navbar-padding-horizontal;\n\n ~ .navbar-right {\n margin-right: 0;\n }\n }\n}\n\n\n// Alternate navbars\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n background-color: @navbar-default-bg;\n border-color: @navbar-default-border;\n\n .navbar-brand {\n color: @navbar-default-brand-color;\n &:hover,\n &:focus {\n color: @navbar-default-brand-hover-color;\n background-color: @navbar-default-brand-hover-bg;\n }\n }\n\n .navbar-text {\n color: @navbar-default-color;\n }\n\n .navbar-nav {\n > li > a {\n color: @navbar-default-link-color;\n\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n background-color: @navbar-default-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-active-color;\n background-color: @navbar-default-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n background-color: @navbar-default-link-disabled-bg;\n }\n }\n }\n\n .navbar-toggle {\n border-color: @navbar-default-toggle-border-color;\n &:hover,\n &:focus {\n background-color: @navbar-default-toggle-hover-bg;\n }\n .icon-bar {\n background-color: @navbar-default-toggle-icon-bar-bg;\n }\n }\n\n .navbar-collapse,\n .navbar-form {\n border-color: @navbar-default-border;\n }\n\n // Dropdown menu items\n .navbar-nav {\n // Remove background color from open dropdown\n > .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @navbar-default-link-active-bg;\n color: @navbar-default-link-active-color;\n }\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display when collapsed\n .open .dropdown-menu {\n > li > a {\n color: @navbar-default-link-color;\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n background-color: @navbar-default-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-active-color;\n background-color: @navbar-default-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n background-color: @navbar-default-link-disabled-bg;\n }\n }\n }\n }\n }\n\n\n // Links in navbars\n //\n // Add a class to ensure links outside the navbar nav are colored correctly.\n\n .navbar-link {\n color: @navbar-default-link-color;\n &:hover {\n color: @navbar-default-link-hover-color;\n }\n }\n\n .btn-link {\n color: @navbar-default-link-color;\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n }\n }\n }\n}\n\n// Inverse navbar\n\n.navbar-inverse {\n background-color: @navbar-inverse-bg;\n border-color: @navbar-inverse-border;\n\n .navbar-brand {\n color: @navbar-inverse-brand-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-brand-hover-color;\n background-color: @navbar-inverse-brand-hover-bg;\n }\n }\n\n .navbar-text {\n color: @navbar-inverse-color;\n }\n\n .navbar-nav {\n > li > a {\n color: @navbar-inverse-link-color;\n\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n background-color: @navbar-inverse-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-active-color;\n background-color: @navbar-inverse-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n background-color: @navbar-inverse-link-disabled-bg;\n }\n }\n }\n\n // Darken the responsive nav toggle\n .navbar-toggle {\n border-color: @navbar-inverse-toggle-border-color;\n &:hover,\n &:focus {\n background-color: @navbar-inverse-toggle-hover-bg;\n }\n .icon-bar {\n background-color: @navbar-inverse-toggle-icon-bar-bg;\n }\n }\n\n .navbar-collapse,\n .navbar-form {\n border-color: darken(@navbar-inverse-bg, 7%);\n }\n\n // Dropdowns\n .navbar-nav {\n > .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @navbar-inverse-link-active-bg;\n color: @navbar-inverse-link-active-color;\n }\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display\n .open .dropdown-menu {\n > .dropdown-header {\n border-color: @navbar-inverse-border;\n }\n .divider {\n background-color: @navbar-inverse-border;\n }\n > li > a {\n color: @navbar-inverse-link-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n background-color: @navbar-inverse-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-active-color;\n background-color: @navbar-inverse-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n background-color: @navbar-inverse-link-disabled-bg;\n }\n }\n }\n }\n }\n\n .navbar-link {\n color: @navbar-inverse-link-color;\n &:hover {\n color: @navbar-inverse-link-hover-color;\n }\n }\n\n .btn-link {\n color: @navbar-inverse-link-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n }\n }\n }\n}\n","// Navbar vertical align\n//\n// Vertically center elements in the navbar.\n// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.\n\n.navbar-vertical-align(@element-height) {\n margin-top: ((@navbar-height - @element-height) / 2);\n margin-bottom: ((@navbar-height - @element-height) / 2);\n}\n","//\n// Utility classes\n// --------------------------------------------------\n\n\n// Floats\n// -------------------------\n\n.clearfix {\n .clearfix();\n}\n.center-block {\n .center-block();\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n\n\n// Toggling content\n// -------------------------\n\n// Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n .text-hide();\n}\n\n\n// Hide from screenreaders and browsers\n//\n// Credit: HTML5 Boilerplate\n\n.hidden {\n display: none !important;\n}\n\n\n// For Affix plugin\n// -------------------------\n\n.affix {\n position: fixed;\n}\n","//\n// Breadcrumbs\n// --------------------------------------------------\n\n\n.breadcrumb {\n padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal;\n margin-bottom: @line-height-computed;\n list-style: none;\n background-color: @breadcrumb-bg;\n border-radius: @border-radius-base;\n\n > li {\n display: inline-block;\n\n + li:before {\n content: \"@{breadcrumb-separator}\\00a0\"; // Unicode space added since inline-block means non-collapsing white-space\n padding: 0 5px;\n color: @breadcrumb-color;\n }\n }\n\n > .active {\n color: @breadcrumb-active-color;\n }\n}\n","//\n// Pagination (multiple pages)\n// --------------------------------------------------\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: @line-height-computed 0;\n border-radius: @border-radius-base;\n\n > li {\n display: inline; // Remove list-style and block-level defaults\n > a,\n > span {\n position: relative;\n float: left; // Collapse white-space\n padding: @padding-base-vertical @padding-base-horizontal;\n line-height: @line-height-base;\n text-decoration: none;\n color: @pagination-color;\n background-color: @pagination-bg;\n border: 1px solid @pagination-border;\n margin-left: -1px;\n }\n &:first-child {\n > a,\n > span {\n margin-left: 0;\n .border-left-radius(@border-radius-base);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius-base);\n }\n }\n }\n\n > li > a,\n > li > span {\n &:hover,\n &:focus {\n z-index: 2;\n color: @pagination-hover-color;\n background-color: @pagination-hover-bg;\n border-color: @pagination-hover-border;\n }\n }\n\n > .active > a,\n > .active > span {\n &,\n &:hover,\n &:focus {\n z-index: 3;\n color: @pagination-active-color;\n background-color: @pagination-active-bg;\n border-color: @pagination-active-border;\n cursor: default;\n }\n }\n\n > .disabled {\n > span,\n > span:hover,\n > span:focus,\n > a,\n > a:hover,\n > a:focus {\n color: @pagination-disabled-color;\n background-color: @pagination-disabled-bg;\n border-color: @pagination-disabled-border;\n cursor: @cursor-disabled;\n }\n }\n}\n\n// Sizing\n// --------------------------------------------------\n\n// Large\n.pagination-lg {\n .pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);\n}\n\n// Small\n.pagination-sm {\n .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n","// Pagination\n\n.pagination-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n > li {\n > a,\n > span {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n }\n &:first-child {\n > a,\n > span {\n .border-left-radius(@border-radius);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius);\n }\n }\n }\n}\n","//\n// Pager pagination\n// --------------------------------------------------\n\n\n.pager {\n padding-left: 0;\n margin: @line-height-computed 0;\n list-style: none;\n text-align: center;\n &:extend(.clearfix all);\n li {\n display: inline;\n > a,\n > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: @pager-bg;\n border: 1px solid @pager-border;\n border-radius: @pager-border-radius;\n }\n\n > a:hover,\n > a:focus {\n text-decoration: none;\n background-color: @pager-hover-bg;\n }\n }\n\n .next {\n > a,\n > span {\n float: right;\n }\n }\n\n .previous {\n > a,\n > span {\n float: left;\n }\n }\n\n .disabled {\n > a,\n > a:hover,\n > a:focus,\n > span {\n color: @pager-disabled-color;\n background-color: @pager-bg;\n cursor: @cursor-disabled;\n }\n }\n}\n","//\n// Labels\n// --------------------------------------------------\n\n.label {\n display: inline;\n padding: .2em .6em .3em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: @label-color;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: .25em;\n\n // Add hover effects, but only for links\n a& {\n &:hover,\n &:focus {\n color: @label-link-hover-color;\n text-decoration: none;\n cursor: pointer;\n }\n }\n\n // Empty labels collapse automatically (not available in IE8)\n &:empty {\n display: none;\n }\n\n // Quick fix for labels in buttons\n .btn & {\n position: relative;\n top: -1px;\n }\n}\n\n// Colors\n// Contextual variations (linked labels get darker on :hover)\n\n.label-default {\n .label-variant(@label-default-bg);\n}\n\n.label-primary {\n .label-variant(@label-primary-bg);\n}\n\n.label-success {\n .label-variant(@label-success-bg);\n}\n\n.label-info {\n .label-variant(@label-info-bg);\n}\n\n.label-warning {\n .label-variant(@label-warning-bg);\n}\n\n.label-danger {\n .label-variant(@label-danger-bg);\n}\n","// Labels\n\n.label-variant(@color) {\n background-color: @color;\n\n &[href] {\n &:hover,\n &:focus {\n background-color: darken(@color, 10%);\n }\n }\n}\n","//\n// Badges\n// --------------------------------------------------\n\n\n// Base class\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: @font-size-small;\n font-weight: @badge-font-weight;\n color: @badge-color;\n line-height: @badge-line-height;\n vertical-align: middle;\n white-space: nowrap;\n text-align: center;\n background-color: @badge-bg;\n border-radius: @badge-border-radius;\n\n // Empty badges collapse automatically (not available in IE8)\n &:empty {\n display: none;\n }\n\n // Quick fix for badges in buttons\n .btn & {\n position: relative;\n top: -1px;\n }\n\n .btn-xs &,\n .btn-group-xs > .btn & {\n top: 0;\n padding: 1px 5px;\n }\n\n // Hover state, but only for links\n a& {\n &:hover,\n &:focus {\n color: @badge-link-hover-color;\n text-decoration: none;\n cursor: pointer;\n }\n }\n\n // Account for badges in navs\n .list-group-item.active > &,\n .nav-pills > .active > a > & {\n color: @badge-active-color;\n background-color: @badge-active-bg;\n }\n\n .list-group-item > & {\n float: right;\n }\n\n .list-group-item > & + & {\n margin-right: 5px;\n }\n\n .nav-pills > li > a > & {\n margin-left: 3px;\n }\n}\n","//\n// Jumbotron\n// --------------------------------------------------\n\n\n.jumbotron {\n padding-top: @jumbotron-padding;\n padding-bottom: @jumbotron-padding;\n margin-bottom: @jumbotron-padding;\n color: @jumbotron-color;\n background-color: @jumbotron-bg;\n\n h1,\n .h1 {\n color: @jumbotron-heading-color;\n }\n\n p {\n margin-bottom: (@jumbotron-padding / 2);\n font-size: @jumbotron-font-size;\n font-weight: 200;\n }\n\n > hr {\n border-top-color: darken(@jumbotron-bg, 10%);\n }\n\n .container &,\n .container-fluid & {\n border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container\n padding-left: (@grid-gutter-width / 2);\n padding-right: (@grid-gutter-width / 2);\n }\n\n .container {\n max-width: 100%;\n }\n\n @media screen and (min-width: @screen-sm-min) {\n padding-top: (@jumbotron-padding * 1.6);\n padding-bottom: (@jumbotron-padding * 1.6);\n\n .container &,\n .container-fluid & {\n padding-left: (@jumbotron-padding * 2);\n padding-right: (@jumbotron-padding * 2);\n }\n\n h1,\n .h1 {\n font-size: @jumbotron-heading-font-size;\n }\n }\n}\n","//\n// Thumbnails\n// --------------------------------------------------\n\n\n// Mixin and adjust the regular image class\n.thumbnail {\n display: block;\n padding: @thumbnail-padding;\n margin-bottom: @line-height-computed;\n line-height: @line-height-base;\n background-color: @thumbnail-bg;\n border: 1px solid @thumbnail-border;\n border-radius: @thumbnail-border-radius;\n .transition(border .2s ease-in-out);\n\n > img,\n a > img {\n &:extend(.img-responsive);\n margin-left: auto;\n margin-right: auto;\n }\n\n // Add a hover state for linked versions only\n a&:hover,\n a&:focus,\n a&.active {\n border-color: @link-color;\n }\n\n // Image captions\n .caption {\n padding: @thumbnail-caption-padding;\n color: @thumbnail-caption-color;\n }\n}\n","//\n// Alerts\n// --------------------------------------------------\n\n\n// Base styles\n// -------------------------\n\n.alert {\n padding: @alert-padding;\n margin-bottom: @line-height-computed;\n border: 1px solid transparent;\n border-radius: @alert-border-radius;\n\n // Headings for larger alerts\n h4 {\n margin-top: 0;\n // Specified for the h4 to prevent conflicts of changing @headings-color\n color: inherit;\n }\n\n // Provide class for links that match alerts\n .alert-link {\n font-weight: @alert-link-font-weight;\n }\n\n // Improve alignment and spacing of inner content\n > p,\n > ul {\n margin-bottom: 0;\n }\n\n > p + p {\n margin-top: 5px;\n }\n}\n\n// Dismissible alerts\n//\n// Expand the right padding and account for the close button's positioning.\n\n.alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0.\n.alert-dismissible {\n padding-right: (@alert-padding + 20);\n\n // Adjust close link position\n .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n }\n}\n\n// Alternate styles\n//\n// Generate contextual modifier classes for colorizing the alert.\n\n.alert-success {\n .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text);\n}\n\n.alert-info {\n .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text);\n}\n\n.alert-warning {\n .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text);\n}\n\n.alert-danger {\n .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text);\n}\n","// Alerts\n\n.alert-variant(@background; @border; @text-color) {\n background-color: @background;\n border-color: @border;\n color: @text-color;\n\n hr {\n border-top-color: darken(@border, 5%);\n }\n .alert-link {\n color: darken(@text-color, 10%);\n }\n}\n","//\n// Progress bars\n// --------------------------------------------------\n\n\n// Bar animations\n// -------------------------\n\n// WebKit\n@-webkit-keyframes progress-bar-stripes {\n from { background-position: 40px 0; }\n to { background-position: 0 0; }\n}\n\n// Spec and IE10+\n@keyframes progress-bar-stripes {\n from { background-position: 40px 0; }\n to { background-position: 0 0; }\n}\n\n\n// Bar itself\n// -------------------------\n\n// Outer container\n.progress {\n overflow: hidden;\n height: @line-height-computed;\n margin-bottom: @line-height-computed;\n background-color: @progress-bg;\n border-radius: @progress-border-radius;\n .box-shadow(inset 0 1px 2px rgba(0,0,0,.1));\n}\n\n// Bar of progress\n.progress-bar {\n float: left;\n width: 0%;\n height: 100%;\n font-size: @font-size-small;\n line-height: @line-height-computed;\n color: @progress-bar-color;\n text-align: center;\n background-color: @progress-bar-bg;\n .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15));\n .transition(width .6s ease);\n}\n\n// Striped bars\n//\n// `.progress-striped .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar-striped` class, which you just add to an existing\n// `.progress-bar`.\n.progress-striped .progress-bar,\n.progress-bar-striped {\n #gradient > .striped();\n background-size: 40px 40px;\n}\n\n// Call animation for the active one\n//\n// `.progress.active .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar.active` approach.\n.progress.active .progress-bar,\n.progress-bar.active {\n .animation(progress-bar-stripes 2s linear infinite);\n}\n\n\n// Variations\n// -------------------------\n\n.progress-bar-success {\n .progress-bar-variant(@progress-bar-success-bg);\n}\n\n.progress-bar-info {\n .progress-bar-variant(@progress-bar-info-bg);\n}\n\n.progress-bar-warning {\n .progress-bar-variant(@progress-bar-warning-bg);\n}\n\n.progress-bar-danger {\n .progress-bar-variant(@progress-bar-danger-bg);\n}\n","// Gradients\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","// Progress bars\n\n.progress-bar-variant(@color) {\n background-color: @color;\n\n // Deprecated parent class requirement as of v3.2.0\n .progress-striped & {\n #gradient > .striped();\n }\n}\n",".media {\n // Proper spacing between instances of .media\n margin-top: 15px;\n\n &:first-child {\n margin-top: 0;\n }\n}\n\n.media,\n.media-body {\n zoom: 1;\n overflow: hidden;\n}\n\n.media-body {\n width: 10000px;\n}\n\n.media-object {\n display: block;\n\n // Fix collapse in webkit from max-width: 100% and display: table-cell.\n &.img-thumbnail {\n max-width: none;\n }\n}\n\n.media-right,\n.media > .pull-right {\n padding-left: 10px;\n}\n\n.media-left,\n.media > .pull-left {\n padding-right: 10px;\n}\n\n.media-left,\n.media-right,\n.media-body {\n display: table-cell;\n vertical-align: top;\n}\n\n.media-middle {\n vertical-align: middle;\n}\n\n.media-bottom {\n vertical-align: bottom;\n}\n\n// Reset margins on headings for tighter default spacing\n.media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n\n// Media list variation\n//\n// Undo default ul/ol styles\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n","//\n// List groups\n// --------------------------------------------------\n\n\n// Base class\n//\n// Easily usable on
From 3174b3f10e5e92b13db114025d7491cf70880326 Mon Sep 17 00:00:00 2001 From: Georgy Litvinov Date: Wed, 19 Aug 2020 16:00:26 +0200 Subject: [PATCH 064/332] Fixed query builder configuration --- webapp/src/main/webapp/themes/iph/css/iph.css | 4 +- .../themes/iph/css/query-builder-theme.css | 160 +- .../webapp/themes/iph/css/query-builder.css | 176 + .../iph/css/query-builder.default.min.css | 6 - .../src/main/webapp/themes/iph/css/screen.css | 2 +- .../themes/iph/js/query-builder-config.js | 139 +- .../webapp/themes/iph/js/query-builder.ru.js | 77 + .../themes/iph/js/query-builder.standalone.js | 6477 +++++++++++++++++ .../webapp/themes/iph/templates/page-home.ftl | 1 + 9 files changed, 6881 insertions(+), 161 deletions(-) create mode 100644 webapp/src/main/webapp/themes/iph/css/query-builder.css delete mode 100644 webapp/src/main/webapp/themes/iph/css/query-builder.default.min.css create mode 100644 webapp/src/main/webapp/themes/iph/js/query-builder.ru.js create mode 100644 webapp/src/main/webapp/themes/iph/js/query-builder.standalone.js diff --git a/webapp/src/main/webapp/themes/iph/css/iph.css b/webapp/src/main/webapp/themes/iph/css/iph.css index 5320d4ce..f7170c99 100644 --- a/webapp/src/main/webapp/themes/iph/css/iph.css +++ b/webapp/src/main/webapp/themes/iph/css/iph.css @@ -578,7 +578,7 @@ ul#main-nav { /* INTRO-BLURB ------> */ #intro { float: left; - width: 570px; + /* width: 570px; */ padding-bottom: 50px; } body.loggedIn #intro { @@ -764,7 +764,7 @@ p.external-auth a.blue:hover { /* HOME SEARCH ------> */ #search-home { float: left; - width: 533px; + /* width: 533px; */ margin: 30px 0 0 0; } #search-home h3 { diff --git a/webapp/src/main/webapp/themes/iph/css/query-builder-theme.css b/webapp/src/main/webapp/themes/iph/css/query-builder-theme.css index 6a163645..caefbebe 100644 --- a/webapp/src/main/webapp/themes/iph/css/query-builder-theme.css +++ b/webapp/src/main/webapp/themes/iph/css/query-builder-theme.css @@ -1,134 +1,134 @@ icons: { - add_group: 'fas fa-plus-square', - add_rule: 'fas fa-plus-circle', - remove_group: 'fas fa-minus-square', - remove_rule: 'fas fa-minus-circle', - error: 'fas fa-exclamation-triangle' + add_group: 'fas fa-plus-square', add_rule: 'fas fa-plus-circle', + remove_group: 'fas fa-minus-square', remove_rule: 'fas fa-minus-circle', + error: 'fas fa-exclamation-triangle' } .query-builder, .query-builder * { - margin: 0; - padding: 0; - box-sizing: border-box; + margin: 0; + padding: 0; + box-sizing: border-box; } .query-builder { - font-family: sans-serif; + font-family: sans-serif; } .query-builder .hide { - display: none; + display: none; } .query-builder .pull-right { - float: right !important; + float: right !important; } .query-builder .btn { - text-transform: none; - display: inline-block; - padding: 6px 12px; - margin-bottom: 0px; - font-size: 14px; - font-weight: 400; - line-height: 1.42857; - text-align: center; - white-space: nowrap; - vertical-align: middle; - touch-action: manipulation; - cursor: pointer; - user-select: none; - background-image: none; - border: 1px solid transparent; - border-radius: 4px; + text-transform: none; + display: inline-block; + padding: 6px 12px; + margin-bottom: 0px; + font-size: 14px; + font-weight: 400; + line-height: 1.42857; + text-align: center; + white-space: nowrap; + vertical-align: middle; + touch-action: manipulation; + cursor: pointer; + user-select: none; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; } -.query-builder .btn.focus, .query-builder .btn:focus, .query-builder .btn:hover { - color: #333; - text-decoration: none; +.query-builder .btn.focus, .query-builder .btn:focus, .query-builder .btn:hover + { + color: #333; + text-decoration: none; } .query-builder .btn.active, .query-builder .btn:active { - background-image: none; - outline: 0px none; - box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.125) inset; + background-image: none; + outline: 0px none; + box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.125) inset; } .query-builder .btn-success { - color: #FFF; - background-color: #5CB85C; - border-color: #4CAE4C; + color: #FFF; + background-color: #5CB85C; + border-color: #4CAE4C; } .query-builder .btn-primary { - color: #FFF; - background-color: #337AB7; - border-color: #2E6DA4; + color: #FFF; + background-color: #337AB7; + border-color: #2E6DA4; } .query-builder .btn-danger { - color: #FFF; - background-color: #D9534F; - border-color: #D43F3A; + color: #FFF; + background-color: #D9534F; + border-color: #D43F3A; } .query-builder .btn-success.active, .query-builder .btn-success.focus, -.query-builder .btn-success:active, .query-builder .btn-success:focus, -.query-builder .btn-success:hover { - color: #FFF; - background-color: #449D44; - border-color: #398439; + .query-builder .btn-success:active, .query-builder .btn-success:focus, + .query-builder .btn-success:hover { + color: #FFF; + background-color: #449D44; + border-color: #398439; } .query-builder .btn-primary.active, .query-builder .btn-primary.focus, -.query-builder .btn-primary:active, .query-builder .btn-primary:focus, -.query-builder .btn-primary:hover { - color: #FFF; - background-color: #286090; - border-color: #204D74; + .query-builder .btn-primary:active, .query-builder .btn-primary:focus, + .query-builder .btn-primary:hover { + color: #FFF; + background-color: #286090; + border-color: #204D74; } .query-builder .btn-danger.active, .query-builder .btn-danger.focus, -.query-builder .btn-danger:active, .query-builder .btn-danger:focus, -.query-builder .btn-danger:hover { - color: #FFF; - background-color: #C9302C; - border-color: #AC2925; + .query-builder .btn-danger:active, .query-builder .btn-danger:focus, + .query-builder .btn-danger:hover { + color: #FFF; + background-color: #C9302C; + border-color: #AC2925; } .query-builder .btn-group { - position: relative; - display: inline-block; - vertical-align: middle; + position: relative; + display: inline-block; + vertical-align: middle; } -.query-builder .btn-group > .btn { - position: relative; - float: left; +.query-builder .btn-group>.btn { + position: relative; + float: left; } -.query-builder .btn-group > .btn:first-child { - margin-left: 0px; +.query-builder .btn-group>.btn:first-child { + margin-left: 0px; } -.query-builder .btn-group > .btn:first-child:not(:last-child) { - border-top-right-radius: 0px; - border-bottom-right-radius: 0px; +.query-builder .btn-group>.btn:first-child:not(:last-child) { + border-top-right-radius: 0px; + border-bottom-right-radius: 0px; } -.query-builder .btn-group > .btn:last-child:not(:first-child) { - border-top-left-radius: 0px; - border-bottom-left-radius: 0px; +.query-builder .btn-group>.btn:last-child:not(:first-child) { + border-top-left-radius: 0px; + border-bottom-left-radius: 0px; } -.query-builder .btn-group .btn + .btn, .query-builder .btn-group .btn + .btn-group, -.query-builder .btn-group .btn-group + .btn, .query-builder .btn-group .btn-group + .btn-group { - margin-left: -1px; +.query-builder .btn-group .btn+.btn, .query-builder .btn-group .btn+.btn-group, + .query-builder .btn-group .btn-group+.btn, .query-builder .btn-group .btn-group+.btn-group + { + margin-left: -1px; } -.query-builder .btn-xs, .query-builder .btn-group-xs > .btn { - padding: 1px 5px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} +.query-builder .btn-xs, .query-builder .btn-group-xs>.btn { + padding: 1px 5px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} \ No newline at end of file diff --git a/webapp/src/main/webapp/themes/iph/css/query-builder.css b/webapp/src/main/webapp/themes/iph/css/query-builder.css new file mode 100644 index 00000000..22e8fcec --- /dev/null +++ b/webapp/src/main/webapp/themes/iph/css/query-builder.css @@ -0,0 +1,176 @@ +/*! + * jQuery QueryBuilder 2.5.2 + * Copyright 2014-2018 Damien "Mistic" Sorel (http://www.strangeplanet.fr) + * Licensed under MIT (https://opensource.org/licenses/MIT) + */ +.query-builder .rules-group-container, .query-builder .rule-container, + .query-builder .rule-placeholder { + position: relative; + margin: 4px 0; + border-radius: 5px; + padding: 5px; + border: 1px solid #EEE; + background: rgba(255, 255, 255, 0.9); +} + +.query-builder .rule-container .rule-filter-container, .query-builder .rule-container .rule-operator-container, + .query-builder .rule-container .rule-value-container, .query-builder .error-container, + .query-builder .drag-handle { + display: inline-block; + margin: 0 5px 0 0; + vertical-align: middle; +} + +.query-builder .rules-group-container { + padding: 10px; + padding-bottom: 6px; + border: 1px solid #DCC896; + background: rgba(250, 240, 210, 0.5); +} + +.query-builder .rules-group-header { + margin-bottom: 10px; +} + +.query-builder .rules-group-header .group-conditions .btn.readonly:not(.active), + .query-builder .rules-group-header .group-conditions input[name$='_cond'] + { + border: 0; + clip: rect(0, 0, 0, 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; + white-space: nowrap; +} + +.query-builder .rules-group-header .group-conditions .btn.readonly { + border-radius: 3px; +} + +.query-builder .rules-list { + list-style: none; + padding: 0 0 0 15px; + margin: 0; +} + +.query-builder .rule-value-container { + border-left: 1px solid #DDD; + padding-left: 5px; +} + +.query-builder .rule-value-container label { + margin-bottom: 0; + font-weight: normal; +} + +.query-builder .rule-value-container label.block { + display: block; +} + +.query-builder .rule-value-container select, .query-builder .rule-value-container input[type='text'], + .query-builder .rule-value-container input[type='number'] { + padding: 1px; +} + +.query-builder .error-container { + display: none; + cursor: help; + color: #F00; +} + +.query-builder .has-error { + background-color: #FDD; + border-color: #F99; +} + +.query-builder .has-error .error-container { + display: inline-block !important; +} + +.query-builder .rules-list>*::before, .query-builder .rules-list>*::after + { + content: ''; + position: absolute; + left: -10px; + width: 10px; + height: calc(50% + 4px); + border-color: #CCC; + border-style: solid; +} + +.query-builder .rules-list>*::before { + top: -4px; + border-width: 0 0 2px 2px; +} + +.query-builder .rules-list>*::after { + top: 50%; + border-width: 0 0 0 2px; +} + +.query-builder .rules-list>*:first-child::before { + top: -12px; + height: calc(50% + 14px); +} + +.query-builder .rules-list>*:last-child::before { + border-radius: 0 0 0 4px; +} + +.query-builder .rules-list>*:last-child::after { + display: none; +} + +.query-builder.bt-checkbox-glyphicons .checkbox input[type='checkbox']:checked+label::after + { + font-family: 'Glyphicons Halflings'; + content: '\e013'; +} + +.query-builder.bt-checkbox-glyphicons .checkbox label::after { + padding-left: 4px; + padding-top: 2px; + font-size: 9px; +} + +.query-builder .error-container+.tooltip .tooltip-inner { + color: #F99 !important; +} + +.query-builder p.filter-description { + margin: 5px 0 0 0; + background: #D9EDF7; + border: 1px solid #BCE8F1; + color: #31708F; + border-radius: 5px; + padding: 2.5px 5px; + font-size: .8em; +} + +.query-builder .rules-group-header [data-invert] { + margin-left: 5px; +} + +.query-builder .drag-handle { + cursor: move; + vertical-align: middle; + margin-left: 5px; +} + +.query-builder .dragging { + position: fixed; + opacity: .5; + z-index: 100; +} + +.query-builder .dragging::before, .query-builder .dragging::after { + display: none; +} + +.query-builder .rule-placeholder { + border: 1px dashed #BBB; + opacity: .7; +} \ No newline at end of file diff --git a/webapp/src/main/webapp/themes/iph/css/query-builder.default.min.css b/webapp/src/main/webapp/themes/iph/css/query-builder.default.min.css deleted file mode 100644 index 19d64ae9..00000000 --- a/webapp/src/main/webapp/themes/iph/css/query-builder.default.min.css +++ /dev/null @@ -1,6 +0,0 @@ -/*! - * jQuery QueryBuilder 2.5.2 - * Copyright 2014-2018 Damien "Mistic" Sorel (http://www.strangeplanet.fr) - * Licensed under MIT (https://opensource.org/licenses/MIT) - */ -.query-builder .rule-container,.query-builder .rule-placeholder,.query-builder .rules-group-container{position:relative;margin:4px 0;border-radius:5px;padding:5px;border:1px solid #eee;background:rgba(255,255,255,.9)}.query-builder .drag-handle,.query-builder .error-container,.query-builder .rule-container .rule-filter-container,.query-builder .rule-container .rule-operator-container,.query-builder .rule-container .rule-value-container{display:inline-block;margin:0 5px 0 0;vertical-align:middle}.query-builder .rules-group-container{padding:10px;padding-bottom:6px;border:1px solid #dcc896;background:rgba(250,240,210,.5)}.query-builder .rules-group-header{margin-bottom:10px}.query-builder .rules-group-header .group-conditions .btn.readonly:not(.active),.query-builder .rules-group-header .group-conditions input[name$='_cond']{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.query-builder .rules-group-header .group-conditions .btn.readonly{border-radius:3px}.query-builder .rules-list{list-style:none;padding:0 0 0 15px;margin:0}.query-builder .rule-value-container{border-left:1px solid #ddd;padding-left:5px}.query-builder .rule-value-container label{margin-bottom:0;font-weight:400}.query-builder .rule-value-container label.block{display:block}.query-builder .rule-value-container input[type=number],.query-builder .rule-value-container input[type=text],.query-builder .rule-value-container select{padding:1px}.query-builder .error-container{display:none;cursor:help;color:red}.query-builder .has-error{background-color:#fdd;border-color:#f99}.query-builder .has-error .error-container{display:inline-block!important}.query-builder .rules-list>::after,.query-builder .rules-list>::before{content:'';position:absolute;left:-10px;width:10px;height:calc(50% + 4px);border-color:#ccc;border-style:solid}.query-builder .rules-list>::before{top:-4px;border-width:0 0 2px 2px}.query-builder .rules-list>::after{top:50%;border-width:0 0 0 2px}.query-builder .rules-list>:first-child::before{top:-12px;height:calc(50% + 14px)}.query-builder .rules-list>:last-child::before{border-radius:0 0 0 4px}.query-builder .rules-list>:last-child::after{display:none}.query-builder.bt-checkbox-glyphicons .checkbox input[type=checkbox]:checked+label::after{font-family:'Glyphicons Halflings';content:'\e013'}.query-builder.bt-checkbox-glyphicons .checkbox label::after{padding-left:4px;padding-top:2px;font-size:9px}.query-builder .error-container+.tooltip .tooltip-inner{color:#f99!important}.query-builder p.filter-description{margin:5px 0 0 0;background:#d9edf7;border:1px solid #bce8f1;color:#31708f;border-radius:5px;padding:2.5px 5px;font-size:.8em}.query-builder .rules-group-header [data-invert]{margin-left:5px}.query-builder .drag-handle{cursor:move;vertical-align:middle;margin-left:5px}.query-builder .dragging{position:fixed;opacity:.5;z-index:100}.query-builder .dragging::after,.query-builder .dragging::before{display:none}.query-builder .rule-placeholder{border:1px dashed #bbb;opacity:.7} \ No newline at end of file diff --git a/webapp/src/main/webapp/themes/iph/css/screen.css b/webapp/src/main/webapp/themes/iph/css/screen.css index c61cb2d0..26895243 100644 --- a/webapp/src/main/webapp/themes/iph/css/screen.css +++ b/webapp/src/main/webapp/themes/iph/css/screen.css @@ -24,7 +24,7 @@ VIVO wilma theme: screen styles @import url("reset.css"); @import url("iph.css"); -@import url("query-builder.default.min.css"); +@import url("query-builder-theme.css"); @import url("query-builder.css"); @import url("page-createAndLink.css"); @import url("../../../local/css/local.css"); diff --git a/webapp/src/main/webapp/themes/iph/js/query-builder-config.js b/webapp/src/main/webapp/themes/iph/js/query-builder-config.js index 267cbb57..f723d7e8 100644 --- a/webapp/src/main/webapp/themes/iph/js/query-builder-config.js +++ b/webapp/src/main/webapp/themes/iph/js/query-builder-config.js @@ -1,86 +1,81 @@ var rules_basic = { - condition: 'AND', - rules: [{ - id: 'price', - operator: 'less', - value: 10.25 - }, { - condition: 'OR', - rules: [{ - id: 'category', - operator: 'equal', - value: 2 - }, { - id: 'category', - operator: 'equal', - value: 1 - }] - }] + condition: 'AND', + + rules: [{ + id: 'category', + operator: 'equal', + value: 2 + }, { + id: 'category', + operator: 'equal', + value: 1 + }] + }; $('#builder').queryBuilder({ - filters: [{ - id: 'name', - label: 'Name', - type: 'string' - }, { - id: 'category', - label: 'Category', - type: 'integer', - input: 'select', - values: { - 1: 'Books', - 2: 'Movies', - 3: 'Music', - 4: 'Tools', - 5: 'Goodies', - 6: 'Clothes' - }, - operators: ['equal', 'not_equal', 'in', 'not_in', 'is_null', 'is_not_null'] - }, { - id: 'in_stock', - label: 'In stock', - type: 'integer', - input: 'radio', - values: { - 1: 'Yes', - 0: 'No' - }, - operators: ['equal'] - }, { - id: 'price', - label: 'Price', - type: 'double', - validation: { - min: 0, - step: 0.01 - } - }, { - id: 'id', - label: 'Identifier', - type: 'string', - placeholder: '____-____-____', - operators: ['equal', 'not_equal'], - validation: { - format: /^.{4}-.{4}-.{4}$/ - } - }], - - rules: rules_basic + filters: [{ + id: 'name', + label: 'Name', + type: 'string' + }, { + id: 'category', + label: 'Category', + type: 'integer', + input: 'select', + values: { + 1: 'Books', + 2: 'Movies', + 3: 'Music', + 4: 'Tools', + 5: 'Goodies', + 6: 'Clothes' + }, + operators: ['equal', 'not_equal'] + }, { + id: 'in_stock', + label: 'In stock', + type: 'integer', + input: 'radio', + values: { + 1: 'Yes', + 0: 'No' + }, + operators: ['equal'] + }, { + id: 'price', + label: 'Price', + type: 'double', + validation: { + min: 0, + step: 0.01 + } + }, { + id: 'id', + label: 'Identifier', + type: 'string', + placeholder: '____-____-____', + operators: ['equal', 'not_equal'], + validation: { + format: /^.{4}-.{4}-.{4}$/ + } + }], + lang_code: 'ru', + rules: rules_basic }); $('#btn-reset').on('click', function() { - $('#builder-basic').queryBuilder('reset'); + $('#builder-basic').queryBuilder('reset'); }); $('#btn-set').on('click', function() { - $('#builder-basic').queryBuilder('setRules', rules_basic); + $('#builder-basic').queryBuilder('setRules', rules_basic); }); $('#btn-get').on('click', function() { - var result = $('#builder').queryBuilder('getRules'); - - if (!$.isEmptyObject(result)) { - alert(JSON.stringify(result, null, 2)); - } + var result = $('#builder').queryBuilder('getRules'); + + if (!$.isEmptyObject(result)) { + alert(JSON.stringify(result, null, 2)); + } }); diff --git a/webapp/src/main/webapp/themes/iph/js/query-builder.ru.js b/webapp/src/main/webapp/themes/iph/js/query-builder.ru.js new file mode 100644 index 00000000..e09665cd --- /dev/null +++ b/webapp/src/main/webapp/themes/iph/js/query-builder.ru.js @@ -0,0 +1,77 @@ +/*! + * jQuery QueryBuilder 2.5.2 + * Locale: Russian (ru) + * Licensed under MIT (https://opensource.org/licenses/MIT) + */ + +(function(root, factory) { + if (typeof define == 'function' && define.amd) { + define(['jquery', 'query-builder'], factory); + } + else { + factory(root.jQuery); + } +}(this, function($) { +"use strict"; + +var QueryBuilder = $.fn.queryBuilder; + +QueryBuilder.regional['ru'] = { + "__locale": "Russian (ru)", + "add_rule": "Добавить", + "add_group": "Добавить группу", + "delete_rule": "Удалить", + "delete_group": "Удалить", + "conditions": { + "AND": "И", + "OR": "ИЛИ" + }, + "operators": { + "equal": "равно", + "not_equal": "не равно", + "in": "из указанных", + "not_in": "не из указанных", + "less": "меньше", + "less_or_equal": "меньше или равно", + "greater": "больше", + "greater_or_equal": "больше или равно", + "between": "между", + "begins_with": "начинается с", + "not_begins_with": "не начинается с", + "contains": "содержит", + "not_contains": "не содержит", + "ends_with": "оканчивается на", + "not_ends_with": "не оканчивается на", + "is_empty": "пустая строка", + "is_not_empty": "не пустая строка", + "is_null": "пусто", + "is_not_null": "не пусто" + }, + "errors": { + "no_filter": "Фильтр не выбран", + "empty_group": "Группа пуста", + "radio_empty": "Не выбранно значение", + "checkbox_empty": "Не выбранно значение", + "select_empty": "Не выбранно значение", + "string_empty": "Не заполненно", + "string_exceed_min_length": "Должен содержать больше {0} символов", + "string_exceed_max_length": "Должен содержать меньше {0} символов", + "string_invalid_format": "Неверный формат ({0})", + "number_nan": "Не число", + "number_not_integer": "Не число", + "number_not_double": "Не число", + "number_exceed_min": "Должно быть больше {0}", + "number_exceed_max": "Должно быть меньше, чем {0}", + "number_wrong_step": "Должно быть кратно {0}", + "datetime_empty": "Не заполненно", + "datetime_invalid": "Неверный формат даты ({0})", + "datetime_exceed_min": "Должно быть, после {0}", + "datetime_exceed_max": "Должно быть, до {0}", + "boolean_not_valid": "Не логическое", + "operator_not_multiple": "Оператор \"{1}\" не поддерживает много значений" + }, + "invert": "Инвертировать" +}; + +QueryBuilder.defaults({ lang_code: 'ru' }); +})); \ No newline at end of file diff --git a/webapp/src/main/webapp/themes/iph/js/query-builder.standalone.js b/webapp/src/main/webapp/themes/iph/js/query-builder.standalone.js new file mode 100644 index 00000000..c899f05b --- /dev/null +++ b/webapp/src/main/webapp/themes/iph/js/query-builder.standalone.js @@ -0,0 +1,6477 @@ +/*! + * jQuery.extendext 0.1.2 + * + * Copyright 2014-2016 Damien "Mistic" Sorel (http://www.strangeplanet.fr) + * Licensed under MIT (http://opensource.org/licenses/MIT) + * + * Based on jQuery.extend by jQuery Foundation, Inc. and other contributors + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + define('jQuery.extendext', ['jquery'], factory); + } + else if (typeof module === 'object' && module.exports) { + module.exports = factory(require('jquery')); + } + else { + factory(root.jQuery); + } +}(this, function ($) { + "use strict"; + + $.extendext = function () { + var options, name, src, copy, copyIsArray, clone, + target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false, + arrayMode = 'default'; + + // Handle a deep copy situation + if (typeof target === "boolean") { + deep = target; + + // Skip the boolean and the target + target = arguments[i++] || {}; + } + + // Handle array mode parameter + if (typeof target === "string") { + arrayMode = target.toLowerCase(); + if (arrayMode !== 'concat' && arrayMode !== 'replace' && arrayMode !== 'extend') { + arrayMode = 'default'; + } + + // Skip the string param + target = arguments[i++] || {}; + } + + // Handle case when target is a string or something (possible in deep copy) + if (typeof target !== "object" && !$.isFunction(target)) { + target = {}; + } + + // Extend jQuery itself if only one argument is passed + if (i === length) { + target = this; + i--; + } + + for (; i < length; i++) { + // Only deal with non-null/undefined values + if ((options = arguments[i]) !== null) { + // Special operations for arrays + if ($.isArray(options) && arrayMode !== 'default') { + clone = target && $.isArray(target) ? target : []; + + switch (arrayMode) { + case 'concat': + target = clone.concat($.extend(deep, [], options)); + break; + + case 'replace': + target = $.extend(deep, [], options); + break; + + case 'extend': + options.forEach(function (e, i) { + if (typeof e === 'object') { + var type = $.isArray(e) ? [] : {}; + clone[i] = $.extendext(deep, arrayMode, clone[i] || type, e); + + } else if (clone.indexOf(e) === -1) { + clone.push(e); + } + }); + + target = clone; + break; + } + + } else { + // Extend the base object + for (name in options) { + src = target[name]; + copy = options[name]; + + // Prevent never-ending loop + if (target === copy) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if (deep && copy && ( $.isPlainObject(copy) || + (copyIsArray = $.isArray(copy)) )) { + + if (copyIsArray) { + copyIsArray = false; + clone = src && $.isArray(src) ? src : []; + + } else { + clone = src && $.isPlainObject(src) ? src : {}; + } + + // Never move original objects, clone them + target[name] = $.extendext(deep, arrayMode, clone, copy); + + // Don't bring in undefined values + } else if (copy !== undefined) { + target[name] = copy; + } + } + } + } + } + + // Return the modified object + return target; + }; +})); + +// doT.js +// 2011-2014, Laura Doktorova, https://github.com/olado/doT +// Licensed under the MIT license. + +(function () { + "use strict"; + + var doT = { + name: "doT", + version: "1.1.1", + templateSettings: { + evaluate: /\{\{([\s\S]+?(\}?)+)\}\}/g, + interpolate: /\{\{=([\s\S]+?)\}\}/g, + encode: /\{\{!([\s\S]+?)\}\}/g, + use: /\{\{#([\s\S]+?)\}\}/g, + useParams: /(^|[^\w$])def(?:\.|\[[\'\"])([\w$\.]+)(?:[\'\"]\])?\s*\:\s*([\w$\.]+|\"[^\"]+\"|\'[^\']+\'|\{[^\}]+\})/g, + define: /\{\{##\s*([\w\.$]+)\s*(\:|=)([\s\S]+?)#\}\}/g, + defineParams:/^\s*([\w$]+):([\s\S]+)/, + conditional: /\{\{\?(\?)?\s*([\s\S]*?)\s*\}\}/g, + iterate: /\{\{~\s*(?:\}\}|([\s\S]+?)\s*\:\s*([\w$]+)\s*(?:\:\s*([\w$]+))?\s*\}\})/g, + varname: "it", + strip: true, + append: true, + selfcontained: false, + doNotSkipEncoded: false + }, + template: undefined, //fn, compile template + compile: undefined, //fn, for express + log: true + }, _globals; + + doT.encodeHTMLSource = function(doNotSkipEncoded) { + var encodeHTMLRules = { "&": "&", "<": "<", ">": ">", '"': """, "'": "'", "/": "/" }, + matchHTML = doNotSkipEncoded ? /[&<>"'\/]/g : /&(?!#?\w+;)|<|>|"|'|\//g; + return function(code) { + return code ? code.toString().replace(matchHTML, function(m) {return encodeHTMLRules[m] || m;}) : ""; + }; + }; + + _globals = (function(){ return this || (0,eval)("this"); }()); + + /* istanbul ignore else */ + if (typeof module !== "undefined" && module.exports) { + module.exports = doT; + } else if (typeof define === "function" && define.amd) { + define('doT', function(){return doT;}); + } else { + _globals.doT = doT; + } + + var startend = { + append: { start: "'+(", end: ")+'", startencode: "'+encodeHTML(" }, + split: { start: "';out+=(", end: ");out+='", startencode: "';out+=encodeHTML(" } + }, skip = /$^/; + + function resolveDefs(c, block, def) { + return ((typeof block === "string") ? block : block.toString()) + .replace(c.define || skip, function(m, code, assign, value) { + if (code.indexOf("def.") === 0) { + code = code.substring(4); + } + if (!(code in def)) { + if (assign === ":") { + if (c.defineParams) value.replace(c.defineParams, function(m, param, v) { + def[code] = {arg: param, text: v}; + }); + if (!(code in def)) def[code]= value; + } else { + new Function("def", "def['"+code+"']=" + value)(def); + } + } + return ""; + }) + .replace(c.use || skip, function(m, code) { + if (c.useParams) code = code.replace(c.useParams, function(m, s, d, param) { + if (def[d] && def[d].arg && param) { + var rw = (d+":"+param).replace(/'|\\/g, "_"); + def.__exp = def.__exp || {}; + def.__exp[rw] = def[d].text.replace(new RegExp("(^|[^\\w$])" + def[d].arg + "([^\\w$])", "g"), "$1" + param + "$2"); + return s + "def.__exp['"+rw+"']"; + } + }); + var v = new Function("def", "return " + code)(def); + return v ? resolveDefs(c, v, def) : v; + }); + } + + function unescape(code) { + return code.replace(/\\('|\\)/g, "$1").replace(/[\r\t\n]/g, " "); + } + + doT.template = function(tmpl, c, def) { + c = c || doT.templateSettings; + var cse = c.append ? startend.append : startend.split, needhtmlencode, sid = 0, indv, + str = (c.use || c.define) ? resolveDefs(c, tmpl, def || {}) : tmpl; + + str = ("var out='" + (c.strip ? str.replace(/(^|\r|\n)\t* +| +\t*(\r|\n|$)/g," ") + .replace(/\r|\n|\t|\/\*[\s\S]*?\*\//g,""): str) + .replace(/'|\\/g, "\\$&") + .replace(c.interpolate || skip, function(m, code) { + return cse.start + unescape(code) + cse.end; + }) + .replace(c.encode || skip, function(m, code) { + needhtmlencode = true; + return cse.startencode + unescape(code) + cse.end; + }) + .replace(c.conditional || skip, function(m, elsecase, code) { + return elsecase ? + (code ? "';}else if(" + unescape(code) + "){out+='" : "';}else{out+='") : + (code ? "';if(" + unescape(code) + "){out+='" : "';}out+='"); + }) + .replace(c.iterate || skip, function(m, iterate, vname, iname) { + if (!iterate) return "';} } out+='"; + sid+=1; indv=iname || "i"+sid; iterate=unescape(iterate); + return "';var arr"+sid+"="+iterate+";if(arr"+sid+"){var "+vname+","+indv+"=-1,l"+sid+"=arr"+sid+".length-1;while("+indv+"} + * @readonly + */ + this.icons = this.settings.icons; + + /** + * List of operators + * @member {QueryBuilder.Operator[]} + * @readonly + */ + this.operators = this.settings.operators; + + /** + * List of templates + * @member {object.} + * @readonly + */ + this.templates = this.settings.templates; + + /** + * Plugins configuration + * @member {object.} + * @readonly + */ + this.plugins = this.settings.plugins; + + /** + * Translations object + * @member {object} + * @readonly + */ + this.lang = null; + + // translations : english << 'lang_code' << custom + if (QueryBuilder.regional['en'] === undefined) { + Utils.error('Config', '"i18n/en.js" not loaded.'); + } + this.lang = $.extendext(true, 'replace', {}, QueryBuilder.regional['en'], QueryBuilder.regional[this.settings.lang_code], this.settings.lang); + + // "allow_groups" can be boolean or int + if (this.settings.allow_groups === false) { + this.settings.allow_groups = 0; + } + else if (this.settings.allow_groups === true) { + this.settings.allow_groups = -1; + } + + // init templates + Object.keys(this.templates).forEach(function(tpl) { + if (!this.templates[tpl]) { + this.templates[tpl] = QueryBuilder.templates[tpl]; + } + if (typeof this.templates[tpl] == 'string') { + this.templates[tpl] = doT.template(this.templates[tpl]); + } + }, this); + + // ensure we have a container id + if (!this.$el.attr('id')) { + this.$el.attr('id', 'qb_' + Math.floor(Math.random() * 99999)); + this.status.generated_id = true; + } + this.status.id = this.$el.attr('id'); + + // INIT + this.$el.addClass('query-builder form-inline'); + + this.filters = this.checkFilters(this.filters); + this.operators = this.checkOperators(this.operators); + this.bindEvents(); + this.initPlugins(); +}; + +$.extend(QueryBuilder.prototype, /** @lends QueryBuilder.prototype */ { + /** + * Triggers an event on the builder container + * @param {string} type + * @returns {$.Event} + */ + trigger: function(type) { + var event = new $.Event(this._tojQueryEvent(type), { + builder: this + }); + + this.$el.triggerHandler(event, Array.prototype.slice.call(arguments, 1)); + + return event; + }, + + /** + * Triggers an event on the builder container and returns the modified value + * @param {string} type + * @param {*} value + * @returns {*} + */ + change: function(type, value) { + var event = new $.Event(this._tojQueryEvent(type, true), { + builder: this, + value: value + }); + + this.$el.triggerHandler(event, Array.prototype.slice.call(arguments, 2)); + + return event.value; + }, + + /** + * Attaches an event listener on the builder container + * @param {string} type + * @param {function} cb + * @returns {QueryBuilder} + */ + on: function(type, cb) { + this.$el.on(this._tojQueryEvent(type), cb); + return this; + }, + + /** + * Removes an event listener from the builder container + * @param {string} type + * @param {function} [cb] + * @returns {QueryBuilder} + */ + off: function(type, cb) { + this.$el.off(this._tojQueryEvent(type), cb); + return this; + }, + + /** + * Attaches an event listener called once on the builder container + * @param {string} type + * @param {function} cb + * @returns {QueryBuilder} + */ + once: function(type, cb) { + this.$el.one(this._tojQueryEvent(type), cb); + return this; + }, + + /** + * Appends `.queryBuilder` and optionally `.filter` to the events names + * @param {string} name + * @param {boolean} [filter=false] + * @returns {string} + * @private + */ + _tojQueryEvent: function(name, filter) { + return name.split(' ').map(function(type) { + return type + '.queryBuilder' + (filter ? '.filter' : ''); + }).join(' '); + } +}); + + +/** + * Allowed types and their internal representation + * @type {object.} + * @readonly + * @private + */ +QueryBuilder.types = { + 'string': 'string', + 'integer': 'number', + 'double': 'number', + 'date': 'datetime', + 'time': 'datetime', + 'datetime': 'datetime', + 'boolean': 'boolean' +}; + +/** + * Allowed inputs + * @type {string[]} + * @readonly + * @private + */ +QueryBuilder.inputs = [ + 'text', + 'number', + 'textarea', + 'radio', + 'checkbox', + 'select' +]; + +/** + * Runtime modifiable options with `setOptions` method + * @type {string[]} + * @readonly + * @private + */ +QueryBuilder.modifiable_options = [ + 'display_errors', + 'allow_groups', + 'allow_empty', + 'default_condition', + 'default_filter' +]; + +/** + * CSS selectors for common components + * @type {object.} + * @readonly + */ +QueryBuilder.selectors = { + group_container: '.rules-group-container', + rule_container: '.rule-container', + filter_container: '.rule-filter-container', + operator_container: '.rule-operator-container', + value_container: '.rule-value-container', + error_container: '.error-container', + condition_container: '.rules-group-header .group-conditions', + + rule_header: '.rule-header', + group_header: '.rules-group-header', + group_actions: '.group-actions', + rule_actions: '.rule-actions', + + rules_list: '.rules-group-body>.rules-list', + + group_condition: '.rules-group-header [name$=_cond]', + rule_filter: '.rule-filter-container [name$=_filter]', + rule_operator: '.rule-operator-container [name$=_operator]', + rule_value: '.rule-value-container [name*=_value_]', + + add_rule: '[data-add=rule]', + delete_rule: '[data-delete=rule]', + add_group: '[data-add=group]', + delete_group: '[data-delete=group]' +}; + +/** + * Template strings (see template.js) + * @type {object.} + * @readonly + */ +QueryBuilder.templates = {}; + +/** + * Localized strings (see i18n/) + * @type {object.} + * @readonly + */ +QueryBuilder.regional = {}; + +/** + * Default operators + * @type {object.} + * @readonly + */ +QueryBuilder.OPERATORS = { + equal: { type: 'equal', nb_inputs: 1, multiple: false, apply_to: ['string', 'number', 'datetime', 'boolean'] }, + not_equal: { type: 'not_equal', nb_inputs: 1, multiple: false, apply_to: ['string', 'number', 'datetime', 'boolean'] }, + in: { type: 'in', nb_inputs: 1, multiple: true, apply_to: ['string', 'number', 'datetime'] }, + not_in: { type: 'not_in', nb_inputs: 1, multiple: true, apply_to: ['string', 'number', 'datetime'] }, + less: { type: 'less', nb_inputs: 1, multiple: false, apply_to: ['number', 'datetime'] }, + less_or_equal: { type: 'less_or_equal', nb_inputs: 1, multiple: false, apply_to: ['number', 'datetime'] }, + greater: { type: 'greater', nb_inputs: 1, multiple: false, apply_to: ['number', 'datetime'] }, + greater_or_equal: { type: 'greater_or_equal', nb_inputs: 1, multiple: false, apply_to: ['number', 'datetime'] }, + between: { type: 'between', nb_inputs: 2, multiple: false, apply_to: ['number', 'datetime'] }, + not_between: { type: 'not_between', nb_inputs: 2, multiple: false, apply_to: ['number', 'datetime'] }, + begins_with: { type: 'begins_with', nb_inputs: 1, multiple: false, apply_to: ['string'] }, + not_begins_with: { type: 'not_begins_with', nb_inputs: 1, multiple: false, apply_to: ['string'] }, + contains: { type: 'contains', nb_inputs: 1, multiple: false, apply_to: ['string'] }, + not_contains: { type: 'not_contains', nb_inputs: 1, multiple: false, apply_to: ['string'] }, + ends_with: { type: 'ends_with', nb_inputs: 1, multiple: false, apply_to: ['string'] }, + not_ends_with: { type: 'not_ends_with', nb_inputs: 1, multiple: false, apply_to: ['string'] }, + is_empty: { type: 'is_empty', nb_inputs: 0, multiple: false, apply_to: ['string'] }, + is_not_empty: { type: 'is_not_empty', nb_inputs: 0, multiple: false, apply_to: ['string'] }, + is_null: { type: 'is_null', nb_inputs: 0, multiple: false, apply_to: ['string', 'number', 'datetime', 'boolean'] }, + is_not_null: { type: 'is_not_null', nb_inputs: 0, multiple: false, apply_to: ['string', 'number', 'datetime', 'boolean'] } +}; + +/** + * Default configuration + * @type {object} + * @readonly + */ +QueryBuilder.DEFAULTS = { + filters: [], + plugins: [], + + sort_filters: false, + display_errors: true, + allow_groups: -1, + allow_empty: false, + conditions: ['AND', 'OR'], + default_condition: 'AND', + inputs_separator: ' , ', + select_placeholder: '------', + display_empty_filter: true, + default_filter: null, + optgroups: {}, + + default_rule_flags: { + filter_readonly: false, + operator_readonly: false, + value_readonly: false, + no_delete: false + }, + + default_group_flags: { + condition_readonly: false, + no_add_rule: false, + no_add_group: false, + no_delete: false + }, + + templates: { + group: null, + rule: null, + filterSelect: null, + operatorSelect: null, + ruleValueSelect: null + }, + + lang_code: 'en', + lang: {}, + + operators: [ + 'equal', + 'not_equal', + 'in', + 'not_in', + 'less', + 'less_or_equal', + 'greater', + 'greater_or_equal', + 'between', + 'not_between', + 'begins_with', + 'not_begins_with', + 'contains', + 'not_contains', + 'ends_with', + 'not_ends_with', + 'is_empty', + 'is_not_empty', + 'is_null', + 'is_not_null' + ], + + icons: { + add_group: 'glyphicon glyphicon-plus-sign', + add_rule: 'glyphicon glyphicon-plus', + remove_group: 'glyphicon glyphicon-remove', + remove_rule: 'glyphicon glyphicon-remove', + error: 'glyphicon glyphicon-warning-sign' + } +}; + + +/** + * @module plugins + */ + +/** + * Definition of available plugins + * @type {object.} + */ +QueryBuilder.plugins = {}; + +/** + * Gets or extends the default configuration + * @param {object} [options] - new configuration + * @returns {undefined|object} nothing or configuration object (copy) + */ +QueryBuilder.defaults = function(options) { + if (typeof options == 'object') { + $.extendext(true, 'replace', QueryBuilder.DEFAULTS, options); + } + else if (typeof options == 'string') { + if (typeof QueryBuilder.DEFAULTS[options] == 'object') { + return $.extend(true, {}, QueryBuilder.DEFAULTS[options]); + } + else { + return QueryBuilder.DEFAULTS[options]; + } + } + else { + return $.extend(true, {}, QueryBuilder.DEFAULTS); + } +}; + +/** + * Registers a new plugin + * @param {string} name + * @param {function} fct - init function + * @param {object} [def] - default options + */ +QueryBuilder.define = function(name, fct, def) { + QueryBuilder.plugins[name] = { + fct: fct, + def: def || {} + }; +}; + +/** + * Adds new methods to QueryBuilder prototype + * @param {object.} methods + */ +QueryBuilder.extend = function(methods) { + $.extend(QueryBuilder.prototype, methods); +}; + +/** + * Initializes plugins for an instance + * @throws ConfigError + * @private + */ +QueryBuilder.prototype.initPlugins = function() { + if (!this.plugins) { + return; + } + + if ($.isArray(this.plugins)) { + var tmp = {}; + this.plugins.forEach(function(plugin) { + tmp[plugin] = null; + }); + this.plugins = tmp; + } + + Object.keys(this.plugins).forEach(function(plugin) { + if (plugin in QueryBuilder.plugins) { + this.plugins[plugin] = $.extend(true, {}, + QueryBuilder.plugins[plugin].def, + this.plugins[plugin] || {} + ); + + QueryBuilder.plugins[plugin].fct.call(this, this.plugins[plugin]); + } + else { + Utils.error('Config', 'Unable to find plugin "{0}"', plugin); + } + }, this); +}; + +/** + * Returns the config of a plugin, if the plugin is not loaded, returns the default config. + * @param {string} name + * @param {string} [property] + * @throws ConfigError + * @returns {*} + */ +QueryBuilder.prototype.getPluginOptions = function(name, property) { + var plugin; + if (this.plugins && this.plugins[name]) { + plugin = this.plugins[name]; + } + else if (QueryBuilder.plugins[name]) { + plugin = QueryBuilder.plugins[name].def; + } + + if (plugin) { + if (property) { + return plugin[property]; + } + else { + return plugin; + } + } + else { + Utils.error('Config', 'Unable to find plugin "{0}"', name); + } +}; + + +/** + * Final initialisation of the builder + * @param {object} [rules] + * @fires QueryBuilder.afterInit + * @private + */ +QueryBuilder.prototype.init = function(rules) { + /** + * When the initilization is done, just before creating the root group + * @event afterInit + * @memberof QueryBuilder + */ + this.trigger('afterInit'); + + if (rules) { + this.setRules(rules); + delete this.settings.rules; + } + else { + this.setRoot(true); + } +}; + +/** + * Checks the configuration of each filter + * @param {QueryBuilder.Filter[]} filters + * @returns {QueryBuilder.Filter[]} + * @throws ConfigError + */ +QueryBuilder.prototype.checkFilters = function(filters) { + var definedFilters = []; + + if (!filters || filters.length === 0) { + Utils.error('Config', 'Missing filters list'); + } + + filters.forEach(function(filter, i) { + if (!filter.id) { + Utils.error('Config', 'Missing filter {0} id', i); + } + if (definedFilters.indexOf(filter.id) != -1) { + Utils.error('Config', 'Filter "{0}" already defined', filter.id); + } + definedFilters.push(filter.id); + + if (!filter.type) { + filter.type = 'string'; + } + else if (!QueryBuilder.types[filter.type]) { + Utils.error('Config', 'Invalid type "{0}"', filter.type); + } + + if (!filter.input) { + filter.input = QueryBuilder.types[filter.type] === 'number' ? 'number' : 'text'; + } + else if (typeof filter.input != 'function' && QueryBuilder.inputs.indexOf(filter.input) == -1) { + Utils.error('Config', 'Invalid input "{0}"', filter.input); + } + + if (filter.operators) { + filter.operators.forEach(function(operator) { + if (typeof operator != 'string') { + Utils.error('Config', 'Filter operators must be global operators types (string)'); + } + }); + } + + if (!filter.field) { + filter.field = filter.id; + } + if (!filter.label) { + filter.label = filter.field; + } + + if (!filter.optgroup) { + filter.optgroup = null; + } + else { + this.status.has_optgroup = true; + + // register optgroup if needed + if (!this.settings.optgroups[filter.optgroup]) { + this.settings.optgroups[filter.optgroup] = filter.optgroup; + } + } + + switch (filter.input) { + case 'radio': + case 'checkbox': + if (!filter.values || filter.values.length < 1) { + Utils.error('Config', 'Missing filter "{0}" values', filter.id); + } + break; + + case 'select': + var cleanValues = []; + filter.has_optgroup = false; + + Utils.iterateOptions(filter.values, function(value, label, optgroup) { + cleanValues.push({ + value: value, + label: label, + optgroup: optgroup || null + }); + + if (optgroup) { + filter.has_optgroup = true; + + // register optgroup if needed + if (!this.settings.optgroups[optgroup]) { + this.settings.optgroups[optgroup] = optgroup; + } + } + }.bind(this)); + + if (filter.has_optgroup) { + filter.values = Utils.groupSort(cleanValues, 'optgroup'); + } + else { + filter.values = cleanValues; + } + + if (filter.placeholder) { + if (filter.placeholder_value === undefined) { + filter.placeholder_value = -1; + } + + filter.values.forEach(function(entry) { + if (entry.value == filter.placeholder_value) { + Utils.error('Config', 'Placeholder of filter "{0}" overlaps with one of its values', filter.id); + } + }); + } + break; + } + }, this); + + if (this.settings.sort_filters) { + if (typeof this.settings.sort_filters == 'function') { + filters.sort(this.settings.sort_filters); + } + else { + var self = this; + filters.sort(function(a, b) { + return self.translate(a.label).localeCompare(self.translate(b.label)); + }); + } + } + + if (this.status.has_optgroup) { + filters = Utils.groupSort(filters, 'optgroup'); + } + + return filters; +}; + +/** + * Checks the configuration of each operator + * @param {QueryBuilder.Operator[]} operators + * @returns {QueryBuilder.Operator[]} + * @throws ConfigError + */ +QueryBuilder.prototype.checkOperators = function(operators) { + var definedOperators = []; + + operators.forEach(function(operator, i) { + if (typeof operator == 'string') { + if (!QueryBuilder.OPERATORS[operator]) { + Utils.error('Config', 'Unknown operator "{0}"', operator); + } + + operators[i] = operator = $.extendext(true, 'replace', {}, QueryBuilder.OPERATORS[operator]); + } + else { + if (!operator.type) { + Utils.error('Config', 'Missing "type" for operator {0}', i); + } + + if (QueryBuilder.OPERATORS[operator.type]) { + operators[i] = operator = $.extendext(true, 'replace', {}, QueryBuilder.OPERATORS[operator.type], operator); + } + + if (operator.nb_inputs === undefined || operator.apply_to === undefined) { + Utils.error('Config', 'Missing "nb_inputs" and/or "apply_to" for operator "{0}"', operator.type); + } + } + + if (definedOperators.indexOf(operator.type) != -1) { + Utils.error('Config', 'Operator "{0}" already defined', operator.type); + } + definedOperators.push(operator.type); + + if (!operator.optgroup) { + operator.optgroup = null; + } + else { + this.status.has_operator_optgroup = true; + + // register optgroup if needed + if (!this.settings.optgroups[operator.optgroup]) { + this.settings.optgroups[operator.optgroup] = operator.optgroup; + } + } + }, this); + + if (this.status.has_operator_optgroup) { + operators = Utils.groupSort(operators, 'optgroup'); + } + + return operators; +}; + +/** + * Adds all events listeners to the builder + * @private + */ +QueryBuilder.prototype.bindEvents = function() { + var self = this; + var Selectors = QueryBuilder.selectors; + + // group condition change + this.$el.on('change.queryBuilder', Selectors.group_condition, function() { + if ($(this).is(':checked')) { + var $group = $(this).closest(Selectors.group_container); + self.getModel($group).condition = $(this).val(); + } + }); + + // rule filter change + this.$el.on('change.queryBuilder', Selectors.rule_filter, function() { + var $rule = $(this).closest(Selectors.rule_container); + self.getModel($rule).filter = self.getFilterById($(this).val()); + }); + + // rule operator change + this.$el.on('change.queryBuilder', Selectors.rule_operator, function() { + var $rule = $(this).closest(Selectors.rule_container); + self.getModel($rule).operator = self.getOperatorByType($(this).val()); + }); + + // add rule button + this.$el.on('click.queryBuilder', Selectors.add_rule, function() { + var $group = $(this).closest(Selectors.group_container); + self.addRule(self.getModel($group)); + }); + + // delete rule button + this.$el.on('click.queryBuilder', Selectors.delete_rule, function() { + var $rule = $(this).closest(Selectors.rule_container); + self.deleteRule(self.getModel($rule)); + }); + + if (this.settings.allow_groups !== 0) { + // add group button + this.$el.on('click.queryBuilder', Selectors.add_group, function() { + var $group = $(this).closest(Selectors.group_container); + self.addGroup(self.getModel($group)); + }); + + // delete group button + this.$el.on('click.queryBuilder', Selectors.delete_group, function() { + var $group = $(this).closest(Selectors.group_container); + self.deleteGroup(self.getModel($group)); + }); + } + + // model events + this.model.on({ + 'drop': function(e, node) { + node.$el.remove(); + self.refreshGroupsConditions(); + }, + 'add': function(e, parent, node, index) { + if (index === 0) { + node.$el.prependTo(parent.$el.find('>' + QueryBuilder.selectors.rules_list)); + } + else { + node.$el.insertAfter(parent.rules[index - 1].$el); + } + self.refreshGroupsConditions(); + }, + 'move': function(e, node, group, index) { + node.$el.detach(); + + if (index === 0) { + node.$el.prependTo(group.$el.find('>' + QueryBuilder.selectors.rules_list)); + } + else { + node.$el.insertAfter(group.rules[index - 1].$el); + } + self.refreshGroupsConditions(); + }, + 'update': function(e, node, field, value, oldValue) { + if (node instanceof Rule) { + switch (field) { + case 'error': + self.updateError(node); + break; + + case 'flags': + self.applyRuleFlags(node); + break; + + case 'filter': + self.updateRuleFilter(node, oldValue); + break; + + case 'operator': + self.updateRuleOperator(node, oldValue); + break; + + case 'value': + self.updateRuleValue(node, oldValue); + break; + } + } + else { + switch (field) { + case 'error': + self.updateError(node); + break; + + case 'flags': + self.applyGroupFlags(node); + break; + + case 'condition': + self.updateGroupCondition(node, oldValue); + break; + } + } + } + }); +}; + +/** + * Creates the root group + * @param {boolean} [addRule=true] - adds a default empty rule + * @param {object} [data] - group custom data + * @param {object} [flags] - flags to apply to the group + * @returns {Group} root group + * @fires QueryBuilder.afterAddGroup + */ +QueryBuilder.prototype.setRoot = function(addRule, data, flags) { + addRule = (addRule === undefined || addRule === true); + + var group_id = this.nextGroupId(); + var $group = $(this.getGroupTemplate(group_id, 1)); + + this.$el.append($group); + this.model.root = new Group(null, $group); + this.model.root.model = this.model; + + this.model.root.data = data; + this.model.root.flags = $.extend({}, this.settings.default_group_flags, flags); + this.model.root.condition = this.settings.default_condition; + + this.trigger('afterAddGroup', this.model.root); + + if (addRule) { + this.addRule(this.model.root); + } + + return this.model.root; +}; + +/** + * Adds a new group + * @param {Group} parent + * @param {boolean} [addRule=true] - adds a default empty rule + * @param {object} [data] - group custom data + * @param {object} [flags] - flags to apply to the group + * @returns {Group} + * @fires QueryBuilder.beforeAddGroup + * @fires QueryBuilder.afterAddGroup + */ +QueryBuilder.prototype.addGroup = function(parent, addRule, data, flags) { + addRule = (addRule === undefined || addRule === true); + + var level = parent.level + 1; + + /** + * Just before adding a group, can be prevented. + * @event beforeAddGroup + * @memberof QueryBuilder + * @param {Group} parent + * @param {boolean} addRule - if an empty rule will be added in the group + * @param {int} level - nesting level of the group, 1 is the root group + */ + var e = this.trigger('beforeAddGroup', parent, addRule, level); + if (e.isDefaultPrevented()) { + return null; + } + + var group_id = this.nextGroupId(); + var $group = $(this.getGroupTemplate(group_id, level)); + var model = parent.addGroup($group); + + model.data = data; + model.flags = $.extend({}, this.settings.default_group_flags, flags); + model.condition = this.settings.default_condition; + + /** + * Just after adding a group + * @event afterAddGroup + * @memberof QueryBuilder + * @param {Group} group + */ + this.trigger('afterAddGroup', model); + + /** + * After any change in the rules + * @event rulesChanged + * @memberof QueryBuilder + */ + this.trigger('rulesChanged'); + + if (addRule) { + this.addRule(model); + } + + return model; +}; + +/** + * Tries to delete a group. The group is not deleted if at least one rule is flagged `no_delete`. + * @param {Group} group + * @returns {boolean} if the group has been deleted + * @fires QueryBuilder.beforeDeleteGroup + * @fires QueryBuilder.afterDeleteGroup + */ +QueryBuilder.prototype.deleteGroup = function(group) { + if (group.isRoot()) { + return false; + } + + /** + * Just before deleting a group, can be prevented + * @event beforeDeleteGroup + * @memberof QueryBuilder + * @param {Group} parent + */ + var e = this.trigger('beforeDeleteGroup', group); + if (e.isDefaultPrevented()) { + return false; + } + + var del = true; + + group.each('reverse', function(rule) { + del &= this.deleteRule(rule); + }, function(group) { + del &= this.deleteGroup(group); + }, this); + + if (del) { + group.drop(); + + /** + * Just after deleting a group + * @event afterDeleteGroup + * @memberof QueryBuilder + */ + this.trigger('afterDeleteGroup'); + + this.trigger('rulesChanged'); + } + + return del; +}; + +/** + * Performs actions when a group's condition changes + * @param {Group} group + * @param {object} previousCondition + * @fires QueryBuilder.afterUpdateGroupCondition + * @private + */ +QueryBuilder.prototype.updateGroupCondition = function(group, previousCondition) { + group.$el.find('>' + QueryBuilder.selectors.group_condition).each(function() { + var $this = $(this); + $this.prop('checked', $this.val() === group.condition); + $this.parent().toggleClass('active', $this.val() === group.condition); + }); + + /** + * After the group condition has been modified + * @event afterUpdateGroupCondition + * @memberof QueryBuilder + * @param {Group} group + * @param {object} previousCondition + */ + this.trigger('afterUpdateGroupCondition', group, previousCondition); + + this.trigger('rulesChanged'); +}; + +/** + * Updates the visibility of conditions based on number of rules inside each group + * @private + */ +QueryBuilder.prototype.refreshGroupsConditions = function() { + (function walk(group) { + if (!group.flags || (group.flags && !group.flags.condition_readonly)) { + group.$el.find('>' + QueryBuilder.selectors.group_condition).prop('disabled', group.rules.length <= 1) + .parent().toggleClass('disabled', group.rules.length <= 1); + } + + group.each(null, function(group) { + walk(group); + }, this); + }(this.model.root)); +}; + +/** + * Adds a new rule + * @param {Group} parent + * @param {object} [data] - rule custom data + * @param {object} [flags] - flags to apply to the rule + * @returns {Rule} + * @fires QueryBuilder.beforeAddRule + * @fires QueryBuilder.afterAddRule + * @fires QueryBuilder.changer:getDefaultFilter + */ +QueryBuilder.prototype.addRule = function(parent, data, flags) { + /** + * Just before adding a rule, can be prevented + * @event beforeAddRule + * @memberof QueryBuilder + * @param {Group} parent + */ + var e = this.trigger('beforeAddRule', parent); + if (e.isDefaultPrevented()) { + return null; + } + + var rule_id = this.nextRuleId(); + var $rule = $(this.getRuleTemplate(rule_id)); + var model = parent.addRule($rule); + + model.data = data; + model.flags = $.extend({}, this.settings.default_rule_flags, flags); + + /** + * Just after adding a rule + * @event afterAddRule + * @memberof QueryBuilder + * @param {Rule} rule + */ + this.trigger('afterAddRule', model); + + this.trigger('rulesChanged'); + + this.createRuleFilters(model); + + if (this.settings.default_filter || !this.settings.display_empty_filter) { + /** + * Modifies the default filter for a rule + * @event changer:getDefaultFilter + * @memberof QueryBuilder + * @param {QueryBuilder.Filter} filter + * @param {Rule} rule + * @returns {QueryBuilder.Filter} + */ + model.filter = this.change('getDefaultFilter', + this.getFilterById(this.settings.default_filter || this.filters[0].id), + model + ); + } + + return model; +}; + +/** + * Tries to delete a rule + * @param {Rule} rule + * @returns {boolean} if the rule has been deleted + * @fires QueryBuilder.beforeDeleteRule + * @fires QueryBuilder.afterDeleteRule + */ +QueryBuilder.prototype.deleteRule = function(rule) { + if (rule.flags.no_delete) { + return false; + } + + /** + * Just before deleting a rule, can be prevented + * @event beforeDeleteRule + * @memberof QueryBuilder + * @param {Rule} rule + */ + var e = this.trigger('beforeDeleteRule', rule); + if (e.isDefaultPrevented()) { + return false; + } + + rule.drop(); + + /** + * Just after deleting a rule + * @event afterDeleteRule + * @memberof QueryBuilder + */ + this.trigger('afterDeleteRule'); + + this.trigger('rulesChanged'); + + return true; +}; + +/** + * Creates the filters for a rule + * @param {Rule} rule + * @fires QueryBuilder.changer:getRuleFilters + * @fires QueryBuilder.afterCreateRuleFilters + * @private + */ +QueryBuilder.prototype.createRuleFilters = function(rule) { + /** + * Modifies the list a filters available for a rule + * @event changer:getRuleFilters + * @memberof QueryBuilder + * @param {QueryBuilder.Filter[]} filters + * @param {Rule} rule + * @returns {QueryBuilder.Filter[]} + */ + var filters = this.change('getRuleFilters', this.filters, rule); + var $filterSelect = $(this.getRuleFilterSelect(rule, filters)); + + rule.$el.find(QueryBuilder.selectors.filter_container).html($filterSelect); + + /** + * After creating the dropdown for filters + * @event afterCreateRuleFilters + * @memberof QueryBuilder + * @param {Rule} rule + */ + this.trigger('afterCreateRuleFilters', rule); + + this.applyRuleFlags(rule); +}; + +/** + * Creates the operators for a rule and init the rule operator + * @param {Rule} rule + * @fires QueryBuilder.afterCreateRuleOperators + * @private + */ +QueryBuilder.prototype.createRuleOperators = function(rule) { + var $operatorContainer = rule.$el.find(QueryBuilder.selectors.operator_container).empty(); + + if (!rule.filter) { + return; + } + + var operators = this.getOperators(rule.filter); + var $operatorSelect = $(this.getRuleOperatorSelect(rule, operators)); + + $operatorContainer.html($operatorSelect); + + // set the operator without triggering update event + if (rule.filter.default_operator) { + rule.__.operator = this.getOperatorByType(rule.filter.default_operator); + } + else { + rule.__.operator = operators[0]; + } + + rule.$el.find(QueryBuilder.selectors.rule_operator).val(rule.operator.type); + + /** + * After creating the dropdown for operators + * @event afterCreateRuleOperators + * @memberof QueryBuilder + * @param {Rule} rule + * @param {QueryBuilder.Operator[]} operators - allowed operators for this rule + */ + this.trigger('afterCreateRuleOperators', rule, operators); + + this.applyRuleFlags(rule); +}; + +/** + * Creates the main input for a rule + * @param {Rule} rule + * @fires QueryBuilder.afterCreateRuleInput + * @private + */ +QueryBuilder.prototype.createRuleInput = function(rule) { + var $valueContainer = rule.$el.find(QueryBuilder.selectors.value_container).empty(); + + rule.__.value = undefined; + + if (!rule.filter || !rule.operator || rule.operator.nb_inputs === 0) { + return; + } + + var self = this; + var $inputs = $(); + var filter = rule.filter; + + for (var i = 0; i < rule.operator.nb_inputs; i++) { + var $ruleInput = $(this.getRuleInput(rule, i)); + if (i > 0) $valueContainer.append(this.settings.inputs_separator); + $valueContainer.append($ruleInput); + $inputs = $inputs.add($ruleInput); + } + + $valueContainer.css('display', ''); + + $inputs.on('change ' + (filter.input_event || ''), function() { + if (!rule._updating_input) { + rule._updating_value = true; + rule.value = self.getRuleInputValue(rule); + rule._updating_value = false; + } + }); + + if (filter.plugin) { + $inputs[filter.plugin](filter.plugin_config || {}); + } + + /** + * After creating the input for a rule and initializing optional plugin + * @event afterCreateRuleInput + * @memberof QueryBuilder + * @param {Rule} rule + */ + this.trigger('afterCreateRuleInput', rule); + + if (filter.default_value !== undefined) { + rule.value = filter.default_value; + } + else { + rule._updating_value = true; + rule.value = self.getRuleInputValue(rule); + rule._updating_value = false; + } + + this.applyRuleFlags(rule); +}; + +/** + * Performs action when a rule's filter changes + * @param {Rule} rule + * @param {object} previousFilter + * @fires QueryBuilder.afterUpdateRuleFilter + * @private + */ +QueryBuilder.prototype.updateRuleFilter = function(rule, previousFilter) { + this.createRuleOperators(rule); + this.createRuleInput(rule); + + rule.$el.find(QueryBuilder.selectors.rule_filter).val(rule.filter ? rule.filter.id : '-1'); + + // clear rule data if the filter changed + if (previousFilter && rule.filter && previousFilter.id !== rule.filter.id) { + rule.data = undefined; + } + + /** + * After the filter has been updated and the operators and input re-created + * @event afterUpdateRuleFilter + * @memberof QueryBuilder + * @param {Rule} rule + * @param {object} previousFilter + */ + this.trigger('afterUpdateRuleFilter', rule, previousFilter); + + this.trigger('rulesChanged'); +}; + +/** + * Performs actions when a rule's operator changes + * @param {Rule} rule + * @param {object} previousOperator + * @fires QueryBuilder.afterUpdateRuleOperator + * @private + */ +QueryBuilder.prototype.updateRuleOperator = function(rule, previousOperator) { + var $valueContainer = rule.$el.find(QueryBuilder.selectors.value_container); + + if (!rule.operator || rule.operator.nb_inputs === 0) { + $valueContainer.hide(); + + rule.__.value = undefined; + } + else { + $valueContainer.css('display', ''); + + if ($valueContainer.is(':empty') || !previousOperator || + rule.operator.nb_inputs !== previousOperator.nb_inputs || + rule.operator.optgroup !== previousOperator.optgroup + ) { + this.createRuleInput(rule); + } + } + + if (rule.operator) { + rule.$el.find(QueryBuilder.selectors.rule_operator).val(rule.operator.type); + + // refresh value if the format changed for this operator + rule.__.value = this.getRuleInputValue(rule); + } + + /** + * After the operator has been updated and the input optionally re-created + * @event afterUpdateRuleOperator + * @memberof QueryBuilder + * @param {Rule} rule + * @param {object} previousOperator + */ + this.trigger('afterUpdateRuleOperator', rule, previousOperator); + + this.trigger('rulesChanged'); +}; + +/** + * Performs actions when rule's value changes + * @param {Rule} rule + * @param {object} previousValue + * @fires QueryBuilder.afterUpdateRuleValue + * @private + */ +QueryBuilder.prototype.updateRuleValue = function(rule, previousValue) { + if (!rule._updating_value) { + this.setRuleInputValue(rule, rule.value); + } + + /** + * After the rule value has been modified + * @event afterUpdateRuleValue + * @memberof QueryBuilder + * @param {Rule} rule + * @param {*} previousValue + */ + this.trigger('afterUpdateRuleValue', rule, previousValue); + + this.trigger('rulesChanged'); +}; + +/** + * Changes a rule's properties depending on its flags + * @param {Rule} rule + * @fires QueryBuilder.afterApplyRuleFlags + * @private + */ +QueryBuilder.prototype.applyRuleFlags = function(rule) { + var flags = rule.flags; + var Selectors = QueryBuilder.selectors; + + rule.$el.find(Selectors.rule_filter).prop('disabled', flags.filter_readonly); + rule.$el.find(Selectors.rule_operator).prop('disabled', flags.operator_readonly); + rule.$el.find(Selectors.rule_value).prop('disabled', flags.value_readonly); + + if (flags.no_delete) { + rule.$el.find(Selectors.delete_rule).remove(); + } + + /** + * After rule's flags has been applied + * @event afterApplyRuleFlags + * @memberof QueryBuilder + * @param {Rule} rule + */ + this.trigger('afterApplyRuleFlags', rule); +}; + +/** + * Changes group's properties depending on its flags + * @param {Group} group + * @fires QueryBuilder.afterApplyGroupFlags + * @private + */ +QueryBuilder.prototype.applyGroupFlags = function(group) { + var flags = group.flags; + var Selectors = QueryBuilder.selectors; + + group.$el.find('>' + Selectors.group_condition).prop('disabled', flags.condition_readonly) + .parent().toggleClass('readonly', flags.condition_readonly); + + if (flags.no_add_rule) { + group.$el.find(Selectors.add_rule).remove(); + } + if (flags.no_add_group) { + group.$el.find(Selectors.add_group).remove(); + } + if (flags.no_delete) { + group.$el.find(Selectors.delete_group).remove(); + } + + /** + * After group's flags has been applied + * @event afterApplyGroupFlags + * @memberof QueryBuilder + * @param {Group} group + */ + this.trigger('afterApplyGroupFlags', group); +}; + +/** + * Clears all errors markers + * @param {Node} [node] default is root Group + */ +QueryBuilder.prototype.clearErrors = function(node) { + node = node || this.model.root; + + if (!node) { + return; + } + + node.error = null; + + if (node instanceof Group) { + node.each(function(rule) { + rule.error = null; + }, function(group) { + this.clearErrors(group); + }, this); + } +}; + +/** + * Adds/Removes error on a Rule or Group + * @param {Node} node + * @fires QueryBuilder.changer:displayError + * @private + */ +QueryBuilder.prototype.updateError = function(node) { + if (this.settings.display_errors) { + if (node.error === null) { + node.$el.removeClass('has-error'); + } + else { + var errorMessage = this.translate('errors', node.error[0]); + errorMessage = Utils.fmt(errorMessage, node.error.slice(1)); + + /** + * Modifies an error message before display + * @event changer:displayError + * @memberof QueryBuilder + * @param {string} errorMessage - the error message (translated and formatted) + * @param {array} error - the raw error array (error code and optional arguments) + * @param {Node} node + * @returns {string} + */ + errorMessage = this.change('displayError', errorMessage, node.error, node); + + node.$el.addClass('has-error') + .find(QueryBuilder.selectors.error_container).eq(0) + .attr('title', errorMessage); + } + } +}; + +/** + * Triggers a validation error event + * @param {Node} node + * @param {string|array} error + * @param {*} value + * @fires QueryBuilder.validationError + * @private + */ +QueryBuilder.prototype.triggerValidationError = function(node, error, value) { + if (!$.isArray(error)) { + error = [error]; + } + + /** + * Fired when a validation error occurred, can be prevented + * @event validationError + * @memberof QueryBuilder + * @param {Node} node + * @param {string} error + * @param {*} value + */ + var e = this.trigger('validationError', node, error, value); + if (!e.isDefaultPrevented()) { + node.error = error; + } +}; + + +/** + * Destroys the builder + * @fires QueryBuilder.beforeDestroy + */ +QueryBuilder.prototype.destroy = function() { + /** + * Before the {@link QueryBuilder#destroy} method + * @event beforeDestroy + * @memberof QueryBuilder + */ + this.trigger('beforeDestroy'); + + if (this.status.generated_id) { + this.$el.removeAttr('id'); + } + + this.clear(); + this.model = null; + + this.$el + .off('.queryBuilder') + .removeClass('query-builder') + .removeData('queryBuilder'); + + delete this.$el[0].queryBuilder; +}; + +/** + * Clear all rules and resets the root group + * @fires QueryBuilder.beforeReset + * @fires QueryBuilder.afterReset + */ +QueryBuilder.prototype.reset = function() { + /** + * Before the {@link QueryBuilder#reset} method, can be prevented + * @event beforeReset + * @memberof QueryBuilder + */ + var e = this.trigger('beforeReset'); + if (e.isDefaultPrevented()) { + return; + } + + this.status.group_id = 1; + this.status.rule_id = 0; + + this.model.root.empty(); + + this.model.root.data = undefined; + this.model.root.flags = $.extend({}, this.settings.default_group_flags); + this.model.root.condition = this.settings.default_condition; + + this.addRule(this.model.root); + + /** + * After the {@link QueryBuilder#reset} method + * @event afterReset + * @memberof QueryBuilder + */ + this.trigger('afterReset'); + + this.trigger('rulesChanged'); +}; + +/** + * Clears all rules and removes the root group + * @fires QueryBuilder.beforeClear + * @fires QueryBuilder.afterClear + */ +QueryBuilder.prototype.clear = function() { + /** + * Before the {@link QueryBuilder#clear} method, can be prevented + * @event beforeClear + * @memberof QueryBuilder + */ + var e = this.trigger('beforeClear'); + if (e.isDefaultPrevented()) { + return; + } + + this.status.group_id = 0; + this.status.rule_id = 0; + + if (this.model.root) { + this.model.root.drop(); + this.model.root = null; + } + + /** + * After the {@link QueryBuilder#clear} method + * @event afterClear + * @memberof QueryBuilder + */ + this.trigger('afterClear'); + + this.trigger('rulesChanged'); +}; + +/** + * Modifies the builder configuration.
+ * Only options defined in QueryBuilder.modifiable_options are modifiable + * @param {object} options + */ +QueryBuilder.prototype.setOptions = function(options) { + $.each(options, function(opt, value) { + if (QueryBuilder.modifiable_options.indexOf(opt) !== -1) { + this.settings[opt] = value; + } + }.bind(this)); +}; + +/** + * Returns the model associated to a DOM object, or the root model + * @param {jQuery} [target] + * @returns {Node} + */ +QueryBuilder.prototype.getModel = function(target) { + if (!target) { + return this.model.root; + } + else if (target instanceof Node) { + return target; + } + else { + return $(target).data('queryBuilderModel'); + } +}; + +/** + * Validates the whole builder + * @param {object} [options] + * @param {boolean} [options.skip_empty=false] - skips validating rules that have no filter selected + * @returns {boolean} + * @fires QueryBuilder.changer:validate + */ +QueryBuilder.prototype.validate = function(options) { + options = $.extend({ + skip_empty: false + }, options); + + this.clearErrors(); + + var self = this; + + var valid = (function parse(group) { + var done = 0; + var errors = 0; + + group.each(function(rule) { + if (!rule.filter && options.skip_empty) { + return; + } + + if (!rule.filter) { + self.triggerValidationError(rule, 'no_filter', null); + errors++; + return; + } + + if (!rule.operator) { + self.triggerValidationError(rule, 'no_operator', null); + errors++; + return; + } + + if (rule.operator.nb_inputs !== 0) { + var valid = self.validateValue(rule, rule.value); + + if (valid !== true) { + self.triggerValidationError(rule, valid, rule.value); + errors++; + return; + } + } + + done++; + + }, function(group) { + var res = parse(group); + if (res === true) { + done++; + } + else if (res === false) { + errors++; + } + }); + + if (errors > 0) { + return false; + } + else if (done === 0 && !group.isRoot() && options.skip_empty) { + return null; + } + else if (done === 0 && (!self.settings.allow_empty || !group.isRoot())) { + self.triggerValidationError(group, 'empty_group', null); + return false; + } + + return true; + + }(this.model.root)); + + /** + * Modifies the result of the {@link QueryBuilder#validate} method + * @event changer:validate + * @memberof QueryBuilder + * @param {boolean} valid + * @returns {boolean} + */ + return this.change('validate', valid); +}; + +/** + * Gets an object representing current rules + * @param {object} [options] + * @param {boolean|string} [options.get_flags=false] - export flags, true: only changes from default flags or 'all' + * @param {boolean} [options.allow_invalid=false] - returns rules even if they are invalid + * @param {boolean} [options.skip_empty=false] - remove rules that have no filter selected + * @returns {object} + * @fires QueryBuilder.changer:ruleToJson + * @fires QueryBuilder.changer:groupToJson + * @fires QueryBuilder.changer:getRules + */ +QueryBuilder.prototype.getRules = function(options) { + options = $.extend({ + get_flags: false, + allow_invalid: false, + skip_empty: false + }, options); + + var valid = this.validate(options); + if (!valid && !options.allow_invalid) { + return null; + } + + var self = this; + + var out = (function parse(group) { + var groupData = { + condition: group.condition, + rules: [] + }; + + if (group.data) { + groupData.data = $.extendext(true, 'replace', {}, group.data); + } + + if (options.get_flags) { + var flags = self.getGroupFlags(group.flags, options.get_flags === 'all'); + if (!$.isEmptyObject(flags)) { + groupData.flags = flags; + } + } + + group.each(function(rule) { + if (!rule.filter && options.skip_empty) { + return; + } + + var value = null; + if (!rule.operator || rule.operator.nb_inputs !== 0) { + value = rule.value; + } + + var ruleData = { + id: rule.filter ? rule.filter.id : null, + field: rule.filter ? rule.filter.field : null, + type: rule.filter ? rule.filter.type : null, + input: rule.filter ? rule.filter.input : null, + operator: rule.operator ? rule.operator.type : null, + value: value + }; + + if (rule.filter && rule.filter.data || rule.data) { + ruleData.data = $.extendext(true, 'replace', {}, rule.filter.data, rule.data); + } + + if (options.get_flags) { + var flags = self.getRuleFlags(rule.flags, options.get_flags === 'all'); + if (!$.isEmptyObject(flags)) { + ruleData.flags = flags; + } + } + + /** + * Modifies the JSON generated from a Rule object + * @event changer:ruleToJson + * @memberof QueryBuilder + * @param {object} json + * @param {Rule} rule + * @returns {object} + */ + groupData.rules.push(self.change('ruleToJson', ruleData, rule)); + + }, function(model) { + var data = parse(model); + if (data.rules.length !== 0 || !options.skip_empty) { + groupData.rules.push(data); + } + }, this); + + /** + * Modifies the JSON generated from a Group object + * @event changer:groupToJson + * @memberof QueryBuilder + * @param {object} json + * @param {Group} group + * @returns {object} + */ + return self.change('groupToJson', groupData, group); + + }(this.model.root)); + + out.valid = valid; + + /** + * Modifies the result of the {@link QueryBuilder#getRules} method + * @event changer:getRules + * @memberof QueryBuilder + * @param {object} json + * @returns {object} + */ + return this.change('getRules', out); +}; + +/** + * Sets rules from object + * @param {object} data + * @param {object} [options] + * @param {boolean} [options.allow_invalid=false] - silent-fail if the data are invalid + * @throws RulesError, UndefinedConditionError + * @fires QueryBuilder.changer:setRules + * @fires QueryBuilder.changer:jsonToRule + * @fires QueryBuilder.changer:jsonToGroup + * @fires QueryBuilder.afterSetRules + */ +QueryBuilder.prototype.setRules = function(data, options) { + options = $.extend({ + allow_invalid: false + }, options); + + if ($.isArray(data)) { + data = { + condition: this.settings.default_condition, + rules: data + }; + } + + if (!data || !data.rules || (data.rules.length === 0 && !this.settings.allow_empty)) { + Utils.error('RulesParse', 'Incorrect data object passed'); + } + + this.clear(); + this.setRoot(false, data.data, this.parseGroupFlags(data)); + + /** + * Modifies data before the {@link QueryBuilder#setRules} method + * @event changer:setRules + * @memberof QueryBuilder + * @param {object} json + * @param {object} options + * @returns {object} + */ + data = this.change('setRules', data, options); + + var self = this; + + (function add(data, group) { + if (group === null) { + return; + } + + if (data.condition === undefined) { + data.condition = self.settings.default_condition; + } + else if (self.settings.conditions.indexOf(data.condition) == -1) { + Utils.error(!options.allow_invalid, 'UndefinedCondition', 'Invalid condition "{0}"', data.condition); + data.condition = self.settings.default_condition; + } + + group.condition = data.condition; + + data.rules.forEach(function(item) { + var model; + + if (item.rules !== undefined) { + if (self.settings.allow_groups !== -1 && self.settings.allow_groups < group.level) { + Utils.error(!options.allow_invalid, 'RulesParse', 'No more than {0} groups are allowed', self.settings.allow_groups); + self.reset(); + } + else { + model = self.addGroup(group, false, item.data, self.parseGroupFlags(item)); + if (model === null) { + return; + } + + add(item, model); + } + } + else { + if (!item.empty) { + if (item.id === undefined) { + Utils.error(!options.allow_invalid, 'RulesParse', 'Missing rule field id'); + item.empty = true; + } + if (item.operator === undefined) { + item.operator = 'equal'; + } + } + + model = self.addRule(group, item.data, self.parseRuleFlags(item)); + if (model === null) { + return; + } + + if (!item.empty) { + model.filter = self.getFilterById(item.id, !options.allow_invalid); + } + + if (model.filter) { + model.operator = self.getOperatorByType(item.operator, !options.allow_invalid); + + if (!model.operator) { + model.operator = self.getOperators(model.filter)[0]; + } + } + + if (model.operator && model.operator.nb_inputs !== 0) { + if (item.value !== undefined) { + model.value = item.value; + } + else if (model.filter.default_value !== undefined) { + model.value = model.filter.default_value; + } + } + + /** + * Modifies the Rule object generated from the JSON + * @event changer:jsonToRule + * @memberof QueryBuilder + * @param {Rule} rule + * @param {object} json + * @returns {Rule} the same rule + */ + if (self.change('jsonToRule', model, item) != model) { + Utils.error('RulesParse', 'Plugin tried to change rule reference'); + } + } + }); + + /** + * Modifies the Group object generated from the JSON + * @event changer:jsonToGroup + * @memberof QueryBuilder + * @param {Group} group + * @param {object} json + * @returns {Group} the same group + */ + if (self.change('jsonToGroup', group, data) != group) { + Utils.error('RulesParse', 'Plugin tried to change group reference'); + } + + }(data, this.model.root)); + + /** + * After the {@link QueryBuilder#setRules} method + * @event afterSetRules + * @memberof QueryBuilder + */ + this.trigger('afterSetRules'); +}; + + +/** + * Performs value validation + * @param {Rule} rule + * @param {string|string[]} value + * @returns {array|boolean} true or error array + * @fires QueryBuilder.changer:validateValue + */ +QueryBuilder.prototype.validateValue = function(rule, value) { + var validation = rule.filter.validation || {}; + var result = true; + + if (validation.callback) { + result = validation.callback.call(this, value, rule); + } + else { + result = this._validateValue(rule, value); + } + + /** + * Modifies the result of the rule validation method + * @event changer:validateValue + * @memberof QueryBuilder + * @param {array|boolean} result - true or an error array + * @param {*} value + * @param {Rule} rule + * @returns {array|boolean} + */ + return this.change('validateValue', result, value, rule); +}; + +/** + * Default validation function + * @param {Rule} rule + * @param {string|string[]} value + * @returns {array|boolean} true or error array + * @throws ConfigError + * @private + */ +QueryBuilder.prototype._validateValue = function(rule, value) { + var filter = rule.filter; + var operator = rule.operator; + var validation = filter.validation || {}; + var result = true; + var tmp, tempValue; + + if (rule.operator.nb_inputs === 1) { + value = [value]; + } + + for (var i = 0; i < operator.nb_inputs; i++) { + if (!operator.multiple && $.isArray(value[i]) && value[i].length > 1) { + result = ['operator_not_multiple', operator.type, this.translate('operators', operator.type)]; + break; + } + + switch (filter.input) { + case 'radio': + if (value[i] === undefined || value[i].length === 0) { + if (!validation.allow_empty_value) { + result = ['radio_empty']; + } + break; + } + break; + + case 'checkbox': + if (value[i] === undefined || value[i].length === 0) { + if (!validation.allow_empty_value) { + result = ['checkbox_empty']; + } + break; + } + break; + + case 'select': + if (value[i] === undefined || value[i].length === 0 || (filter.placeholder && value[i] == filter.placeholder_value)) { + if (!validation.allow_empty_value) { + result = ['select_empty']; + } + break; + } + break; + + default: + tempValue = $.isArray(value[i]) ? value[i] : [value[i]]; + + for (var j = 0; j < tempValue.length; j++) { + switch (QueryBuilder.types[filter.type]) { + case 'string': + if (tempValue[j] === undefined || tempValue[j].length === 0) { + if (!validation.allow_empty_value) { + result = ['string_empty']; + } + break; + } + if (validation.min !== undefined) { + if (tempValue[j].length < parseInt(validation.min)) { + result = [this.getValidationMessage(validation, 'min', 'string_exceed_min_length'), validation.min]; + break; + } + } + if (validation.max !== undefined) { + if (tempValue[j].length > parseInt(validation.max)) { + result = [this.getValidationMessage(validation, 'max', 'string_exceed_max_length'), validation.max]; + break; + } + } + if (validation.format) { + if (typeof validation.format == 'string') { + validation.format = new RegExp(validation.format); + } + if (!validation.format.test(tempValue[j])) { + result = [this.getValidationMessage(validation, 'format', 'string_invalid_format'), validation.format]; + break; + } + } + break; + + case 'number': + if (tempValue[j] === undefined || tempValue[j].length === 0) { + if (!validation.allow_empty_value) { + result = ['number_nan']; + } + break; + } + if (isNaN(tempValue[j])) { + result = ['number_nan']; + break; + } + if (filter.type == 'integer') { + if (parseInt(tempValue[j]) != tempValue[j]) { + result = ['number_not_integer']; + break; + } + } + else { + if (parseFloat(tempValue[j]) != tempValue[j]) { + result = ['number_not_double']; + break; + } + } + if (validation.min !== undefined) { + if (tempValue[j] < parseFloat(validation.min)) { + result = [this.getValidationMessage(validation, 'min', 'number_exceed_min'), validation.min]; + break; + } + } + if (validation.max !== undefined) { + if (tempValue[j] > parseFloat(validation.max)) { + result = [this.getValidationMessage(validation, 'max', 'number_exceed_max'), validation.max]; + break; + } + } + if (validation.step !== undefined && validation.step !== 'any') { + var v = (tempValue[j] / validation.step).toPrecision(14); + if (parseInt(v) != v) { + result = [this.getValidationMessage(validation, 'step', 'number_wrong_step'), validation.step]; + break; + } + } + break; + + case 'datetime': + if (tempValue[j] === undefined || tempValue[j].length === 0) { + if (!validation.allow_empty_value) { + result = ['datetime_empty']; + } + break; + } + + // we need MomentJS + if (validation.format) { + if (!('moment' in window)) { + Utils.error('MissingLibrary', 'MomentJS is required for Date/Time validation. Get it here http://momentjs.com'); + } + + var datetime = moment(tempValue[j], validation.format); + if (!datetime.isValid()) { + result = [this.getValidationMessage(validation, 'format', 'datetime_invalid'), validation.format]; + break; + } + else { + if (validation.min) { + if (datetime < moment(validation.min, validation.format)) { + result = [this.getValidationMessage(validation, 'min', 'datetime_exceed_min'), validation.min]; + break; + } + } + if (validation.max) { + if (datetime > moment(validation.max, validation.format)) { + result = [this.getValidationMessage(validation, 'max', 'datetime_exceed_max'), validation.max]; + break; + } + } + } + } + break; + + case 'boolean': + if (tempValue[j] === undefined || tempValue[j].length === 0) { + if (!validation.allow_empty_value) { + result = ['boolean_not_valid']; + } + break; + } + tmp = ('' + tempValue[j]).trim().toLowerCase(); + if (tmp !== 'true' && tmp !== 'false' && tmp !== '1' && tmp !== '0' && tempValue[j] !== 1 && tempValue[j] !== 0) { + result = ['boolean_not_valid']; + break; + } + } + + if (result !== true) { + break; + } + } + } + + if (result !== true) { + break; + } + } + + if ((rule.operator.type === 'between' || rule.operator.type === 'not_between') && value.length === 2) { + switch (QueryBuilder.types[filter.type]) { + case 'number': + if (value[0] > value[1]) { + result = ['number_between_invalid', value[0], value[1]]; + } + break; + + case 'datetime': + // we need MomentJS + if (validation.format) { + if (!('moment' in window)) { + Utils.error('MissingLibrary', 'MomentJS is required for Date/Time validation. Get it here http://momentjs.com'); + } + + if (moment(value[0], validation.format).isAfter(moment(value[1], validation.format))) { + result = ['datetime_between_invalid', value[0], value[1]]; + } + } + break; + } + } + + return result; +}; + +/** + * Returns an incremented group ID + * @returns {string} + * @private + */ +QueryBuilder.prototype.nextGroupId = function() { + return this.status.id + '_group_' + (this.status.group_id++); +}; + +/** + * Returns an incremented rule ID + * @returns {string} + * @private + */ +QueryBuilder.prototype.nextRuleId = function() { + return this.status.id + '_rule_' + (this.status.rule_id++); +}; + +/** + * Returns the operators for a filter + * @param {string|object} filter - filter id or filter object + * @returns {object[]} + * @fires QueryBuilder.changer:getOperators + * @private + */ +QueryBuilder.prototype.getOperators = function(filter) { + if (typeof filter == 'string') { + filter = this.getFilterById(filter); + } + + var result = []; + + for (var i = 0, l = this.operators.length; i < l; i++) { + // filter operators check + if (filter.operators) { + if (filter.operators.indexOf(this.operators[i].type) == -1) { + continue; + } + } + // type check + else if (this.operators[i].apply_to.indexOf(QueryBuilder.types[filter.type]) == -1) { + continue; + } + + result.push(this.operators[i]); + } + + // keep sort order defined for the filter + if (filter.operators) { + result.sort(function(a, b) { + return filter.operators.indexOf(a.type) - filter.operators.indexOf(b.type); + }); + } + + /** + * Modifies the operators available for a filter + * @event changer:getOperators + * @memberof QueryBuilder + * @param {QueryBuilder.Operator[]} operators + * @param {QueryBuilder.Filter} filter + * @returns {QueryBuilder.Operator[]} + */ + return this.change('getOperators', result, filter); +}; + +/** + * Returns a particular filter by its id + * @param {string} id + * @param {boolean} [doThrow=true] + * @returns {object|null} + * @throws UndefinedFilterError + * @private + */ +QueryBuilder.prototype.getFilterById = function(id, doThrow) { + if (id == '-1') { + return null; + } + + for (var i = 0, l = this.filters.length; i < l; i++) { + if (this.filters[i].id == id) { + return this.filters[i]; + } + } + + Utils.error(doThrow !== false, 'UndefinedFilter', 'Undefined filter "{0}"', id); + + return null; +}; + +/** + * Returns a particular operator by its type + * @param {string} type + * @param {boolean} [doThrow=true] + * @returns {object|null} + * @throws UndefinedOperatorError + * @private + */ +QueryBuilder.prototype.getOperatorByType = function(type, doThrow) { + if (type == '-1') { + return null; + } + + for (var i = 0, l = this.operators.length; i < l; i++) { + if (this.operators[i].type == type) { + return this.operators[i]; + } + } + + Utils.error(doThrow !== false, 'UndefinedOperator', 'Undefined operator "{0}"', type); + + return null; +}; + +/** + * Returns rule's current input value + * @param {Rule} rule + * @returns {*} + * @fires QueryBuilder.changer:getRuleValue + * @private + */ +QueryBuilder.prototype.getRuleInputValue = function(rule) { + var filter = rule.filter; + var operator = rule.operator; + var value = []; + + if (filter.valueGetter) { + value = filter.valueGetter.call(this, rule); + } + else { + var $value = rule.$el.find(QueryBuilder.selectors.value_container); + + for (var i = 0; i < operator.nb_inputs; i++) { + var name = Utils.escapeElementId(rule.id + '_value_' + i); + var tmp; + + switch (filter.input) { + case 'radio': + value.push($value.find('[name=' + name + ']:checked').val()); + break; + + case 'checkbox': + tmp = []; + // jshint loopfunc:true + $value.find('[name=' + name + ']:checked').each(function() { + tmp.push($(this).val()); + }); + // jshint loopfunc:false + value.push(tmp); + break; + + case 'select': + if (filter.multiple) { + tmp = []; + // jshint loopfunc:true + $value.find('[name=' + name + '] option:selected').each(function() { + tmp.push($(this).val()); + }); + // jshint loopfunc:false + value.push(tmp); + } + else { + value.push($value.find('[name=' + name + '] option:selected').val()); + } + break; + + default: + value.push($value.find('[name=' + name + ']').val()); + } + } + + value = value.map(function(val) { + if (operator.multiple && filter.value_separator && typeof val == 'string') { + val = val.split(filter.value_separator); + } + + if ($.isArray(val)) { + return val.map(function(subval) { + return Utils.changeType(subval, filter.type); + }); + } + else { + return Utils.changeType(val, filter.type); + } + }); + + if (operator.nb_inputs === 1) { + value = value[0]; + } + + // @deprecated + if (filter.valueParser) { + value = filter.valueParser.call(this, rule, value); + } + } + + /** + * Modifies the rule's value grabbed from the DOM + * @event changer:getRuleValue + * @memberof QueryBuilder + * @param {*} value + * @param {Rule} rule + * @returns {*} + */ + return this.change('getRuleValue', value, rule); +}; + +/** + * Sets the value of a rule's input + * @param {Rule} rule + * @param {*} value + * @private + */ +QueryBuilder.prototype.setRuleInputValue = function(rule, value) { + var filter = rule.filter; + var operator = rule.operator; + + if (!filter || !operator) { + return; + } + + rule._updating_input = true; + + if (filter.valueSetter) { + filter.valueSetter.call(this, rule, value); + } + else { + var $value = rule.$el.find(QueryBuilder.selectors.value_container); + + if (operator.nb_inputs == 1) { + value = [value]; + } + + for (var i = 0; i < operator.nb_inputs; i++) { + var name = Utils.escapeElementId(rule.id + '_value_' + i); + + switch (filter.input) { + case 'radio': + $value.find('[name=' + name + '][value="' + value[i] + '"]').prop('checked', true).trigger('change'); + break; + + case 'checkbox': + if (!$.isArray(value[i])) { + value[i] = [value[i]]; + } + // jshint loopfunc:true + value[i].forEach(function(value) { + $value.find('[name=' + name + '][value="' + value + '"]').prop('checked', true).trigger('change'); + }); + // jshint loopfunc:false + break; + + default: + if (operator.multiple && filter.value_separator && $.isArray(value[i])) { + value[i] = value[i].join(filter.value_separator); + } + $value.find('[name=' + name + ']').val(value[i]).trigger('change'); + break; + } + } + } + + rule._updating_input = false; +}; + +/** + * Parses rule flags + * @param {object} rule + * @returns {object} + * @fires QueryBuilder.changer:parseRuleFlags + * @private + */ +QueryBuilder.prototype.parseRuleFlags = function(rule) { + var flags = $.extend({}, this.settings.default_rule_flags); + + if (rule.readonly) { + $.extend(flags, { + filter_readonly: true, + operator_readonly: true, + value_readonly: true, + no_delete: true + }); + } + + if (rule.flags) { + $.extend(flags, rule.flags); + } + + /** + * Modifies the consolidated rule's flags + * @event changer:parseRuleFlags + * @memberof QueryBuilder + * @param {object} flags + * @param {object} rule - not a Rule object + * @returns {object} + */ + return this.change('parseRuleFlags', flags, rule); +}; + +/** + * Gets a copy of flags of a rule + * @param {object} flags + * @param {boolean} [all=false] - return all flags or only changes from default flags + * @returns {object} + * @private + */ +QueryBuilder.prototype.getRuleFlags = function(flags, all) { + if (all) { + return $.extend({}, flags); + } + else { + var ret = {}; + $.each(this.settings.default_rule_flags, function(key, value) { + if (flags[key] !== value) { + ret[key] = flags[key]; + } + }); + return ret; + } +}; + +/** + * Parses group flags + * @param {object} group + * @returns {object} + * @fires QueryBuilder.changer:parseGroupFlags + * @private + */ +QueryBuilder.prototype.parseGroupFlags = function(group) { + var flags = $.extend({}, this.settings.default_group_flags); + + if (group.readonly) { + $.extend(flags, { + condition_readonly: true, + no_add_rule: true, + no_add_group: true, + no_delete: true + }); + } + + if (group.flags) { + $.extend(flags, group.flags); + } + + /** + * Modifies the consolidated group's flags + * @event changer:parseGroupFlags + * @memberof QueryBuilder + * @param {object} flags + * @param {object} group - not a Group object + * @returns {object} + */ + return this.change('parseGroupFlags', flags, group); +}; + +/** + * Gets a copy of flags of a group + * @param {object} flags + * @param {boolean} [all=false] - return all flags or only changes from default flags + * @returns {object} + * @private + */ +QueryBuilder.prototype.getGroupFlags = function(flags, all) { + if (all) { + return $.extend({}, flags); + } + else { + var ret = {}; + $.each(this.settings.default_group_flags, function(key, value) { + if (flags[key] !== value) { + ret[key] = flags[key]; + } + }); + return ret; + } +}; + +/** + * Translate a label either by looking in the `lang` object or in itself if it's an object where keys are language codes + * @param {string} [category] + * @param {string|object} key + * @returns {string} + * @fires QueryBuilder.changer:translate + */ +QueryBuilder.prototype.translate = function(category, key) { + if (!key) { + key = category; + category = undefined; + } + + var translation; + if (typeof key === 'object') { + translation = key[this.settings.lang_code] || key['en']; + } + else { + translation = (category ? this.lang[category] : this.lang)[key] || key; + } + + /** + * Modifies the translated label + * @event changer:translate + * @memberof QueryBuilder + * @param {string} translation + * @param {string|object} key + * @param {string} [category] + * @returns {string} + */ + return this.change('translate', translation, key, category); +}; + +/** + * Returns a validation message + * @param {object} validation + * @param {string} type + * @param {string} def + * @returns {string} + * @private + */ +QueryBuilder.prototype.getValidationMessage = function(validation, type, def) { + return validation.messages && validation.messages[type] || def; +}; + + +QueryBuilder.templates.group = '\ +
\ +
\ +
\ + \ + {{? it.settings.allow_groups===-1 || it.settings.allow_groups>=it.level }} \ + \ + {{?}} \ + {{? it.level>1 }} \ + \ + {{?}} \ +
\ +
\ + {{~ it.conditions: condition }} \ + \ + {{~}} \ +
\ + {{? it.settings.display_errors }} \ +
\ + {{?}} \ +
\ +
\ +
\ +
\ +
'; + +QueryBuilder.templates.rule = '\ +
\ +
\ +
\ + \ +
\ +
\ + {{? it.settings.display_errors }} \ +
\ + {{?}} \ +
\ +
\ +
\ +
'; + +QueryBuilder.templates.filterSelect = '\ +{{ var optgroup = null; }} \ +'; + +QueryBuilder.templates.operatorSelect = '\ +{{? it.operators.length === 1 }} \ + \ +{{= it.translate("operators", it.operators[0].type) }} \ + \ +{{?}} \ +{{ var optgroup = null; }} \ +'; + +QueryBuilder.templates.ruleValueSelect = '\ +{{ var optgroup = null; }} \ +'; + +/** + * Returns group's HTML + * @param {string} group_id + * @param {int} level + * @returns {string} + * @fires QueryBuilder.changer:getGroupTemplate + * @private + */ +QueryBuilder.prototype.getGroupTemplate = function(group_id, level) { + var h = this.templates.group({ + builder: this, + group_id: group_id, + level: level, + conditions: this.settings.conditions, + icons: this.icons, + settings: this.settings, + translate: this.translate.bind(this) + }); + + /** + * Modifies the raw HTML of a group + * @event changer:getGroupTemplate + * @memberof QueryBuilder + * @param {string} html + * @param {int} level + * @returns {string} + */ + return this.change('getGroupTemplate', h, level); +}; + +/** + * Returns rule's HTML + * @param {string} rule_id + * @returns {string} + * @fires QueryBuilder.changer:getRuleTemplate + * @private + */ +QueryBuilder.prototype.getRuleTemplate = function(rule_id) { + var h = this.templates.rule({ + builder: this, + rule_id: rule_id, + icons: this.icons, + settings: this.settings, + translate: this.translate.bind(this) + }); + + /** + * Modifies the raw HTML of a rule + * @event changer:getRuleTemplate + * @memberof QueryBuilder + * @param {string} html + * @returns {string} + */ + return this.change('getRuleTemplate', h); +}; + +/** + * Returns rule's filter HTML + * @param {Rule} rule + * @param {object[]} filters + * @returns {string} + * @fires QueryBuilder.changer:getRuleFilterTemplate + * @private + */ +QueryBuilder.prototype.getRuleFilterSelect = function(rule, filters) { + var h = this.templates.filterSelect({ + builder: this, + rule: rule, + filters: filters, + icons: this.icons, + settings: this.settings, + translate: this.translate.bind(this) + }); + + /** + * Modifies the raw HTML of the rule's filter dropdown + * @event changer:getRuleFilterSelect + * @memberof QueryBuilder + * @param {string} html + * @param {Rule} rule + * @param {QueryBuilder.Filter[]} filters + * @returns {string} + */ + return this.change('getRuleFilterSelect', h, rule, filters); +}; + +/** + * Returns rule's operator HTML + * @param {Rule} rule + * @param {object[]} operators + * @returns {string} + * @fires QueryBuilder.changer:getRuleOperatorTemplate + * @private + */ +QueryBuilder.prototype.getRuleOperatorSelect = function(rule, operators) { + var h = this.templates.operatorSelect({ + builder: this, + rule: rule, + operators: operators, + icons: this.icons, + settings: this.settings, + translate: this.translate.bind(this) + }); + + /** + * Modifies the raw HTML of the rule's operator dropdown + * @event changer:getRuleOperatorSelect + * @memberof QueryBuilder + * @param {string} html + * @param {Rule} rule + * @param {QueryBuilder.Operator[]} operators + * @returns {string} + */ + return this.change('getRuleOperatorSelect', h, rule, operators); +}; + +/** + * Returns the rule's value select HTML + * @param {string} name + * @param {Rule} rule + * @returns {string} + * @fires QueryBuilder.changer:getRuleValueSelect + * @private + */ +QueryBuilder.prototype.getRuleValueSelect = function(name, rule) { + var h = this.templates.ruleValueSelect({ + builder: this, + name: name, + rule: rule, + icons: this.icons, + settings: this.settings, + translate: this.translate.bind(this) + }); + + /** + * Modifies the raw HTML of the rule's value dropdown (in case of a "select filter) + * @event changer:getRuleValueSelect + * @memberof QueryBuilder + * @param {string} html + * @param [string} name + * @param {Rule} rule + * @returns {string} + */ + return this.change('getRuleValueSelect', h, name, rule); +}; + +/** + * Returns the rule's value HTML + * @param {Rule} rule + * @param {int} value_id + * @returns {string} + * @fires QueryBuilder.changer:getRuleInput + * @private + */ +QueryBuilder.prototype.getRuleInput = function(rule, value_id) { + var filter = rule.filter; + var validation = rule.filter.validation || {}; + var name = rule.id + '_value_' + value_id; + var c = filter.vertical ? ' class=block' : ''; + var h = ''; + + if (typeof filter.input == 'function') { + h = filter.input.call(this, rule, name); + } + else { + switch (filter.input) { + case 'radio': + case 'checkbox': + Utils.iterateOptions(filter.values, function(key, val) { + h += ' ' + val + ' '; + }); + break; + + case 'select': + h = this.getRuleValueSelect(name, rule); + break; + + case 'textarea': + h += ''; - break; - - case 'number': - h += ' - * Update events are emitted in the setter through root Model (if any).
- * The object must have a `__` object, non enumerable property to store values. - * @param {function} obj - * @param {string[]} fields - */ -Utils.defineModelProperties = function(obj, fields) { - fields.forEach(function(field) { - Object.defineProperty(obj.prototype, field, { - enumerable: true, - get: function() { - return this.__[field]; - }, - set: function(value) { - var previousValue = (this.__[field] !== null && typeof this.__[field] == 'object') ? - $.extend({}, this.__[field]) : - this.__[field]; - - this.__[field] = value; - - if (this.model !== null) { - /** - * After a value of the model changed - * @event model:update - * @memberof Model - * @param {Node} node - * @param {string} field - * @param {*} value - * @param {*} previousValue - */ - this.model.trigger('update', this, field, value, previousValue); - } - } - }); - }); -}; - - -/** - * Main object storing data model and emitting model events - * @constructor - */ -function Model() { - /** - * @member {Group} - * @readonly - */ - this.root = null; - - /** - * Base for event emitting - * @member {jQuery} - * @readonly - * @private - */ - this.$ = $(this); -} - -$.extend(Model.prototype, /** @lends Model.prototype */ { - /** - * Triggers an event on the model - * @param {string} type - * @returns {$.Event} - */ - trigger: function(type) { - var event = new $.Event(type); - this.$.triggerHandler(event, Array.prototype.slice.call(arguments, 1)); - return event; - }, - - /** - * Attaches an event listener on the model - * @param {string} type - * @param {function} cb - * @returns {Model} - */ - on: function() { - this.$.on.apply(this.$, Array.prototype.slice.call(arguments)); - return this; - }, - - /** - * Removes an event listener from the model - * @param {string} type - * @param {function} [cb] - * @returns {Model} - */ - off: function() { - this.$.off.apply(this.$, Array.prototype.slice.call(arguments)); - return this; - }, - - /** - * Attaches an event listener called once on the model - * @param {string} type - * @param {function} cb - * @returns {Model} - */ - once: function() { - this.$.one.apply(this.$, Array.prototype.slice.call(arguments)); - return this; - } -}); - - -/** - * Root abstract object - * @constructor - * @param {Node} [parent] - * @param {jQuery} $el - */ -var Node = function(parent, $el) { - if (!(this instanceof Node)) { - return new Node(parent, $el); - } - - Object.defineProperty(this, '__', { value: {} }); - - $el.data('queryBuilderModel', this); - - /** - * @name level - * @member {int} - * @memberof Node - * @instance - * @readonly - */ - this.__.level = 1; - - /** - * @name error - * @member {string} - * @memberof Node - * @instance - */ - this.__.error = null; - - /** - * @name flags - * @member {object} - * @memberof Node - * @instance - * @readonly - */ - this.__.flags = {}; - - /** - * @name data - * @member {object} - * @memberof Node - * @instance - */ - this.__.data = undefined; - - /** - * @member {jQuery} - * @readonly - */ - this.$el = $el; - - /** - * @member {string} - * @readonly - */ - this.id = $el[0].id; - - /** - * @member {Model} - * @readonly - */ - this.model = null; - - /** - * @member {Group} - * @readonly - */ - this.parent = parent; -}; - -Utils.defineModelProperties(Node, ['level', 'error', 'data', 'flags']); - -Object.defineProperty(Node.prototype, 'parent', { - enumerable: true, - get: function() { - return this.__.parent; - }, - set: function(value) { - this.__.parent = value; - this.level = value === null ? 1 : value.level + 1; - this.model = value === null ? null : value.model; - } -}); - -/** - * Checks if this Node is the root - * @returns {boolean} - */ -Node.prototype.isRoot = function() { - return (this.level === 1); -}; - -/** - * Returns the node position inside its parent - * @returns {int} - */ -Node.prototype.getPos = function() { - if (this.isRoot()) { - return -1; - } - else { - return this.parent.getNodePos(this); - } -}; - -/** - * Deletes self - * @fires Model.model:drop - */ -Node.prototype.drop = function() { - var model = this.model; - - if (!!this.parent) { - this.parent.removeNode(this); - } - - this.$el.removeData('queryBuilderModel'); - - if (model !== null) { - /** - * After a node of the model has been removed - * @event model:drop - * @memberof Model - * @param {Node} node - */ - model.trigger('drop', this); - } -}; - -/** - * Moves itself after another Node - * @param {Node} target - * @fires Model.model:move - */ -Node.prototype.moveAfter = function(target) { - if (!this.isRoot()) { - this.move(target.parent, target.getPos() + 1); - } -}; - -/** - * Moves itself at the beginning of parent or another Group - * @param {Group} [target] - * @fires Model.model:move - */ -Node.prototype.moveAtBegin = function(target) { - if (!this.isRoot()) { - if (target === undefined) { - target = this.parent; - } - - this.move(target, 0); - } -}; - -/** - * Moves itself at the end of parent or another Group - * @param {Group} [target] - * @fires Model.model:move - */ -Node.prototype.moveAtEnd = function(target) { - if (!this.isRoot()) { - if (target === undefined) { - target = this.parent; - } - - this.move(target, target.length() === 0 ? 0 : target.length() - 1); - } -}; - -/** - * Moves itself at specific position of Group - * @param {Group} target - * @param {int} index - * @fires Model.model:move - */ -Node.prototype.move = function(target, index) { - if (!this.isRoot()) { - if (typeof target === 'number') { - index = target; - target = this.parent; - } - - this.parent.removeNode(this); - target.insertNode(this, index, false); - - if (this.model !== null) { - /** - * After a node of the model has been moved - * @event model:move - * @memberof Model - * @param {Node} node - * @param {Node} target - * @param {int} index - */ - this.model.trigger('move', this, target, index); - } - } -}; - - -/** - * Group object - * @constructor - * @extends Node - * @param {Group} [parent] - * @param {jQuery} $el - */ -var Group = function(parent, $el) { - if (!(this instanceof Group)) { - return new Group(parent, $el); - } - - Node.call(this, parent, $el); - - /** - * @member {object[]} - * @readonly - */ - this.rules = []; - - /** - * @name condition - * @member {string} - * @memberof Group - * @instance - */ - this.__.condition = null; -}; - -Group.prototype = Object.create(Node.prototype); -Group.prototype.constructor = Group; - -Utils.defineModelProperties(Group, ['condition']); - -/** - * Removes group's content - */ -Group.prototype.empty = function() { - this.each('reverse', function(rule) { - rule.drop(); - }, function(group) { - group.drop(); - }); -}; - -/** - * Deletes self - */ -Group.prototype.drop = function() { - this.empty(); - Node.prototype.drop.call(this); -}; - -/** - * Returns the number of children - * @returns {int} - */ -Group.prototype.length = function() { - return this.rules.length; -}; - -/** - * Adds a Node at specified index - * @param {Node} node - * @param {int} [index=end] - * @param {boolean} [trigger=false] - fire 'add' event - * @returns {Node} the inserted node - * @fires Model.model:add - */ -Group.prototype.insertNode = function(node, index, trigger) { - if (index === undefined) { - index = this.length(); - } - - this.rules.splice(index, 0, node); - node.parent = this; - - if (trigger && this.model !== null) { - /** - * After a node of the model has been added - * @event model:add - * @memberof Model - * @param {Node} parent - * @param {Node} node - * @param {int} index - */ - this.model.trigger('add', this, node, index); - } - - return node; -}; - -/** - * Adds a new Group at specified index - * @param {jQuery} $el - * @param {int} [index=end] - * @returns {Group} - * @fires Model.model:add - */ -Group.prototype.addGroup = function($el, index) { - return this.insertNode(new Group(this, $el), index, true); -}; - -/** - * Adds a new Rule at specified index - * @param {jQuery} $el - * @param {int} [index=end] - * @returns {Rule} - * @fires Model.model:add - */ -Group.prototype.addRule = function($el, index) { - return this.insertNode(new Rule(this, $el), index, true); -}; - -/** - * Deletes a specific Node - * @param {Node} node - */ -Group.prototype.removeNode = function(node) { - var index = this.getNodePos(node); - if (index !== -1) { - node.parent = null; - this.rules.splice(index, 1); - } -}; - -/** - * Returns the position of a child Node - * @param {Node} node - * @returns {int} - */ -Group.prototype.getNodePos = function(node) { - return this.rules.indexOf(node); -}; - -/** - * @callback Model#GroupIteratee - * @param {Node} node - * @returns {boolean} stop the iteration - */ - -/** - * Iterate over all Nodes - * @param {boolean} [reverse=false] - iterate in reverse order, required if you delete nodes - * @param {Model#GroupIteratee} cbRule - callback for Rules (can be `null` but not omitted) - * @param {Model#GroupIteratee} [cbGroup] - callback for Groups - * @param {object} [context] - context for callbacks - * @returns {boolean} if the iteration has been stopped by a callback - */ -Group.prototype.each = function(reverse, cbRule, cbGroup, context) { - if (typeof reverse !== 'boolean' && typeof reverse !== 'string') { - context = cbGroup; - cbGroup = cbRule; - cbRule = reverse; - reverse = false; - } - context = context === undefined ? null : context; - - var i = reverse ? this.rules.length - 1 : 0; - var l = reverse ? 0 : this.rules.length - 1; - var c = reverse ? -1 : 1; - var next = function() { - return reverse ? i >= l : i <= l; - }; - var stop = false; - - for (; next(); i += c) { - if (this.rules[i] instanceof Group) { - if (!!cbGroup) { - stop = cbGroup.call(context, this.rules[i]) === false; - } - } - else if (!!cbRule) { - stop = cbRule.call(context, this.rules[i]) === false; - } - - if (stop) { - break; - } - } - - return !stop; -}; - -/** - * Checks if the group contains a particular Node - * @param {Node} node - * @param {boolean} [recursive=false] - * @returns {boolean} - */ -Group.prototype.contains = function(node, recursive) { - if (this.getNodePos(node) !== -1) { - return true; - } - else if (!recursive) { - return false; - } - else { - // the loop will return with false as soon as the Node is found - return !this.each(function() { - return true; - }, function(group) { - return !group.contains(node, true); - }); - } -}; - - -/** - * Rule object - * @constructor - * @extends Node - * @param {Group} parent - * @param {jQuery} $el - */ -var Rule = function(parent, $el) { - if (!(this instanceof Rule)) { - return new Rule(parent, $el); - } - - Node.call(this, parent, $el); - - this._updating_value = false; - this._updating_input = false; - - /** - * @name filter - * @member {QueryBuilder.Filter} - * @memberof Rule - * @instance - */ - this.__.filter = null; - - /** - * @name operator - * @member {QueryBuilder.Operator} - * @memberof Rule - * @instance - */ - this.__.operator = null; - - /** - * @name value - * @member {*} - * @memberof Rule - * @instance - */ - this.__.value = undefined; -}; - -Rule.prototype = Object.create(Node.prototype); -Rule.prototype.constructor = Rule; - -Utils.defineModelProperties(Rule, ['filter', 'operator', 'value']); - -/** - * Checks if this Node is the root - * @returns {boolean} always false - */ -Rule.prototype.isRoot = function() { - return false; -}; - - -/** - * @member {function} - * @memberof QueryBuilder - * @see Group - */ -QueryBuilder.Group = Group; - -/** - * @member {function} - * @memberof QueryBuilder - * @see Rule - */ -QueryBuilder.Rule = Rule; - - -/** - * The {@link http://learn.jquery.com/plugins/|jQuery Plugins} namespace - * @external "jQuery.fn" - */ - -/** - * Instanciates or accesses the {@link QueryBuilder} on an element - * @function - * @memberof external:"jQuery.fn" - * @param {*} option - initial configuration or method name - * @param {...*} args - method arguments - * - * @example - * $('#builder').queryBuilder({ /** configuration object *\/ }); - * @example - * $('#builder').queryBuilder('methodName', methodParam1, methodParam2); - */ -$.fn.queryBuilder = function(option) { - if (this.length === 0) { - Utils.error('Config', 'No target defined'); - } - if (this.length > 1) { - Utils.error('Config', 'Unable to initialize on multiple target'); - } - - var data = this.data('queryBuilder'); - var options = (typeof option == 'object' && option) || {}; - - if (!data && option == 'destroy') { - return this; - } - if (!data) { - var builder = new QueryBuilder(this, options); - this.data('queryBuilder', builder); - builder.init(options.rules); - } - if (typeof option == 'string') { - return data[option].apply(data, Array.prototype.slice.call(arguments, 1)); - } - - return this; -}; - -/** - * @function - * @memberof external:"jQuery.fn" - * @see QueryBuilder - */ -$.fn.queryBuilder.constructor = QueryBuilder; - -/** - * @function - * @memberof external:"jQuery.fn" - * @see QueryBuilder.defaults - */ -$.fn.queryBuilder.defaults = QueryBuilder.defaults; - -/** - * @function - * @memberof external:"jQuery.fn" - * @see QueryBuilder.defaults - */ -$.fn.queryBuilder.extend = QueryBuilder.extend; - -/** - * @function - * @memberof external:"jQuery.fn" - * @see QueryBuilder.define - */ -$.fn.queryBuilder.define = QueryBuilder.define; - -/** - * @function - * @memberof external:"jQuery.fn" - * @see QueryBuilder.regional - */ -$.fn.queryBuilder.regional = QueryBuilder.regional; - - -/** - * @class BtCheckbox - * @memberof module:plugins - * @description Applies Awesome Bootstrap Checkbox for checkbox and radio inputs. - * @param {object} [options] - * @param {string} [options.font='glyphicons'] - * @param {string} [options.color='default'] - */ -QueryBuilder.define('bt-checkbox', function(options) { - if (options.font == 'glyphicons') { - this.$el.addClass('bt-checkbox-glyphicons'); - } - - this.on('getRuleInput.filter', function(h, rule, name) { - var filter = rule.filter; - - if ((filter.input === 'radio' || filter.input === 'checkbox') && !filter.plugin) { - h.value = ''; - - if (!filter.colors) { - filter.colors = {}; - } - if (filter.color) { - filter.colors._def_ = filter.color; - } - - var style = filter.vertical ? ' style="display:block"' : ''; - var i = 0; - - Utils.iterateOptions(filter.values, function(key, val) { - var color = filter.colors[key] || filter.colors._def_ || options.color; - var id = name + '_' + (i++); - - h.value+= '\ - \ - \ - \ -
'; - }); - } - }); -}, { - font: 'glyphicons', - color: 'default' -}); - - -/** - * @class BtSelectpicker - * @memberof module:plugins - * @descriptioon Applies Bootstrap Select on filters and operators combo-boxes. - * @param {object} [options] - * @param {string} [options.container='body'] - * @param {string} [options.style='btn-inverse btn-xs'] - * @param {int|string} [options.width='auto'] - * @param {boolean} [options.showIcon=false] - * @throws MissingLibraryError - */ -QueryBuilder.define('bt-selectpicker', function(options) { - if (!$.fn.selectpicker || !$.fn.selectpicker.Constructor) { - Utils.error('MissingLibrary', 'Bootstrap Select is required to use "bt-selectpicker" plugin. Get it here: http://silviomoreto.github.io/bootstrap-select'); - } - - var Selectors = QueryBuilder.selectors; - - // init selectpicker - this.on('afterCreateRuleFilters', function(e, rule) { - rule.$el.find(Selectors.rule_filter).removeClass('form-control').selectpicker(options); - }); - - this.on('afterCreateRuleOperators', function(e, rule) { - rule.$el.find(Selectors.rule_operator).removeClass('form-control').selectpicker(options); - }); - - // update selectpicker on change - this.on('afterUpdateRuleFilter', function(e, rule) { - rule.$el.find(Selectors.rule_filter).selectpicker('render'); - }); - - this.on('afterUpdateRuleOperator', function(e, rule) { - rule.$el.find(Selectors.rule_operator).selectpicker('render'); - }); - - this.on('beforeDeleteRule', function(e, rule) { - rule.$el.find(Selectors.rule_filter).selectpicker('destroy'); - rule.$el.find(Selectors.rule_operator).selectpicker('destroy'); - }); -}, { - container: 'body', - style: 'btn-inverse btn-xs', - width: 'auto', - showIcon: false -}); - - -/** - * @class BtTooltipErrors - * @memberof module:plugins - * @description Applies Bootstrap Tooltips on validation error messages. - * @param {object} [options] - * @param {string} [options.placement='right'] - * @throws MissingLibraryError - */ -QueryBuilder.define('bt-tooltip-errors', function(options) { - if (!$.fn.tooltip || !$.fn.tooltip.Constructor || !$.fn.tooltip.Constructor.prototype.fixTitle) { - Utils.error('MissingLibrary', 'Bootstrap Tooltip is required to use "bt-tooltip-errors" plugin. Get it here: http://getbootstrap.com'); - } - - var self = this; - - // add BT Tooltip data - this.on('getRuleTemplate.filter getGroupTemplate.filter', function(h) { - var $h = $(h.value); - $h.find(QueryBuilder.selectors.error_container).attr('data-toggle', 'tooltip'); - h.value = $h.prop('outerHTML'); - }); - - // init/refresh tooltip when title changes - this.model.on('update', function(e, node, field) { - if (field == 'error' && self.settings.display_errors) { - node.$el.find(QueryBuilder.selectors.error_container).eq(0) - .tooltip(options) - .tooltip('hide') - .tooltip('fixTitle'); - } - }); -}, { - placement: 'right' -}); - - -/** - * @class ChangeFilters - * @memberof module:plugins - * @description Allows to change available filters after plugin initialization. - */ - -QueryBuilder.extend(/** @lends module:plugins.ChangeFilters.prototype */ { - /** - * Change the filters of the builder - * @param {boolean} [deleteOrphans=false] - delete rules using old filters - * @param {QueryBuilder[]} filters - * @fires module:plugins.ChangeFilters.changer:setFilters - * @fires module:plugins.ChangeFilters.afterSetFilters - * @throws ChangeFilterError - */ - setFilters: function(deleteOrphans, filters) { - var self = this; - - if (filters === undefined) { - filters = deleteOrphans; - deleteOrphans = false; - } - - filters = this.checkFilters(filters); - - /** - * Modifies the filters before {@link module:plugins.ChangeFilters.setFilters} method - * @event changer:setFilters - * @memberof module:plugins.ChangeFilters - * @param {QueryBuilder.Filter[]} filters - * @returns {QueryBuilder.Filter[]} - */ - filters = this.change('setFilters', filters); - - var filtersIds = filters.map(function(filter) { - return filter.id; - }); - - // check for orphans - if (!deleteOrphans) { - (function checkOrphans(node) { - node.each( - function(rule) { - if (rule.filter && filtersIds.indexOf(rule.filter.id) === -1) { - Utils.error('ChangeFilter', 'A rule is using filter "{0}"', rule.filter.id); - } - }, - checkOrphans - ); - }(this.model.root)); - } - - // replace filters - this.filters = filters; - - // apply on existing DOM - (function updateBuilder(node) { - node.each(true, - function(rule) { - if (rule.filter && filtersIds.indexOf(rule.filter.id) === -1) { - rule.drop(); - - self.trigger('rulesChanged'); - } - else { - self.createRuleFilters(rule); - - rule.$el.find(QueryBuilder.selectors.rule_filter).val(rule.filter ? rule.filter.id : '-1'); - self.trigger('afterUpdateRuleFilter', rule); - } - }, - updateBuilder - ); - }(this.model.root)); - - // update plugins - if (this.settings.plugins) { - if (this.settings.plugins['unique-filter']) { - this.updateDisabledFilters(); - } - if (this.settings.plugins['bt-selectpicker']) { - this.$el.find(QueryBuilder.selectors.rule_filter).selectpicker('render'); - } - } - - // reset the default_filter if does not exist anymore - if (this.settings.default_filter) { - try { - this.getFilterById(this.settings.default_filter); - } - catch (e) { - this.settings.default_filter = null; - } - } - - /** - * After {@link module:plugins.ChangeFilters.setFilters} method - * @event afterSetFilters - * @memberof module:plugins.ChangeFilters - * @param {QueryBuilder.Filter[]} filters - */ - this.trigger('afterSetFilters', filters); - }, - - /** - * Adds a new filter to the builder - * @param {QueryBuilder.Filter|Filter[]} newFilters - * @param {int|string} [position=#end] - index or '#start' or '#end' - * @fires module:plugins.ChangeFilters.changer:setFilters - * @fires module:plugins.ChangeFilters.afterSetFilters - * @throws ChangeFilterError - */ - addFilter: function(newFilters, position) { - if (position === undefined || position == '#end') { - position = this.filters.length; - } - else if (position == '#start') { - position = 0; - } - - if (!$.isArray(newFilters)) { - newFilters = [newFilters]; - } - - var filters = $.extend(true, [], this.filters); - - // numeric position - if (parseInt(position) == position) { - Array.prototype.splice.apply(filters, [position, 0].concat(newFilters)); - } - else { - // after filter by its id - if (this.filters.some(function(filter, index) { - if (filter.id == position) { - position = index + 1; - return true; - } - }) - ) { - Array.prototype.splice.apply(filters, [position, 0].concat(newFilters)); - } - // defaults to end of list - else { - Array.prototype.push.apply(filters, newFilters); - } - } - - this.setFilters(filters); - }, - - /** - * Removes a filter from the builder - * @param {string|string[]} filterIds - * @param {boolean} [deleteOrphans=false] delete rules using old filters - * @fires module:plugins.ChangeFilters.changer:setFilters - * @fires module:plugins.ChangeFilters.afterSetFilters - * @throws ChangeFilterError - */ - removeFilter: function(filterIds, deleteOrphans) { - var filters = $.extend(true, [], this.filters); - if (typeof filterIds === 'string') { - filterIds = [filterIds]; - } - - filters = filters.filter(function(filter) { - return filterIds.indexOf(filter.id) === -1; - }); - - this.setFilters(deleteOrphans, filters); - } -}); - - -/** - * @class ChosenSelectpicker - * @memberof module:plugins - * @descriptioon Applies chosen-js Select on filters and operators combo-boxes. - * @param {object} [options] Supports all the options for chosen - * @throws MissingLibraryError - */ -QueryBuilder.define('chosen-selectpicker', function(options) { - - if (!$.fn.chosen) { - Utils.error('MissingLibrary', 'chosen is required to use "chosen-selectpicker" plugin. Get it here: https://github.com/harvesthq/chosen'); - } - - if (this.settings.plugins['bt-selectpicker']) { - Utils.error('Conflict', 'bt-selectpicker is already selected as the dropdown plugin. Please remove chosen-selectpicker from the plugin list'); - } - - var Selectors = QueryBuilder.selectors; - - // init selectpicker - this.on('afterCreateRuleFilters', function(e, rule) { - rule.$el.find(Selectors.rule_filter).removeClass('form-control').chosen(options); - }); - - this.on('afterCreateRuleOperators', function(e, rule) { - rule.$el.find(Selectors.rule_operator).removeClass('form-control').chosen(options); - }); - - // update selectpicker on change - this.on('afterUpdateRuleFilter', function(e, rule) { - rule.$el.find(Selectors.rule_filter).trigger('chosen:updated'); - }); - - this.on('afterUpdateRuleOperator', function(e, rule) { - rule.$el.find(Selectors.rule_operator).trigger('chosen:updated'); - }); - - this.on('beforeDeleteRule', function(e, rule) { - rule.$el.find(Selectors.rule_filter).chosen('destroy'); - rule.$el.find(Selectors.rule_operator).chosen('destroy'); - }); -}); - - -/** - * @class FilterDescription - * @memberof module:plugins - * @description Provides three ways to display a description about a filter: inline, Bootsrap Popover or Bootbox. - * @param {object} [options] - * @param {string} [options.icon='glyphicon glyphicon-info-sign'] - * @param {string} [options.mode='popover'] - inline, popover or bootbox - * @throws ConfigError - */ -QueryBuilder.define('filter-description', function(options) { - // INLINE - if (options.mode === 'inline') { - this.on('afterUpdateRuleFilter afterUpdateRuleOperator', function(e, rule) { - var $p = rule.$el.find('p.filter-description'); - var description = e.builder.getFilterDescription(rule.filter, rule); - - if (!description) { - $p.hide(); - } - else { - if ($p.length === 0) { - $p = $('

'); - $p.appendTo(rule.$el); - } - else { - $p.css('display', ''); - } - - $p.html(' ' + description); - } - }); - } - // POPOVER - else if (options.mode === 'popover') { - if (!$.fn.popover || !$.fn.popover.Constructor || !$.fn.popover.Constructor.prototype.fixTitle) { - Utils.error('MissingLibrary', 'Bootstrap Popover is required to use "filter-description" plugin. Get it here: http://getbootstrap.com'); - } - - this.on('afterUpdateRuleFilter afterUpdateRuleOperator', function(e, rule) { - var $b = rule.$el.find('button.filter-description'); - var description = e.builder.getFilterDescription(rule.filter, rule); - - if (!description) { - $b.hide(); - - if ($b.data('bs.popover')) { - $b.popover('hide'); - } - } - else { - if ($b.length === 0) { - $b = $(''); - $b.prependTo(rule.$el.find(QueryBuilder.selectors.rule_actions)); - - $b.popover({ - placement: 'left', - container: 'body', - html: true - }); - - $b.on('mouseout', function() { - $b.popover('hide'); - }); - } - else { - $b.css('display', ''); - } - - $b.data('bs.popover').options.content = description; - - if ($b.attr('aria-describedby')) { - $b.popover('show'); - } - } - }); - } - // BOOTBOX - else if (options.mode === 'bootbox') { - if (!('bootbox' in window)) { - Utils.error('MissingLibrary', 'Bootbox is required to use "filter-description" plugin. Get it here: http://bootboxjs.com'); - } - - this.on('afterUpdateRuleFilter afterUpdateRuleOperator', function(e, rule) { - var $b = rule.$el.find('button.filter-description'); - var description = e.builder.getFilterDescription(rule.filter, rule); - - if (!description) { - $b.hide(); - } - else { - if ($b.length === 0) { - $b = $(''); - $b.prependTo(rule.$el.find(QueryBuilder.selectors.rule_actions)); - - $b.on('click', function() { - bootbox.alert($b.data('description')); - }); - } - else { - $b.css('display', ''); - } - - $b.data('description', description); - } - }); - } -}, { - icon: 'glyphicon glyphicon-info-sign', - mode: 'popover' -}); - -QueryBuilder.extend(/** @lends module:plugins.FilterDescription.prototype */ { - /** - * Returns the description of a filter for a particular rule (if present) - * @param {object} filter - * @param {Rule} [rule] - * @returns {string} - * @private - */ - getFilterDescription: function(filter, rule) { - if (!filter) { - return undefined; - } - else if (typeof filter.description == 'function') { - return filter.description.call(this, rule); - } - else { - return filter.description; - } - } -}); - - -/** - * @class Invert - * @memberof module:plugins - * @description Allows to invert a rule operator, a group condition or the entire builder. - * @param {object} [options] - * @param {string} [options.icon='glyphicon glyphicon-random'] - * @param {boolean} [options.recursive=true] - * @param {boolean} [options.invert_rules=true] - * @param {boolean} [options.display_rules_button=false] - * @param {boolean} [options.silent_fail=false] - */ -QueryBuilder.define('invert', function(options) { - var self = this; - var Selectors = QueryBuilder.selectors; - - // Bind events - this.on('afterInit', function() { - self.$el.on('click.queryBuilder', '[data-invert=group]', function() { - var $group = $(this).closest(Selectors.group_container); - self.invert(self.getModel($group), options); - }); - - if (options.display_rules_button && options.invert_rules) { - self.$el.on('click.queryBuilder', '[data-invert=rule]', function() { - var $rule = $(this).closest(Selectors.rule_container); - self.invert(self.getModel($rule), options); - }); - } - }); - - // Modify templates - if (!options.disable_template) { - this.on('getGroupTemplate.filter', function(h) { - var $h = $(h.value); - $h.find(Selectors.condition_container).after( - '' - ); - h.value = $h.prop('outerHTML'); - }); - - if (options.display_rules_button && options.invert_rules) { - this.on('getRuleTemplate.filter', function(h) { - var $h = $(h.value); - $h.find(Selectors.rule_actions).prepend( - '' - ); - h.value = $h.prop('outerHTML'); - }); - } - } -}, { - icon: 'glyphicon glyphicon-random', - recursive: true, - invert_rules: true, - display_rules_button: false, - silent_fail: false, - disable_template: false -}); - -QueryBuilder.defaults({ - operatorOpposites: { - 'equal': 'not_equal', - 'not_equal': 'equal', - 'in': 'not_in', - 'not_in': 'in', - 'less': 'greater_or_equal', - 'less_or_equal': 'greater', - 'greater': 'less_or_equal', - 'greater_or_equal': 'less', - 'between': 'not_between', - 'not_between': 'between', - 'begins_with': 'not_begins_with', - 'not_begins_with': 'begins_with', - 'contains': 'not_contains', - 'not_contains': 'contains', - 'ends_with': 'not_ends_with', - 'not_ends_with': 'ends_with', - 'is_empty': 'is_not_empty', - 'is_not_empty': 'is_empty', - 'is_null': 'is_not_null', - 'is_not_null': 'is_null' - }, - - conditionOpposites: { - 'AND': 'OR', - 'OR': 'AND' - } -}); - -QueryBuilder.extend(/** @lends module:plugins.Invert.prototype */ { - /** - * Invert a Group, a Rule or the whole builder - * @param {Node} [node] - * @param {object} [options] {@link module:plugins.Invert} - * @fires module:plugins.Invert.afterInvert - * @throws InvertConditionError, InvertOperatorError - */ - invert: function(node, options) { - if (!(node instanceof Node)) { - if (!this.model.root) return; - options = node; - node = this.model.root; - } - - if (typeof options != 'object') options = {}; - if (options.recursive === undefined) options.recursive = true; - if (options.invert_rules === undefined) options.invert_rules = true; - if (options.silent_fail === undefined) options.silent_fail = false; - if (options.trigger === undefined) options.trigger = true; - - if (node instanceof Group) { - // invert group condition - if (this.settings.conditionOpposites[node.condition]) { - node.condition = this.settings.conditionOpposites[node.condition]; - } - else if (!options.silent_fail) { - Utils.error('InvertCondition', 'Unknown inverse of condition "{0}"', node.condition); - } - - // recursive call - if (options.recursive) { - var tempOpts = $.extend({}, options, { trigger: false }); - node.each(function(rule) { - if (options.invert_rules) { - this.invert(rule, tempOpts); - } - }, function(group) { - this.invert(group, tempOpts); - }, this); - } - } - else if (node instanceof Rule) { - if (node.operator && !node.filter.no_invert) { - // invert rule operator - if (this.settings.operatorOpposites[node.operator.type]) { - var invert = this.settings.operatorOpposites[node.operator.type]; - // check if the invert is "authorized" - if (!node.filter.operators || node.filter.operators.indexOf(invert) != -1) { - node.operator = this.getOperatorByType(invert); - } - } - else if (!options.silent_fail) { - Utils.error('InvertOperator', 'Unknown inverse of operator "{0}"', node.operator.type); - } - } - } - - if (options.trigger) { - /** - * After {@link module:plugins.Invert.invert} method - * @event afterInvert - * @memberof module:plugins.Invert - * @param {Node} node - the main group or rule that has been modified - * @param {object} options - */ - this.trigger('afterInvert', node, options); - - this.trigger('rulesChanged'); - } - } -}); - - -/** - * @class MongoDbSupport - * @memberof module:plugins - * @description Allows to export rules as a MongoDB find object as well as populating the builder from a MongoDB object. - */ - -QueryBuilder.defaults({ - mongoOperators: { - // @formatter:off - equal: function(v) { return v[0]; }, - not_equal: function(v) { return { '$ne': v[0] }; }, - in: function(v) { return { '$in': v }; }, - not_in: function(v) { return { '$nin': v }; }, - less: function(v) { return { '$lt': v[0] }; }, - less_or_equal: function(v) { return { '$lte': v[0] }; }, - greater: function(v) { return { '$gt': v[0] }; }, - greater_or_equal: function(v) { return { '$gte': v[0] }; }, - between: function(v) { return { '$gte': v[0], '$lte': v[1] }; }, - not_between: function(v) { return { '$lt': v[0], '$gt': v[1] }; }, - begins_with: function(v) { return { '$regex': '^' + Utils.escapeRegExp(v[0]) }; }, - not_begins_with: function(v) { return { '$regex': '^(?!' + Utils.escapeRegExp(v[0]) + ')' }; }, - contains: function(v) { return { '$regex': Utils.escapeRegExp(v[0]) }; }, - not_contains: function(v) { return { '$regex': '^((?!' + Utils.escapeRegExp(v[0]) + ').)*$', '$options': 's' }; }, - ends_with: function(v) { return { '$regex': Utils.escapeRegExp(v[0]) + '$' }; }, - not_ends_with: function(v) { return { '$regex': '(? 0) { - parts.push(parse(rule)); - } - else { - var mdb = self.settings.mongoOperators[rule.operator]; - var ope = self.getOperatorByType(rule.operator); - - if (mdb === undefined) { - Utils.error('UndefinedMongoOperator', 'Unknown MongoDB operation for operator "{0}"', rule.operator); - } - - if (ope.nb_inputs !== 0) { - if (!(rule.value instanceof Array)) { - rule.value = [rule.value]; - } - } - - /** - * Modifies the MongoDB field used by a rule - * @event changer:getMongoDBField - * @memberof module:plugins.MongoDbSupport - * @param {string} field - * @param {Rule} rule - * @returns {string} - */ - var field = self.change('getMongoDBField', rule.field, rule); - - var ruleExpression = {}; - ruleExpression[field] = mdb.call(self, rule.value); - - /** - * Modifies the MongoDB expression generated for a rul - * @event changer:ruleToMongo - * @memberof module:plugins.MongoDbSupport - * @param {object} expression - * @param {Rule} rule - * @param {*} value - * @param {function} valueWrapper - function that takes the value and adds the operator - * @returns {object} - */ - parts.push(self.change('ruleToMongo', ruleExpression, rule, rule.value, mdb)); - } - }); - - var groupExpression = {}; - groupExpression['$' + group.condition.toLowerCase()] = parts; - - /** - * Modifies the MongoDB expression generated for a group - * @event changer:groupToMongo - * @memberof module:plugins.MongoDbSupport - * @param {object} expression - * @param {Group} group - * @returns {object} - */ - return self.change('groupToMongo', groupExpression, group); - }(data)); - }, - - /** - * Converts a MongoDB query to rules - * @param {object} query - * @returns {object} - * @fires module:plugins.MongoDbSupport.changer:parseMongoNode - * @fires module:plugins.MongoDbSupport.changer:getMongoDBFieldID - * @fires module:plugins.MongoDbSupport.changer:mongoToRule - * @fires module:plugins.MongoDbSupport.changer:mongoToGroup - * @throws MongoParseError, UndefinedMongoConditionError, UndefinedMongoOperatorError - */ - getRulesFromMongo: function(query) { - if (query === undefined || query === null) { - return null; - } - - var self = this; - - /** - * Custom parsing of a MongoDB expression, you can return a sub-part of the expression, or a well formed group or rule JSON - * @event changer:parseMongoNode - * @memberof module:plugins.MongoDbSupport - * @param {object} expression - * @returns {object} expression, rule or group - */ - query = self.change('parseMongoNode', query); - - // a plugin returned a group - if ('rules' in query && 'condition' in query) { - return query; - } - - // a plugin returned a rule - if ('id' in query && 'operator' in query && 'value' in query) { - return { - condition: this.settings.default_condition, - rules: [query] - }; - } - - var key = self.getMongoCondition(query); - if (!key) { - Utils.error('MongoParse', 'Invalid MongoDB query format'); - } - - return (function parse(data, topKey) { - var rules = data[topKey]; - var parts = []; - - rules.forEach(function(data) { - // allow plugins to manually parse or handle special cases - data = self.change('parseMongoNode', data); - - // a plugin returned a group - if ('rules' in data && 'condition' in data) { - parts.push(data); - return; - } - - // a plugin returned a rule - if ('id' in data && 'operator' in data && 'value' in data) { - parts.push(data); - return; - } - - var key = self.getMongoCondition(data); - if (key) { - parts.push(parse(data, key)); - } - else { - var field = Object.keys(data)[0]; - var value = data[field]; - - var operator = self.getMongoOperator(value); - if (operator === undefined) { - Utils.error('MongoParse', 'Invalid MongoDB query format'); - } - - var mdbrl = self.settings.mongoRuleOperators[operator]; - if (mdbrl === undefined) { - Utils.error('UndefinedMongoOperator', 'JSON Rule operation unknown for operator "{0}"', operator); - } - - var opVal = mdbrl.call(self, value); - - var id = self.getMongoDBFieldID(field, value); - - /** - * Modifies the rule generated from the MongoDB expression - * @event changer:mongoToRule - * @memberof module:plugins.MongoDbSupport - * @param {object} rule - * @param {object} expression - * @returns {object} - */ - var rule = self.change('mongoToRule', { - id: id, - field: field, - operator: opVal.op, - value: opVal.val - }, data); - - parts.push(rule); - } - }); - - /** - * Modifies the group generated from the MongoDB expression - * @event changer:mongoToGroup - * @memberof module:plugins.MongoDbSupport - * @param {object} group - * @param {object} expression - * @returns {object} - */ - return self.change('mongoToGroup', { - condition: topKey.replace('$', '').toUpperCase(), - rules: parts - }, data); - }(query, key)); - }, - - /** - * Sets rules a from MongoDB query - * @see module:plugins.MongoDbSupport.getRulesFromMongo - */ - setRulesFromMongo: function(query) { - this.setRules(this.getRulesFromMongo(query)); - }, - - /** - * Returns a filter identifier from the MongoDB field. - * Automatically use the only one filter with a matching field, fires a changer otherwise. - * @param {string} field - * @param {*} value - * @fires module:plugins.MongoDbSupport:changer:getMongoDBFieldID - * @returns {string} - * @private - */ - getMongoDBFieldID: function(field, value) { - var matchingFilters = this.filters.filter(function(filter) { - return filter.field === field; - }); - - var id; - if (matchingFilters.length === 1) { - id = matchingFilters[0].id; - } - else { - /** - * Returns a filter identifier from the MongoDB field - * @event changer:getMongoDBFieldID - * @memberof module:plugins.MongoDbSupport - * @param {string} field - * @param {*} value - * @returns {string} - */ - id = this.change('getMongoDBFieldID', field, value); - } - - return id; - }, - - /** - * Finds which operator is used in a MongoDB sub-object - * @param {*} data - * @returns {string|undefined} - * @private - */ - getMongoOperator: function(data) { - if (data !== null && typeof data === 'object') { - if (data.$gte !== undefined && data.$lte !== undefined) { - return 'between'; - } - if (data.$lt !== undefined && data.$gt !== undefined) { - return 'not_between'; - } - - var knownKeys = Object.keys(data).filter(function(key) { - return !!this.settings.mongoRuleOperators[key]; - }.bind(this)); - - if (knownKeys.length === 1) { - return knownKeys[0]; - } - } - else { - return '$eq'; - } - }, - - - /** - * Returns the key corresponding to "$or" or "$and" - * @param {object} data - * @returns {string|undefined} - * @private - */ - getMongoCondition: function(data) { - var keys = Object.keys(data); - - for (var i = 0, l = keys.length; i < l; i++) { - if (keys[i].toLowerCase() === '$or' || keys[i].toLowerCase() === '$and') { - return keys[i]; - } - } - } -}); - - -/** - * @class NotGroup - * @memberof module:plugins - * @description Adds a "Not" checkbox in front of group conditions. - * @param {object} [options] - * @param {string} [options.icon_checked='glyphicon glyphicon-checked'] - * @param {string} [options.icon_unchecked='glyphicon glyphicon-unchecked'] - */ -QueryBuilder.define('not-group', function(options) { - var self = this; - - // Bind events - this.on('afterInit', function() { - self.$el.on('click.queryBuilder', '[data-not=group]', function() { - var $group = $(this).closest(QueryBuilder.selectors.group_container); - var group = self.getModel($group); - group.not = !group.not; - }); - - self.model.on('update', function(e, node, field) { - if (node instanceof Group && field === 'not') { - self.updateGroupNot(node); - } - }); - }); - - // Init "not" property - this.on('afterAddGroup', function(e, group) { - group.__.not = false; - }); - - // Modify templates - if (!options.disable_template) { - this.on('getGroupTemplate.filter', function(h) { - var $h = $(h.value); - $h.find(QueryBuilder.selectors.condition_container).prepend( - '' - ); - h.value = $h.prop('outerHTML'); - }); - } - - // Export "not" to JSON - this.on('groupToJson.filter', function(e, group) { - e.value.not = group.not; - }); - - // Read "not" from JSON - this.on('jsonToGroup.filter', function(e, json) { - e.value.not = !!json.not; - }); - - // Export "not" to SQL - this.on('groupToSQL.filter', function(e, group) { - if (group.not) { - e.value = 'NOT ( ' + e.value + ' )'; - } - }); - - // Parse "NOT" function from sqlparser - this.on('parseSQLNode.filter', function(e) { - if (e.value.name && e.value.name.toUpperCase() == 'NOT') { - e.value = e.value.arguments.value[0]; - - // if the there is no sub-group, create one - if (['AND', 'OR'].indexOf(e.value.operation.toUpperCase()) === -1) { - e.value = new SQLParser.nodes.Op( - self.settings.default_condition, - e.value, - null - ); - } - - e.value.not = true; - } - }); - - // Request to create sub-group if the "not" flag is set - this.on('sqlGroupsDistinct.filter', function(e, group, data, i) { - if (data.not && i > 0) { - e.value = true; - } - }); - - // Read "not" from parsed SQL - this.on('sqlToGroup.filter', function(e, data) { - e.value.not = !!data.not; - }); - - // Export "not" to Mongo - this.on('groupToMongo.filter', function(e, group) { - var key = '$' + group.condition.toLowerCase(); - if (group.not && e.value[key]) { - e.value = { '$nor': [e.value] }; - } - }); - - // Parse "$nor" operator from Mongo - this.on('parseMongoNode.filter', function(e) { - var keys = Object.keys(e.value); - - if (keys[0] == '$nor') { - e.value = e.value[keys[0]][0]; - e.value.not = true; - } - }); - - // Read "not" from parsed Mongo - this.on('mongoToGroup.filter', function(e, data) { - e.value.not = !!data.not; - }); -}, { - icon_unchecked: 'glyphicon glyphicon-unchecked', - icon_checked: 'glyphicon glyphicon-check', - disable_template: false -}); - -/** - * From {@link module:plugins.NotGroup} - * @name not - * @member {boolean} - * @memberof Group - * @instance - */ -Utils.defineModelProperties(Group, ['not']); - -QueryBuilder.selectors.group_not = QueryBuilder.selectors.group_header + ' [data-not=group]'; - -QueryBuilder.extend(/** @lends module:plugins.NotGroup.prototype */ { - /** - * Performs actions when a group's not changes - * @param {Group} group - * @fires module:plugins.NotGroup.afterUpdateGroupNot - * @private - */ - updateGroupNot: function(group) { - var options = this.plugins['not-group']; - group.$el.find('>' + QueryBuilder.selectors.group_not) - .toggleClass('active', group.not) - .find('i').attr('class', group.not ? options.icon_checked : options.icon_unchecked); - - /** - * After the group's not flag has been modified - * @event afterUpdateGroupNot - * @memberof module:plugins.NotGroup - * @param {Group} group - */ - this.trigger('afterUpdateGroupNot', group); - - this.trigger('rulesChanged'); - } -}); - - -/** - * @class Sortable - * @memberof module:plugins - * @description Enables drag & drop sort of rules. - * @param {object} [options] - * @param {boolean} [options.inherit_no_drop=true] - * @param {boolean} [options.inherit_no_sortable=true] - * @param {string} [options.icon='glyphicon glyphicon-sort'] - * @throws MissingLibraryError, ConfigError - */ -QueryBuilder.define('sortable', function(options) { - if (!('interact' in window)) { - Utils.error('MissingLibrary', 'interact.js is required to use "sortable" plugin. Get it here: http://interactjs.io'); - } - - if (options.default_no_sortable !== undefined) { - Utils.error(false, 'Config', 'Sortable plugin : "default_no_sortable" options is deprecated, use standard "default_rule_flags" and "default_group_flags" instead'); - this.settings.default_rule_flags.no_sortable = this.settings.default_group_flags.no_sortable = options.default_no_sortable; - } - - // recompute drop-zones during drag (when a rule is hidden) - interact.dynamicDrop(true); - - // set move threshold to 10px - interact.pointerMoveTolerance(10); - - var placeholder; - var ghost; - var src; - var moved; - - // Init drag and drop - this.on('afterAddRule afterAddGroup', function(e, node) { - if (node == placeholder) { - return; - } - - var self = e.builder; - - // Inherit flags - if (options.inherit_no_sortable && node.parent && node.parent.flags.no_sortable) { - node.flags.no_sortable = true; - } - if (options.inherit_no_drop && node.parent && node.parent.flags.no_drop) { - node.flags.no_drop = true; - } - - // Configure drag - if (!node.flags.no_sortable) { - interact(node.$el[0]) - .draggable({ - allowFrom: QueryBuilder.selectors.drag_handle, - onstart: function(event) { - moved = false; - - // get model of dragged element - src = self.getModel(event.target); - - // create ghost - ghost = src.$el.clone() - .appendTo(src.$el.parent()) - .width(src.$el.outerWidth()) - .addClass('dragging'); - - // create drop placeholder - var ph = $('
 
') - .height(src.$el.outerHeight()); - - placeholder = src.parent.addRule(ph, src.getPos()); - - // hide dragged element - src.$el.hide(); - }, - onmove: function(event) { - // make the ghost follow the cursor - ghost[0].style.top = event.clientY - 15 + 'px'; - ghost[0].style.left = event.clientX - 15 + 'px'; - }, - onend: function(event) { - // starting from Interact 1.3.3, onend is called before ondrop - if (event.dropzone) { - moveSortableToTarget(src, $(event.relatedTarget), self); - moved = true; - } - - // remove ghost - ghost.remove(); - ghost = undefined; - - // remove placeholder - placeholder.drop(); - placeholder = undefined; - - // show element - src.$el.css('display', ''); - - /** - * After a node has been moved with {@link module:plugins.Sortable} - * @event afterMove - * @memberof module:plugins.Sortable - * @param {Node} node - */ - self.trigger('afterMove', src); - - self.trigger('rulesChanged'); - } - }); - } - - if (!node.flags.no_drop) { - // Configure drop on groups and rules - interact(node.$el[0]) - .dropzone({ - accept: QueryBuilder.selectors.rule_and_group_containers, - ondragenter: function(event) { - moveSortableToTarget(placeholder, $(event.target), self); - }, - ondrop: function(event) { - if (!moved) { - moveSortableToTarget(src, $(event.target), self); - } - } - }); - - // Configure drop on group headers - if (node instanceof Group) { - interact(node.$el.find(QueryBuilder.selectors.group_header)[0]) - .dropzone({ - accept: QueryBuilder.selectors.rule_and_group_containers, - ondragenter: function(event) { - moveSortableToTarget(placeholder, $(event.target), self); - }, - ondrop: function(event) { - if (!moved) { - moveSortableToTarget(src, $(event.target), self); - } - } - }); - } - } - }); - - // Detach interactables - this.on('beforeDeleteRule beforeDeleteGroup', function(e, node) { - if (!e.isDefaultPrevented()) { - interact(node.$el[0]).unset(); - - if (node instanceof Group) { - interact(node.$el.find(QueryBuilder.selectors.group_header)[0]).unset(); - } - } - }); - - // Remove drag handle from non-sortable items - this.on('afterApplyRuleFlags afterApplyGroupFlags', function(e, node) { - if (node.flags.no_sortable) { - node.$el.find('.drag-handle').remove(); - } - }); - - // Modify templates - if (!options.disable_template) { - this.on('getGroupTemplate.filter', function(h, level) { - if (level > 1) { - var $h = $(h.value); - $h.find(QueryBuilder.selectors.condition_container).after('
'); - h.value = $h.prop('outerHTML'); - } - }); - - this.on('getRuleTemplate.filter', function(h) { - var $h = $(h.value); - $h.find(QueryBuilder.selectors.rule_header).after('
'); - h.value = $h.prop('outerHTML'); - }); - } -}, { - inherit_no_sortable: true, - inherit_no_drop: true, - icon: 'glyphicon glyphicon-sort', - disable_template: false -}); - -QueryBuilder.selectors.rule_and_group_containers = QueryBuilder.selectors.rule_container + ', ' + QueryBuilder.selectors.group_container; -QueryBuilder.selectors.drag_handle = '.drag-handle'; - -QueryBuilder.defaults({ - default_rule_flags: { - no_sortable: false, - no_drop: false - }, - default_group_flags: { - no_sortable: false, - no_drop: false - } -}); - -/** - * Moves an element (placeholder or actual object) depending on active target - * @memberof module:plugins.Sortable - * @param {Node} node - * @param {jQuery} target - * @param {QueryBuilder} [builder] - * @private - */ -function moveSortableToTarget(node, target, builder) { - var parent, method; - var Selectors = QueryBuilder.selectors; - - // on rule - parent = target.closest(Selectors.rule_container); - if (parent.length) { - method = 'moveAfter'; - } - - // on group header - if (!method) { - parent = target.closest(Selectors.group_header); - if (parent.length) { - parent = target.closest(Selectors.group_container); - method = 'moveAtBegin'; - } - } - - // on group - if (!method) { - parent = target.closest(Selectors.group_container); - if (parent.length) { - method = 'moveAtEnd'; - } - } - - if (method) { - node[method](builder.getModel(parent)); - - // refresh radio value - if (builder && node instanceof Rule) { - builder.setRuleInputValue(node, node.value); - } - } -} - - -/** - * @class SqlSupport - * @memberof module:plugins - * @description Allows to export rules as a SQL WHERE statement as well as populating the builder from an SQL query. - * @param {object} [options] - * @param {boolean} [options.boolean_as_integer=true] - `true` to convert boolean values to integer in the SQL output - */ -QueryBuilder.define('sql-support', function(options) { - -}, { - boolean_as_integer: true -}); - -QueryBuilder.defaults({ - // operators for internal -> SQL conversion - sqlOperators: { - equal: { op: '= ?' }, - not_equal: { op: '!= ?' }, - in: { op: 'IN(?)', sep: ', ' }, - not_in: { op: 'NOT IN(?)', sep: ', ' }, - less: { op: '< ?' }, - less_or_equal: { op: '<= ?' }, - greater: { op: '> ?' }, - greater_or_equal: { op: '>= ?' }, - between: { op: 'BETWEEN ?', sep: ' AND ' }, - not_between: { op: 'NOT BETWEEN ?', sep: ' AND ' }, - begins_with: { op: 'LIKE(?)', mod: '{0}%' }, - not_begins_with: { op: 'NOT LIKE(?)', mod: '{0}%' }, - contains: { op: 'LIKE(?)', mod: '%{0}%' }, - not_contains: { op: 'NOT LIKE(?)', mod: '%{0}%' }, - ends_with: { op: 'LIKE(?)', mod: '%{0}' }, - not_ends_with: { op: 'NOT LIKE(?)', mod: '%{0}' }, - is_empty: { op: '= \'\'' }, - is_not_empty: { op: '!= \'\'' }, - is_null: { op: 'IS NULL' }, - is_not_null: { op: 'IS NOT NULL' } - }, - - // operators for SQL -> internal conversion - sqlRuleOperator: { - '=': function(v) { - return { - val: v, - op: v === '' ? 'is_empty' : 'equal' - }; - }, - '!=': function(v) { - return { - val: v, - op: v === '' ? 'is_not_empty' : 'not_equal' - }; - }, - 'LIKE': function(v) { - if (v.slice(0, 1) == '%' && v.slice(-1) == '%') { - return { - val: v.slice(1, -1), - op: 'contains' - }; - } - else if (v.slice(0, 1) == '%') { - return { - val: v.slice(1), - op: 'ends_with' - }; - } - else if (v.slice(-1) == '%') { - return { - val: v.slice(0, -1), - op: 'begins_with' - }; - } - else { - Utils.error('SQLParse', 'Invalid value for LIKE operator "{0}"', v); - } - }, - 'NOT LIKE': function(v) { - if (v.slice(0, 1) == '%' && v.slice(-1) == '%') { - return { - val: v.slice(1, -1), - op: 'not_contains' - }; - } - else if (v.slice(0, 1) == '%') { - return { - val: v.slice(1), - op: 'not_ends_with' - }; - } - else if (v.slice(-1) == '%') { - return { - val: v.slice(0, -1), - op: 'not_begins_with' - }; - } - else { - Utils.error('SQLParse', 'Invalid value for NOT LIKE operator "{0}"', v); - } - }, - 'IN': function(v) { - return { val: v, op: 'in' }; - }, - 'NOT IN': function(v) { - return { val: v, op: 'not_in' }; - }, - '<': function(v) { - return { val: v, op: 'less' }; - }, - '<=': function(v) { - return { val: v, op: 'less_or_equal' }; - }, - '>': function(v) { - return { val: v, op: 'greater' }; - }, - '>=': function(v) { - return { val: v, op: 'greater_or_equal' }; - }, - 'BETWEEN': function(v) { - return { val: v, op: 'between' }; - }, - 'NOT BETWEEN': function(v) { - return { val: v, op: 'not_between' }; - }, - 'IS': function(v) { - if (v !== null) { - Utils.error('SQLParse', 'Invalid value for IS operator'); - } - return { val: null, op: 'is_null' }; - }, - 'IS NOT': function(v) { - if (v !== null) { - Utils.error('SQLParse', 'Invalid value for IS operator'); - } - return { val: null, op: 'is_not_null' }; - } - }, - - // statements for internal -> SQL conversion - sqlStatements: { - 'question_mark': function() { - var params = []; - return { - add: function(rule, value) { - params.push(value); - return '?'; - }, - run: function() { - return params; - } - }; - }, - - 'numbered': function(char) { - if (!char || char.length > 1) char = '$'; - var index = 0; - var params = []; - return { - add: function(rule, value) { - params.push(value); - index++; - return char + index; - }, - run: function() { - return params; - } - }; - }, - - 'named': function(char) { - if (!char || char.length > 1) char = ':'; - var indexes = {}; - var params = {}; - return { - add: function(rule, value) { - if (!indexes[rule.field]) indexes[rule.field] = 1; - var key = rule.field + '_' + (indexes[rule.field]++); - params[key] = value; - return char + key; - }, - run: function() { - return params; - } - }; - } - }, - - // statements for SQL -> internal conversion - sqlRuleStatement: { - 'question_mark': function(values) { - var index = 0; - return { - parse: function(v) { - return v == '?' ? values[index++] : v; - }, - esc: function(sql) { - return sql.replace(/\?/g, '\'?\''); - } - }; - }, - - 'numbered': function(values, char) { - if (!char || char.length > 1) char = '$'; - var regex1 = new RegExp('^\\' + char + '[0-9]+$'); - var regex2 = new RegExp('\\' + char + '([0-9]+)', 'g'); - return { - parse: function(v) { - return regex1.test(v) ? values[v.slice(1) - 1] : v; - }, - esc: function(sql) { - return sql.replace(regex2, '\'' + (char == '$' ? '$$' : char) + '$1\''); - } - }; - }, - - 'named': function(values, char) { - if (!char || char.length > 1) char = ':'; - var regex1 = new RegExp('^\\' + char); - var regex2 = new RegExp('\\' + char + '(' + Object.keys(values).join('|') + ')', 'g'); - return { - parse: function(v) { - return regex1.test(v) ? values[v.slice(1)] : v; - }, - esc: function(sql) { - return sql.replace(regex2, '\'' + (char == '$' ? '$$' : char) + '$1\''); - } - }; - } - } -}); - -/** - * @typedef {object} SqlQuery - * @memberof module:plugins.SqlSupport - * @property {string} sql - * @property {object} params - */ - -QueryBuilder.extend(/** @lends module:plugins.SqlSupport.prototype */ { - /** - * Returns rules as a SQL query - * @param {boolean|string} [stmt] - use prepared statements: false, 'question_mark', 'numbered', 'numbered(@)', 'named', 'named(@)' - * @param {boolean} [nl=false] output with new lines - * @param {object} [data] - current rules by default - * @returns {module:plugins.SqlSupport.SqlQuery} - * @fires module:plugins.SqlSupport.changer:getSQLField - * @fires module:plugins.SqlSupport.changer:ruleToSQL - * @fires module:plugins.SqlSupport.changer:groupToSQL - * @throws UndefinedSQLConditionError, UndefinedSQLOperatorError - */ - getSQL: function(stmt, nl, data) { - data = (data === undefined) ? this.getRules() : data; - - if (!data) { - return null; - } - - nl = !!nl ? '\n' : ' '; - var boolean_as_integer = this.getPluginOptions('sql-support', 'boolean_as_integer'); - - if (stmt === true) { - stmt = 'question_mark'; - } - if (typeof stmt == 'string') { - var config = getStmtConfig(stmt); - stmt = this.settings.sqlStatements[config[1]](config[2]); - } - - var self = this; - - var sql = (function parse(group) { - if (!group.condition) { - group.condition = self.settings.default_condition; - } - if (['AND', 'OR'].indexOf(group.condition.toUpperCase()) === -1) { - Utils.error('UndefinedSQLCondition', 'Unable to build SQL query with condition "{0}"', group.condition); - } - - if (!group.rules) { - return ''; - } - - var parts = []; - - group.rules.forEach(function(rule) { - if (rule.rules && rule.rules.length > 0) { - parts.push('(' + nl + parse(rule) + nl + ')' + nl); - } - else { - var sql = self.settings.sqlOperators[rule.operator]; - var ope = self.getOperatorByType(rule.operator); - var value = ''; - - if (sql === undefined) { - Utils.error('UndefinedSQLOperator', 'Unknown SQL operation for operator "{0}"', rule.operator); - } - - if (ope.nb_inputs !== 0) { - if (!(rule.value instanceof Array)) { - rule.value = [rule.value]; - } - - rule.value.forEach(function(v, i) { - if (i > 0) { - value += sql.sep; - } - - if (rule.type == 'boolean' && boolean_as_integer) { - v = v ? 1 : 0; - } - else if (!stmt && rule.type !== 'integer' && rule.type !== 'double' && rule.type !== 'boolean') { - v = Utils.escapeString(v); - } - - if (sql.mod) { - v = Utils.fmt(sql.mod, v); - } - - if (stmt) { - value += stmt.add(rule, v); - } - else { - if (typeof v == 'string') { - v = '\'' + v + '\''; - } - - value += v; - } - }); - } - - var sqlFn = function(v) { - return sql.op.replace('?', function() { - return v; - }); - }; - - /** - * Modifies the SQL field used by a rule - * @event changer:getSQLField - * @memberof module:plugins.SqlSupport - * @param {string} field - * @param {Rule} rule - * @returns {string} - */ - var field = self.change('getSQLField', rule.field, rule); - - var ruleExpression = field + ' ' + sqlFn(value); - - /** - * Modifies the SQL generated for a rule - * @event changer:ruleToSQL - * @memberof module:plugins.SqlSupport - * @param {string} expression - * @param {Rule} rule - * @param {*} value - * @param {function} valueWrapper - function that takes the value and adds the operator - * @returns {string} - */ - parts.push(self.change('ruleToSQL', ruleExpression, rule, value, sqlFn)); - } - }); - - var groupExpression = parts.join(' ' + group.condition + nl); - - /** - * Modifies the SQL generated for a group - * @event changer:groupToSQL - * @memberof module:plugins.SqlSupport - * @param {string} expression - * @param {Group} group - * @returns {string} - */ - return self.change('groupToSQL', groupExpression, group); - }(data)); - - if (stmt) { - return { - sql: sql, - params: stmt.run() - }; - } - else { - return { - sql: sql - }; - } - }, - - /** - * Convert a SQL query to rules - * @param {string|module:plugins.SqlSupport.SqlQuery} query - * @param {boolean|string} stmt - * @returns {object} - * @fires module:plugins.SqlSupport.changer:parseSQLNode - * @fires module:plugins.SqlSupport.changer:getSQLFieldID - * @fires module:plugins.SqlSupport.changer:sqlToRule - * @fires module:plugins.SqlSupport.changer:sqlToGroup - * @throws MissingLibraryError, SQLParseError, UndefinedSQLOperatorError - */ - getRulesFromSQL: function(query, stmt) { - if (!('SQLParser' in window)) { - Utils.error('MissingLibrary', 'SQLParser is required to parse SQL queries. Get it here https://github.com/mistic100/sql-parser'); - } - - var self = this; - - if (typeof query == 'string') { - query = { sql: query }; - } - - if (stmt === true) stmt = 'question_mark'; - if (typeof stmt == 'string') { - var config = getStmtConfig(stmt); - stmt = this.settings.sqlRuleStatement[config[1]](query.params, config[2]); - } - - if (stmt) { - query.sql = stmt.esc(query.sql); - } - - if (query.sql.toUpperCase().indexOf('SELECT') !== 0) { - query.sql = 'SELECT * FROM table WHERE ' + query.sql; - } - - var parsed = SQLParser.parse(query.sql); - - if (!parsed.where) { - Utils.error('SQLParse', 'No WHERE clause found'); - } - - /** - * Custom parsing of an AST node generated by SQLParser, you can return a sub-part of the tree, or a well formed group or rule JSON - * @event changer:parseSQLNode - * @memberof module:plugins.SqlSupport - * @param {object} AST node - * @returns {object} tree, rule or group - */ - var data = self.change('parseSQLNode', parsed.where.conditions); - - // a plugin returned a group - if ('rules' in data && 'condition' in data) { - return data; - } - - // a plugin returned a rule - if ('id' in data && 'operator' in data && 'value' in data) { - return { - condition: this.settings.default_condition, - rules: [data] - }; - } - - // create root group - var out = self.change('sqlToGroup', { - condition: this.settings.default_condition, - rules: [] - }, data); - - // keep track of current group - var curr = out; - - (function flatten(data, i) { - if (data === null) { - return; - } - - // allow plugins to manually parse or handle special cases - data = self.change('parseSQLNode', data); - - // a plugin returned a group - if ('rules' in data && 'condition' in data) { - curr.rules.push(data); - return; - } - - // a plugin returned a rule - if ('id' in data && 'operator' in data && 'value' in data) { - curr.rules.push(data); - return; - } - - // data must be a SQL parser node - if (!('left' in data) || !('right' in data) || !('operation' in data)) { - Utils.error('SQLParse', 'Unable to parse WHERE clause'); - } - - // it's a node - if (['AND', 'OR'].indexOf(data.operation.toUpperCase()) !== -1) { - // create a sub-group if the condition is not the same and it's not the first level - - /** - * Given an existing group and an AST node, determines if a sub-group must be created - * @event changer:sqlGroupsDistinct - * @memberof module:plugins.SqlSupport - * @param {boolean} create - true by default if the group condition is different - * @param {object} group - * @param {object} AST - * @param {int} current group level - * @returns {boolean} - */ - var createGroup = self.change('sqlGroupsDistinct', i > 0 && curr.condition != data.operation.toUpperCase(), curr, data, i); - - if (createGroup) { - /** - * Modifies the group generated from the SQL expression (this is called before the group is filled with rules) - * @event changer:sqlToGroup - * @memberof module:plugins.SqlSupport - * @param {object} group - * @param {object} AST - * @returns {object} - */ - var group = self.change('sqlToGroup', { - condition: self.settings.default_condition, - rules: [] - }, data); - - curr.rules.push(group); - curr = group; - } - - curr.condition = data.operation.toUpperCase(); - i++; - - // some magic ! - var next = curr; - flatten(data.left, i); - - curr = next; - flatten(data.right, i); - } - // it's a leaf - else { - if ($.isPlainObject(data.right.value)) { - Utils.error('SQLParse', 'Value format not supported for {0}.', data.left.value); - } - - // convert array - var value; - if ($.isArray(data.right.value)) { - value = data.right.value.map(function(v) { - return v.value; - }); - } - else { - value = data.right.value; - } - - // get actual values - if (stmt) { - if ($.isArray(value)) { - value = value.map(stmt.parse); - } - else { - value = stmt.parse(value); - } - } - - // convert operator - var operator = data.operation.toUpperCase(); - if (operator == '<>') { - operator = '!='; - } - - var sqlrl = self.settings.sqlRuleOperator[operator]; - if (sqlrl === undefined) { - Utils.error('UndefinedSQLOperator', 'Invalid SQL operation "{0}".', data.operation); - } - - var opVal = sqlrl.call(this, value, data.operation); - - // find field name - var field; - if ('values' in data.left) { - field = data.left.values.join('.'); - } - else if ('value' in data.left) { - field = data.left.value; - } - else { - Utils.error('SQLParse', 'Cannot find field name in {0}', JSON.stringify(data.left)); - } - - var id = self.getSQLFieldID(field, value); - - /** - * Modifies the rule generated from the SQL expression - * @event changer:sqlToRule - * @memberof module:plugins.SqlSupport - * @param {object} rule - * @param {object} AST - * @returns {object} - */ - var rule = self.change('sqlToRule', { - id: id, - field: field, - operator: opVal.op, - value: opVal.val - }, data); - - curr.rules.push(rule); - } - }(data, 0)); - - return out; - }, - - /** - * Sets the builder's rules from a SQL query - * @see module:plugins.SqlSupport.getRulesFromSQL - */ - setRulesFromSQL: function(query, stmt) { - this.setRules(this.getRulesFromSQL(query, stmt)); - }, - - /** - * Returns a filter identifier from the SQL field. - * Automatically use the only one filter with a matching field, fires a changer otherwise. - * @param {string} field - * @param {*} value - * @fires module:plugins.SqlSupport:changer:getSQLFieldID - * @returns {string} - * @private - */ - getSQLFieldID: function(field, value) { - var matchingFilters = this.filters.filter(function(filter) { - return filter.field.toLowerCase() === field.toLowerCase(); - }); - - var id; - if (matchingFilters.length === 1) { - id = matchingFilters[0].id; - } - else { - /** - * Returns a filter identifier from the SQL field - * @event changer:getSQLFieldID - * @memberof module:plugins.SqlSupport - * @param {string} field - * @param {*} value - * @returns {string} - */ - id = this.change('getSQLFieldID', field, value); - } - - return id; - } -}); - -/** - * Parses the statement configuration - * @memberof module:plugins.SqlSupport - * @param {string} stmt - * @returns {Array} null, mode, option - * @private - */ -function getStmtConfig(stmt) { - var config = stmt.match(/(question_mark|numbered|named)(?:\((.)\))?/); - if (!config) config = [null, 'question_mark', undefined]; - return config; -} - - -/** - * @class UniqueFilter - * @memberof module:plugins - * @description Allows to define some filters as "unique": ie which can be used for only one rule, globally or in the same group. - */ -QueryBuilder.define('unique-filter', function() { - this.status.used_filters = {}; - - this.on('afterUpdateRuleFilter', this.updateDisabledFilters); - this.on('afterDeleteRule', this.updateDisabledFilters); - this.on('afterCreateRuleFilters', this.applyDisabledFilters); - this.on('afterReset', this.clearDisabledFilters); - this.on('afterClear', this.clearDisabledFilters); - - // Ensure that the default filter is not already used if unique - this.on('getDefaultFilter.filter', function(e, model) { - var self = e.builder; - - self.updateDisabledFilters(); - - if (e.value.id in self.status.used_filters) { - var found = self.filters.some(function(filter) { - if (!(filter.id in self.status.used_filters) || self.status.used_filters[filter.id].length > 0 && self.status.used_filters[filter.id].indexOf(model.parent) === -1) { - e.value = filter; - return true; - } - }); - - if (!found) { - Utils.error(false, 'UniqueFilter', 'No more non-unique filters available'); - e.value = undefined; - } - } - }); -}); - -QueryBuilder.extend(/** @lends module:plugins.UniqueFilter.prototype */ { - /** - * Updates the list of used filters - * @param {$.Event} [e] - * @private - */ - updateDisabledFilters: function(e) { - var self = e ? e.builder : this; - - self.status.used_filters = {}; - - if (!self.model) { - return; - } - - // get used filters - (function walk(group) { - group.each(function(rule) { - if (rule.filter && rule.filter.unique) { - if (!self.status.used_filters[rule.filter.id]) { - self.status.used_filters[rule.filter.id] = []; - } - if (rule.filter.unique == 'group') { - self.status.used_filters[rule.filter.id].push(rule.parent); - } - } - }, function(group) { - walk(group); - }); - }(self.model.root)); - - self.applyDisabledFilters(e); - }, - - /** - * Clear the list of used filters - * @param {$.Event} [e] - * @private - */ - clearDisabledFilters: function(e) { - var self = e ? e.builder : this; - - self.status.used_filters = {}; - - self.applyDisabledFilters(e); - }, - - /** - * Disabled filters depending on the list of used ones - * @param {$.Event} [e] - * @private - */ - applyDisabledFilters: function(e) { - var self = e ? e.builder : this; - - // re-enable everything - self.$el.find(QueryBuilder.selectors.filter_container + ' option').prop('disabled', false); - - // disable some - $.each(self.status.used_filters, function(filterId, groups) { - if (groups.length === 0) { - self.$el.find(QueryBuilder.selectors.filter_container + ' option[value="' + filterId + '"]:not(:selected)').prop('disabled', true); - } - else { - groups.forEach(function(group) { - group.each(function(rule) { - rule.$el.find(QueryBuilder.selectors.filter_container + ' option[value="' + filterId + '"]:not(:selected)').prop('disabled', true); - }); - }); - } - }); - - // update Selectpicker - if (self.settings.plugins && self.settings.plugins['bt-selectpicker']) { - self.$el.find(QueryBuilder.selectors.rule_filter).selectpicker('render'); - } - } -}); - - -/*! - * jQuery QueryBuilder 2.5.2 - * Locale: English (en) - * Author: Damien "Mistic" Sorel, http://www.strangeplanet.fr - * Licensed under MIT (https://opensource.org/licenses/MIT) - */ - -QueryBuilder.regional['en'] = { - "__locale": "English (en)", - "__author": "Damien \"Mistic\" Sorel, http://www.strangeplanet.fr", - "add_rule": "Add rule", - "add_group": "Add group", - "delete_rule": "Delete", - "delete_group": "Delete", - "conditions": { - "AND": "AND", - "OR": "OR" - }, - "operators": { - "equal": "equal", - "not_equal": "not equal", - "in": "in", - "not_in": "not in", - "less": "less", - "less_or_equal": "less or equal", - "greater": "greater", - "greater_or_equal": "greater or equal", - "between": "between", - "not_between": "not between", - "begins_with": "begins with", - "not_begins_with": "doesn't begin with", - "contains": "contains", - "not_contains": "doesn't contain", - "ends_with": "ends with", - "not_ends_with": "doesn't end with", - "is_empty": "is empty", - "is_not_empty": "is not empty", - "is_null": "is null", - "is_not_null": "is not null" - }, - "errors": { - "no_filter": "No filter selected", - "empty_group": "The group is empty", - "radio_empty": "No value selected", - "checkbox_empty": "No value selected", - "select_empty": "No value selected", - "string_empty": "Empty value", - "string_exceed_min_length": "Must contain at least {0} characters", - "string_exceed_max_length": "Must not contain more than {0} characters", - "string_invalid_format": "Invalid format ({0})", - "number_nan": "Not a number", - "number_not_integer": "Not an integer", - "number_not_double": "Not a real number", - "number_exceed_min": "Must be greater than {0}", - "number_exceed_max": "Must be lower than {0}", - "number_wrong_step": "Must be a multiple of {0}", - "number_between_invalid": "Invalid values, {0} is greater than {1}", - "datetime_empty": "Empty value", - "datetime_invalid": "Invalid date format ({0})", - "datetime_exceed_min": "Must be after {0}", - "datetime_exceed_max": "Must be before {0}", - "datetime_between_invalid": "Invalid values, {0} is greater than {1}", - "boolean_not_valid": "Not a boolean", - "operator_not_multiple": "Operator \"{1}\" cannot accept multiple values" - }, - "invert": "Invert", - "NOT": "NOT" -}; - -QueryBuilder.defaults({ lang_code: 'en' }); -return QueryBuilder; - -})); diff --git a/webapp/src/main/webapp/themes/iph/js/query-builder.standalone.min.js b/webapp/src/main/webapp/themes/iph/js/query-builder.standalone.min.js deleted file mode 100644 index 2fab5e13..00000000 --- a/webapp/src/main/webapp/themes/iph/js/query-builder.standalone.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * jQuery QueryBuilder 2.5.2 - * Copyright 2014-2018 Damien "Mistic" Sorel (http://www.strangeplanet.fr) - * Licensed under MIT (https://opensource.org/licenses/MIT) - */ - -!function(e,t){"function"==typeof define&&define.amd?define("jQuery.extendext",["jquery"],t):"object"==typeof module&&module.exports?module.exports=t(require("jquery")):t(e.jQuery)}(this,function($){"use strict";$.extendext=function(){var e,t,r,n,i,o,l=arguments[0]||{},s=1,a=arguments.length,u=!1,p="default";for("boolean"==typeof l&&(u=l,l=arguments[s++]||{}),"string"==typeof l&&("concat"!==(p=l.toLowerCase())&&"replace"!==p&&"extend"!==p&&(p="default"),l=arguments[s++]||{}),"object"==typeof l||$.isFunction(l)||(l={}),s===a&&(l=this,s--);s":">",'"':""","'":"'","/":"/"},r=e?/[&<>"'\/]/g:/&(?!#?\w+;)|<|>|"|'|\//g;return function(e){return e?e.toString().replace(r,function(e){return t[e]||e}):""}},a=function(){return this||(0,eval)("this")}(),"undefined"!=typeof module&&module.exports?module.exports=u:"function"==typeof define&&define.amd?define("doT",function(){return u}):a.doT=u;var p={append:{start:"'+(",end:")+'",startencode:"'+encodeHTML("},split:{start:"';out+=(",end:");out+='",startencode:"';out+=encodeHTML("}},d=/$^/;function c(e){return e.replace(/\\('|\\)/g,"$1").replace(/[\r\t\n]/g," ")}u.template=function(e,t,r){var n,i,o=(t=t||u.templateSettings).append?p.append:p.split,l=0,s=t.use||t.define?function n(i,e,o){return("string"==typeof e?e:e.toString()).replace(i.define||d,function(e,n,t,r){return 0===n.indexOf("def.")&&(n=n.substring(4)),n in o||(":"===t?(i.defineParams&&r.replace(i.defineParams,function(e,t,r){o[n]={arg:t,text:r}}),n in o||(o[n]=r)):new Function("def","def['"+n+"']="+r)(o)),""}).replace(i.use||d,function(e,t){i.useParams&&(t=t.replace(i.useParams,function(e,t,r,n){if(o[r]&&o[r].arg&&n){var i=(r+":"+n).replace(/'|\\/g,"_");return o.__exp=o.__exp||{},o.__exp[i]=o[r].text.replace(new RegExp("(^|[^\\w$])"+o[r].arg+"([^\\w$])","g"),"$1"+n+"$2"),t+"def.__exp['"+i+"']"}}));var r=new Function("def","return "+t)(o);return r?n(i,r,o):r})}(t,e,r||{}):e;s=("var out='"+(t.strip?s.replace(/(^|\r|\n)\t* +| +\t*(\r|\n|$)/g," ").replace(/\r|\n|\t|\/\*[\s\S]*?\*\//g,""):s).replace(/'|\\/g,"\\$&").replace(t.interpolate||d,function(e,t){return o.start+c(t)+o.end}).replace(t.encode||d,function(e,t){return n=!0,o.startencode+c(t)+o.end}).replace(t.conditional||d,function(e,t,r){return t?r?"';}else if("+c(r)+"){out+='":"';}else{out+='":r?"';if("+c(r)+"){out+='":"';}out+='"}).replace(t.iterate||d,function(e,t,r,n){return t?(l+=1,i=n||"i"+l,t=c(t),"';var arr"+l+"="+t+";if(arr"+l+"){var "+r+","+i+"=-1,l"+l+"=arr"+l+".length-1;while("+i+".rules-list",group_condition:".rules-group-header [name$=_cond]",rule_filter:".rule-filter-container [name$=_filter]",rule_operator:".rule-operator-container [name$=_operator]",rule_value:".rule-value-container [name*=_value_]",add_rule:"[data-add=rule]",delete_rule:"[data-delete=rule]",add_group:"[data-add=group]",delete_group:"[data-delete=group]"},c.templates={},c.regional={},c.OPERATORS={equal:{type:"equal",nb_inputs:1,multiple:!1,apply_to:["string","number","datetime","boolean"]},not_equal:{type:"not_equal",nb_inputs:1,multiple:!1,apply_to:["string","number","datetime","boolean"]},in:{type:"in",nb_inputs:1,multiple:!0,apply_to:["string","number","datetime"]},not_in:{type:"not_in",nb_inputs:1,multiple:!0,apply_to:["string","number","datetime"]},less:{type:"less",nb_inputs:1,multiple:!1,apply_to:["number","datetime"]},less_or_equal:{type:"less_or_equal",nb_inputs:1,multiple:!1,apply_to:["number","datetime"]},greater:{type:"greater",nb_inputs:1,multiple:!1,apply_to:["number","datetime"]},greater_or_equal:{type:"greater_or_equal",nb_inputs:1,multiple:!1,apply_to:["number","datetime"]},between:{type:"between",nb_inputs:2,multiple:!1,apply_to:["number","datetime"]},not_between:{type:"not_between",nb_inputs:2,multiple:!1,apply_to:["number","datetime"]},begins_with:{type:"begins_with",nb_inputs:1,multiple:!1,apply_to:["string"]},not_begins_with:{type:"not_begins_with",nb_inputs:1,multiple:!1,apply_to:["string"]},contains:{type:"contains",nb_inputs:1,multiple:!1,apply_to:["string"]},not_contains:{type:"not_contains",nb_inputs:1,multiple:!1,apply_to:["string"]},ends_with:{type:"ends_with",nb_inputs:1,multiple:!1,apply_to:["string"]},not_ends_with:{type:"not_ends_with",nb_inputs:1,multiple:!1,apply_to:["string"]},is_empty:{type:"is_empty",nb_inputs:0,multiple:!1,apply_to:["string"]},is_not_empty:{type:"is_not_empty",nb_inputs:0,multiple:!1,apply_to:["string"]},is_null:{type:"is_null",nb_inputs:0,multiple:!1,apply_to:["string","number","datetime","boolean"]},is_not_null:{type:"is_not_null",nb_inputs:0,multiple:!1,apply_to:["string","number","datetime","boolean"]}},c.DEFAULTS={filters:[],plugins:[],sort_filters:!1,display_errors:!0,allow_groups:-1,allow_empty:!1,conditions:["AND","OR"],default_condition:"AND",inputs_separator:" , ",select_placeholder:"------",display_empty_filter:!0,default_filter:null,optgroups:{},default_rule_flags:{filter_readonly:!1,operator_readonly:!1,value_readonly:!1,no_delete:!1},default_group_flags:{condition_readonly:!1,no_add_rule:!1,no_add_group:!1,no_delete:!1},templates:{group:null,rule:null,filterSelect:null,operatorSelect:null,ruleValueSelect:null},lang_code:"en",lang:{},operators:["equal","not_equal","in","not_in","less","less_or_equal","greater","greater_or_equal","between","not_between","begins_with","not_begins_with","contains","not_contains","ends_with","not_ends_with","is_empty","is_not_empty","is_null","is_not_null"],icons:{add_group:"glyphicon glyphicon-plus-sign",add_rule:"glyphicon glyphicon-plus",remove_group:"glyphicon glyphicon-remove",remove_rule:"glyphicon glyphicon-remove",error:"glyphicon glyphicon-warning-sign"}},c.plugins={},c.defaults=function(e){if("object"!=typeof e)return"string"==typeof e?"object"==typeof c.DEFAULTS[e]?$.extend(!0,{},c.DEFAULTS[e]):c.DEFAULTS[e]:$.extend(!0,{},c.DEFAULTS);$.extendext(!0,"replace",c.DEFAULTS,e)},c.define=function(e,t,r){c.plugins[e]={fct:t,def:r||{}}},c.extend=function(e){$.extend(c.prototype,e)},c.prototype.initPlugins=function(){if(this.plugins){if($.isArray(this.plugins)){var t={};this.plugins.forEach(function(e){t[e]=null}),this.plugins=t}Object.keys(this.plugins).forEach(function(e){e in c.plugins?(this.plugins[e]=$.extend(!0,{},c.plugins[e].def,this.plugins[e]||{}),c.plugins[e].fct.call(this,this.plugins[e])):h.error("Config",'Unable to find plugin "{0}"',e)},this)}},c.prototype.getPluginOptions=function(e,t){var r;if(this.plugins&&this.plugins[e]?r=this.plugins[e]:c.plugins[e]&&(r=c.plugins[e].def),r)return t?r[t]:r;h.error("Config",'Unable to find plugin "{0}"',e)},c.prototype.init=function(e){this.trigger("afterInit"),e?(this.setRules(e),delete this.settings.rules):this.setRoot(!0)},c.prototype.checkFilters=function(e){var t=[];if(e&&0!==e.length||h.error("Config","Missing filters list"),e.forEach(function(n,e){switch(n.id||h.error("Config","Missing filter {0} id",e),-1!=t.indexOf(n.id)&&h.error("Config",'Filter "{0}" already defined',n.id),t.push(n.id),n.type?c.types[n.type]||h.error("Config",'Invalid type "{0}"',n.type):n.type="string",n.input?"function"!=typeof n.input&&-1==c.inputs.indexOf(n.input)&&h.error("Config",'Invalid input "{0}"',n.input):n.input="number"===c.types[n.type]?"number":"text",n.operators&&n.operators.forEach(function(e){"string"!=typeof e&&h.error("Config","Filter operators must be global operators types (string)")}),n.field||(n.field=n.id),n.label||(n.label=n.field),n.optgroup?(this.status.has_optgroup=!0,this.settings.optgroups[n.optgroup]||(this.settings.optgroups[n.optgroup]=n.optgroup)):n.optgroup=null,n.input){case"radio":case"checkbox":(!n.values||n.values.length<1)&&h.error("Config",'Missing filter "{0}" values',n.id);break;case"select":var i=[];n.has_optgroup=!1,h.iterateOptions(n.values,function(e,t,r){i.push({value:e,label:t,optgroup:r||null}),r&&(n.has_optgroup=!0,this.settings.optgroups[r]||(this.settings.optgroups[r]=r))}.bind(this)),n.has_optgroup?n.values=h.groupSort(i,"optgroup"):n.values=i,n.placeholder&&(void 0===n.placeholder_value&&(n.placeholder_value=-1),n.values.forEach(function(e){e.value==n.placeholder_value&&h.error("Config",'Placeholder of filter "{0}" overlaps with one of its values',n.id)}))}},this),this.settings.sort_filters)if("function"==typeof this.settings.sort_filters)e.sort(this.settings.sort_filters);else{var r=this;e.sort(function(e,t){return r.translate(e.label).localeCompare(r.translate(t.label))})}return this.status.has_optgroup&&(e=h.groupSort(e,"optgroup")),e},c.prototype.checkOperators=function(r){var n=[];return r.forEach(function(e,t){"string"==typeof e?(c.OPERATORS[e]||h.error("Config",'Unknown operator "{0}"',e),r[t]=e=$.extendext(!0,"replace",{},c.OPERATORS[e])):(e.type||h.error("Config",'Missing "type" for operator {0}',t),c.OPERATORS[e.type]&&(r[t]=e=$.extendext(!0,"replace",{},c.OPERATORS[e.type],e)),void 0!==e.nb_inputs&&void 0!==e.apply_to||h.error("Config",'Missing "nb_inputs" and/or "apply_to" for operator "{0}"',e.type)),-1!=n.indexOf(e.type)&&h.error("Config",'Operator "{0}" already defined',e.type),n.push(e.type),e.optgroup?(this.status.has_operator_optgroup=!0,this.settings.optgroups[e.optgroup]||(this.settings.optgroups[e.optgroup]=e.optgroup)):e.optgroup=null},this),this.status.has_operator_optgroup&&(r=h.groupSort(r,"optgroup")),r},c.prototype.bindEvents=function(){var o=this,t=c.selectors;this.$el.on("change.queryBuilder",t.group_condition,function(){if($(this).is(":checked")){var e=$(this).closest(t.group_container);o.getModel(e).condition=$(this).val()}}),this.$el.on("change.queryBuilder",t.rule_filter,function(){var e=$(this).closest(t.rule_container);o.getModel(e).filter=o.getFilterById($(this).val())}),this.$el.on("change.queryBuilder",t.rule_operator,function(){var e=$(this).closest(t.rule_container);o.getModel(e).operator=o.getOperatorByType($(this).val())}),this.$el.on("click.queryBuilder",t.add_rule,function(){var e=$(this).closest(t.group_container);o.addRule(o.getModel(e))}),this.$el.on("click.queryBuilder",t.delete_rule,function(){var e=$(this).closest(t.rule_container);o.deleteRule(o.getModel(e))}),0!==this.settings.allow_groups&&(this.$el.on("click.queryBuilder",t.add_group,function(){var e=$(this).closest(t.group_container);o.addGroup(o.getModel(e))}),this.$el.on("click.queryBuilder",t.delete_group,function(){var e=$(this).closest(t.group_container);o.deleteGroup(o.getModel(e))})),this.model.on({drop:function(e,t){t.$el.remove(),o.refreshGroupsConditions()},add:function(e,t,r,n){0===n?r.$el.prependTo(t.$el.find(">"+c.selectors.rules_list)):r.$el.insertAfter(t.rules[n-1].$el),o.refreshGroupsConditions()},move:function(e,t,r,n){t.$el.detach(),0===n?t.$el.prependTo(r.$el.find(">"+c.selectors.rules_list)):t.$el.insertAfter(r.rules[n-1].$el),o.refreshGroupsConditions()},update:function(e,t,r,n,i){if(t instanceof l)switch(r){case"error":o.updateError(t);break;case"flags":o.applyRuleFlags(t);break;case"filter":o.updateRuleFilter(t,i);break;case"operator":o.updateRuleOperator(t,i);break;case"value":o.updateRuleValue(t,i)}else switch(r){case"error":o.updateError(t);break;case"flags":o.applyGroupFlags(t);break;case"condition":o.updateGroupCondition(t,i)}}})},c.prototype.setRoot=function(e,t,r){e=void 0===e||!0===e;var n=this.nextGroupId(),i=$(this.getGroupTemplate(n,1));return this.$el.append(i),this.model.root=new a(null,i),this.model.root.model=this.model,this.model.root.data=t,this.model.root.flags=$.extend({},this.settings.default_group_flags,r),this.model.root.condition=this.settings.default_condition,this.trigger("afterAddGroup",this.model.root),e&&this.addRule(this.model.root),this.model.root},c.prototype.addGroup=function(e,t,r,n){t=void 0===t||!0===t;var i=e.level+1;if(this.trigger("beforeAddGroup",e,t,i).isDefaultPrevented())return null;var o=this.nextGroupId(),l=$(this.getGroupTemplate(o,i)),s=e.addGroup(l);return s.data=r,s.flags=$.extend({},this.settings.default_group_flags,n),s.condition=this.settings.default_condition,this.trigger("afterAddGroup",s),this.trigger("rulesChanged"),t&&this.addRule(s),s},c.prototype.deleteGroup=function(e){if(e.isRoot())return!1;if(this.trigger("beforeDeleteGroup",e).isDefaultPrevented())return!1;var t=!0;return e.each("reverse",function(e){t&=this.deleteRule(e)},function(e){t&=this.deleteGroup(e)},this),t&&(e.drop(),this.trigger("afterDeleteGroup"),this.trigger("rulesChanged")),t},c.prototype.updateGroupCondition=function(t,e){t.$el.find(">"+c.selectors.group_condition).each(function(){var e=$(this);e.prop("checked",e.val()===t.condition),e.parent().toggleClass("active",e.val()===t.condition)}),this.trigger("afterUpdateGroupCondition",t,e),this.trigger("rulesChanged")},c.prototype.refreshGroupsConditions=function(){!function t(e){(!e.flags||e.flags&&!e.flags.condition_readonly)&&e.$el.find(">"+c.selectors.group_condition).prop("disabled",e.rules.length<=1).parent().toggleClass("disabled",e.rules.length<=1),e.each(null,function(e){t(e)},this)}(this.model.root)},c.prototype.addRule=function(e,t,r){if(this.trigger("beforeAddRule",e).isDefaultPrevented())return null;var n=this.nextRuleId(),i=$(this.getRuleTemplate(n)),o=e.addRule(i);return o.data=t,o.flags=$.extend({},this.settings.default_rule_flags,r),this.trigger("afterAddRule",o),this.trigger("rulesChanged"),this.createRuleFilters(o),!this.settings.default_filter&&this.settings.display_empty_filter||(o.filter=this.change("getDefaultFilter",this.getFilterById(this.settings.default_filter||this.filters[0].id),o)),o},c.prototype.deleteRule=function(e){return!e.flags.no_delete&&(!this.trigger("beforeDeleteRule",e).isDefaultPrevented()&&(e.drop(),this.trigger("afterDeleteRule"),this.trigger("rulesChanged"),!0))},c.prototype.createRuleFilters=function(e){var t=this.change("getRuleFilters",this.filters,e),r=$(this.getRuleFilterSelect(e,t));e.$el.find(c.selectors.filter_container).html(r),this.trigger("afterCreateRuleFilters",e),this.applyRuleFlags(e)},c.prototype.createRuleOperators=function(e){var t=e.$el.find(c.selectors.operator_container).empty();if(e.filter){var r=this.getOperators(e.filter),n=$(this.getRuleOperatorSelect(e,r));t.html(n),e.filter.default_operator?e.__.operator=this.getOperatorByType(e.filter.default_operator):e.__.operator=r[0],e.$el.find(c.selectors.rule_operator).val(e.operator.type),this.trigger("afterCreateRuleOperators",e,r),this.applyRuleFlags(e)}},c.prototype.createRuleInput=function(e){var t=e.$el.find(c.selectors.value_container).empty();if(e.__.value=void 0,e.filter&&e.operator&&0!==e.operator.nb_inputs){for(var r=this,n=$(),i=e.filter,o=0;o"+r.group_condition).prop("disabled",t.condition_readonly).parent().toggleClass("readonly",t.condition_readonly),t.no_add_rule&&e.$el.find(r.add_rule).remove(),t.no_add_group&&e.$el.find(r.add_group).remove(),t.no_delete&&e.$el.find(r.delete_group).remove(),this.trigger("afterApplyGroupFlags",e)},c.prototype.clearErrors=function(e){(e=e||this.model.root)&&(e.error=null,e instanceof a&&e.each(function(e){e.error=null},function(e){this.clearErrors(e)},this))},c.prototype.updateError=function(e){if(this.settings.display_errors)if(null===e.error)e.$el.removeClass("has-error");else{var t=this.translate("errors",e.error[0]);t=h.fmt(t,e.error.slice(1)),t=this.change("displayError",t,e.error,e),e.$el.addClass("has-error").find(c.selectors.error_container).eq(0).attr("title",t)}},c.prototype.triggerValidationError=function(e,t,r){$.isArray(t)||(t=[t]),this.trigger("validationError",e,t,r).isDefaultPrevented()||(e.error=t)},c.prototype.destroy=function(){this.trigger("beforeDestroy"),this.status.generated_id&&this.$el.removeAttr("id"),this.clear(),this.model=null,this.$el.off(".queryBuilder").removeClass("query-builder").removeData("queryBuilder"),delete this.$el[0].queryBuilder},c.prototype.reset=function(){this.trigger("beforeReset").isDefaultPrevented()||(this.status.group_id=1,this.status.rule_id=0,this.model.root.empty(),this.model.root.data=void 0,this.model.root.flags=$.extend({},this.settings.default_group_flags),this.model.root.condition=this.settings.default_condition,this.addRule(this.model.root),this.trigger("afterReset"),this.trigger("rulesChanged"))},c.prototype.clear=function(){this.trigger("beforeClear").isDefaultPrevented()||(this.status.group_id=0,this.status.rule_id=0,this.model.root&&(this.model.root.drop(),this.model.root=null),this.trigger("afterClear"),this.trigger("rulesChanged"))},c.prototype.setOptions=function(e){$.each(e,function(e,t){-1!==c.modifiable_options.indexOf(e)&&(this.settings[e]=t)}.bind(this))},c.prototype.getModel=function(e){return e?e instanceof i?e:$(e).data("queryBuilderModel"):this.model.root},c.prototype.validate=function(o){o=$.extend({skip_empty:!1},o),this.clearErrors();var l=this,e=function r(e){var n=0,i=0;return e.each(function(e){if(e.filter||!o.skip_empty){if(!e.filter)return l.triggerValidationError(e,"no_filter",null),void i++;if(!e.operator)return l.triggerValidationError(e,"no_operator",null),void i++;if(0!==e.operator.nb_inputs){var t=l.validateValue(e,e.value);if(!0!==t)return l.triggerValidationError(e,t,e.value),void i++}n++}},function(e){var t=r(e);!0===t?n++:!1===t&&i++}),!(0parseInt(l.max)){s=[this.getValidationMessage(l,"max","string_exceed_max_length"),l.max];break}if(l.format&&("string"==typeof l.format&&(l.format=new RegExp(l.format)),!l.format.test(n[u]))){s=[this.getValidationMessage(l,"format","string_invalid_format"),l.format];break}break;case"number":if(void 0===n[u]||0===n[u].length){l.allow_empty_value||(s=["number_nan"]);break}if(isNaN(n[u])){s=["number_nan"];break}if("integer"==i.type){if(parseInt(n[u])!=n[u]){s=["number_not_integer"];break}}else if(parseFloat(n[u])!=n[u]){s=["number_not_double"];break}if(void 0!==l.min&&n[u]parseFloat(l.max)){s=[this.getValidationMessage(l,"max","number_exceed_max"),l.max];break}if(void 0!==l.step&&"any"!==l.step){var p=(n[u]/l.step).toPrecision(14);if(parseInt(p)!=p){s=[this.getValidationMessage(l,"step","number_wrong_step"),l.step];break}}break;case"datetime":if(void 0===n[u]||0===n[u].length){l.allow_empty_value||(s=["datetime_empty"]);break}if(l.format){"moment"in window||h.error("MissingLibrary","MomentJS is required for Date/Time validation. Get it here http://momentjs.com");var d=moment(n[u],l.format);if(!d.isValid()){s=[this.getValidationMessage(l,"format","datetime_invalid"),l.format];break}if(l.min&&dmoment(l.max,l.format)){s=[this.getValidationMessage(l,"max","datetime_exceed_max"),l.max];break}}break;case"boolean":if(void 0===n[u]||0===n[u].length){l.allow_empty_value||(s=["boolean_not_valid"]);break}if("true"!==(r=(""+n[u]).trim().toLowerCase())&&"false"!==r&&"1"!==r&&"0"!==r&&1!==n[u]&&0!==n[u]){s=["boolean_not_valid"];break}}if(!0!==s)break}}if(!0!==s)break}if(("between"===e.operator.type||"not_between"===e.operator.type)&&2===t.length)switch(c.types[i.type]){case"number":t[0]>t[1]&&(s=["number_between_invalid",t[0],t[1]]);break;case"datetime":l.format&&("moment"in window||h.error("MissingLibrary","MomentJS is required for Date/Time validation. Get it here http://momentjs.com"),moment(t[0],l.format).isAfter(moment(t[1],l.format))&&(s=["datetime_between_invalid",t[0],t[1]]))}return s},c.prototype.nextGroupId=function(){return this.status.id+"_group_"+this.status.group_id++},c.prototype.nextRuleId=function(){return this.status.id+"_rule_"+this.status.rule_id++},c.prototype.getOperators=function(r){"string"==typeof r&&(r=this.getFilterById(r));for(var e=[],t=0,n=this.operators.length;t '+t+" "});break;case"select":l=this.getRuleValueSelect(i,e);break;case"textarea":l+='