diff --git a/README.md b/README.md index 2624044..298554a 100644 --- a/README.md +++ b/README.md @@ -2,22 +2,9 @@ [![License: UPL](https://img.shields.io/badge/license-UPL-green)](https://img.shields.io/badge/license-UPL-green) [![Quality gate](https://sonarcloud.io/api/project_badges/quality_gate?project=oracle-devrel_microservices-datadriven)](https://sonarcloud.io/dashboard?id=oracle-devrel_microservices-datadriven) -## THIS IS A NEW, BLANK REPO THAT IS NOT READY FOR USE YET. PLEASE CHECK BACK SOON! +## The microservices-datadriven project's retail application, aka "GrabDish", has moved to https://github.com/paulparkinson/oracle-ai-for-sustainable-dev/tree/main/retail -## Introduction -MISSING - -## Getting Started -MISSING - -### Prerequisites -MISSING - -## Notes/Issues -MISSING - -## URLs -* Nothing at this time +## The graalvm-native-image src remains here but will be moved to the new repo in due course. ## Contributing This project is open source. Please submit your contributions by forking this repository and submitting a pull request! Oracle appreciates any contributions that are made by the open source community. diff --git a/grabdish/LICENSE.txt b/grabdish/LICENSE.txt deleted file mode 100644 index f433d2e..0000000 --- a/grabdish/LICENSE.txt +++ /dev/null @@ -1,35 +0,0 @@ - Copyright (c) 2024 Oracle and/or its affiliates. - - The Universal Permissive License (UPL), Version 1.0 - - Subject to the condition set forth below, permission is hereby granted to any - person obtaining a copy of this software, associated documentation and/or data - (collectively the "Software"), free of charge and under any and all copyright - rights in the Software, and any and all patent rights owned or freely - licensable by each licensor hereunder covering either (i) the unmodified - Software as contributed to or provided by such licensor, or (ii) the Larger - Works (as defined below), to deal in both - - (a) the Software, and - (b) any piece of software and/or hardware listed in the lrgrwrks.txt file if - one is included with the Software (each a "Larger Work" to which the Software - is contributed by such licensors), - - without restriction, including without limitation the rights to copy, create - derivative works of, display, perform, and distribute the Software and make, - use, sell, offer for sale, import, export, have made, and have sold the - Software and the Larger Work(s), and to sublicense the foregoing rights on - either these or other terms. - - This license is subject to the following condition: - The above copyright notice and either this complete permission notice or at - a minimum a reference to the UPL must be included in all copies or - substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. diff --git a/grabdish/README.md b/grabdish/README.md deleted file mode 100644 index f50085f..0000000 --- a/grabdish/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# Application: GrabDish - -Application source code for -[Simplify Microservices with converged Oracle Database Workshop][1] -available on [Oracle LiveLabs][2]. - -## License - -Copyright (c) 2024 Oracle and/or its affiliates. - -Licensed under the Universal Permissive License v 1.0 as shown at . - -[1]: https://apexapps.oracle.com/pls/apex/dbpm/r/livelabs/view-workshop?wid=637 -[2]: https://apexapps.oracle.com/pls/apex/dbpm/r/livelabs/home diff --git a/grabdish/THIRD_PARTY_LICENSE.txt b/grabdish/THIRD_PARTY_LICENSE.txt deleted file mode 100644 index 82a2a70..0000000 --- a/grabdish/THIRD_PARTY_LICENSE.txt +++ /dev/null @@ -1,305 +0,0 @@ - -Apache License Version 2.0 - Kiali, Jaeger, Helidon, Istio -Copyright notices - Mapbox - - - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - Jaeger, Distributed Tracing Platform. - Copyright 2015-2019 The Jaeger Project Authors - Licensed under Apache License 2.0. - Includes software developed at Uber Technologies, Inc. (https://eng.uber.com/). - - Copyright 2016-2020 Istio Authors - Licensed under Apache License 2.0. - - -———— - -Copyright (c) 2021, Mapbox - -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name of Mapbox GL JS nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -------------------------------------------------------------------------------- - -Contains code from glfx.js - -Copyright (C) 2011 by Evan Wallace - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - --------------------------------------------------------------------------------- - -Contains a portion of d3-color https://github.com/d3/d3-color - -Copyright 2010-2016 Mike Bostock -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -* Neither the name of the author nor the names of contributors may be used to - endorse or promote products derived from this software without specific prior - written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/grabdish/artillery/art-placeorder.yaml b/grabdish/artillery/art-placeorder.yaml deleted file mode 100644 index a3450c1..0000000 --- a/grabdish/artillery/art-placeorder.yaml +++ /dev/null @@ -1,14 +0,0 @@ -config: - target: 'https://{{ $processEnvironment.LB }}:443' - http: - pool: 10 - processor: "gen.js" - phases: - - duration: 30 - arrivalRate: 10 -scenarios: - - name: "placeorder" - flow: - - function: "generateOrderID" - - get: - url: "/placeOrder?orderid={{ orderid }}&itemid=34&deliverylocation=London" diff --git a/grabdish/artillery/gen.js b/grabdish/artillery/gen.js deleted file mode 100644 index 49526a2..0000000 --- a/grabdish/artillery/gen.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict'; - -let iter = 0; - -module.exports = { - generateOrderID -}; - -function generateOrderID(userContext, events, done) { - let run = Number(userContext.vars.$processEnvironment.RUN); - let vu = Number(userContext.vars.$processEnvironment.VU); - iter++; - userContext.vars.orderid = (10000000 * run + 100000 * vu + iter).toString(); - return done(); -} diff --git a/grabdish/artillery/test.sh b/grabdish/artillery/test.sh deleted file mode 100755 index 3c9b999..0000000 --- a/grabdish/artillery/test.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash -## -## Copyright (c) 2021 Oracle and/or its affiliates. -## Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/ - -set -e - -if [[ ! $LB =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then - echo "Set variable LB to the external IP address of the ext-order service" - exit -fi - -NEXT_RUN_FILE=next_run - -if [ ! -f "$NEXT_RUN_FILE" ]; then - echo 0 > $NEXT_RUN_FILE -fi - -export RUN=`cat $NEXT_RUN_FILE` -RUN=$((RUN+1)) -echo $RUN > $NEXT_RUN_FILE - -for i in {1..20} -do - export VU=$i - ./node_modules/artillery/bin/artillery run --insecure art-placeorder.yaml & -done -wait diff --git a/grabdish/config/apply.sh b/grabdish/config/apply.sh deleted file mode 100755 index c20ed9a..0000000 --- a/grabdish/config/apply.sh +++ /dev/null @@ -1,55 +0,0 @@ -#!/bin/bash -# Copyright (c) 2021 Oracle and/or its affiliates. -# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. - -# Fail on error -set -e - - -if ! provisioning-helper-pre-apply; then - exit 1 -fi - - -cd $MY_CODE/.. -export GRABDISH_HOME=$PWD - - -# Run grabdish apply for each config in order -CONFIGS="db k8s db-k8s" -for c in $CONFIGS; do - CONFIG_CODE=$MY_CODE/$c - CONFIG_STATE=$MY_STATE/$c - mkdir -p $CONFIG_STATE - cat >$CONFIG_STATE/input.env <$OUTPUT_FILE <> $TEMP_OUTPUT - continue - fi - TNS_ADMIN_COPY=$MY_STATE/${db}_tns_admin - rm -rf $TNS_ADMIN_COPY - mkdir $TNS_ADMIN_COPY - cd $TNS_ADMIN_COPY - cp ${!TNS_ADMIN_VARIABLE}/* . - cat - >sqlnet.ora <> $TEMP_OUTPUT -done - - -mv $TEMP_OUTPUT $OUTPUT_FILE \ No newline at end of file diff --git a/grabdish/config/db-k8s/destroy.sh b/grabdish/config/db-k8s/destroy.sh deleted file mode 100755 index e609950..0000000 --- a/grabdish/config/db-k8s/destroy.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash -# Copyright (c) 2021 Oracle and/or its affiliates. -# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. - -# Fail on error -set -e - - -if ! provisioning-helper-pre-destroy; then - exit 1 -fi - - -export GRABDISH_LOG - - -# Delete output -rm -f $STATE_FILE \ No newline at end of file diff --git a/grabdish/config/db-k8s/requirements.env b/grabdish/config/db-k8s/requirements.env deleted file mode 100644 index 03f6859..0000000 --- a/grabdish/config/db-k8s/requirements.env +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash -# Copyright (c) 2021 Oracle and/or its affiliates. -# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. - -REQ_UTILS='touch rm kubectl' -REQ_INPUT_PARAMS='ORDER_DB_TNS_ADMIN INVENTORY_DB_TNS_ADMIN GRABDISH_LOG' -REQ_OUTPUT_PARAMS='' \ No newline at end of file diff --git a/grabdish/config/db/1db/apply/01-db1-admin-create-schemas.sql b/grabdish/config/db/1db/apply/01-db1-admin-create-schemas.sql deleted file mode 100644 index bc41f30..0000000 --- a/grabdish/config/db/1db/apply/01-db1-admin-create-schemas.sql +++ /dev/null @@ -1,20 +0,0 @@ --- Copyright (c) 2021 Oracle and/or its affiliates. --- Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/ - - -connect $DB1_ADMIN_USER/"$DB1_ADMIN_PASSWORD"@$DB1_ALIAS - -WHENEVER SQLERROR CONTINUE -DROP USER $AQ_USER CASCADE; -DROP USER $ORDER_USER CASCADE; -DROP USER $INVENTORY_USER CASCADE; - -WHENEVER SQLERROR EXIT 1 --- AQ User -@$COMMON_SCRIPT_HOME/admin-aq-create-schema.sql - --- Order User -@$COMMON_SCRIPT_HOME/admin-order-create-schema.sql - --- Inventory User -@$COMMON_SCRIPT_HOME/admin-inventory-create-schema.sql diff --git a/grabdish/config/db/1db/apply/02-db1-aq-create-queues.sql b/grabdish/config/db/1db/apply/02-db1-aq-create-queues.sql deleted file mode 100644 index b066808..0000000 --- a/grabdish/config/db/1db/apply/02-db1-aq-create-queues.sql +++ /dev/null @@ -1,43 +0,0 @@ --- Copyright (c) 2021 Oracle and/or its affiliates. --- Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/ - - -WHENEVER SQLERROR EXIT 1 -connect $AQ_USER/"$AQ_PASSWORD"@$DB1_ALIAS - -@$COMMON_SCRIPT_HOME/aq-${QUEUE_TYPE}-create-queues.sql - -BEGIN - DBMS_AQADM.grant_queue_privilege ( - privilege => 'ENQUEUE', - queue_name => '$ORDER_QUEUE', - grantee => '$ORDER_USER', - grant_option => FALSE); - - DBMS_AQADM.grant_queue_privilege ( - privilege => 'DEQUEUE', - queue_name => '$ORDER_QUEUE', - grantee => '$INVENTORY_USER', - grant_option => FALSE); - - DBMS_AQADM.grant_queue_privilege ( - privilege => 'ENQUEUE', - queue_name => '$INVENTORY_QUEUE', - grantee => '$INVENTORY_USER', - grant_option => FALSE); - - DBMS_AQADM.grant_queue_privilege ( - privilege => 'DEQUEUE', - queue_name => '$INVENTORY_QUEUE', - grantee => '$ORDER_USER', - grant_option => FALSE); - - DBMS_AQADM.add_subscriber( - queue_name=>'$ORDER_QUEUE', - subscriber=>sys.aq\$_agent('inventory_service',NULL,NULL)); - - DBMS_AQADM.add_subscriber( - queue_name=>'$INVENTORY_QUEUE', - subscriber=>sys.aq\$_agent('order_service',NULL,NULL)); -END; -/ diff --git a/grabdish/config/db/1db/apply/03-db1-inventory-table-scripts.sql b/grabdish/config/db/1db/apply/03-db1-inventory-table-scripts.sql deleted file mode 100644 index e90f19d..0000000 --- a/grabdish/config/db/1db/apply/03-db1-inventory-table-scripts.sql +++ /dev/null @@ -1,8 +0,0 @@ --- Copyright (c) 2021 Oracle and/or its affiliates. --- Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/ - - -WHENEVER SQLERROR EXIT 1 -connect $INVENTORY_USER/"$INVENTORY_PASSWORD"@$DB1_ALIAS - -@$COMMON_SCRIPT_HOME/inventory-table-scripts.sql diff --git a/grabdish/config/db/1db/apply/04-db1-order-object-scripts.sql b/grabdish/config/db/1db/apply/04-db1-order-object-scripts.sql deleted file mode 100644 index cd97ca8..0000000 --- a/grabdish/config/db/1db/apply/04-db1-order-object-scripts.sql +++ /dev/null @@ -1,8 +0,0 @@ --- Copyright (c) 2021 Oracle and/or its affiliates. --- Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/ - - -WHENEVER SQLERROR EXIT 1 -connect $ORDER_USER/"$ORDER_PASSWORD"@$DB1_ALIAS - -@$COMMON_SCRIPT_HOME/order-object-scripts.sql diff --git a/grabdish/config/db/1db/destroy/01-db1-admin-drop-schemas.sql b/grabdish/config/db/1db/destroy/01-db1-admin-drop-schemas.sql deleted file mode 100644 index 327e56d..0000000 --- a/grabdish/config/db/1db/destroy/01-db1-admin-drop-schemas.sql +++ /dev/null @@ -1,10 +0,0 @@ --- Copyright (c) 2021 Oracle and/or its affiliates. --- Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/ - - -connect $DB1_ADMIN_USER/"$DB1_ADMIN_PASSWORD"@$DB1_ALIAS - -WHENEVER SQLERROR CONTINUE -DROP USER $AQ_USER CASCADE -DROP USER $ORDER_USER CASCADE -DROP USER $INVENTORY_USER CASCADE diff --git a/grabdish/config/db/2db-atp/apply/01-db1-admin-create-schemas.sql b/grabdish/config/db/2db-atp/apply/01-db1-admin-create-schemas.sql deleted file mode 100644 index 56b2a5a..0000000 --- a/grabdish/config/db/2db-atp/apply/01-db1-admin-create-schemas.sql +++ /dev/null @@ -1,26 +0,0 @@ --- Copyright (c) 2021 Oracle and/or its affiliates. --- Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/ - - -connect $DB1_ADMIN_USER/"$DB1_ADMIN_PASSWORD"@$DB1_ALIAS - -WHENEVER SQLERROR CONTINUE -DROP USER $AQ_USER CASCADE; -DROP USER $ORDER_USER CASCADE; - -WHENEVER SQLERROR EXIT 1 - --- DB Link Credentials Directory on ATP -CREATE OR REPLACE DIRECTORY $DBLINK_CREDENTIAL_DIRECTORY AS '$DBLINK_CREDENTIAL_DIRECTORY_FOLDER'; - --- AQ User -@$COMMON_SCRIPT_HOME/admin-aq-create-schema.sql --- For AQ Propagation -GRANT CREATE DATABASE LINK TO $AQ_USER; --- For AQ Propagation on ATP -GRANT EXECUTE ON DBMS_CLOUD_ADMIN TO $AQ_USER; -GRANT EXECUTE ON DBMS_CLOUD TO $AQ_USER; -GRANT READ, WRITE ON DIRECTORY $DBLINK_CREDENTIAL_DIRECTORY TO $AQ_USER; - --- Order User -@$COMMON_SCRIPT_HOME/admin-order-create-schema.sql diff --git a/grabdish/config/db/2db-atp/apply/02-db2-admin-create-schemas.sql b/grabdish/config/db/2db-atp/apply/02-db2-admin-create-schemas.sql deleted file mode 100644 index 42c4798..0000000 --- a/grabdish/config/db/2db-atp/apply/02-db2-admin-create-schemas.sql +++ /dev/null @@ -1,27 +0,0 @@ --- Copyright (c) 2021 Oracle and/or its affiliates. --- Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/ - - -connect $DB2_ADMIN_USER/"$DB2_ADMIN_PASSWORD"@$DB2_ALIAS - -WHENEVER SQLERROR CONTINUE -DROP USER $AQ_USER CASCADE; -DROP USER $INVENTORY_USER CASCADE; - -WHENEVER SQLERROR EXIT 1 - --- DB Link Credentials Directory -CREATE OR REPLACE DIRECTORY $DBLINK_CREDENTIAL_DIRECTORY AS '$DBLINK_CREDENTIAL_DIRECTORY_FOLDER'; - --- AQ User -@$COMMON_SCRIPT_HOME/admin-aq-create-schema.sql --- For AQ Propagation -GRANT CREATE DATABASE LINK TO $AQ_USER; --- For AQ Propagation on ATP -GRANT EXECUTE ON DBMS_CLOUD_ADMIN TO $AQ_USER; -GRANT EXECUTE ON DBMS_CLOUD TO $AQ_USER; -GRANT READ, WRITE ON DIRECTORY $DBLINK_CREDENTIAL_DIRECTORY TO $AQ_USER; - - --- Inventory User -@$COMMON_SCRIPT_HOME/admin-inventory-create-schema.sql diff --git a/grabdish/config/db/2db-atp/apply/03-db1-aq-create-queues.sql b/grabdish/config/db/2db-atp/apply/03-db1-aq-create-queues.sql deleted file mode 100644 index be4dca7..0000000 --- a/grabdish/config/db/2db-atp/apply/03-db1-aq-create-queues.sql +++ /dev/null @@ -1,48 +0,0 @@ --- Copyright (c) 2021 Oracle and/or its affiliates. --- Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/ - - -WHENEVER SQLERROR EXIT 1 -connect $AQ_USER/"$AQ_PASSWORD"@$DB1_ALIAS - -@$COMMON_SCRIPT_HOME/aq-${QUEUE_TYPE}-create-queues.sql - -BEGIN - DBMS_AQADM.grant_queue_privilege ( - privilege => 'ENQUEUE', - queue_name => '$ORDER_QUEUE', - grantee => '$ORDER_USER', - grant_option => FALSE); - - DBMS_AQADM.grant_queue_privilege ( - privilege => 'DEQUEUE', - queue_name => '$INVENTORY_QUEUE', - grantee => '$ORDER_USER', - grant_option => FALSE); - - DBMS_AQADM.add_subscriber( - queue_name=>'$INVENTORY_QUEUE', - subscriber=>sys.aq\$_agent('order_service',NULL,NULL)); -END; -/ - -BEGIN - DBMS_CLOUD.GET_OBJECT( - object_uri => '$DB2_CWALLET_SSO_AUTH_URL', - directory_name => '$DBLINK_CREDENTIAL_DIRECTORY', - file_name => 'cwallet.sso'); - - DBMS_CLOUD.CREATE_CREDENTIAL( - credential_name => 'CRED', - username => '$AQ_USER', - password => '$AQ_PASSWORD'); - - DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK( - db_link_name => '$DB1_TO_DB2_LINK', - hostname => '$DB2_HOSTNAME', - port => '$DB2_PORT', - service_name => '$DB2_SERVICE_NAME', - credential_name => 'CRED', - directory_name => '$DBLINK_CREDENTIAL_DIRECTORY'); -END; -/ diff --git a/grabdish/config/db/2db-atp/apply/04-db2-aq-create-queues.sql b/grabdish/config/db/2db-atp/apply/04-db2-aq-create-queues.sql deleted file mode 100644 index 98cf13f..0000000 --- a/grabdish/config/db/2db-atp/apply/04-db2-aq-create-queues.sql +++ /dev/null @@ -1,49 +0,0 @@ --- Copyright (c) 2021 Oracle and/or its affiliates. --- Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/ - - -WHENEVER SQLERROR EXIT 1 -connect $AQ_USER/"$AQ_PASSWORD"@$DB2_ALIAS - -@$COMMON_SCRIPT_HOME/aq-${QUEUE_TYPE}-create-queues.sql - -BEGIN - DBMS_AQADM.grant_queue_privilege ( - privilege => 'DEQUEUE', - queue_name => '$ORDER_QUEUE', - grantee => '$INVENTORY_USER', - grant_option => FALSE); - - DBMS_AQADM.grant_queue_privilege ( - privilege => 'ENQUEUE', - queue_name => '$INVENTORY_QUEUE', - grantee => '$INVENTORY_USER', - grant_option => FALSE); - - DBMS_AQADM.add_subscriber( - queue_name=>'$ORDER_QUEUE', - subscriber=>sys.aq\$_agent('inventory_service',NULL,NULL)); -END; -/ - -BEGIN - - DBMS_CLOUD.GET_OBJECT( - object_uri => '$DB1_CWALLET_SSO_AUTH_URL', - directory_name => '$DBLINK_CREDENTIAL_DIRECTORY', - file_name => 'cwallet.sso'); - - DBMS_CLOUD.CREATE_CREDENTIAL( - credential_name => 'CRED', - username => '$AQ_USER', - password => '$AQ_PASSWORD'); - - DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK( - db_link_name => '$DB2_TO_DB1_LINK', - hostname => '$DB1_HOSTNAME', - port => '$DB1_PORT', - service_name => '$DB1_SERVICE_NAME', - credential_name => 'CRED', - directory_name => '$DBLINK_CREDENTIAL_DIRECTORY'); -END; -/ diff --git a/grabdish/config/db/2db-atp/apply/05-db1-aq-propagation.sql b/grabdish/config/db/2db-atp/apply/05-db1-aq-propagation.sql deleted file mode 100644 index cd71b4b..0000000 --- a/grabdish/config/db/2db-atp/apply/05-db1-aq-propagation.sql +++ /dev/null @@ -1,25 +0,0 @@ --- Copyright (c) 2021 Oracle and/or its affiliates. --- Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/ - - -WHENEVER SQLERROR EXIT 1 -connect $AQ_USER/"$AQ_PASSWORD"@$DB1_ALIAS - -BEGIN -DBMS_AQADM.add_subscriber( - queue_name=>'$ORDER_QUEUE', - subscriber=>sys.aq\$_agent(null,'$AQ_USER.$ORDER_QUEUE@$DB1_TO_DB2_LINK',0), - queue_to_queue => true); -END; -/ - -BEGIN -dbms_aqadm.schedule_propagation - (queue_name => '$AQ_USER.$ORDER_QUEUE' - ,destination_queue => '$AQ_USER.$ORDER_QUEUE' - ,destination => '$DB1_TO_DB2_LINK' - ,start_time => sysdate --immediately - ,duration => null --until stopped - ,latency => 0); --No gap before propagating -END; -/ diff --git a/grabdish/config/db/2db-atp/apply/06-db2-aq-propagation.sql b/grabdish/config/db/2db-atp/apply/06-db2-aq-propagation.sql deleted file mode 100644 index 9be573b..0000000 --- a/grabdish/config/db/2db-atp/apply/06-db2-aq-propagation.sql +++ /dev/null @@ -1,25 +0,0 @@ --- Copyright (c) 2021 Oracle and/or its affiliates. --- Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/ - - -WHENEVER SQLERROR EXIT 1 -connect $AQ_USER/"$AQ_PASSWORD"@$DB2_ALIAS - -BEGIN -DBMS_AQADM.add_subscriber( - queue_name=>'$INVENTORY_QUEUE', - subscriber=>sys.aq\$_agent(null,'$AQ_USER.$INVENTORY_QUEUE@$DB2_TO_DB1_LINK',0), - queue_to_queue => true); -END; -/ - -BEGIN -dbms_aqadm.schedule_propagation - (queue_name => '$AQ_USER.$INVENTORY_QUEUE' - ,destination_queue => '$AQ_USER.$INVENTORY_QUEUE' - ,destination => '$DB2_TO_DB1_LINK' - ,start_time => sysdate --immediately - ,duration => null --until stopped - ,latency => 0); --No gap before propagating -END; -/ diff --git a/grabdish/config/db/2db-atp/apply/07-db2-inventory-table-scripts.sql b/grabdish/config/db/2db-atp/apply/07-db2-inventory-table-scripts.sql deleted file mode 100644 index 3d305dc..0000000 --- a/grabdish/config/db/2db-atp/apply/07-db2-inventory-table-scripts.sql +++ /dev/null @@ -1,8 +0,0 @@ --- Copyright (c) 2021 Oracle and/or its affiliates. --- Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/ - - -WHENEVER SQLERROR EXIT 1 -connect $INVENTORY_USER/"$INVENTORY_PASSWORD"@$DB2_ALIAS - -@$COMMON_SCRIPT_HOME/inventory-table-scripts.sql diff --git a/grabdish/config/db/2db-atp/apply/08-db1-order-object-scripts.sql b/grabdish/config/db/2db-atp/apply/08-db1-order-object-scripts.sql deleted file mode 100644 index cd97ca8..0000000 --- a/grabdish/config/db/2db-atp/apply/08-db1-order-object-scripts.sql +++ /dev/null @@ -1,8 +0,0 @@ --- Copyright (c) 2021 Oracle and/or its affiliates. --- Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/ - - -WHENEVER SQLERROR EXIT 1 -connect $ORDER_USER/"$ORDER_PASSWORD"@$DB1_ALIAS - -@$COMMON_SCRIPT_HOME/order-object-scripts.sql diff --git a/grabdish/config/db/2db-atp/destroy/01-db1-admin-drop-schemas.sql b/grabdish/config/db/2db-atp/destroy/01-db1-admin-drop-schemas.sql deleted file mode 100644 index 23db7f7..0000000 --- a/grabdish/config/db/2db-atp/destroy/01-db1-admin-drop-schemas.sql +++ /dev/null @@ -1,9 +0,0 @@ --- Copyright (c) 2021 Oracle and/or its affiliates. --- Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/ - - -connect $DB1_ADMIN_USER/"$DB1_ADMIN_PASSWORD"@$DB1_ALIAS - -WHENEVER SQLERROR CONTINUE -DROP USER $AQ_USER CASCADE -DROP USER $ORDER_USER CASCADE diff --git a/grabdish/config/db/2db-atp/destroy/02-db2-admin-drop-schemas.sql b/grabdish/config/db/2db-atp/destroy/02-db2-admin-drop-schemas.sql deleted file mode 100644 index 88c4056..0000000 --- a/grabdish/config/db/2db-atp/destroy/02-db2-admin-drop-schemas.sql +++ /dev/null @@ -1,9 +0,0 @@ --- Copyright (c) 2021 Oracle and/or its affiliates. --- Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/ - - -connect $DB2_ADMIN_USER/"$DB2_ADMIN_PASSWORD"@$DB2_ALIAS - -WHENEVER SQLERROR CONTINUE -DROP USER $AQ_USER CASCADE -DROP USER $INVENTORY_USER CASCADE diff --git a/grabdish/config/db/2db-sa/apply/01-db1-admin-create-schemas.sql b/grabdish/config/db/2db-sa/apply/01-db1-admin-create-schemas.sql deleted file mode 100644 index 95f454d..0000000 --- a/grabdish/config/db/2db-sa/apply/01-db1-admin-create-schemas.sql +++ /dev/null @@ -1,19 +0,0 @@ --- Copyright (c) 2021 Oracle and/or its affiliates. --- Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/ - - -connect $DB1_ADMIN_USER/"$DB1_ADMIN_PASSWORD"@$DB1_ALIAS - -WHENEVER SQLERROR CONTINUE -DROP USER $AQ_USER CASCADE; -DROP USER $ORDER_USER CASCADE; - -WHENEVER SQLERROR EXIT 1 - --- AQ User -@$COMMON_SCRIPT_HOME/admin-aq-create-schema.sql --- For AQ Propagation -GRANT CREATE DATABASE LINK TO $AQ_USER; - --- Order User -@$COMMON_SCRIPT_HOME/admin-order-create-schema.sql diff --git a/grabdish/config/db/2db-sa/apply/02-db2-admin-create-schemas.sql b/grabdish/config/db/2db-sa/apply/02-db2-admin-create-schemas.sql deleted file mode 100644 index f9fb50b..0000000 --- a/grabdish/config/db/2db-sa/apply/02-db2-admin-create-schemas.sql +++ /dev/null @@ -1,20 +0,0 @@ --- Copyright (c) 2021 Oracle and/or its affiliates. --- Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/ - - -connect $DB2_ADMIN_USER/"$DB2_ADMIN_PASSWORD"@$DB2_ALIAS - -WHENEVER SQLERROR CONTINUE -DROP USER $AQ_USER CASCADE; -DROP USER $INVENTORY_USER CASCADE; - -WHENEVER SQLERROR EXIT 1 - --- AQ User -@$COMMON_SCRIPT_HOME/admin-aq-create-schema.sql --- For AQ Propagation -GRANT CREATE DATABASE LINK TO $AQ_USER; - - --- Inventory User -@$COMMON_SCRIPT_HOME/admin-inventory-create-schema.sql diff --git a/grabdish/config/db/2db-sa/apply/03-db1-aq-create-queues.sql b/grabdish/config/db/2db-sa/apply/03-db1-aq-create-queues.sql deleted file mode 100644 index eca8754..0000000 --- a/grabdish/config/db/2db-sa/apply/03-db1-aq-create-queues.sql +++ /dev/null @@ -1,29 +0,0 @@ --- Copyright (c) 2021 Oracle and/or its affiliates. --- Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/ - - -WHENEVER SQLERROR EXIT 1 -connect $AQ_USER/"$AQ_PASSWORD"@$DB1_ALIAS - -@$COMMON_SCRIPT_HOME/aq-${QUEUE_TYPE}-create-queues.sql - -BEGIN - DBMS_AQADM.grant_queue_privilege ( - privilege => 'ENQUEUE', - queue_name => '$ORDER_QUEUE', - grantee => '$ORDER_USER', - grant_option => FALSE); - - DBMS_AQADM.grant_queue_privilege ( - privilege => 'DEQUEUE', - queue_name => '$INVENTORY_QUEUE', - grantee => '$ORDER_USER', - grant_option => FALSE); - - DBMS_AQADM.add_subscriber( - queue_name=>'$INVENTORY_QUEUE', - subscriber=>sys.aq\$_agent('order_service',NULL,NULL)); -END; -/ - -TO DO CREATE_DATABASE_LINK \ No newline at end of file diff --git a/grabdish/config/db/2db-sa/apply/04-db2-aq-create-queues.sql b/grabdish/config/db/2db-sa/apply/04-db2-aq-create-queues.sql deleted file mode 100644 index 7d9d0f6..0000000 --- a/grabdish/config/db/2db-sa/apply/04-db2-aq-create-queues.sql +++ /dev/null @@ -1,29 +0,0 @@ --- Copyright (c) 2021 Oracle and/or its affiliates. --- Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/ - - -WHENEVER SQLERROR EXIT 1 -connect $AQ_USER/"$AQ_PASSWORD"@$DB2_ALIAS - -@$COMMON_SCRIPT_HOME/aq-${QUEUE_TYPE}-create-queues.sql - -BEGIN - DBMS_AQADM.grant_queue_privilege ( - privilege => 'DEQUEUE', - queue_name => '$ORDER_QUEUE', - grantee => '$INVENTORY_USER', - grant_option => FALSE); - - DBMS_AQADM.grant_queue_privilege ( - privilege => 'ENQUEUE', - queue_name => '$INVENTORY_QUEUE', - grantee => '$INVENTORY_USER', - grant_option => FALSE); - - DBMS_AQADM.add_subscriber( - queue_name=>'$ORDER_QUEUE', - subscriber=>sys.aq\$_agent('inventory_service',NULL,NULL)); -END; -/ - -TO DO CREATE_DATABASE_LINK diff --git a/grabdish/config/db/2db-sa/apply/05-db1-aq-propagation.sql b/grabdish/config/db/2db-sa/apply/05-db1-aq-propagation.sql deleted file mode 100644 index cd71b4b..0000000 --- a/grabdish/config/db/2db-sa/apply/05-db1-aq-propagation.sql +++ /dev/null @@ -1,25 +0,0 @@ --- Copyright (c) 2021 Oracle and/or its affiliates. --- Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/ - - -WHENEVER SQLERROR EXIT 1 -connect $AQ_USER/"$AQ_PASSWORD"@$DB1_ALIAS - -BEGIN -DBMS_AQADM.add_subscriber( - queue_name=>'$ORDER_QUEUE', - subscriber=>sys.aq\$_agent(null,'$AQ_USER.$ORDER_QUEUE@$DB1_TO_DB2_LINK',0), - queue_to_queue => true); -END; -/ - -BEGIN -dbms_aqadm.schedule_propagation - (queue_name => '$AQ_USER.$ORDER_QUEUE' - ,destination_queue => '$AQ_USER.$ORDER_QUEUE' - ,destination => '$DB1_TO_DB2_LINK' - ,start_time => sysdate --immediately - ,duration => null --until stopped - ,latency => 0); --No gap before propagating -END; -/ diff --git a/grabdish/config/db/2db-sa/apply/06-db2-aq-propagation.sql b/grabdish/config/db/2db-sa/apply/06-db2-aq-propagation.sql deleted file mode 100644 index 9be573b..0000000 --- a/grabdish/config/db/2db-sa/apply/06-db2-aq-propagation.sql +++ /dev/null @@ -1,25 +0,0 @@ --- Copyright (c) 2021 Oracle and/or its affiliates. --- Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/ - - -WHENEVER SQLERROR EXIT 1 -connect $AQ_USER/"$AQ_PASSWORD"@$DB2_ALIAS - -BEGIN -DBMS_AQADM.add_subscriber( - queue_name=>'$INVENTORY_QUEUE', - subscriber=>sys.aq\$_agent(null,'$AQ_USER.$INVENTORY_QUEUE@$DB2_TO_DB1_LINK',0), - queue_to_queue => true); -END; -/ - -BEGIN -dbms_aqadm.schedule_propagation - (queue_name => '$AQ_USER.$INVENTORY_QUEUE' - ,destination_queue => '$AQ_USER.$INVENTORY_QUEUE' - ,destination => '$DB2_TO_DB1_LINK' - ,start_time => sysdate --immediately - ,duration => null --until stopped - ,latency => 0); --No gap before propagating -END; -/ diff --git a/grabdish/config/db/2db-sa/apply/07-db2-inventory-table-scripts.sql b/grabdish/config/db/2db-sa/apply/07-db2-inventory-table-scripts.sql deleted file mode 100644 index 3d305dc..0000000 --- a/grabdish/config/db/2db-sa/apply/07-db2-inventory-table-scripts.sql +++ /dev/null @@ -1,8 +0,0 @@ --- Copyright (c) 2021 Oracle and/or its affiliates. --- Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/ - - -WHENEVER SQLERROR EXIT 1 -connect $INVENTORY_USER/"$INVENTORY_PASSWORD"@$DB2_ALIAS - -@$COMMON_SCRIPT_HOME/inventory-table-scripts.sql diff --git a/grabdish/config/db/2db-sa/apply/08-db1-order-object-scripts.sql b/grabdish/config/db/2db-sa/apply/08-db1-order-object-scripts.sql deleted file mode 100644 index cd97ca8..0000000 --- a/grabdish/config/db/2db-sa/apply/08-db1-order-object-scripts.sql +++ /dev/null @@ -1,8 +0,0 @@ --- Copyright (c) 2021 Oracle and/or its affiliates. --- Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/ - - -WHENEVER SQLERROR EXIT 1 -connect $ORDER_USER/"$ORDER_PASSWORD"@$DB1_ALIAS - -@$COMMON_SCRIPT_HOME/order-object-scripts.sql diff --git a/grabdish/config/db/2db-sa/destroy/01-db1-admin-drop-schemas.sql b/grabdish/config/db/2db-sa/destroy/01-db1-admin-drop-schemas.sql deleted file mode 100644 index 23db7f7..0000000 --- a/grabdish/config/db/2db-sa/destroy/01-db1-admin-drop-schemas.sql +++ /dev/null @@ -1,9 +0,0 @@ --- Copyright (c) 2021 Oracle and/or its affiliates. --- Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/ - - -connect $DB1_ADMIN_USER/"$DB1_ADMIN_PASSWORD"@$DB1_ALIAS - -WHENEVER SQLERROR CONTINUE -DROP USER $AQ_USER CASCADE -DROP USER $ORDER_USER CASCADE diff --git a/grabdish/config/db/2db-sa/destroy/02-db2-admin-drop-schemas.sql b/grabdish/config/db/2db-sa/destroy/02-db2-admin-drop-schemas.sql deleted file mode 100644 index 88c4056..0000000 --- a/grabdish/config/db/2db-sa/destroy/02-db2-admin-drop-schemas.sql +++ /dev/null @@ -1,9 +0,0 @@ --- Copyright (c) 2021 Oracle and/or its affiliates. --- Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/ - - -connect $DB2_ADMIN_USER/"$DB2_ADMIN_PASSWORD"@$DB2_ALIAS - -WHENEVER SQLERROR CONTINUE -DROP USER $AQ_USER CASCADE -DROP USER $INVENTORY_USER CASCADE diff --git a/grabdish/config/db/apply.sh b/grabdish/config/db/apply.sh deleted file mode 100755 index e9cdc3e..0000000 --- a/grabdish/config/db/apply.sh +++ /dev/null @@ -1,111 +0,0 @@ -#!/bin/bash -# Copyright (c) 2021 Oracle and/or its affiliates. -# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. - -# Fail on error -set -eu - - -if ! provisioning-helper-pre-apply; then - exit 1 -fi - - -export GRABDISH_LOG - - -# Setup the environment variable -DB_PASSWORD=$(get_secret $DB_PASSWORD_SECRET) - -CONFIG_HOME=$GRABDISH_HOME/config/db -if test $DB_DEPLOYMENT == "1DB"; then - # 1DB - SCRIPT_HOME=$CONFIG_HOME/1db/apply -else - # 2DB - if test $DB_TYPE == "ATP"; then - # ATP - SCRIPT_HOME=$CONFIG_HOME/2db-atp/apply - - # Create Object Store CWALLET objects and auth URLs for each database - for db in DB1 DB2; do - # Put DB Connection Wallet in the bucket in Object Store - if ! test -f $MY_STATE/${db}_state_cwallet_put; then - eval "cd \$${db}_TNS_ADMIN" - oci os object put --bucket-name $CWALLET_OS_BUCKET --name "${db}_cwallet.sso" --file 'cwallet.sso' - touch $MY_STATE/${db}_state_cwallet_put - fi - - # Create Authenticated Link to Wallet - if ! test -f $MY_STATE/${db}_state_cwallet_auth_url; then - if test `uname` == 'Linux'; then - EXPIRE_DATE=$(date '+%Y-%m-%d' --date '+7 days') - else - EXPIRE_DATE=$(date -v +7d '+%Y-%m-%d') - fi - ACCESS_URI=`oci os preauth-request create --object-name "${db}_cwallet.sso" --access-type 'ObjectRead' --bucket-name "$CWALLET_OS_BUCKET" --name 'grabdish' --time-expires "$EXPIRE_DATE" --query 'data."access-uri"' --raw-output` - CWALLET_SSO_AUTH_URL="https://objectstorage.${OCI_REGION}.oraclecloud.com${ACCESS_URI}" - echo "${db}_CWALLET_SSO_AUTH_URL='$CWALLET_SSO_AUTH_URL'" >>$STATE_FILE - touch $MY_STATE/${db}_state_cwallet_auth_url - fi - done - source $STATE_FILE - else - # Standard Database - SCRIPT_HOME=$CONFIG_HOME/2db-sa/apply - fi -fi - -source $CONFIG_HOME/params.env - - -# Expand common scripts -COMMON_SCRIPT_HOME=$MY_STATE/expanded-common-scripts/apply -rm -rf $COMMON_SCRIPT_HOME -mkdir -p $COMMON_SCRIPT_HOME -chmod 700 $COMMON_SCRIPT_HOME -files=$(ls $CONFIG_HOME/common/apply) -for f in $files; do - eval " -cat >$COMMON_SCRIPT_HOME/$f <$OUTPUT_FILE < 'ORDERQUEUETABLE', - queue_payload_type => 'SYS.AQ\$_JMS_TEXT_MESSAGE', - multiple_consumers => true, - compatible => '8.1'); - - DBMS_AQADM.CREATE_QUEUE_TABLE ( - queue_table => 'INVENTORYQUEUETABLE', - queue_payload_type => 'SYS.AQ\$_JMS_TEXT_MESSAGE', - multiple_consumers => true, - compatible => '8.1'); - - DBMS_AQADM.CREATE_QUEUE ( - queue_name => '$ORDER_QUEUE', - queue_table => 'ORDERQUEUETABLE'); - - DBMS_AQADM.CREATE_QUEUE ( - queue_name => '$INVENTORY_QUEUE', - queue_table => 'INVENTORYQUEUETABLE'); - - DBMS_AQADM.START_QUEUE ( - queue_name => '$ORDER_QUEUE'); - - DBMS_AQADM.START_QUEUE ( - queue_name => '$INVENTORY_QUEUE'); - -END; -/ diff --git a/grabdish/config/db/common/apply/aq-teq-create-queues.sql b/grabdish/config/db/common/apply/aq-teq-create-queues.sql deleted file mode 100644 index 2a96cec..0000000 --- a/grabdish/config/db/common/apply/aq-teq-create-queues.sql +++ /dev/null @@ -1,23 +0,0 @@ --- Copyright (c) 2021 Oracle and/or its affiliates. --- Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/ - - -BEGIN - DBMS_AQADM.CREATE_SHARDED_QUEUE ( - queue_name => '$ORDER_QUEUE', - queue_payload_type => DBMS_AQADM.JMS_TYPE, - multiple_consumers => true); - - DBMS_AQADM.CREATE_SHARDED_QUEUE ( - queue_name => '$INVENTORY_QUEUE', - queue_payload_type => DBMS_AQADM.JMS_TYPE, - multiple_consumers => true); - - DBMS_AQADM.START_QUEUE ( - queue_name => '$ORDER_QUEUE'); - - DBMS_AQADM.START_QUEUE ( - queue_name => '$INVENTORY_QUEUE'); - -END; -/ diff --git a/grabdish/config/db/common/apply/inventory-table-scripts.sql b/grabdish/config/db/common/apply/inventory-table-scripts.sql deleted file mode 100644 index 178b91c..0000000 --- a/grabdish/config/db/common/apply/inventory-table-scripts.sql +++ /dev/null @@ -1,127 +0,0 @@ --- Copyright (c) 2021 Oracle and/or its affiliates. --- Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/ - - -create table inventory ( - inventoryid varchar(16) PRIMARY KEY NOT NULL, - inventorylocation varchar(32), - inventorycount integer CONSTRAINT positive_inventory CHECK (inventorycount >= 0) ); - -insert into inventory values ('sushi', '1468 WEBSTER ST,San Francisco,CA', 0); -insert into inventory values ('pizza', '1469 WEBSTER ST,San Francisco,CA', 0); -insert into inventory values ('burger', '1470 WEBSTER ST,San Francisco,CA', 0); -commit; - -@$GRABDISH_HOME/inventory-dotnet/dequeueenqueue.sql - -CREATE OR REPLACE PROCEDURE dequeue_order_message(in_wait_option in BINARY_INTEGER, out_order_message OUT varchar2) -IS - dequeue_options dbms_aq.dequeue_options_t; - message_properties dbms_aq.message_properties_t; - message_handle RAW(16); - message SYS.AQ\$_JMS_TEXT_MESSAGE; - no_messages EXCEPTION; - pragma exception_init(no_messages, -25228); -BEGIN - CASE in_wait_option - WHEN 0 THEN - dequeue_options.wait := dbms_aq.NO_WAIT; - WHEN -1 THEN - dequeue_options.wait := dbms_aq.FOREVER; - ELSE - dequeue_options.wait := in_wait_option; - END CASE; - - dequeue_options.consumer_name := '$INVENTORY_SERVICE_NAME'; - dequeue_options.navigation := dbms_aq.FIRST_MESSAGE; -- Required for TEQ - - DBMS_AQ.DEQUEUE( - queue_name => '$AQ_USER.$ORDER_QUEUE', - dequeue_options => dequeue_options, - message_properties => message_properties, - payload => message, - msgid => message_handle); - - out_order_message := message.text_vc; - - EXCEPTION - WHEN no_messages THEN - out_order_message := ''; - WHEN OTHERS THEN - RAISE; -END; -/ -show errors - -CREATE OR REPLACE PROCEDURE enqueue_inventory_message(in_inventory_message IN VARCHAR2) -IS - enqueue_options dbms_aq.enqueue_options_t; - message_properties dbms_aq.message_properties_t; - message_handle RAW(16); - message SYS.AQ\$_JMS_TEXT_MESSAGE; -BEGIN - message := SYS.AQ\$_JMS_TEXT_MESSAGE.construct; - message.set_text(in_inventory_message); - - dbms_aq.ENQUEUE(queue_name => '$AQ_USER.$INVENTORY_QUEUE', - enqueue_options => enqueue_options, - message_properties => message_properties, - payload => message, - msgid => message_handle); -END; -/ -show errors - -CREATE OR REPLACE PROCEDURE check_inventory(in_inventory_id IN VARCHAR2, out_inventory_location OUT varchar2) -IS -BEGIN - update INVENTORYUSER.INVENTORY set inventorycount = inventorycount - 1 - where inventoryid = in_inventory_id and inventorycount > 0 - returning inventorylocation into out_inventory_location; - if sql%rowcount = 0 then - out_inventory_location := 'inventorydoesnotexist'; - end if; -END; -/ -show errors - -CREATE OR REPLACE PROCEDURE inventory_service -IS - order_message VARCHAR2(32767); - order_inv_id VARCHAR2(16); - order_inv_loc VARCHAR2(32); - order_json JSON_OBJECT_T; - inventory_json JSON_OBJECT_T; -BEGIN - LOOP - -- Wait for and dequeue the next order message - dequeue_order_message( - in_wait_option => -1, -- Wait forever - out_order_message => order_message); - - -- Parse the order message - order_json := JSON_OBJECT_T.parse(order_message); - order_inv_id := order_json.get_string('itemid'); - - -- Check the inventory - check_inventory( - in_inventory_id => order_inv_id, - out_inventory_location => order_inv_loc); - - -- Construct the inventory message - inventory_json := new JSON_OBJECT_T; - inventory_json.put('orderid', order_json.get_string('orderid')); - inventory_json.put('itemid', order_inv_id); - inventory_json.put('inventorylocation', order_inv_loc); - inventory_json.put('suggestiveSale', 'beer'); - - -- Send the inventory message - enqueue_inventory_message( - in_inventory_message => inventory_json.to_string() ); - - -- commit - commit; - END LOOP; -END; -/ -show errors \ No newline at end of file diff --git a/grabdish/config/db/common/apply/order-object-scripts.sql b/grabdish/config/db/common/apply/order-object-scripts.sql deleted file mode 100644 index 0b09896..0000000 --- a/grabdish/config/db/common/apply/order-object-scripts.sql +++ /dev/null @@ -1,172 +0,0 @@ --- Copyright (c) 2021 Oracle and/or its affiliates. --- Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/ - - --- frontend place order (POST) -CREATE OR REPLACE PROCEDURE frontend_place_order ( - serviceName IN varchar2, - commandName IN varchar2, - orderId IN varchar2, - orderItem IN varchar2, - deliverTo IN varchar2) -IS -AUTHID CURRENT_USER -BEGIN - place_order( - orderid => orderId, - itemid => orderItem, - deliverylocation => deliverTo); -END; -/ -show errors - - --- place order microserice (GET) --- Example: ../ords/orderuser/placeorder/order?orderId=66&orderItem=sushi&deliverTo=Redwood -CREATE OR REPLACE PROCEDURE place_order ( - orderid IN varchar2, - itemid IN varchar2, - deliverylocation IN varchar2) -AUTHID CURRENT_USER -IS - order_json JSON_OBJECT_T; -BEGIN - -- Construct the order object - order_json := new JSON_OBJECT_T; - order_json.put('orderid', orderid); - order_json.put('itemid', itemid); - order_json.put('deliverylocation', deliverylocation); - order_json.put('status', 'Pending'); - order_json.put('inventoryLocation', ''); - order_json.put('suggestiveSale', ''); - - -- Insert the order object - insert_order(orderid, order_json.to_string()); - - -- Send the order message - enqueue_order_message(order_json.to_string()); - - -- Commit - commit; - - HTP.print(order_json.to_string()); - - EXCEPTION - WHEN OTHERS THEN - HTP.print(SQLERRM); - -END; -/ -show errors - - --- Insert order -CREATE OR REPLACE PROCEDURE insert_order(in_order_id IN VARCHAR2, in_order IN VARCHAR2) -AUTHID CURRENT_USER -IS - order_doc SODA_DOCUMENT_T; - collection SODA_COLLECTION_T; - status NUMBER; - collection_name CONSTANT VARCHAR2(20) := 'orderscollection'; - collection_metadata CONSTANT VARCHAR2(4000) := '{"keyColumn" : {"assignmentMethod": "CLIENT"}}'; -BEGIN - -- Write the order object - collection := DBMS_SODA.open_collection(collection_name); - IF collection IS NULL THEN - collection := DBMS_SODA.create_collection(collection_name, collection_metadata); - END IF; - - order_doc := SODA_DOCUMENT_T(in_order_id, b_content => utl_raw.cast_to_raw(in_order)); - status := collection.insert_one(order_doc); -END; -/ -show errors - - --- Enqueue order message -CREATE OR REPLACE PROCEDURE enqueue_order_message(in_order_message IN VARCHAR2) -AUTHID CURRENT_USER -IS - enqueue_options dbms_aq.enqueue_options_t; - message_properties dbms_aq.message_properties_t; - message_handle RAW(16); - message SYS.AQ\$_JMS_TEXT_MESSAGE; -BEGIN - message := SYS.AQ\$_JMS_TEXT_MESSAGE.construct; - message.set_text(in_order_message); - - dbms_aq.ENQUEUE(queue_name => '$AQ_USER.$ORDER_QUEUE', - enqueue_options => enqueue_options, - message_properties => message_properties, - payload => message, - msgid => message_handle); -END; -/ -show errors - - --- Place Order using MLE JavaScript -CREATE OR REPLACE PROCEDURE place_order_js ( - orderid IN varchar2, - itemid IN varchar2, - deliverylocation IN varchar2) -AUTHID CURRENT_USER -IS - ctx DBMS_MLE.context_handle_t := DBMS_MLE.create_context(); - order VARCHAR2(4000); - js_code clob := q'~ - var oracledb = require("mle-js-oracledb"); - var bindings = require("mle-js-bindings"); - conn = oracledb.defaultConnection(); - - // Construct the order object - const order = { - orderid: bindings.importValue("orderid"), - itemid: bindings.importValue("itemid"), - deliverylocation: bindings.importValue("deliverylocation"), - status: "Pending", - inventoryLocation: "", - suggestiveSale: "" - } - - // Insert the order object - insert_order(conn, order); - - // Send the order message - enqueue_order_message(conn, order); - - // Commit - conn.commit; - - // Output order - bindings.exportValue("order", order.stringify()); - - function insert_order(conn, order) { - conn.execute( "BEGIN insert_order(:1, :2); END;", [order.orderid, order.stringify()]); - } - - function enqueue_order_message(conn, order) { - conn.execute( "BEGIN enqueue_order_message(:1); END;", [order.stringify()]); - } - ~'; -BEGIN - -- Pass variables to JavaScript - dbms_mle.export_to_mle(ctx, 'orderid', orderid); - dbms_mle.export_to_mle(ctx, 'itemid', itemid); - dbms_mle.export_to_mle(ctx, 'deliverylocation', deliverylocation); - - -- Execute JavaScript - DBMS_MLE.eval(ctx, 'JAVASCRIPT', js_code); - DBMS_MLE.import_from_mle(ctx, 'order', order); - DBMS_MLE.drop_context(ctx); - - HTP.print(order); - -EXCEPTION - WHEN others THEN - dbms_mle.drop_context(ctx); - HTP.print(SQLERRM); - -END; -/ -show errors \ No newline at end of file diff --git a/grabdish/config/db/destroy.sh b/grabdish/config/db/destroy.sh deleted file mode 100755 index 6e19d2e..0000000 --- a/grabdish/config/db/destroy.sh +++ /dev/null @@ -1,96 +0,0 @@ -#!/bin/bash -# Copyright (c) 2021 Oracle and/or its affiliates. -# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. - -# Fail on error -set -e - - -if ! provisioning-helper-pre-destroy; then - exit 1 -fi - - -export GRABDISH_LOG - - -# Setup the environment variable -DB_PASSWORD=$(get_secret $DB_PASSWORD_SECRET) - -CONFIG_HOME=$GRABDISH_HOME/config/db -if test $DB_DEPLOYMENT == "1DB"; then - # 1DB - SCRIPT_HOME=$CONFIG_HOME/1db/destroy -else - # 2DB - if test $DB_TYPE == "ATP"; then - # ATP - SCRIPT_HOME=$CONFIG_HOME/2db-atp/destroy - else - # Stand Alone - SCRIPT_HOME=$CONFIG_HOME/2db-sa/destroy - fi -fi - -source $CONFIG_HOME/params.env - - -# Expand common destroy scripts -# COMMON_SCRIPT_HOME=$MY_STATE/expanded-common-scripts/destroy -# mkdir -p $COMMON_SCRIPT_HOME -# chmod 700 $COMMON_SCRIPT_HOME -# files=$(ls -r $CONFIG_HOME/common/destroy) -# for f in $files; do -# eval " -# cat >$COMMON_SCRIPT_HOME/$f < '$AQ_USER.$ORDER_QUEUE', - dequeue_options => dequeue_options, - message_properties => message_properties, - payload => message, - msgid => message_handle); - - out_order_message := message.text_vc; - - EXCEPTION - WHEN no_messages THEN - out_order_message := ''; - WHEN OTHERS THEN - RAISE; -END; -/ -show errors - -CREATE OR REPLACE PROCEDURE enqueue_inventory_message(in_inventory_message IN VARCHAR2) -IS - enqueue_options DBMS_AQ.enqueue_options_t; - message_properties DBMS_AQ.message_properties_t; - message_handle RAW(16); - message SYS.AQ$_JMS_TEXT_MESSAGE; -BEGIN - message := SYS.AQ$_JMS_TEXT_MESSAGE.construct; - message.set_text(in_inventory_message); - - DBMS_AQ.ENQUEUE(queue_name => '$AQ_USER.$INVENTORY_QUEUE', - enqueue_options => enqueue_options, - message_properties => message_properties, - payload => message, - msgid => message_handle); -END; -/ -show errors - -CREATE OR REPLACE PROCEDURE check_inventory(in_inventory_id IN VARCHAR2, out_inventory_location OUT varchar2) -IS -BEGIN - update INVENTORYUSER.INVENTORY set inventorycount = inventorycount - 1 - where inventoryid = in_inventory_id and inventorycount > 0 - returning inventorylocation into out_inventory_location; - if sql%rowcount = 0 then - out_inventory_location := 'inventorydoesnotexist'; - end if; -END; -/ -show errors - -CREATE OR REPLACE PROCEDURE inventory_service -IS - order_message VARCHAR2; - order_inv_id VARCHAR2; - order_inv_loc VARCHAR2; - order_json JSON_OBJECT_T; - inventory_json JSON_OBJECT_T; -BEGIN - LOOP - -- Wait for and dequeue the next order message - dequeue_order_message( - in_wait_option => -1, -- Wait forever - out_order_message => order_message); - - -- Parse the order message - order_json := JSON_OBJECT_T.parse(order_message); - order_inv_id := order_json.get_string('itemid'); - - -- Check the inventory - check_inventory( - in_inventory_id => order_inv_id, - out_inventory_location => order_inv_loc); - - -- Construct the inventory message - inventory_json := new JSON_OBJECT_T; - inventory_json.put('orderid', order_json.get_string('orderid')); - inventory_json.put('itemid', order_inv_id); - inventory_json.put('inventorylocation', order_inv_loc); - inventory_json.put('suggestiveSale', 'beer'); - - -- Send the inventory message - enqueue_inventory_message( - in_inventory_message => inventory_json.to_string() ); - - -- commit - commit; - END LOOP; -END; -/ diff --git a/grabdish/config/db/params.env b/grabdish/config/db/params.env deleted file mode 100644 index 3b3ee26..0000000 --- a/grabdish/config/db/params.env +++ /dev/null @@ -1,76 +0,0 @@ -#!/bin/bash -## Copyright (c) 2021 Oracle and/or its affiliates. -## Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/ - -DB_DEPLOYMENT="$DB_DEPLOYMENT" # 1DB or 2DB -DB_TYPE="$DB_TYPE" # ATP or SA (stand alone) -COMMON_SCRIPT_HOME=$GRABDISH_HOME/../../temp/common -QUEUE_TYPE="$QUEUE_TYPE" # classicq or teq (case sensitive) - -DB1_ALIAS="$DB1_ALIAS" -DB1_TNS_ADMIN="$DB1_TNS_ADMIN" - -DB1_ADMIN_USER=admin -DB1_ADMIN_PASSWORD="$DB_PASSWORD" - -AQ_USER=AQ -AQ_PASSWORD="$DB_PASSWORD" - -ORDER_USER=ORDERUSER -ORDER_PASSWORD="$DB_PASSWORD" - -INVENTORY_USER=INVENTORYUSER -INVENTORY_PASSWORD="$DB_PASSWORD" - -ORDER_QUEUE=ORDERQUEUE -INVENTORY_QUEUE=INVENTORYQUEUE - -INVENTORY_SERVICE_NAME="INVENTORY_SERVICE" -ORDER_SERVICE_NAME="ORDER_SERVICE" - -ORDER_DB_NAME="$DB1_NAME" -ORDER_DB_ALIAS="$DB1_ALIAS" -ORDER_DB_TNS_ADMIN="$DB1_TNS_ADMIN" - -if test "$DB_DEPLOYMENT" == "2DB"; then - DB2_ALIAS="$DB2_ALIAS" - DB2_TNS_ADMIN="$DB2_TNS_ADMIN" - - DB2_ADMIN_USER=admin - DB2_ADMIN_PASSWORD="$DB_PASSWORD" - - DB1_TO_DB2_LINK=DB1_TO_DB2_LINK - DB2_TO_DB1_LINK=DB2_TO_DB1_LINK - - INVENTORY_DB_NAME="$DB2_NAME" - INVENTORY_DB_ALIAS="$DB2_ALIAS" - INVENTORY_DB_TNS_ADMIN="$DB2_TNS_ADMIN" - - if test "$DB_TYPE" == "ATP"; then - DBLINK_CREDENTIAL_DIRECTORY='AQ_DBLINK_CREDENTIALS' #Must be upper case - DBLINK_CREDENTIAL_DIRECTORY_FOLDER='aq_dblink_credentials' - - # Function to extract parameters from a TNS connect string - function tns-att() { - # Extract parameter $2 (for example service_name) from TNS string $1 - echo `grep -o "$2"'=[^)]*' <<<"$1"` | cut -d "=" -f2- - } - - DB1_CWALLET_SSO_AUTH_URL="$DB1_CWALLET_SSO_AUTH_URL" - DB1_TNS_STRING=`grep -i "^$DB1_ALIAS " $DB1_TNS_ADMIN/tnsnames.ora` - DB1_HOSTNAME=$(tns-att "$DB1_TNS_STRING" 'host') - DB1_PORT=$(tns-att "$DB1_TNS_STRING" 'port') - DB1_SERVICE_NAME=$(tns-att "$DB1_TNS_STRING" 'service_name') - - DB2_CWALLET_SSO_AUTH_URL="$DB2_CWALLET_SSO_AUTH_URL" - DB2_TNS_STRING=`grep -i "^$DB2_ALIAS " $DB2_TNS_ADMIN/tnsnames.ora` - DB2_HOSTNAME=$(tns-att "$DB2_TNS_STRING" 'host') - DB2_PORT=$(tns-att "$DB2_TNS_STRING" 'port') - DB2_SERVICE_NAME=$(tns-att "$DB2_TNS_STRING" 'service_name') - fi -else - INVENTORY_DB_NAME="$DB1_NAME" - INVENTORY_DB_ALIAS="$DB1_ALIAS" - INVENTORY_DB_TNS_ADMIN="$DB1_TNS_ADMIN" -fi - diff --git a/grabdish/config/db/requirements.env b/grabdish/config/db/requirements.env deleted file mode 100644 index d116bd8..0000000 --- a/grabdish/config/db/requirements.env +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash -# Copyright (c) 2021 Oracle and/or its affiliates. -# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. - -REQ_UTILS="touch cat rm sqlplus grep" -REQ_INPUT_PARAMS="QUEUE_TYPE DB_DEPLOYMENT DB_TYPE DB_PASSWORD_SECRET DB1_NAME DB1_TNS_ADMIN DB1_ALIAS DB2_NAME DB2_TNS_ADMIN DB2_ALIAS CWALLET_OS_BUCKET OCI_REGION GRABDISH_LOG" -REQ_OUTPUT_PARAMS="ORDER_DB_NAME ORDER_DB_ALIAS ORDER_DB_TNS_ADMIN INVENTORY_DB_NAME INVENTORY_DB_ALIAS INVENTORY_DB_TNS_ADMIN" \ No newline at end of file diff --git a/grabdish/config/destroy.sh b/grabdish/config/destroy.sh deleted file mode 100755 index f3b3048..0000000 --- a/grabdish/config/destroy.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash -# Copyright (c) 2021 Oracle and/or its affiliates. -# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. - -# Fail on error -set -e - - -if ! provisioning-helper-pre-destroy; then - exit 1 -fi - - -cd $MY_CODE/.. -export GRABDISH_HOME=$PWD - - -# Run grabdish destroy for each config in order -CONFIGS="db-k8s k8s db" -for c in $CONFIGS; do - CONFIG_STATE=$MY_STATE/$c - if test -d $CONFIG_STATE; then - cd $CONFIG_STATE - provisioning-destroy - fi -done - - -rm -f $STATE_FILE \ No newline at end of file diff --git a/grabdish/config/k8s/apply.sh b/grabdish/config/k8s/apply.sh deleted file mode 100755 index 2bdbec1..0000000 --- a/grabdish/config/k8s/apply.sh +++ /dev/null @@ -1,129 +0,0 @@ -#!/bin/bash -# Copyright (c) 2021 Oracle and/or its affiliates. -# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. - -# Fail on error -set -e - - -if ! provisioning-helper-pre-apply; then - exit 1 -fi - - -export GRABDISH_LOG - - -# Create SSL Certs -if ! test -f $MY_STATE/ssl_certs; then - mkdir -p $MY_STATE/tls - chmod 700 $MY_STATE/tls - openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout $MY_STATE/tls/tls.key -out $MY_STATE/tls/tls.crt -subj "/CN=grabdish/O=grabdish" - touch $MY_STATE/ssl_certs -fi - - -# Create OKE Namespace -if ! test -f $MY_STATE/k8s_namespace; then - kubectl create ns msdataworkshop - touch $MY_STATE/k8s_namespace -fi - - -# Create SSL Secret -#if ! test -f $MY_STATE/ssl_secret; then -# kubectl create secret tls ssl-certificate-secret --key $MY_STATE/tls/tls.key --cert $MY_STATE/tls/tls.crt -n msdataworkshop -# touch $MY_STATE/ssl_secret -#fi - - -# Add NGINX Ingress Controller Repo to Helm -while ! test -f $MY_STATE/nginx_helm_repo; do - if helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx 2>$GRABDISH_LOG/nginx_repo_err; then - helm repo update - touch $MY_STATE/nginx_helm_repo - else - echo "Add NGINX to Helm Repo failed" - cat $GRABDISH_LOG/nginx_repo_err - exit 1 - fi -done - - -# Create SSL Secret -while ! test -f $MY_STATE/ssl_secret_ingress; do - if kubectl create secret tls ssl-certificate-secret --key $MY_STATE/tls/tls.key --cert $MY_STATE/tls/tls.crt -n msdataworkshop; then - touch $MY_STATE/ssl_secret_ingress - else - echo "Ingress SSL Secret creation failed" - exit 1 - fi -done - - -# Provision Ingress Controller -while ! test -f $MY_STATE/nginx_ingress_setup; do - if helm install ingress-nginx ingress-nginx/ingress-nginx --namespace msdataworkshop --values $GRABDISH_HOME/ingress/nginx/ingress-nginx-helm-values4oci.yaml 2>$GRABDISH_LOG/nginx_ingress_err; then - touch $MY_STATE/nginx_ingress_setup - else - echo "Ingress Controller installation failed." - cat $GRABDISH_LOG/nginx_ingress_err - exit 1 - fi -done - - -# Create frontend load balancer -#if ! test -f $MY_STATE/frontend_lb; then -# kubectl create -f $GRABDISH_HOME/frontend-helidon/frontend-service.yaml -n msdataworkshop -# touch $MY_STATE/frontend_lb -#fi - - -# Install Jaeger -#if ! test -f $MY_STATE/jaeger; then -# kubectl create -f https://tinyurl.com/yc52x6q5 -n msdataworkshop -# touch $MY_STATE/jaeger -#fi - - -# Create UI password secret -if ! test -f $MY_STATE/ui_password_k8s_secret; then - BASE64_UI_PASSWORD=`echo -n "$(get_secret $UI_PASSWORD_SECRET)" | base64` - kubectl create -n msdataworkshop -f - </dev/null); then - echo "ERROR: Usage 'source destroy.sh'" - exit -fi - -$GRABDISH_HOME/utils/main-destroy.sh - -cd diff --git a/grabdish/docs/AutoTest.md b/grabdish/docs/AutoTest.md deleted file mode 100644 index ff7fd69..0000000 --- a/grabdish/docs/AutoTest.md +++ /dev/null @@ -1,59 +0,0 @@ -_Copyright (c) 2019, 2020, 2021 Oracle and/or its affiliates The Universal Permissive License (UPL), Version 1.0_ - -# Automated Workshop Testing - -Here is how to run an automated test in your free tier tenancy or with a Live Labs reserved tenancy. - -1. (Free Tier Only) Clean up your existing tenancy so that you have disk space and the docker cache is empty: -``` -docker image prune -a -f -csreset -a <<< 'y' -``` - -2. (Free Tier Only) From the OCI Console, make space for a new auth token. The limit is 2. - -3. (Free Tier Only) Create a directory to run the test and name your compartment: -``` -export TEST_DIRECTORY=gd`awk 'BEGIN { srand(); print int(1 + rand() * 1000000)}'` -echo "Test directory $TEST_DIRECTORY" -mkdir $TEST_DIRECTORY -cd $TEST_DIRECTORY -export TEST_COMPARTMENT="$TEST_DIRECTORY" -export TEST_PARENT_COMPARTMENT_OCID='$OCI_TENANCY' -``` - -4. (Free Tier Only) Register your user OCID: -``` -export TEST_USER_OCID='ocid1.user.oc1..xxxxx' -``` - -5. Export the fork/GITHUB_USER (and branch/GITHUB_BRANCH if necessary) you wish to test and the passwords to be used: -``` -export GITHUB_BRANCH='main' -export GITHUB_USER='myghuser' -export TEST_DB_PASSWORD='Welcome12345;#!:' -export TEST_UI_PASSWORD='Welcome1;#!:"' -``` - -6. Clone the code -``` -git clone -b "$GITHUB_BRANCH" --single-branch "https://github.com/${GITHUB_USER}/microservices-datadriven.git" -``` - -7. Execute the setup. Note in the Live Labs case, the setup will prompt for the compartment OCID and an auth token. -``` -source microservices-datadriven/workshops/dcms-oci/source.env -time setup -``` - -8. Execute the test -``` -source test.sh - -``` - -9. Clean up -``` -time teardown - -``` diff --git a/grabdish/docs/Build.md b/grabdish/docs/Build.md deleted file mode 100644 index 0624de6..0000000 --- a/grabdish/docs/Build.md +++ /dev/null @@ -1,36 +0,0 @@ -_Copyright (c) 2019, 2020, 2021 Oracle and/or its affiliates The Universal Permissive License (UPL), Version 1.0_ - -# Grabdish Build Process - -It is necessary to build the grabdish microservices before they can be deployed. Each microservice has its own build script. A build script compiles the code, constructs a docker image, and pushes the image to the repository. The image is used when deploying the microservice. It is possible to run the builds and provisioning in parallel to save time, however, building more than one java based microservice in parallel has been found to be unreliable and so is not recommended. - -## Prerequisites - -The following are required before building a Grabdish microservice: - -1. Java installed -2. Docker installed -3. Docker image repository prepared -4. Software cloned - -## Environment Variables - -To build grabdish services the following environment variables must be exported: - -DOCKER_REGISTRY -JAVA_HOME -PATH=${JAVA_HOME}/bin:$PATH - -## Steps - -1. Change to a service's home folder, for example: - -``` -cd inventory-helidon -``` - -2. Execute the build script: - -``` -./build.sh -``` diff --git a/grabdish/docs/Deploy.md b/grabdish/docs/Deploy.md deleted file mode 100644 index 974343f..0000000 --- a/grabdish/docs/Deploy.md +++ /dev/null @@ -1,56 +0,0 @@ -_Copyright (c) 2019, 2020, 2021 Oracle and/or its affiliates The Universal Permissive License (UPL), Version 1.0_ - -# Grabdish Deployment - -## Environment Variables - -To deploy grabdish services the following environment variables must be exported. Note, most of these are outputs from the provisioning process: - -- ORDER_DB_NAME -- ORDER_DB_TNS_ADMIN -- ORDER_DB_ALIAS -- INVENTORY_DB_NAME -- INVENTORY_DB_TNS_ADMIN -- INVENTORY_DB_ALIAS -- OCI_REGION: OCI vault only -- VAULT_SECRET_OCID: OCI vault only - -## Deploy Steps - -1. Source the common environment: - - source microservices-datadriven/common/source.env - -2. Change to a microservice's home folder, for example: - -``` -cd inventory-helidon -``` - -3. Execute the deploy script: - -``` -./deploy.sh -``` - -## Undeploy Steps - -1. Source the common environment: - - source microservices-datadriven/common/source.env - -2. Change to a microservice's home folder, for example: - -``` -cd inventory-helidon -``` - -3. Execute the undeploy script: - -``` -./undeploy.sh -``` - -## Internals - -The deploy.sh and undeploy.sh scripts use the k8s_deploy andf k8s_undeploy helper functions respectively, defined in common/utils/deploy-functions.env and sourced by common/source.env. See common/docs/DeployFunctions.md for details. diff --git a/grabdish/docs/LocalDev.md b/grabdish/docs/LocalDev.md deleted file mode 100644 index a21a4c6..0000000 --- a/grabdish/docs/LocalDev.md +++ /dev/null @@ -1,84 +0,0 @@ -_Copyright (c) 2019, 2020, 2021 Oracle and/or its affiliates The Universal Permissive License (UPL), Version 1.0_ - -# Local Development - -This document explains how to setup your development machine to perform development where the microservices can be built and then deployed onto OKE for testing. - -These tests have been tested on MacOS - -## Prerequisites - -1. Install OCI CLI - - https://docs.oracle.com/en-us/iaas/Content/API/SDKDocs/cliinstall.htm - -2. Install kubectl - - https://kubernetes.io/docs/tasks/tools/install-kubectl-macos/ - -3. Install GraalVM -``` -cd ~ -curl -sL https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-20.1.0/graalvm-ce-java11-darwin-amd64-20.1.0.tar.gz | tar -xz -``` - -4. Install Maven - - https://maven.apache.org/install.html -``` -cd ~ -curl -sL https://downloads.apache.org/maven/maven-3/3.8.1/binaries/apache-maven-3.8.1-bin.tar.gz | tar xz -export PATH=~/apache-maven-3.8.1/bin:$PATH -``` - - Also, add ~/apache-maven-3.8.1/bin to your /etc/paths - -5. Install Docker - - https://docs.docker.com/get-docker/ - -6. Clone your github development branch to your machine and make a note of the location, for example _/Users/freddy/Documents/GitHub/microservices-datadriven_. - -## Setup Steps -These steps are required every time you perform a new grabdish workshop setup. - -1. Configure the OCI CLI to connect to your TENANCY_OCID -``` -oci setup config -``` - -2. Create a folder to hold the grabdish workshop state -``` -mkdir ~/grabdish_state -cd ~/grabdish_state -``` - -2. Using the download feature of cloud shell (hamburger menu about cloud shell window), download the ~/grabdish_state.tgz file to your machine. This file is generated when the workshop setup completes. - -3. Copy the _grabdish_state.tgz_ file to the _~/grabdish_state_ folder. - -4. Unpack the _grabdish_state.tgz_ file -``` -cd ~/grabdish-state -rm -rf state -tar -xzf grabdish-state.tgz -``` - -5. Set the shell environment using the env.sh script located in the cloned code -``` -source /Users/rexley/Documents/GitHub/microservices-datadriven/grabdish/env.sh -``` -This step will need to be repeated whenever you start a new shell. - -6. Configure kubectl -``` -oci ce cluster create-kubeconfig --cluster-id "$(state_get OKE_OCID)" --file $HOME/.kube/config --region "$(state_get REGION)" --token-version 2.0.0 -``` - -7. Generate an auth token through the OCI Console. Copy the token. - -8. Login to Docker using the OCI Registry -``` -docker login -u "$(state_get NAMESPACE)/$(state_get USER_NAME)" "$(state_get REGION).ocir.io" -``` -You will be prompted for a password. Paste the auth token generated in the previous step. diff --git a/grabdish/docs/Provisioning.md b/grabdish/docs/Provisioning.md deleted file mode 100644 index c20990d..0000000 --- a/grabdish/docs/Provisioning.md +++ /dev/null @@ -1,119 +0,0 @@ -_Copyright (c) 2019, 2020, 2021 Oracle and/or its affiliates The Universal Permissive License (UPL), Version 1.0_ - -# Grabdish Application Provisioning - -These notes assume that you are running on a supported shell (Cloud shell, Linux or macOS) and have cloned the code. - -The code that provisions the Grabdish application is located in the grabdish/config folder. The grabdish application is designed to work on any Kubernetes cluster and database. This provisioning is performed automatically when provisioning the dcms-oci workshop. - -## Prerequisites - -The following are required before provisioning Grabdish: -1. Kubernetes cluster with kubectl configured -2. One or two databases -3. An OCI object store bucket (ATP 2DB only) -4. get_secret bash function (available in infra/vault/folder) -5. sqlplus installed - -## Input Parameters - -To provision Grabdish the following parameters are passed: - -- **DB_DEPLOYMENT:** 1DB (future) or 2DB -- **DB_TYPE:** sa (stand alone, future) or atp -- **QUEUE_TYPE:** classicq or teq (future) -- **DB_PASSWORD_SECRET:** Name of the secret holding the database password accessed by function get_secret (see below) -- **UI_PASSWORD_SECRET:** Name of the secret holding the UI password accessed by function get_secret (see below) -- **DB1_TNS_ADMIN:** Folder containing DB1's TNS_ADMIN folder -- **DB1_ALIAS:** TNS alias of DB1 -- **DB2_TNS_ADMIN:** Folder containing DB2's TNS_ADMIN folder (null for 1DB only) -- **DB2_ALIAS:** TNS alias of DB2 (null for 1DB only) -- **CWALLET_OS_BUCKET:** Bucket where the wallet token can be installed (null if not ATP) -- **OCI_REGION:** The name of the OCI_REGION. Used to construct a URL for wallet tokens (null if not ATP) -- **GRABDISH_LOG:** Location to create log files - -## Secret management - -The bash get_secret function must be exported and return the DB and UI passwords when called, for example: - - DB_PASSWORD=$(get_secret DB_PASSWORD_SECRET). - -See infra/vault/folder for an implementation. - -## Outputs - -The output of provisioning provides the following environment variables: - -- ORDER_DB_NAME -- ORDER_DB_ALIAS -- ORDER_DB_TNS_ADMIN -- INVENTORY_DB_NAME: -- INVENTORY_DB_ALIAS: -- INVENTORY_DB_TNS_ADMIN: - -## Provisioning Steps - -1. Source the common environment: - - source microservices-datadriven/common/source.env - -2. Create a folder to store the provisioning state and make this the current directory, for example: - -``` -STATE='$HOME/grabdish' -mkdir -p $STATE -cd $STATE -``` - -3. Create an input.env file containing the parameters in bash source file format, for axample: - -``` -cat >$STATE/input.env </dev/null); then - echo "ERROR: Usage 'source env.sh'" - exit -fi - -# POSIX compliant find and replace -function sed_i(){ - local OP="$1" - local FILE="$2" - sed -e "$OP" "$FILE" >"/tmp/$FILE" - mv -- "/tmp/$FILE" "$FILE" -} -export -f sed_i - -# Set GRABDISH_HOME -export GRABDISH_HOME="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" -cd $GRABDISH_HOME -echo "GRABDISH_HOME: $GRABDISH_HOME" - -# Java Home -if test -d ~/graalvm-ce-java11-20.1.0/Contents/Home/bin; then - # We are on Mac doing local dev - export JAVA_HOME=~/graalvm-ce-java11-20.1.0/Contents/Home; -else - # Assume linux - export JAVA_HOME=~/graalvm-ce-java11-20.1.0 -fi -export PATH=$JAVA_HOME/bin:$PATH - -# State directory -if test -d ~/grabdish-state; then - export GRABDISH_STATE_HOME=~/grabdish-state -else - export GRABDISH_STATE_HOME=$GRABDISH_HOME -fi - -# Log directory -export GRABDISH_LOG=$GRABDISH_STATE_HOME/log -mkdir -p $GRABDISH_LOG - -# Source the state functions -source $GRABDISH_HOME/utils/state-functions.sh - -# SHORTCUT ALIASES AND UTILS... -alias k='kubectl' -alias kt='kubectl --insecure-skip-tls-verify' -alias pods='kubectl get po --all-namespaces' -alias services='kubectl get services --all-namespaces' -alias configmaps='kubectl get configmaps --all-namespaces' -alias gateways='kubectl get gateways --all-namespaces' -alias secrets='kubectl get secrets --all-namespaces' -alias ingresssecret='kubectl get secrets --all-namespaces | grep istio-ingressgateway-certs' -alias virtualservices='kubectl get virtualservices --all-namespaces' -alias deployments='kubectl get deployments --all-namespaces' -alias servicemonitors='kubectl get servicemonitors --all-namespaces' -alias configmaps='kubectl get configmaps --all-namespaces' -alias msdataworkshop='echo deployments... ; deployments|grep msdataworkshop ; echo pods... ; pods|grep msdataworkshop ; echo services... ; services | grep msdataworkshop ; echo secrets... ; secrets|grep msdataworkshop ; echo "other shortcut commands... most can take partial podname as argument, such as [logpod front] or [deletepod order]... pods services secrets deployments "' - -export PATH=$PATH:$GRABDISH_HOME/utils/ diff --git a/grabdish/frontend-helidon/Dockerfile b/grabdish/frontend-helidon/Dockerfile deleted file mode 100644 index d08f379..0000000 --- a/grabdish/frontend-helidon/Dockerfile +++ /dev/null @@ -1,9 +0,0 @@ -FROM openjdk:11-jre-slim - -ENTRYPOINT ["java", "-jar", "/usr/share/myservice/myservice.jar"] - -# Add Maven dependencies -ADD target/libs /usr/share/myservice/libs -# Add the service itself -ARG JAR_FILE -ADD target/${JAR_FILE} /usr/share/myservice/myservice.jar \ No newline at end of file diff --git a/grabdish/frontend-helidon/build.sh b/grabdish/frontend-helidon/build.sh deleted file mode 100755 index 2953f84..0000000 --- a/grabdish/frontend-helidon/build.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash -## Copyright (c) 2021 Oracle and/or its affiliates. -## Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/ - -# Fail on error -set -e - -SCRIPT_DIR=$(dirname $0) - -IMAGE_NAME=frontend-helidon -IMAGE_VERSION=0.1 - -if [ -z "$DOCKER_REGISTRY" ]; then - echo "Error: DOCKER_REGISTRY env variable needs to be set!" - exit 1 -fi - -export IMAGE=${DOCKER_REGISTRY}/${IMAGE_NAME}:${IMAGE_VERSION} -export IMAGE_VERSION=$IMAGE_VERSION - -mvn package - -docker push $IMAGE -if [ $? -eq 0 ]; then - docker rmi ${IMAGE} -fi diff --git a/grabdish/frontend-helidon/deploy.sh b/grabdish/frontend-helidon/deploy.sh deleted file mode 100755 index 0c9d66c..0000000 --- a/grabdish/frontend-helidon/deploy.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash -## Copyright (c) 2021 Oracle and/or its affiliates. -## Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/ - - -# See docs/Deploy.md for details -k8s-deploy 'frontend-helidon-deployment.yaml frontend-service.yaml frontend-ingress.yaml frontendnp-service-nodeport.yaml' diff --git a/grabdish/frontend-helidon/frontend-helidon-deployment.yaml b/grabdish/frontend-helidon/frontend-helidon-deployment.yaml deleted file mode 100755 index 9d5e457..0000000 --- a/grabdish/frontend-helidon/frontend-helidon-deployment.yaml +++ /dev/null @@ -1,31 +0,0 @@ - -## -## Copyright (c) 2021 Oracle and/or its affiliates. -## Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: frontend-helidon -spec: - replicas: 1 - selector: - matchLabels: - app: frontend - template: - metadata: - labels: - app: frontend - version: helidon-mp - spec: - containers: - - name: frontend - image: ${DOCKER_REGISTRY}/frontend-helidon:0.1 - imagePullPolicy: Always - env: - - name: SECRETS_PASSWORD - valueFrom: - secretKeyRef: - name: frontendadmin - key: password - ports: - - containerPort: 8080 diff --git a/grabdish/frontend-helidon/frontend-ingress.yaml b/grabdish/frontend-helidon/frontend-ingress.yaml deleted file mode 100644 index f581a0b..0000000 --- a/grabdish/frontend-helidon/frontend-ingress.yaml +++ /dev/null @@ -1,26 +0,0 @@ - -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - name: grabdish-frontend-ingress - namespace: msdataworkshop - annotations: - kubernetes.io/ingress.class: "nginx" - nginx.ingress.kubernetes.io/enable-rewrite-log: "true" - #nginx.ingress.kubernetes.io/rewrite-target: /$1 - #nginx.ingress.kubernetes.io/backend-protocol: "https" - #nginx.ingress.kubernetes.io/force-ssl-redirect: "true" - #nginx.ingress.kubernetes.io/add-base-url: "true" -spec: - tls: - - secretName: ssl-certificate-secret - rules: - - http: - paths: - - path: / - pathType: Prefix - backend: - service: - name: frontend - port: - number: 80 \ No newline at end of file diff --git a/grabdish/frontend-helidon/frontend-service-monitor.yaml b/grabdish/frontend-helidon/frontend-service-monitor.yaml deleted file mode 100644 index 56f228d..0000000 --- a/grabdish/frontend-helidon/frontend-service-monitor.yaml +++ /dev/null @@ -1,37 +0,0 @@ -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: prometheus-frontend - labels: - release: stable -spec: - endpoints: - - interval: 5s - port: metrics - selector: - matchLabels: - app: frontend - -#apiVersion: monitoring.coreos.com/v1 -#kind: ServiceMonitor -#metadata: -# name: prometheus-frontend -# labels: -# release: stable -#spec: -# endpoints: -# - interval: 5s -# port: https -# scheme: https -# tlsConfig: -# insecureSkipVerify: true -# basicAuth: -# password: -# name: frontendadmin -# key: password -# username: -# name: frontendadmin -# key: user -# selector: -# matchLabels: -# app: frontend \ No newline at end of file diff --git a/grabdish/frontend-helidon/frontend-service-nodeport.yaml b/grabdish/frontend-helidon/frontend-service-nodeport.yaml deleted file mode 100644 index 0db8161..0000000 --- a/grabdish/frontend-helidon/frontend-service-nodeport.yaml +++ /dev/null @@ -1,21 +0,0 @@ - -## -## Copyright (c) 2021 Oracle and/or its affiliates. -## Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/ -apiVersion: v1 -kind: Service -metadata: - name: frontend - labels: - app: frontend - #annotations: - # service.beta.kubernetes.io/oci-load-balancer-ssl-ports: "443" - # service.beta.kubernetes.io/oci-load-balancer-tls-secret: ssl-certificate-secret -spec: - type: NodePort - ports: - - port: 8080 - name: metrics - targetPort: 8080 - selector: - app: frontend diff --git a/grabdish/frontend-helidon/frontend-service.yaml b/grabdish/frontend-helidon/frontend-service.yaml deleted file mode 100755 index d91603f..0000000 --- a/grabdish/frontend-helidon/frontend-service.yaml +++ /dev/null @@ -1,22 +0,0 @@ - -## -## Copyright (c) 2021 Oracle and/or its affiliates. -## Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/ -apiVersion: v1 -kind: Service -metadata: - name: frontend - labels: - app: frontend - #annotations: - # service.beta.kubernetes.io/oci-load-balancer-ssl-ports: "443" - # service.beta.kubernetes.io/oci-load-balancer-tls-secret: ssl-certificate-secret -spec: -# type: LoadBalancer - type: ClusterIP - ports: - - port: 80 - name: metrics - targetPort: 8080 - selector: - app: frontend diff --git a/grabdish/frontend-helidon/frontendnp-service-nodeport.yaml b/grabdish/frontend-helidon/frontendnp-service-nodeport.yaml deleted file mode 100644 index a02332e..0000000 --- a/grabdish/frontend-helidon/frontendnp-service-nodeport.yaml +++ /dev/null @@ -1,21 +0,0 @@ - -## -## Copyright (c) 2021 Oracle and/or its affiliates. -## Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/ -apiVersion: v1 -kind: Service -metadata: - name: frontendnp - labels: - app: frontend - #annotations: - # service.beta.kubernetes.io/oci-load-balancer-ssl-ports: "443" - # service.beta.kubernetes.io/oci-load-balancer-tls-secret: ssl-certificate-secret -spec: - type: NodePort - ports: - - port: 8080 - name: metrics - targetPort: 8080 - selector: - app: frontend diff --git a/grabdish/frontend-helidon/pom.xml b/grabdish/frontend-helidon/pom.xml deleted file mode 100755 index ab14146..0000000 --- a/grabdish/frontend-helidon/pom.xml +++ /dev/null @@ -1,197 +0,0 @@ - - - - - - 4.0.0 - frontend-helidon - 0.0.1-SNAPSHOT - frontend-helidon - frontend for data-driven helidon microservices demo - - - io.helidon.applications - helidon-mp - 2.3.1 - - - - - true - true - true - libs - ${env.DOCKER_REGISTRY} - - - - - - - src/main/resources - false - - - - - - com.spotify - dockerfile-maven-plugin - 1.4.13 - - - default - - build - - - - - ${env.DOCKER_REGISTRY}/${project.artifactId} - ${env.IMAGE_VERSION} - - ${project.build.finalName}.jar - - - - - - maven-dependency-plugin - - - copy-dependencies - prepare-package - - copy-dependencies - - - ${project.build.directory}/${dependenciesDirectory} - false - false - true - true - runtime - test - false - - - - - - maven-jar-plugin - - - - true - ${dependenciesDirectory} - io.helidon.microprofile.server.Main - - - - - - maven-resources-plugin - - - copy-resources - process-resources - - copy-resources - - - ${project.build.directory} - - - src/main/docker - true - - - - - - - - - - - - io.helidon.microprofile.bundles - helidon-microprofile - - - io.helidon.tracing - helidon-tracing-jaeger - - - io.helidon.metrics - helidon-metrics - - - io.helidon.tracing - helidon-tracing-jaeger - - - - - - - - org.jboss - jandex - runtime - true - - - jakarta.activation - jakarta.activation-api - runtime - - - org.junit.jupiter - junit-jupiter-api - test - - - javax.json.bind - javax.json.bind-api - 1.0 - - - com.fasterxml.jackson.core - jackson-databind - - - io.helidon.microprofile - helidon-microprofile-security - - - io.helidon.security.providers - helidon-security-providers-http-auth - - - - - - - - - - - - - - - - - diff --git a/grabdish/frontend-helidon/src/main/java/io/helidon/data/examples/Command.java b/grabdish/frontend-helidon/src/main/java/io/helidon/data/examples/Command.java deleted file mode 100755 index 95d7ef8..0000000 --- a/grabdish/frontend-helidon/src/main/java/io/helidon/data/examples/Command.java +++ /dev/null @@ -1,18 +0,0 @@ -/* - - ** - ** Copyright (c) 2021 Oracle and/or its affiliates. - ** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/ - */ -package io.helidon.data.examples; - -public class Command { - public String serviceName; - public String commandName; - public int orderId; - public String orderItem; - public String deliverTo; - - public Command() {} - -} \ No newline at end of file diff --git a/grabdish/frontend-helidon/src/main/java/io/helidon/data/examples/FrontEndApplication.java b/grabdish/frontend-helidon/src/main/java/io/helidon/data/examples/FrontEndApplication.java deleted file mode 100644 index e90e8d9..0000000 --- a/grabdish/frontend-helidon/src/main/java/io/helidon/data/examples/FrontEndApplication.java +++ /dev/null @@ -1,21 +0,0 @@ -package io.helidon.data.examples; - -import javax.enterprise.context.ApplicationScoped; -import javax.ws.rs.ApplicationPath; -import javax.ws.rs.core.Application; -import java.util.HashSet; -import java.util.Set; - - -@ApplicationScoped -@ApplicationPath("/") -public class FrontEndApplication extends Application { - - @Override - public Set> getClasses() { - Set> s = new HashSet>(); - s.add(FrontEndResource.class); - return s; - } - -} diff --git a/grabdish/frontend-helidon/src/main/java/io/helidon/data/examples/FrontEndResource.java b/grabdish/frontend-helidon/src/main/java/io/helidon/data/examples/FrontEndResource.java deleted file mode 100644 index a6483a3..0000000 --- a/grabdish/frontend-helidon/src/main/java/io/helidon/data/examples/FrontEndResource.java +++ /dev/null @@ -1,316 +0,0 @@ -/* - - ** - ** Copyright (c) 2021 Oracle and/or its affiliates. - ** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/ - */ -package io.helidon.data.examples; - -import io.helidon.common.configurable.Resource; -import io.helidon.security.Security; -import io.helidon.security.SecurityContext; -import io.helidon.security.annotations.Authenticated; -import io.helidon.security.annotations.Authorized; -import io.opentracing.Span; -import io.opentracing.Tracer; -import org.eclipse.microprofile.auth.LoginConfig; -import org.eclipse.microprofile.config.inject.ConfigProperty; -import org.eclipse.microprofile.metrics.annotation.Counted; -import org.eclipse.microprofile.metrics.annotation.Timed; -import org.eclipse.microprofile.opentracing.Traced; - -import javax.annotation.security.DeclareRoles; -import javax.annotation.security.RolesAllowed; -import javax.enterprise.context.ApplicationScoped; -import javax.inject.Inject; -import javax.ws.rs.*; -import javax.ws.rs.client.Client; -import javax.ws.rs.client.ClientBuilder; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import java.io.IOException; -import java.net.URLEncoder; - -//import javax.annotation.security.*; -//import javax.ws.rs.*; - - -@Path("/") -@ApplicationScoped -@Traced -@Authenticated //just this for OIDC -@Authorized -@RolesAllowed("admin") -//@LoginConfig(authMethod = "MP-JWT", realmName = "jwt-jaspi") -//@DeclareRoles({"protected"}) -public class FrontEndResource { - - @Inject - private Tracer tracer; - private Client client; - - @Inject - private Security security; - @Inject - private SecurityContext securityContext; - - @Inject - @ConfigProperty(name = "server.static.classpath.context") - private String context; - - public FrontEndResource() { - client = ClientBuilder.newBuilder() - .build(); - } - /* ------------------------------------------------------- - * JET UI Entry point - * -------------------------------------------------------*/ - - @Path("/test") - @GET - @Produces(MediaType.TEXT_HTML) - public String test(@Context SecurityContext securityContext) { - System.out.println("FrontEndResource auth will redirect to homepage securityContext.userName():" + securityContext.userName()); - return "Test"; - } - - @Path("/") - @GET - @Produces(MediaType.TEXT_HTML) - public String home(@Context SecurityContext securityContext) { - System.out.println("homepage securityContext.userName():" + securityContext.userName()); - String indexFile = Resource.create("web/index.html").string(); - return indexFile; - } - - @Path("/spatial") - @GET - @Produces(MediaType.TEXT_HTML) - public String spatial() { - String indexFile = Resource.create("web/spatial.html").string(); - return indexFile; - } - - - /* ------------------------------------------------------- - * JET UI supporting endpoints to return the various static - * resources used by the UI - * -------------------------------------------------------*/ - - @Path("/styles") - @GET - @Produces("text/css") - public String uiStyles() { - return Resource.create("web/styles.css").string(); - } - - @Path("/img") - @GET - @Produces("image/png") - public Response uiImage(@QueryParam("name") String imageName) { - try { - return Response.ok(Resource.create("web/images/" + imageName + ".png").stream()).build(); - } catch (Exception e) { - return Response.status(Response.Status.NOT_FOUND).build(); - } - } - - @Path("/logo") - @GET - @Produces("image/svg+xml") - public Response logoImage() { - try { - return Response.ok(Resource.create("web/images/oracle-logo-dark.svg").stream()).build(); - } catch (Exception e) { - return Response.status(Response.Status.NOT_FOUND).build(); - } - } - - @Path("/sushi") - @GET - @Produces("image/svg+xml") - public Response sushi() { - try { - return Response.ok(Resource.create("web/images/sushi.svg").stream()).build(); - } catch (Exception e) { - return Response.status(Response.Status.NOT_FOUND).build(); - } - } - - @Path("/pizza") - @GET - @Produces("image/svg+xml") - public Response pizza() { - try { - return Response.ok(Resource.create("web/images/pizza.svg").stream()).build(); - } catch (Exception e) { - return Response.status(Response.Status.NOT_FOUND).build(); - } - } - - @Path("/burger") - @GET - @Produces("image/svg+xml") - public Response burger() { - try { - return Response.ok(Resource.create("web/images/burger.svg").stream()).build(); - } catch (Exception e) { - return Response.status(Response.Status.NOT_FOUND).build(); - } - } - - @GET - @Path("{path: css/.*}") - public Response cssResources(@PathParam("path") final String path) { - System.out.println("handling CSS assets: " + path); - try { - return Response.ok(Resource.create(String.format("web/%s", path)).stream()).build(); - } catch (Exception e) { - return Response.status(Response.Status.NOT_FOUND).build(); - } - } - - @GET - @Path("{path: js/.*}") - public Response jsResources(@PathParam("path") final String path) { - System.out.println("handling JS assets: " + path); - try { - return Response.ok(Resource.create(String.format("web/%s", path)).stream()).build(); - } catch (Exception e) { - return Response.status(Response.Status.NOT_FOUND).build(); - } - } - - /* ------------------------------------------------------------------------- - * JET UI supporting wrapper endpoints - we could make these calls - * Directly from the JS code, however, this way, the UI is abstracted from - * having to know ultimately where the backend services are living - * -------------------------------------------------------------------------*/ - @POST - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) - @Path("/placeorder") - @Traced(operationName = "Frontend.placeOrder") - @Timed(name = "frontend_placeOrder_timed") //length of time of an object - @Counted(name = "frontend_placeOrder_counted") //amount of invocations - public String placeorder(Command command) { - try { - System.out.println("FrontEndResource.serviceName " + command.serviceName); - System.out.println("FrontEndResource.commandName " + command.commandName); - String json = makeRequest("http://order.msdataworkshop:8080/placeOrder?orderid=" + command.orderId + - "&itemid=" + command.orderItem + "&deliverylocation=" + URLEncoder.encode(command.deliverTo, "UTF-8")); - System.out.println("FrontEndResource.placeorder json:" + json); - if (json.indexOf("fail") > -1) { // we return 200 regardless and check for "fail" - if (json.indexOf("SQLIntegrityConstraintViolationException") > -1) - return asJSONMessage("SQLIntegrityConstraintViolationException. Delete All Orders or use a different order id to avoid dupes."); - else return asJSONMessage(json); - } - System.out.println("FrontEndResource.placeorder complete, now show order..."); - json = makeRequest("http://order.msdataworkshop:8080/showorder?orderid=" + command.orderId); - System.out.println("FrontEndResource.placeorder showorder json:" + json); - return json; - } catch (IOException e) { - e.printStackTrace(); - return "\"error\":\"" + e.getMessage() + "\""; - } - - } - - int autoincrementorderid = 1; - @POST - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) - @Path("/placeorderautoincrement") - @Traced(operationName = "Frontend.placeOrder") - @Timed(name = "frontend_placeOrder_timed") //length of time of an object - @Counted(name = "frontend_placeOrder_counted") //amount of invocations - public String placeorderautoincrement(Command command) { - command.orderId = autoincrementorderid++; - return placeorder(command); - } - - @POST - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) - @Traced(operationName = "FrontEnd.command") - @Path("/command") - public String command(Command command) { - boolean isOrderBasedCommand = command.serviceName.equals("order") && command.orderId != -1; - if (isOrderBasedCommand) { - Span activeSpan = tracer.buildSpan("orderDetail").asChildOf(tracer.activeSpan()).start(); - activeSpan.setTag("orderid", command.orderId); - activeSpan.setBaggageItem("command.orderId", "" + command.orderId); - activeSpan.finish(); - } - boolean isSupplierCommand = command.serviceName.equals("supplier"); - boolean isHealthCommand = command.commandName.indexOf("health") > -1; - String urlString = "http://" + command.serviceName + ".msdataworkshop:8080/" + command.commandName + - (isOrderBasedCommand ? "?orderid=" + command.orderId : "") + - (isSupplierCommand ? "?itemid=" + command.orderItem : ""); - System.out.println("FrontEndResource.command url:" + urlString); - try { - String response = makeRequest(urlString); - String returnString = isOrderBasedCommand || isHealthCommand ? response : asJSONMessage(response); - System.out.println("FrontEndResource.command url:" + urlString + " returnString:" + returnString); - return returnString; - } catch (Exception e) { - e.printStackTrace(); - return asJSONMessage(e); - } - } - - @POST - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.TEXT_PLAIN) - @Traced(operationName = "FrontEnd.getmetrics") - @Path("/getmetrics") - //not to be confused with the /metrics of this frontend service, - // this is a call through to a service (can be any service but the frontend only calls order service) to get and display it's metrics - public String getMetrics(Command command) { - String urlString = "http://" + command.serviceName + ".msdataworkshop:8080/" + command.commandName; - System.out.println("FrontEndResource.getMetrics url:" + urlString); - try { - String response = makeRequest(urlString); - System.out.println("FrontEndResource.getMetrics url:" + urlString + " returnString:" + response); - return response; - } catch (Exception e) { - e.printStackTrace(); - return asJSONMessage(e); - } - } - - @POST - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.TEXT_PLAIN) - @Traced(operationName = "FrontEnd.openAPI") - @Path("/openAPI") - public String openAPI(Command command) { - String urlString = "http://" + command.serviceName + ".msdataworkshop:8080/" + command.commandName; - System.out.println("FrontEndResource.openAPI url:" + urlString); - try { - String response = makeRequest(urlString); - System.out.println("FrontEndResource.openAPI url:" + urlString + " returnString:" + response); - return response; - } catch (Exception e) { - e.printStackTrace(); - return asJSONMessage(e); - } - } - - private String asJSONMessage(Object e) { - FrontEndResponse frontEndResponse = new FrontEndResponse(); - frontEndResponse.message = e.toString(); - return JsonUtils.writeValueAsString(frontEndResponse); - } - - private String makeRequest(String url) throws IOException { - System.out.println("FrontEndResource.makeRequest url.toString():" + url); - Response response = client.target(url).request().get(); - String entity = response.readEntity(String.class); - System.out.println("OrderResource.placeOrder response from inventory:" + entity); - return entity; - } - - -} diff --git a/grabdish/frontend-helidon/src/main/java/io/helidon/data/examples/FrontEndResponse.java b/grabdish/frontend-helidon/src/main/java/io/helidon/data/examples/FrontEndResponse.java deleted file mode 100755 index 67869d5..0000000 --- a/grabdish/frontend-helidon/src/main/java/io/helidon/data/examples/FrontEndResponse.java +++ /dev/null @@ -1,13 +0,0 @@ -/* - - ** - ** Copyright (c) 2021 Oracle and/or its affiliates. - ** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/ - */ -package io.helidon.data.examples; - -public class FrontEndResponse { - public String message; - - public FrontEndResponse() {} -} diff --git a/grabdish/frontend-helidon/src/main/java/io/helidon/data/examples/JsonUtils.java b/grabdish/frontend-helidon/src/main/java/io/helidon/data/examples/JsonUtils.java deleted file mode 100755 index beca302..0000000 --- a/grabdish/frontend-helidon/src/main/java/io/helidon/data/examples/JsonUtils.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - - ** - ** Copyright (c) 2021 Oracle and/or its affiliates. - ** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/ - */ -package io.helidon.data.examples; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; - -import java.io.IOException; - -public class JsonUtils { - private final ObjectMapper json; - public JsonUtils() { - json = new ObjectMapper(); - json.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false); - } - public static ObjectMapper json() { - return InstanceHolder.json.json; - } - public static T read(String src, Class valueType) { - try { - return json().readValue(src, valueType); - } catch (IOException e) { - throw new IllegalStateException(e); - } - } - public static T read(String src, TypeReference valueTypeRef) { - try { - return json().readValue(src, valueTypeRef); - } catch (IOException e) { - throw new IllegalStateException(e); - } - } - public static T read(byte[] src, Class valueType) { - try { - return json().readValue(src, valueType); - } catch (IOException e) { - throw new IllegalStateException(e); - } - } - public static T read(byte[] src, TypeReference valueTypeRef) { - try { - return json().readValue(src, valueTypeRef); - } catch (IOException e) { - throw new IllegalStateException(e); - } - } - public static String writeValueAsString(Object value) { - try { - return json().writeValueAsString(value); - } catch (JsonProcessingException e) { - throw new IllegalStateException(e); - } - } - public static byte[] writeValueAsBytes(Object value) { - try { - return json().writeValueAsBytes(value); - } catch (JsonProcessingException e) { - throw new IllegalStateException(e); - } - } - private static class InstanceHolder { - static final JsonUtils json = new JsonUtils(); - } -} \ No newline at end of file diff --git a/grabdish/frontend-helidon/src/main/resources/META-INF/beans.xml b/grabdish/frontend-helidon/src/main/resources/META-INF/beans.xml deleted file mode 100644 index 6e9ceb8..0000000 --- a/grabdish/frontend-helidon/src/main/resources/META-INF/beans.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - diff --git a/grabdish/frontend-helidon/src/main/resources/META-INF/microprofile-config.properties b/grabdish/frontend-helidon/src/main/resources/META-INF/microprofile-config.properties deleted file mode 100644 index 2ebe025..0000000 --- a/grabdish/frontend-helidon/src/main/resources/META-INF/microprofile-config.properties +++ /dev/null @@ -1,39 +0,0 @@ -## Copyright (c) 2021 Oracle and/or its affiliates. -## Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/ - -# web server configuration -# Use a random free port -#server.port=0 - -# Microprofile server properties -server.port=8080 -server.host=0.0.0.0 - -# Microprofile Tracing Properties -tracing.service=frontend.msdataworkshop -tracing.protocol=http -tracing.host=jaeger-collector.msdataworkshop -tracing.port=14268 -tracing.path=/api/traces -tracing.propagation=b3 -tracing.log-spans=true -tracing.sampler-type=const -tracing.sampler-param=1 -tracing.components.tracing.enabled=false - -# location on classpath (e.g. src/main/resources/WEB in maven) -server.static.classpath.location=/WEB -# this is optional, defaults to "/" -server.static.classpath.context=/static-cp -# server.static.path.location=/content -# server.static.path.context=/static-file - -#security.providers.0.abac= -#security.providers.1.provider-key.optional=false -#security.web-server.defaults.authenticate=true -#security.web-server.paths.0.path=/metrics[/{*}] -#security.web-server.paths.0.roles-allowed=admin -## .... -#security.web-server.paths.3.path=/static[/{*}] -#security.web-server.paths.3.roles-allowed=user,monitor - diff --git a/grabdish/frontend-helidon/src/main/resources/application.yaml b/grabdish/frontend-helidon/src/main/resources/application.yaml deleted file mode 100644 index d9392dd..0000000 --- a/grabdish/frontend-helidon/src/main/resources/application.yaml +++ /dev/null @@ -1,22 +0,0 @@ -## Copyright (c) 2021 Oracle and/or its affiliates. -## Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/ -security: - config: - require-encryption: true - providers: -# - abac: # if using abac - - http-basic-auth: - realm: "helidon" - users: - - login: "grabdish" - password: "${SECRETS_PASSWORD}" - roles: ["user", "admin"] -# - oidc: # if using oidc -# header-use: true -# redirect-uri: "/test" -# issuer: "https://example.okta.com" -# audience: "examplepDSv5d6" -# client-id: "example8mG97pDSv5d6" -# client-secret: "exampleBbDndGi_TBBgUSgOnGEzw5wU80XTahJ" -# identity-uri: "https://example.okta.com" -# frontend-uri: "https://exampleLB:8080" \ No newline at end of file diff --git a/grabdish/frontend-helidon/src/main/resources/logging.properties b/grabdish/frontend-helidon/src/main/resources/logging.properties deleted file mode 100755 index 5146c13..0000000 --- a/grabdish/frontend-helidon/src/main/resources/logging.properties +++ /dev/null @@ -1,8 +0,0 @@ -## Copyright (c) 2021 Oracle and/or its affiliates. -## Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/ - -handlers=java.util.logging.ConsoleHandler -# Global default logging level. Can be overriden by specific handlers and loggers -.level=INFO - -io.jaegertracing.internal.level=OFF \ No newline at end of file diff --git a/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/animated-overlay.gif b/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/animated-overlay.gif deleted file mode 100644 index 0d286c0..0000000 Binary files a/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/animated-overlay.gif and /dev/null differ diff --git a/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/document.svg b/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/document.svg deleted file mode 100644 index 7f060ad..0000000 --- a/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/document.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/folder_collapsed.svg b/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/folder_collapsed.svg deleted file mode 100644 index a5a4d0a..0000000 --- a/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/folder_collapsed.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/folder_open.svg b/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/folder_open.svg deleted file mode 100644 index dcfa91e..0000000 --- a/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/folder_open.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/group_avatar.svg b/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/group_avatar.svg deleted file mode 100644 index 46d9dbc..0000000 --- a/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/group_avatar.svg +++ /dev/null @@ -1 +0,0 @@ -avatar_peopletwo \ No newline at end of file diff --git a/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/node_anim.gif b/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/node_anim.gif deleted file mode 100644 index 6c2d1cd..0000000 Binary files a/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/node_anim.gif and /dev/null differ diff --git a/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/node_anim@4x.gif b/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/node_anim@4x.gif deleted file mode 100644 index 7e4aaf4..0000000 Binary files a/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/node_anim@4x.gif and /dev/null differ diff --git a/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/none.svg b/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/none.svg deleted file mode 100644 index 72a0388..0000000 --- a/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/none.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/person_avatar.svg b/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/person_avatar.svg deleted file mode 100644 index 125d336..0000000 --- a/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/person_avatar.svg +++ /dev/null @@ -1 +0,0 @@ -avatar_person \ No newline at end of file diff --git a/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/spectrum-opacity-slider-bg.png b/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/spectrum-opacity-slider-bg.png deleted file mode 100644 index 6094e93..0000000 Binary files a/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/spectrum-opacity-slider-bg.png and /dev/null differ diff --git a/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/spinner_full.gif b/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/spinner_full.gif deleted file mode 100644 index 5b6e8e1..0000000 Binary files a/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/spinner_full.gif and /dev/null differ diff --git a/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/sprites/sprite.svg b/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/sprites/sprite.svg deleted file mode 100644 index 480a040..0000000 --- a/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/sprites/sprite.svg +++ /dev/null @@ -1 +0,0 @@ -avatar_peopletwoavatar_person \ No newline at end of file diff --git a/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/status_confirmation.svg b/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/status_confirmation.svg deleted file mode 100644 index fd8abc1..0000000 --- a/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/status_confirmation.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/status_confirmation2.svg b/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/status_confirmation2.svg deleted file mode 100644 index 2131d7d..0000000 --- a/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/status_confirmation2.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/status_error.svg b/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/status_error.svg deleted file mode 100644 index 245f978..0000000 --- a/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/status_error.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/status_error2.svg b/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/status_error2.svg deleted file mode 100644 index 640d877..0000000 --- a/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/status_error2.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/status_info.svg b/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/status_info.svg deleted file mode 100644 index ccd7473..0000000 --- a/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/status_info.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/status_info2.svg b/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/status_info2.svg deleted file mode 100644 index 3c0803c..0000000 --- a/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/status_info2.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/status_warning.svg b/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/status_warning.svg deleted file mode 100644 index 1884da1..0000000 --- a/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/status_warning.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/status_warning2.svg b/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/status_warning2.svg deleted file mode 100644 index b23eeae..0000000 --- a/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/common/images/status_warning2.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/web/alta.css b/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/web/alta.css deleted file mode 100644 index 5f2e723..0000000 --- a/grabdish/frontend-helidon/src/main/resources/web/css/alta/9.2.0/web/alta.css +++ /dev/null @@ -1,25497 +0,0 @@ -/* - - ** - ** Copyright (c) 2021 Oracle and/or its affiliates. - ** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/ - */ -/* Document - ========================================================================== */ -/** - * 1. Correct the line height in all browsers. - * 2. Prevent adjustments of font size after orientation changes in iOS. - */ -html { - -webkit-text-size-adjust: 100%; - /* 2 */ } - -/* Sections - ========================================================================== */ -/** - * Remove the margin in all browsers. - */ -body { - margin: 0; } - -/** - * Correct the font size and margin on `h1` elements within `section` and - * `article` contexts in Chrome, Firefox, and Safari. - */ -h1 { - font-size: 2em; - margin: 0.67em 0; } - -/* Grouping content - ========================================================================== */ -/** - * 1. Add the correct box sizing in Firefox. - * 2. Show the overflow in Edge and IE. - */ -hr { - box-sizing: content-box; - /* 1 */ - height: 0; - /* 1 */ - overflow: visible; - /* 2 */ } - -/** - * 1. Correct the inheritance and scaling of font size in all browsers. - * 2. Correct the odd `em` font sizing in all browsers. - */ -pre { - font-family: monospace, monospace; - /* 1 */ - font-size: 1em; - /* 2 */ } - -/* Text-level semantics - ========================================================================== */ -/** - * 1. Remove the bottom border in Chrome 57- - * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. - */ -abbr[title] { - border-bottom: none; - /* 1 */ - text-decoration: underline; - /* 2 */ - /* autoprefixer: ignore next */ - text-decoration: underline dotted; - /* 2 */ } - -/** - * Add the correct font weight in Chrome, Edge, and Safari. - */ -b, -strong { - font-weight: bolder; } - -/** - * 1. Correct the inheritance and scaling of font size in all browsers. - * 2. Correct the odd `em` font sizing in all browsers. - */ -code, -kbd, -samp { - font-family: monospace, monospace; - /* 1 */ - font-size: 1em; - /* 2 */ } - -/** - * Add the correct font size in all browsers. - */ -small { - font-size: 80%; } - -/** - * Prevent `sub` and `sup` elements from affecting the line height in - * all browsers. - */ -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; } - -sub { - bottom: -0.25em; } - -sup { - top: -0.5em; } - -/* Forms - ========================================================================== */ -/** - * 1. Change the font styles in all browsers. - * 2. Remove the margin in Firefox and Safari. - */ -button, -input, -optgroup, -select, -textarea { - font-family: inherit; - /* 1 */ - font-size: 100%; - /* 1 */ - margin: 0; - /* 2 */ } - -/** - * Show the overflow in IE. - * 1. Show the overflow in Edge. - */ -button, -input { - /* 1 */ - overflow: visible; } - -/** - * Remove the inheritance of text transform in Edge, Firefox, and IE. - * 1. Remove the inheritance of text transform in Firefox. - */ -button, -select { - /* 1 */ - text-transform: none; } - -/** - * Correct the inability to style clickable types in iOS and Safari. - */ -button, -[type="button"], -[type="reset"], -[type="submit"] { - -webkit-appearance: button; } - -/** - * Remove the inner border and padding in Firefox. - */ -button::-moz-focus-inner, -[type="button"]::-moz-focus-inner, -[type="reset"]::-moz-focus-inner, -[type="submit"]::-moz-focus-inner { - border-style: none; - padding: 0; } - -/** - * Restore the focus styles unset by the previous rule. - */ -button:-moz-focusring, -[type="button"]:-moz-focusring, -[type="reset"]:-moz-focusring, -[type="submit"]:-moz-focusring { - outline: 1px dotted ButtonText; } - -/** - * Correct the padding in Firefox. - */ -fieldset { - padding: 0.35em 0.75em 0.625em; } - -/** - * 1. Correct the text wrapping in Edge and IE. - * 2. Correct the color inheritance from `fieldset` elements in IE. - * 3. Remove the padding so developers are not caught out when they zero out - * `fieldset` elements in all browsers. - */ -legend { - box-sizing: border-box; - /* 1 */ - color: inherit; - /* 2 */ - display: table; - /* 1 */ - max-width: 100%; - /* 1 */ - padding: 0; - /* 3 */ - white-space: normal; - /* 1 */ } - -/** - * Add the correct vertical alignment in Chrome, Firefox, and Opera. - */ -progress { - vertical-align: baseline; } - -/** - * Remove the default vertical scrollbar in IE 10+. - */ -textarea { - overflow: auto; } - -/** - * Correct the cursor style of increment and decrement buttons in Chrome. - */ -[type="number"]::-webkit-inner-spin-button, -[type="number"]::-webkit-outer-spin-button { - height: auto; } - -/** - * 1. Correct the odd appearance in Chrome and Safari. - * 2. Correct the outline style in Safari. - */ -[type="search"] { - -webkit-appearance: textfield; - /* 1 */ - outline-offset: -2px; - /* 2 */ } - -/** - * Remove the inner padding in Chrome and Safari on macOS. - */ -[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; } - -/** - * 1. Correct the inability to style clickable types in iOS and Safari. - * 2. Change font properties to `inherit` in Safari. - */ -::-webkit-file-upload-button { - -webkit-appearance: button; - /* 1 */ - font: inherit; - /* 2 */ } - -/* Interactive - ========================================================================== */ -/* - * Add the correct display in Edge, IE 10+, and Firefox. - */ -details { - display: block; } - -/* - * Add the correct display in all browsers. - */ -summary { - display: list-item; } - -/* Misc - ========================================================================== */ -/** - * Add the correct display in IE 10+. - */ -template { - display: none; } - -/* helpers - ----------------------------------*/ -[data-bind*="ojComponent"]:not(.oj-component-initnode) { - visibility: hidden; } - -.oj-theme-json { - font-family: '{"name":"alta","targetPlatform":"web"}'; } - -.oj-helper-hidden-accessible { - border: 0; - clip: rect(0 0 0 0); - height: 1px; - margin: -1px; - overflow: hidden; - padding: 0; - position: absolute; - width: 1px; } - -.oj-helper-clearfix:before, .oj-helper-clearfix:after { - content: " "; - display: table; } - -.oj-helper-clearfix:after { - clear: both; } - -/* Used by the framework's support for detecting resize */ -.oj-helper-detect-expansion, -.oj-helper-detect-contraction { - position: absolute; - overflow: hidden; - visibility: hidden; - top: 0; - left: 0; - right: 0; - bottom: 0; - direction: ltr; } - -.oj-helper-hidden { - display: none !important; } - -/* aligns text left by default, aligns right when dir="rtl" is set on html element - NOTE: this uses !important, it can therefore be used to override a previously set value */ -.oj-helper-text-align-start { - text-align: left !important; } - html[dir="rtl"] .oj-helper-text-align-start { - text-align: right !important; } - -/* aligns text right by default, aligns left when dir="rtl" is set on html element - NOTE: this uses !important, it can therefore be used to override a previously set value */ -.oj-helper-text-align-end { - text-align: right !important; } - html[dir="rtl"] .oj-helper-text-align-end { - text-align: left !important; } - -/* Sets the left and right margins to auto */ -.oj-helper-margin-auto { - margin-left: auto; - margin-right: auto; } - -/* Sets the start margin, equivalent to setting - margin-left: auto in ltr languages and margin-right: auto in rtl languages */ -html:not([dir="rtl"]) .oj-helper-margin-start-auto { - margin-left: auto; } - -html[dir="rtl"] .oj-helper-margin-start-auto { - margin-right: auto; } - -/* Sets the end margin, equivalent to setting - margin-right: auto in ltr languages and margin-left: auto in rtl languages */ -html:not([dir="rtl"]) .oj-helper-margin-end-auto { - margin-right: auto; } - -html[dir="rtl"] .oj-helper-margin-end-auto { - margin-left: auto; } - -/* aligns text right - NOTE: this uses !important, it can therefore be used to override a previously set value */ -.oj-helper-text-align-right { - text-align: right !important; } - -/* aligns text left - NOTE: this uses !important, it can therefore be used to override a previously set value */ -.oj-helper-text-align-left { - text-align: left !important; } - -/* Used by the ojModule binding on a DIV that will hold cached Views */ -.oj-helper-module-cache { - position: absolute; - display: none; } - -.oj-focus-config { - font-family: '{"focusHighlightPolicy":"nonPointer"}'; } - -/* justifies flex content start - NOTE: this uses !important, it can therefore be used to override a previously set value */ -.oj-helper-justify-content-flex-start { - justify-content: flex-start !important; } - -/* justifies flex content end - NOTE: this uses !important, it can therefore be used to override a previously set value */ -.oj-helper-justify-content-flex-end { - justify-content: flex-end !important; } - -/* justifies flex content center - NOTE: this uses !important, it can therefore be used to override a previously set value */ -.oj-helper-justify-content-center { - justify-content: center !important; } - -/* justifies flex content space between - NOTE: this uses !important, it can therefore be used to override a previously set value */ -.oj-helper-justify-content-space-between { - justify-content: space-between !important; } - -/* justifies flex content space around - NOTE: this uses !important, it can therefore be used to override a previously set value */ -.oj-helper-justify-content-space-around { - justify-content: space-around !important; } - -/* justifies flex content right - NOTE: this uses !important, it can therefore be used to override a previously set value */ -html:not([dir="rtl"]) .oj-helper-justify-content-right { - justify-content: flex-end !important; } - -html[dir="rtl"] .oj-helper-justify-content-right { - justify-content: flex-start !important; } - -/* justifies flex content left - NOTE: this uses !important, it can therefore be used to override a previously set value */ -html:not([dir="rtl"]) .oj-helper-justify-content-left { - justify-content: flex-start !important; } - -html[dir="rtl"] .oj-helper-justify-content-left { - justify-content: flex-end !important; } - -:root { - --oj-brand-color-light5: #e8f3fa; - --oj-brand-color-light4: #e1eff8; - --oj-brand-color-light3: #d7eaf6; - --oj-brand-color-light2: #b3d7ee; - --oj-brand-color-light1: #76b8e1; - --oj-brand-color: #027bc7; - --oj-brand-color-dark1: #02629f; - --oj-brand-color-dark2: #014a77; - --oj-neutral-color1: white; - --oj-neutral-color2: #fcfcfd; - --oj-neutral-color3: #fafafa; - --oj-neutral-color4: #f7f7f8; - --oj-neutral-color5: #f2f2f3; - --oj-neutral-color6: #ededee; - --oj-neutral-color7: #e5e6e6; - --oj-neutral-color8: #e0e1e1; - --oj-neutral-color9: #cbcccd; - --oj-neutral-color10: #c6c7c8; - --oj-neutral-color11: #b1b3b4; - --oj-neutral-color12: #8a8d8f; - --oj-neutral-color13: #707375; - --oj-neutral-color14: #4b4d4e; - --oj-neutral-color15: #323334; - --oj-neutral-color16: #252627; - --oj-neutral-color17: black; - --oj-contrast-background-1-color: #323334; - --oj-font-size: 1rem; - --oj-smallest-font-size: 0.78571rem; - --oj-small-font-size: 0.85714rem; - --oj-medium-font-size: 1.14286rem; - --oj-large-font-size: 1.28571rem; - --oj-largest-font-size: 1.42857rem; - --oj-text-color: rgba(0, 0, 0, 0.8); - --oj-primary-text-color: black; - --oj-secondary-text-color: rgba(0, 0, 0, 0.7); - --oj-tertiary-text-color: rgba(0, 0, 0, 0.55); - --oj-contrast-text-color: white; - --oj-text-color-disabled: rgba(0, 0, 0, 0.38); - --oj-form-control-label-color: rgba(0, 0, 0, 0.6); - --oj-link-text-color: #02629f; - --oj-link-text-color-active: #014a77; - --oj-link-text-color-visited: #02629f; - --oj-link-text-color-disabled: rgba(0, 0, 0, 0.38); - --oj-link-text-decoration: none; - --oj-link-text-decoration-hover: underline; - --oj-link-font-weight-active: normal; - --oj-link-bg-color-active: transparent; - --oj-icon-color: rgba(0, 0, 0, 0.8); - --oj-icon-color-default: #8a8d8f; - --oj-icon-color-hover: #76b8e1; - --oj-icon-color-active: #027bc7; - --oj-icon-color-selected: #027bc7; - --oj-icon-color-disabled: #cbcccd; - --oj-drop-target-1-color: #d9f4fa; - --oj-drop-target-2-color: #c2eaf3; - --oj-color-required: #02629f; } - -/* html */ -/* --------------------------------------------------------------- */ -html { - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif; - font-size: 0.875em; } - -/* body */ -/* --------------------------------------------------------------- */ -body { - background-repeat: repeat; - background-position: top left; - background-image: none; - color: rgba(0, 0, 0, 0.8); - background-color: white; - touch-action: manipulation; } - -a { - color: #02629f; - text-decoration: none; - line-height: inherit; } - -a:visited { - color: #02629f; } - -a:hover, a:focus { - text-decoration: underline; } - -a:active { - color: #014a77; - font-weight: normal; - background-color: transparent; - border-radius: 1px; } - -a.oj-disabled { - color: rgba(0, 0, 0, 0.38); - opacity: 1; - cursor: default; - text-decoration: none; } - -/* header */ -/* --------------------------------------------------------------- */ -h1, h2, h3, h4, h5, h6 { - color: rgba(0, 0, 0, 0.85); - font-family: inherit; - font-style: normal; - margin: 8px 0; - padding: 0 0 2px; } - -h1 { - font-size: 2.42857rem; - font-weight: 200; } - -h2 { - font-size: 1.71429rem; - font-weight: 300; } - -h3 { - font-size: 1.42857rem; - font-weight: 300; } - -h4 { - font-size: 1.28571rem; - font-weight: 400; } - -h5 { - font-size: 1.14286rem; - font-weight: 400; } - -h6 { - font-size: 1.14286rem; - font-weight: 400; } - -.oj-typography-heading-2xl, -.oj-typography-title-1 { - font-size: 2.42857rem !important; - font-weight: 200 !important; } - -.oj-typography-heading-xl, -.oj-typography-title-2 { - font-size: 1.71429rem !important; - font-weight: 300 !important; } - -.oj-typography-heading-lg, -.oj-typography-title-3 { - font-size: 1.42857rem !important; - font-weight: 300 !important; } - -.oj-typography-heading-md, -.oj-typography-title-4 { - font-size: 1.28571rem !important; - font-weight: 400 !important; } - -.oj-typography-heading-sm, -.oj-typography-title-5 { - font-size: 1.14286rem !important; - font-weight: 400 !important; } - -.oj-typography-heading-xs, -.oj-typography-title-6 { - font-size: 1.14286rem !important; - font-weight: 400 !important; } - -.oj-typography-subheading-2xl, -.oj-typography-subtitle-1 { - font-size: 1.25rem !important; - font-weight: normal !important; } - -.oj-typography-subheading-xl, -.oj-typography-subtitle-2 { - font-size: 1.125rem !important; - font-weight: normal !important; } - -.oj-typography-subheading-lg, -.oj-typography-subtitle-3 { - font-size: 1rem !important; - font-weight: normal !important; } - -.oj-typography-subheading-md, -.oj-typography-subtitle-4 { - font-size: .875rem !important; - font-weight: normal !important; } - -.oj-typography-subheading-sm { - font-size: .875rem !important; - font-weight: normal !important; } - -.oj-typography-subheading-xs { - font-size: .875rem !important; - font-weight: normal !important; } - -.oj-typography-body-xl { - font-size: 1.25rem !important; - font-weight: normal !important; } - -.oj-typography-body-lg, -.oj-typography-body-1 { - font-size: 1.125rem !important; - font-weight: normal !important; } - -.oj-typography-body-md, -.oj-typography-body-2 { - font-size: 1rem !important; - font-weight: normal !important; } - -.oj-typography-body-sm, -.oj-typography-body-3 { - font-size: .85714rem !important; - font-weight: normal !important; } - -.oj-typography-body-xs, -.oj-typography-caption-1 { - font-size: .78571rem !important; - font-weight: normal !important; } - -.oj-typography-body-2xs, -.oj-typography-caption-2 { - font-size: .6875rem !important; - font-weight: normal !important; } - -.oj-typography-semi-bold { - font-weight: 500 !important; } - -.oj-typography-bold { - font-weight: 700 !important; } - -/* hr */ -/* --------------------------------------------------------------- */ -hr { - border: solid #e5e6e6; - border-width: 1px 0 0; - margin: 7px 0; } - -/* p */ -/* --------------------------------------------------------------- */ -p { - margin: 0 0 12px 0; } - -.oj-header-border { - border: solid #e5e6e6; - border-width: 0 0 1px; - padding: 0 0 7px; } - -@font-face { - font-family: "Segoe UI"; - font-weight: 100; - src: local("Segoe UI Light"); } - -@font-face { - font-family: "Segoe UI"; - font-weight: 200; - src: local("Segoe UI Semilight"), local("Segoe UI Light"); } - -@font-face { - font-family: "Segoe UI"; - font-weight: 300; - src: local("Segoe UI Semilight"), local("Segoe UI Light"); } - -@font-face { - font-family: "Segoe UI"; - font-weight: 400; - src: local("Segoe UI"); } - -@font-face { - font-family: "Segoe UI"; - font-weight: 500; - src: local("Segoe UI Semibold"); } - -@font-face { - font-family: "Segoe UI"; - font-weight: 600; - src: local("Segoe UI Semibold"); } - -@font-face { - font-family: "Segoe UI"; - font-weight: 700; - src: local("Segoe UI Bold"); } - -@font-face { - font-family: "Segoe UI"; - font-weight: 800; - src: local("Segoe UI Bold"); } - -@font-face { - font-family: "Segoe UI"; - font-weight: 900; - src: local("Segoe UI Bold"); } - -@font-face { - font-family: "Arial"; - font-weight: 100; - src: local("sans-serif-thin"), local("Arial"); } - -@font-face { - font-family: "Arial"; - font-weight: 200; - src: local("sans-serif-thin"), local("Arial"); } - -@font-face { - font-family: "Arial"; - font-weight: 300; - src: local("sans-serif-light"), local("Arial"); } - -@font-face { - font-family: "Arial"; - font-weight: 400; - src: local("sans-serif-regular"), local("Arial"); } - -@font-face { - font-family: "Arial"; - font-weight: 500; - src: local("sans-serif-medium"), local("Arial"); } - -@font-face { - font-family: "Arial"; - font-weight: 600; - src: local("sans-serif-medium"), local("Arial"); } - -@font-face { - font-family: "Arial"; - font-weight: 700; - src: local("sans-serif-bold"), local("Arial Bold"); } - -@font-face { - font-family: "Arial"; - font-weight: 800; - src: local("sans-serif-bold"), local("Arial Bold"); } - -@font-face { - font-family: "Arial"; - font-weight: 900; - src: local("sans-serif-bold"), local("Arial Bold"); } - -@font-face { - font-family: "Helvetica Neue"; - font-weight: 100; - src: local("HelveticaNeue-Ultralight"); } - -@font-face { - font-family: "Helvetica Neue"; - font-weight: 200; - src: local("HelveticaNeue-Thin"); } - -@font-face { - font-family: "Helvetica Neue"; - font-weight: 300; - src: local("HelveticaNeue-Light"); } - -@font-face { - font-family: "Helvetica Neue"; - font-weight: 400; - src: local("Helvetica Neue"); } - -@font-face { - font-family: "Helvetica Neue"; - font-weight: 500; - src: local("HelveticaNeue-Medium"); } - -@font-face { - font-family: "Helvetica Neue"; - font-weight: 600; - src: local("HelveticaNeue-Medium"); } - -@font-face { - font-family: "Helvetica Neue"; - font-weight: 700; - src: local("HelveticaNeue-Bold"); } - -@font-face { - font-family: "Helvetica Neue"; - font-weight: 800; - src: local("Helvetica-Bold"); } - -@font-face { - font-family: "Helvetica Neue"; - font-weight: 900; - src: local("Helvetica-Bold"); } - -/* lists */ -/* --------------------------------------------------------------- */ -ul, ol { - margin: 12px 0; - padding-left: 40px; } - -ul ul, ul ol, ol ul, ol ol { - margin-bottom: 0; - margin-top: 0; - padding-left: 30px; } - -ul li, ol li { - line-height: 1.25; } - -.oj-text-xs { - font-size: 0.78571rem; } - -.oj-text-sm { - font-size: 0.85714rem; } - -.oj-text-color-primary, -.oj-text-primary-color { - color: black; } - -.oj-text-color-secondary, -.oj-text-secondary-color { - color: rgba(0, 0, 0, 0.7); } - -.oj-text-color-tertiary, -.oj-text-tertiary-color { - color: rgba(0, 0, 0, 0.55); } - -.oj-text-color-disabled, -.oj-text-disabled-color { - color: rgba(0, 0, 0, 0.38); } - -.oj-contrast-marker .oj-contrast-background, -.oj-contrast-marker.oj-contrast-background { - background-color: #323334; - color: white; } - -/* as of jet 4.0 oj-margin* and oj-padding* are deprecated in favor of responsive versions of these classes */ -.oj-margin { - margin: 10px; } - -.oj-margin-horizontal { - margin-left: 10px; - margin-right: 10px; } - -.oj-margin-vertical { - margin-top: 10px; - margin-bottom: 10px; } - -.oj-margin-top { - margin-top: 10px; } - -.oj-margin-bottom { - margin-bottom: 10px; } - -html:not([dir="rtl"]) .oj-margin-start { - margin-left: 10px; } - -html[dir="rtl"] .oj-margin-start { - margin-right: 10px; } - -html:not([dir="rtl"]) .oj-margin-end { - margin-right: 10px; } - -html[dir="rtl"] .oj-margin-end { - margin-left: 10px; } - -.oj-margin-lg { - margin: 20px; } - -.oj-margin-lg-horizontal { - margin-left: 20px; - margin-right: 20px; } - -.oj-margin-lg-vertical { - margin-top: 20px; - margin-bottom: 20px; } - -.oj-margin-lg-top { - margin-top: 20px; } - -.oj-margin-lg-bottom { - margin-bottom: 20px; } - -html:not([dir="rtl"]) .oj-margin-lg-start { - margin-left: 20px; } - -html[dir="rtl"] .oj-margin-lg-start { - margin-right: 20px; } - -html:not([dir="rtl"]) .oj-margin-lg-end { - margin-right: 20px; } - -html[dir="rtl"] .oj-margin-lg-end { - margin-left: 20px; } - -.oj-padding { - padding: 10px; } - -.oj-padding-horizontal { - padding-left: 10px; - padding-right: 10px; } - -.oj-padding-vertical { - padding-top: 10px; - padding-bottom: 10px; } - -.oj-padding-top { - padding-top: 10px; } - -.oj-padding-bottom { - padding-bottom: 10px; } - -html:not([dir="rtl"]) .oj-padding-start { - padding-left: 10px; } - -html[dir="rtl"] .oj-padding-start { - padding-right: 10px; } - -html:not([dir="rtl"]) .oj-padding-end { - padding-right: 10px; } - -html[dir="rtl"] .oj-padding-end { - padding-left: 10px; } - -.oj-padding-lg { - padding: 20px; } - -.oj-padding-lg-horizontal { - padding-left: 20px; - padding-right: 20px; } - -.oj-padding-lg-vertical { - padding-top: 20px; - padding-bottom: 20px; } - -.oj-padding-lg-top { - padding-top: 20px; } - -.oj-padding-lg-bottom { - padding-bottom: 20px; } - -html:not([dir="rtl"]) .oj-padding-lg-start { - padding-left: 20px; } - -html[dir="rtl"] .oj-padding-lg-start { - padding-right: 20px; } - -html:not([dir="rtl"]) .oj-padding-lg-end { - padding-right: 20px; } - -html[dir="rtl"] .oj-padding-lg-end { - padding-left: 20px; } - -.oj-border { - border: 1px solid #e0e1e1 !important; } - -.oj-border-top { - border-top: 1px solid #e0e1e1 !important; } - -.oj-border-bottom { - border-bottom: 1px solid #e0e1e1 !important; } - -html:not([dir="rtl"]) .oj-border-start { - border-left: 1px solid #e0e1e1 !important; } - -html[dir="rtl"] .oj-border-start { - border-right: 1px solid #e0e1e1 !important; } - -html:not([dir="rtl"]) .oj-border-end { - border-right: 1px solid #e0e1e1 !important; } - -html[dir="rtl"] .oj-border-end { - border-left: 1px solid #e0e1e1 !important; } - -.oj-divider-top { - border-top-width: 1px; - border-top-color: #e0e1e1; - border-top-style: solid; } - -.oj-divider-top.oj-divider-padding { - padding-top: 0.5rem; } - -.oj-divider-top.oj-divider-margin { - margin-top: 0.5rem; } - -.oj-divider-bottom { - border-bottom-width: 1px; - border-bottom-color: #e0e1e1; - border-bottom-style: solid; } - -.oj-divider-bottom.oj-divider-padding { - padding-bottom: 0.5rem; } - -.oj-divider-bottom.oj-divider-margin { - margin-bottom: 0.5rem; } - -html:not([dir="rtl"]) .oj-divider-start { - border-left-width: 1px; - border-left-color: #e0e1e1; - border-left-style: solid; } - -html[dir="rtl"] .oj-divider-start { - border-right-width: 1px; - border-right-color: #e0e1e1; - border-right-style: solid; } - -html:not([dir="rtl"]) .oj-divider-start.oj-divider-padding { - padding-left: 0.5rem; } - -html[dir="rtl"] .oj-divider-start.oj-divider-padding { - padding-right: 0.5rem; } - -html:not([dir="rtl"]) .oj-divider-start.oj-divider-margin { - margin-left: 0.5rem; } - -html[dir="rtl"] .oj-divider-start.oj-divider-margin { - margin-right: 0.5rem; } - -html:not([dir="rtl"]) .oj-divider-end { - border-right-width: 1px; - border-right-color: #e0e1e1; - border-right-style: solid; } - -html[dir="rtl"] .oj-divider-end { - border-left-width: 1px; - border-left-color: #e0e1e1; - border-left-style: solid; } - -html:not([dir="rtl"]) .oj-divider-end.oj-divider-padding { - padding-right: 0.5rem; } - -html[dir="rtl"] .oj-divider-end.oj-divider-padding { - padding-left: 0.5rem; } - -html:not([dir="rtl"]) .oj-divider-end.oj-divider-margin { - margin-right: 0.5rem; } - -html[dir="rtl"] .oj-divider-end.oj-divider-margin { - margin-left: 0.5rem; } - -.oj-bg-neutral-0 { - background-color: white !important; } - -.oj-bg-neutral-10 { - background-color: #fcfcfd !important; } - -.oj-bg-neutral-20 { - background-color: #fafafa !important; } - -.oj-bg-neutral-30 { - background-color: #f7f7f8 !important; } - -.oj-bg-danger-10 { - background-color: #fcf3f4 !important; } - -.oj-bg-danger-30 { - background-color: #f8d3d6 !important; } - -.oj-bg-warning-10 { - background-color: #fef5e4 !important; } - -.oj-bg-warning-30 { - background-color: #fce7c1 !important; } - -.oj-bg-success-10 { - background-color: #ecf5e7 !important; } - -.oj-bg-success-30 { - background-color: #ecf5e7 !important; } - -.oj-bg-info-10 { - background-color: #e9f4f8 !important; } - -.oj-bg-info-30 { - background-color: #cae4ef !important; } - -.oj-bg-brand-10 { - background-color: #e8f3fa !important; } - -.oj-bg-brand-30 { - background-color: #d7eaf6 !important; } - -.oj-line-clamp-1, -.oj-line-clamp-2, -.oj-line-clamp-3, -.oj-line-clamp-4 { - display: -webkit-box !important; - /* autoprefixer: ignore next */ - -webkit-box-orient: vertical !important; - overflow: hidden !important; } - -.oj-line-clamp-1 { - -webkit-line-clamp: 1 !important; } - -.oj-line-clamp-2 { - -webkit-line-clamp: 2 !important; } - -.oj-line-clamp-3 { - -webkit-line-clamp: 3 !important; } - -.oj-line-clamp-4 { - -webkit-line-clamp: 4 !important; } - -.oj-fwk-icon-arrow-e:before, html[dir="rtl"] .oj-fwk-icon-arrow-start:before, html:not([dir="rtl"]) .oj-fwk-icon-arrow-end:before, html:not([dir="rtl"]) .oj-collapsible-close-icon:before, html:not([dir="rtl"]) .oj-listview-collapse-icon:before { - content: "\f101"; } - -.oj-fwk-icon-arrow-n:before { - content: "\f102"; } - -.oj-fwk-icon-arrow-ne:before, html[dir="rtl"] .oj-fwk-icon-arrow-n-start:before, html:not([dir="rtl"]) .oj-fwk-icon-arrow-n-end:before { - content: "\f103"; } - -.oj-fwk-icon-arrow-nw:before, html:not([dir="rtl"]) .oj-fwk-icon-arrow-n-start:before, html[dir="rtl"] .oj-fwk-icon-arrow-n-end:before { - content: "\f104"; } - -.oj-fwk-icon-arrow-s:before { - content: "\f105"; } - -.oj-fwk-icon-arrow-se:before, html[dir="rtl"] .oj-fwk-icon-arrow-s-start:before, html:not([dir="rtl"]) .oj-fwk-icon-arrow-s-end:before, html:not([dir="rtl"]) .oj-collapsible-open-icon:before, html:not([dir="rtl"]) .oj-listview-expand-icon:before { - content: "\f106"; } - -.oj-fwk-icon-arrow-sw:before, html:not([dir="rtl"]) .oj-fwk-icon-arrow-s-start:before, html[dir="rtl"] .oj-fwk-icon-arrow-s-end:before, html[dir="rtl"] .oj-collapsible-open-icon:before, html[dir="rtl"] .oj-listview-expand-icon:before { - content: "\f107"; } - -.oj-fwk-icon-arrow-w:before, html:not([dir="rtl"]) .oj-fwk-icon-arrow-start:before, html[dir="rtl"] .oj-fwk-icon-arrow-end:before, html[dir="rtl"] .oj-collapsible-close-icon:before, html[dir="rtl"] .oj-listview-collapse-icon:before { - content: "\f108"; } - -.oj-fwk-icon-arrow02-e:before, html[dir="rtl"] .oj-fwk-icon-arrow02-start:before, html:not([dir="rtl"]) .oj-fwk-icon-arrow02-end:before, html:not([dir="rtl"]) .oj-navigationlist-collapsible .oj-navigationlist-collapse-icon:before, .oj-navigationlist-collapsible html:not([dir="rtl"]) .oj-navigationlist-collapse-icon:before { - content: "\f109"; } - -.oj-fwk-icon-arrow02-n:before { - content: "\f10a"; } - -.oj-fwk-icon-arrow02-s:before, .oj-button-menu-dropdown-icon:before, -.oj-button-menu-dropdown-nostartslot-icon:before, .oj-navigationlist-collapsible .oj-navigationlist-expand-icon:before, .oj-combobox-open-icon:before, .oj-searchselect-open-icon:before, .oj-select-open-icon:before { - content: "\f10b"; } - -.oj-fwk-icon-arrow02-w:before, html:not([dir="rtl"]) .oj-fwk-icon-arrow02-start:before, html[dir="rtl"] .oj-fwk-icon-arrow02-end:before, html[dir="rtl"] .oj-navigationlist-collapsible .oj-navigationlist-collapse-icon:before, .oj-navigationlist-collapsible html[dir="rtl"] .oj-navigationlist-collapse-icon:before { - content: "\f10c"; } - -.oj-fwk-icon-arrow03-e:before, html[dir="rtl"] .oj-fwk-icon-arrow03-start:before, html:not([dir="rtl"]) .oj-fwk-icon-arrow03-end:before, html:not([dir="rtl"]) .oj-menu-submenu-icon:before, html:not([dir="rtl"]) .oj-collapsed > .oj-treeview-item-content > .oj-treeview-disclosure-icon:before, html:not([dir="rtl"]) .oj-rowexpander-expand-icon:before, html:not([dir="rtl"]) .oj-collapsed > .oj-tree-disclosure-icon:before, html:not([dir="rtl"]) .oj-tree-drop-ptr:before { - content: "\f10d"; } - -.oj-fwk-icon-arrow03-n:before, .oj-table-column-header-asc-icon:before, -.oj-table-column-header-default-sort-icon:before, .oj-datagrid-sort-ascending-icon:before { - content: "\f10e"; } - -.oj-fwk-icon-arrow03-ne:before, html[dir="rtl"] .oj-fwk-icon-arrow03-n-start:before, html:not([dir="rtl"]) .oj-fwk-icon-arrow03-n-end:before { - content: "\f10f"; } - -.oj-fwk-icon-arrow03-nw:before, html:not([dir="rtl"]) .oj-fwk-icon-arrow03-n-start:before, html[dir="rtl"] .oj-fwk-icon-arrow03-n-end:before { - content: "\f110"; } - -.oj-fwk-icon-arrow03-s:before, .oj-table-column-header-dsc-icon:before, .oj-datagrid-sort-descending-icon:before { - content: "\f111"; } - -.oj-fwk-icon-arrow03-se:before, html[dir="rtl"] .oj-fwk-icon-arrow03-s-start:before, html:not([dir="rtl"]) .oj-fwk-icon-arrow03-s-end:before, html:not([dir="rtl"]) .oj-expanded > .oj-treeview-item-content > .oj-treeview-disclosure-icon:before, html:not([dir="rtl"]) .oj-rowexpander-collapse-icon:before, html:not([dir="rtl"]) .oj-expanded > .oj-tree-disclosure-icon:before { - content: "\f112"; } - -.oj-fwk-icon-arrow03-sw:before, html:not([dir="rtl"]) .oj-fwk-icon-arrow03-s-start:before, html[dir="rtl"] .oj-fwk-icon-arrow03-s-end:before, html[dir="rtl"] .oj-expanded > .oj-treeview-item-content > .oj-treeview-disclosure-icon:before, html[dir="rtl"] .oj-rowexpander-collapse-icon:before, html[dir="rtl"] .oj-expanded > .oj-tree-disclosure-icon:before { - content: "\f113"; } - -.oj-fwk-icon-arrow03-w:before, html:not([dir="rtl"]) .oj-fwk-icon-arrow03-start:before, html[dir="rtl"] .oj-fwk-icon-arrow03-end:before, html[dir="rtl"] .oj-menu-submenu-icon:before, html[dir="rtl"] .oj-collapsed > .oj-treeview-item-content > .oj-treeview-disclosure-icon:before, html[dir="rtl"] .oj-rowexpander-expand-icon:before, html[dir="rtl"] .oj-collapsed > .oj-tree-disclosure-icon:before, html[dir="rtl"] .oj-tree-drop-ptr:before { - content: "\f114"; } - -.oj-fwk-icon-arrowbox-n:before { - content: "\f115"; } - -.oj-fwk-icon-arrowtail-e:before, html[dir="rtl"] .oj-fwk-icon-arrowtail-start:before, html:not([dir="rtl"]) .oj-fwk-icon-arrowtail-end:before { - content: "\f116"; } - -.oj-fwk-icon-arrowtail-w:before, html:not([dir="rtl"]) .oj-fwk-icon-arrowtail-start:before, html[dir="rtl"] .oj-fwk-icon-arrowtail-end:before { - content: "\f117"; } - -.oj-fwk-icon-calendar-clock:before, .oj-inputdatetime-calendar-clock-icon:before { - content: "\f118"; } - -.oj-fwk-icon-calendar:before, .oj-inputdatetime-calendar-icon:before { - content: "\f119"; } - -.oj-fwk-icon-caret-e:before, html[dir="rtl"] .oj-fwk-icon-caret-start:before, html[dir="rtl"] .oj-fwk-icon-back:before, html[dir="rtl"] .oj-hybrid-applayout-header-icon-back:before, html[dir="rtl"] .oj-conveyorbelt-overflow-icon.oj-start:before, html[dir="rtl"] .oj-filmstrip-arrow-icon.oj-start:before, html[dir="rtl"] .oj-navigationlist-previous-icon:before, html[dir="rtl"] .oj-searchselect-back-icon:before, html:not([dir="rtl"]) .oj-fwk-icon-caret-end:before, html:not([dir="rtl"]) .oj-fwk-icon-next:before, html:not([dir="rtl"]) .oj-conveyorbelt-overflow-icon.oj-end:before, html:not([dir="rtl"]) .oj-filmstrip-arrow-icon.oj-end:before, html:not([dir="rtl"]) .oj-listview-drill-icon:before, html[dir="rtl"] .oj-datepicker-prev-icon:before, html:not([dir="rtl"]) .oj-datepicker-next-icon:before { - content: "\f11a"; } - -.oj-fwk-icon-caret-n:before, .oj-conveyorbelt-overflow-icon.oj-top:before, .oj-filmstrip-arrow-icon.oj-top:before, .oj-inputnumber-up-icon:before { - content: "\f11b"; } - -.oj-fwk-icon-caret-s:before, .oj-conveyorbelt-overflow-icon.oj-bottom:before, .oj-filmstrip-arrow-icon.oj-bottom:before, .oj-inputnumber-down-icon:before { - content: "\f11c"; } - -.oj-fwk-icon-caret-w:before, html:not([dir="rtl"]) .oj-fwk-icon-caret-start:before, html:not([dir="rtl"]) .oj-fwk-icon-back:before, html:not([dir="rtl"]) .oj-hybrid-applayout-header-icon-back:before, html:not([dir="rtl"]) .oj-conveyorbelt-overflow-icon.oj-start:before, html:not([dir="rtl"]) .oj-filmstrip-arrow-icon.oj-start:before, html:not([dir="rtl"]) .oj-navigationlist-previous-icon:before, html:not([dir="rtl"]) .oj-searchselect-back-icon:before, html[dir="rtl"] .oj-fwk-icon-caret-end:before, html[dir="rtl"] .oj-fwk-icon-next:before, html[dir="rtl"] .oj-conveyorbelt-overflow-icon.oj-end:before, html[dir="rtl"] .oj-filmstrip-arrow-icon.oj-end:before, html[dir="rtl"] .oj-listview-drill-icon:before, html:not([dir="rtl"]) .oj-datepicker-prev-icon:before, html[dir="rtl"] .oj-datepicker-next-icon:before { - content: "\f11d"; } - -.oj-fwk-icon-caret02-e:before, html[dir="rtl"] .oj-fwk-icon-caret02-start:before, html:not([dir="rtl"]) .oj-fwk-icon-caret02-end:before, html[dir="rtl"] .oj-pagingcontrol-nav-previous-icon:before, html:not([dir="rtl"]) .oj-pagingcontrol-nav-next-icon:before { - content: "\f11e"; } - -.oj-fwk-icon-caret02-n:before, .oj-pagingcontrol-nav-previous-vertical-icon:before { - content: "\f11f"; } - -.oj-fwk-icon-caret02-s:before, .oj-pagingcontrol-nav-next-vertical-icon:before { - content: "\f120"; } - -.oj-fwk-icon-caret02-w:before, html:not([dir="rtl"]) .oj-fwk-icon-caret02-start:before, html[dir="rtl"] .oj-fwk-icon-caret02-end:before, html:not([dir="rtl"]) .oj-pagingcontrol-nav-previous-icon:before, html[dir="rtl"] .oj-pagingcontrol-nav-next-icon:before { - content: "\f121"; } - -.oj-fwk-icon-caret02end-e:before, html[dir="rtl"] .oj-fwk-icon-caret02end-start:before, html:not([dir="rtl"]) .oj-fwk-icon-caret02end-end:before, html[dir="rtl"] .oj-pagingcontrol-nav-first-icon:before, html:not([dir="rtl"]) .oj-pagingcontrol-nav-last-icon:before { - content: "\f122"; } - -.oj-fwk-icon-caret02end-n:before, .oj-pagingcontrol-nav-first-vertical-icon:before { - content: "\f123"; } - -.oj-fwk-icon-caret02end-s:before, .oj-pagingcontrol-nav-last-vertical-icon:before { - content: "\f124"; } - -.oj-fwk-icon-caret02end-w:before, html:not([dir="rtl"]) .oj-fwk-icon-caret02end-start:before, html[dir="rtl"] .oj-fwk-icon-caret02end-end:before, html:not([dir="rtl"]) .oj-pagingcontrol-nav-first-icon:before, html[dir="rtl"] .oj-pagingcontrol-nav-last-icon:before { - content: "\f125"; } - -.oj-fwk-icon-caret03-e:before, html[dir="rtl"] .oj-fwk-icon-caret03-start:before, html:not([dir="rtl"]) .oj-fwk-icon-caret03-end:before, html:not([dir="rtl"]) .oj-navigationlist-slider .oj-navigationlist-collapse-icon:before, .oj-navigationlist-slider html:not([dir="rtl"]) .oj-navigationlist-collapse-icon:before { - content: "\f126"; } - -.oj-fwk-icon-caret03-n:before { - content: "\f127"; } - -.oj-fwk-icon-caret03-s:before { - content: "\f128"; } - -.oj-fwk-icon-caret03-w:before, html:not([dir="rtl"]) .oj-fwk-icon-caret03-start:before, html[dir="rtl"] .oj-fwk-icon-caret03-end:before, html[dir="rtl"] .oj-navigationlist-slider .oj-navigationlist-collapse-icon:before, .oj-navigationlist-slider html[dir="rtl"] .oj-navigationlist-collapse-icon:before { - content: "\f129"; } - -.oj-fwk-icon-checkmark:before, .oj-train-icon.oj-confirmation:before { - content: "\f12a"; } - -.oj-fwk-icon-clock:before, .oj-inputdatetime-time-icon:before { - content: "\f12b"; } - -.oj-fwk-icon-cross:before, .oj-panel-remove-icon:before, .oj-tabbar-remove-icon:before, .oj-combobox-clear-entry-icon:before, .oj-select-clear-entry-icon:before, .oj-progressstatus-cancel-icon:before { - content: "\f12c"; } - -.oj-fwk-icon-cross02:before, .oj-menu-icons .oj-menu-cancel-icon:before { - content: "\f12d"; } - -.oj-fwk-icon-cross03:before, .oj-tabs-close-icon:before, .oj-inputtext-clear-icon:before, .oj-searchselect-clear-value-icon:before { - content: "\f12e"; } - -.oj-fwk-icon-dots-horizontal:before, .oj-navigationlist-overflow-item-icon:before, .oj-tabbar-overflow-item-icon:before { - content: "\f12f"; } - -.oj-fwk-icon-dots-vertical:before, .oj-select-multiple-open-icon:before { - content: "\f130"; } - -.oj-fwk-icon-drag-horizontal:before { - content: "\f131"; } - -.oj-fwk-icon-drag-vertical:before { - content: "\f132"; } - -.oj-fwk-icon-drag:before, .oj-panel-drag-icon:before, .oj-listview-card .oj-listview-drag-handle:before, -.oj-listview-card-layout .oj-listview-drag-handle:before { - content: "\f133"; } - -.oj-fwk-icon-folderhierarchy:before, .oj-hier-icon:before { - content: "\f134"; } - -.oj-fwk-icon-grid:before { - content: "\f135"; } - -.oj-fwk-icon-hamburger:before, .oj-web-applayout-offcanvas-icon:before { - content: "\f136"; } - -.oj-fwk-icon-help:before, .oj-label-help-icon:before { - content: "\f137"; } - -.oj-fwk-icon-info:before, .oj-train-icon.oj-info:before { - content: "\f138"; } - -.oj-fwk-icon-list:before { - content: "\f139"; } - -.oj-fwk-icon-magnifier:before, .oj-listbox-search-icon:before, .oj-inputsearch-search-icon:before { - content: "\f13a"; } - -.oj-fwk-icon-marquee:before { - content: "\f13b"; } - -.oj-fwk-icon-maximize:before, .oj-panel-expand-icon:before { - content: "\f13c"; } - -.oj-fwk-icon-minimize:before, .oj-panel-collapse-icon:before { - content: "\f13d"; } - -.oj-fwk-icon-minus:before { - content: "\f13e"; } - -.oj-fwk-icon-node-collapse:before { - content: "\f13f"; } - -.oj-fwk-icon-node-expand:before { - content: "\f140"; } - -.oj-fwk-icon-pan:before { - content: "\f141"; } - -.oj-fwk-icon-plus:before { - content: "\f142"; } - -.oj-fwk-icon-user:before { - content: "\f143"; } - -.oj-fwk-icon-users:before { - content: "\f144"; } - -.oj-fwk-icon-warning:before, .oj-train-icon.oj-error:before, .oj-train-icon.oj-warning:before { - content: "\f145"; } - -.oj-fwk-icon-zoom-in:before { - content: "\f146"; } - -.oj-fwk-icon-zoom-out:before { - content: "\f147"; } - -.oj-fwk-icon-document, .oj-tree-leaf:not(.oj-tree-type) a .oj-tree-node-icon, .oj-treeview-leaf > .oj-treeview-item-content > .oj-treeview-item-icon { - background-image: url("../common/images/sprites/sprite.svg"); - background-size: 332px 52px; - background-position: -2px -2px; - width: 16px; - height: 16px; } - -.oj-hicontrast .oj-fwk-icon-document, .oj-hicontrast .oj-tree-leaf:not(.oj-tree-type) a .oj-tree-node-icon, .oj-tree-leaf:not(.oj-tree-type) a .oj-hicontrast .oj-tree-node-icon, .oj-hicontrast .oj-treeview-leaf > .oj-treeview-item-content > .oj-treeview-item-icon { - background-image: none; } - -.oj-hicontrast .oj-fwk-icon-document:before, .oj-hicontrast .oj-tree-leaf:not(.oj-tree-type) a .oj-tree-node-icon:before, .oj-tree-leaf:not(.oj-tree-type) a .oj-hicontrast .oj-tree-node-icon:before, .oj-hicontrast .oj-treeview-leaf > .oj-treeview-item-content > .oj-treeview-item-icon:before { - content: url("../common/images/document.svg"); - width: 100%; - height: 100%; } - -/* autoprefixer: ignore next */ -@media print, (max-resolution: 0.99dppx) { - .oj-fwk-icon-document, .oj-tree-leaf:not(.oj-tree-type) a .oj-tree-node-icon, .oj-treeview-leaf > .oj-treeview-item-content > .oj-treeview-item-icon { - background-image: none; } - .oj-fwk-icon-document:before, .oj-tree-leaf:not(.oj-tree-type) a .oj-tree-node-icon:before, .oj-treeview-leaf > .oj-treeview-item-content > .oj-treeview-item-icon:before { - content: url("../common/images/document.svg"); - width: 100%; - height: 100%; } } - -.oj-fwk-icon-folder-collapsed, .oj-collapsed:not(.oj-tree-type) > a .oj-tree-node-icon, .oj-collapsed > .oj-treeview-item-content > .oj-treeview-item-icon { - background-image: url("../common/images/sprites/sprite.svg"); - background-size: 332px 52px; - background-position: -22px -2px; - width: 16px; - height: 16px; } - -.oj-hicontrast .oj-fwk-icon-folder-collapsed, .oj-hicontrast .oj-collapsed:not(.oj-tree-type) > a .oj-tree-node-icon, .oj-collapsed:not(.oj-tree-type) > a .oj-hicontrast .oj-tree-node-icon, .oj-hicontrast .oj-collapsed > .oj-treeview-item-content > .oj-treeview-item-icon { - background-image: none; } - -.oj-hicontrast .oj-fwk-icon-folder-collapsed:before, .oj-hicontrast .oj-collapsed:not(.oj-tree-type) > a .oj-tree-node-icon:before, .oj-collapsed:not(.oj-tree-type) > a .oj-hicontrast .oj-tree-node-icon:before, .oj-hicontrast .oj-collapsed > .oj-treeview-item-content > .oj-treeview-item-icon:before { - content: url("../common/images/folder_collapsed.svg"); - width: 100%; - height: 100%; } - -/* autoprefixer: ignore next */ -@media print, (max-resolution: 0.99dppx) { - .oj-fwk-icon-folder-collapsed, .oj-collapsed:not(.oj-tree-type) > a .oj-tree-node-icon, .oj-collapsed > .oj-treeview-item-content > .oj-treeview-item-icon { - background-image: none; } - .oj-fwk-icon-folder-collapsed:before, .oj-collapsed:not(.oj-tree-type) > a .oj-tree-node-icon:before, .oj-collapsed > .oj-treeview-item-content > .oj-treeview-item-icon:before { - content: url("../common/images/folder_collapsed.svg"); - width: 100%; - height: 100%; } } - -.oj-fwk-icon-folder-open, .oj-expanded:not(.oj-tree-type) > a .oj-tree-node-icon, .oj-expanded > .oj-treeview-item-content > .oj-treeview-item-icon { - background-image: url("../common/images/sprites/sprite.svg"); - background-size: 332px 52px; - background-position: -42px -2px; - width: 16px; - height: 16px; } - -.oj-hicontrast .oj-fwk-icon-folder-open, .oj-hicontrast .oj-expanded:not(.oj-tree-type) > a .oj-tree-node-icon, .oj-expanded:not(.oj-tree-type) > a .oj-hicontrast .oj-tree-node-icon, .oj-hicontrast .oj-expanded > .oj-treeview-item-content > .oj-treeview-item-icon { - background-image: none; } - -.oj-hicontrast .oj-fwk-icon-folder-open:before, .oj-hicontrast .oj-expanded:not(.oj-tree-type) > a .oj-tree-node-icon:before, .oj-expanded:not(.oj-tree-type) > a .oj-hicontrast .oj-tree-node-icon:before, .oj-hicontrast .oj-expanded > .oj-treeview-item-content > .oj-treeview-item-icon:before { - content: url("../common/images/folder_open.svg"); - width: 100%; - height: 100%; } - -/* autoprefixer: ignore next */ -@media print, (max-resolution: 0.99dppx) { - .oj-fwk-icon-folder-open, .oj-expanded:not(.oj-tree-type) > a .oj-tree-node-icon, .oj-expanded > .oj-treeview-item-content > .oj-treeview-item-icon { - background-image: none; } - .oj-fwk-icon-folder-open:before, .oj-expanded:not(.oj-tree-type) > a .oj-tree-node-icon:before, .oj-expanded > .oj-treeview-item-content > .oj-treeview-item-icon:before { - content: url("../common/images/folder_open.svg"); - width: 100%; - height: 100%; } } - -.oj-fwk-icon-group-avatar, .oj-avatar-group-image .oj-avatar-placeholder { - background-image: url("../common/images/sprites/sprite.svg"); - background-size: 332px 52px; - background-position: -62px -2px; - width: 32px; - height: 32px; } - -.oj-hicontrast .oj-fwk-icon-group-avatar, .oj-hicontrast .oj-avatar-group-image .oj-avatar-placeholder, .oj-avatar-group-image .oj-hicontrast .oj-avatar-placeholder { - background-image: none; } - -.oj-hicontrast .oj-fwk-icon-group-avatar:before, .oj-hicontrast .oj-avatar-group-image .oj-avatar-placeholder:before, .oj-avatar-group-image .oj-hicontrast .oj-avatar-placeholder:before { - content: url("../common/images/group_avatar.svg"); - width: 100%; - height: 100%; } - -/* autoprefixer: ignore next */ -@media print, (max-resolution: 0.99dppx) { - .oj-fwk-icon-group-avatar, .oj-avatar-group-image .oj-avatar-placeholder { - background-image: none; } - .oj-fwk-icon-group-avatar:before, .oj-avatar-group-image .oj-avatar-placeholder:before { - content: url("../common/images/group_avatar.svg"); - width: 100%; - height: 100%; } } - -.oj-fwk-icon-none { - background-image: url("../common/images/sprites/sprite.svg"); - background-size: 332px 52px; - background-position: -98px -2px; - width: 48px; - height: 48px; } - -.oj-hicontrast .oj-fwk-icon-none { - background-image: none; } - -.oj-hicontrast .oj-fwk-icon-none:before { - content: url("../common/images/none.svg"); - width: 100%; - height: 100%; } - -/* autoprefixer: ignore next */ -@media print, (max-resolution: 0.99dppx) { - .oj-fwk-icon-none { - background-image: none; } - .oj-fwk-icon-none:before { - content: url("../common/images/none.svg"); - width: 100%; - height: 100%; } } - -.oj-fwk-icon-person-avatar, .oj-avatar-placeholder { - background-image: url("../common/images/sprites/sprite.svg"); - background-size: 332px 52px; - background-position: -150px -2px; - width: 32px; - height: 32px; } - -.oj-hicontrast .oj-fwk-icon-person-avatar, .oj-hicontrast .oj-avatar-placeholder { - background-image: none; } - -.oj-hicontrast .oj-fwk-icon-person-avatar:before, .oj-hicontrast .oj-avatar-placeholder:before { - content: url("../common/images/person_avatar.svg"); - width: 100%; - height: 100%; } - -/* autoprefixer: ignore next */ -@media print, (max-resolution: 0.99dppx) { - .oj-fwk-icon-person-avatar, .oj-avatar-placeholder { - background-image: none; } - .oj-fwk-icon-person-avatar:before, .oj-avatar-placeholder:before { - content: url("../common/images/person_avatar.svg"); - width: 100%; - height: 100%; } } - -.oj-fwk-icon-status-confirmation, .oj-message-status-icon.oj-message-confirmation-icon, .oj-progressstatus-done-icon { - background-image: url("../common/images/sprites/sprite.svg"); - background-size: 332px 52px; - background-position: -186px -2px; - width: 20px; - height: 20px; } - -.oj-hicontrast .oj-fwk-icon-status-confirmation, .oj-hicontrast .oj-message-status-icon.oj-message-confirmation-icon, .oj-hicontrast .oj-progressstatus-done-icon { - background-image: none; } - -.oj-hicontrast .oj-fwk-icon-status-confirmation:before, .oj-hicontrast .oj-message-status-icon.oj-message-confirmation-icon:before, .oj-hicontrast .oj-progressstatus-done-icon:before { - content: url("../common/images/status_confirmation.svg"); - width: 100%; - height: 100%; } - -/* autoprefixer: ignore next */ -@media print, (max-resolution: 0.99dppx) { - .oj-fwk-icon-status-confirmation, .oj-message-status-icon.oj-message-confirmation-icon, .oj-progressstatus-done-icon { - background-image: none; } - .oj-fwk-icon-status-confirmation:before, .oj-message-status-icon.oj-message-confirmation-icon:before, .oj-progressstatus-done-icon:before { - content: url("../common/images/status_confirmation.svg"); - width: 100%; - height: 100%; } } - -.oj-fwk-icon-status-confirmation2 { - background-image: url("../common/images/sprites/sprite.svg"); - background-size: 332px 52px; - background-position: -210px -2px; - width: 9px; - height: 9px; } - -.oj-hicontrast .oj-fwk-icon-status-confirmation2 { - background-image: none; } - -.oj-hicontrast .oj-fwk-icon-status-confirmation2:before { - content: url("../common/images/status_confirmation2.svg"); - width: 100%; - height: 100%; } - -/* autoprefixer: ignore next */ -@media print, (max-resolution: 0.99dppx) { - .oj-fwk-icon-status-confirmation2 { - background-image: none; } - .oj-fwk-icon-status-confirmation2:before { - content: url("../common/images/status_confirmation2.svg"); - width: 100%; - height: 100%; } } - -.oj-fwk-icon-status-error, .oj-message-status-icon.oj-message-error-icon, .oj-progressstatus-error-icon { - background-image: url("../common/images/sprites/sprite.svg"); - background-size: 332px 52px; - background-position: -223px -2px; - width: 20px; - height: 20px; } - -.oj-hicontrast .oj-fwk-icon-status-error, .oj-hicontrast .oj-message-status-icon.oj-message-error-icon, .oj-hicontrast .oj-progressstatus-error-icon { - background-image: none; } - -.oj-hicontrast .oj-fwk-icon-status-error:before, .oj-hicontrast .oj-message-status-icon.oj-message-error-icon:before, .oj-hicontrast .oj-progressstatus-error-icon:before { - content: url("../common/images/status_error.svg"); - width: 100%; - height: 100%; } - -/* autoprefixer: ignore next */ -@media print, (max-resolution: 0.99dppx) { - .oj-fwk-icon-status-error, .oj-message-status-icon.oj-message-error-icon, .oj-progressstatus-error-icon { - background-image: none; } - .oj-fwk-icon-status-error:before, .oj-message-status-icon.oj-message-error-icon:before, .oj-progressstatus-error-icon:before { - content: url("../common/images/status_error.svg"); - width: 100%; - height: 100%; } } - -.oj-fwk-icon-status-error2 { - background-image: url("../common/images/sprites/sprite.svg"); - background-size: 332px 52px; - background-position: -247px -2px; - width: 9px; - height: 9px; } - -.oj-hicontrast .oj-fwk-icon-status-error2 { - background-image: none; } - -.oj-hicontrast .oj-fwk-icon-status-error2:before { - content: url("../common/images/status_error2.svg"); - width: 100%; - height: 100%; } - -/* autoprefixer: ignore next */ -@media print, (max-resolution: 0.99dppx) { - .oj-fwk-icon-status-error2 { - background-image: none; } - .oj-fwk-icon-status-error2:before { - content: url("../common/images/status_error2.svg"); - width: 100%; - height: 100%; } } - -.oj-fwk-icon-status-info, .oj-message-status-icon.oj-message-info-icon { - background-image: url("../common/images/sprites/sprite.svg"); - background-size: 332px 52px; - background-position: -260px -2px; - width: 20px; - height: 20px; } - -.oj-hicontrast .oj-fwk-icon-status-info, .oj-hicontrast .oj-message-status-icon.oj-message-info-icon { - background-image: none; } - -.oj-hicontrast .oj-fwk-icon-status-info:before, .oj-hicontrast .oj-message-status-icon.oj-message-info-icon:before { - content: url("../common/images/status_info.svg"); - width: 100%; - height: 100%; } - -/* autoprefixer: ignore next */ -@media print, (max-resolution: 0.99dppx) { - .oj-fwk-icon-status-info, .oj-message-status-icon.oj-message-info-icon { - background-image: none; } - .oj-fwk-icon-status-info:before, .oj-message-status-icon.oj-message-info-icon:before { - content: url("../common/images/status_info.svg"); - width: 100%; - height: 100%; } } - -.oj-fwk-icon-status-info2 { - background-image: url("../common/images/sprites/sprite.svg"); - background-size: 332px 52px; - background-position: -284px -2px; - width: 9px; - height: 9px; } - -.oj-hicontrast .oj-fwk-icon-status-info2 { - background-image: none; } - -.oj-hicontrast .oj-fwk-icon-status-info2:before { - content: url("../common/images/status_info2.svg"); - width: 100%; - height: 100%; } - -/* autoprefixer: ignore next */ -@media print, (max-resolution: 0.99dppx) { - .oj-fwk-icon-status-info2 { - background-image: none; } - .oj-fwk-icon-status-info2:before { - content: url("../common/images/status_info2.svg"); - width: 100%; - height: 100%; } } - -.oj-fwk-icon-status-warning, .oj-message-status-icon.oj-message-warning-icon { - background-image: url("../common/images/sprites/sprite.svg"); - background-size: 332px 52px; - background-position: -297px -2px; - width: 20px; - height: 20px; } - -.oj-hicontrast .oj-fwk-icon-status-warning, .oj-hicontrast .oj-message-status-icon.oj-message-warning-icon { - background-image: none; } - -.oj-hicontrast .oj-fwk-icon-status-warning:before, .oj-hicontrast .oj-message-status-icon.oj-message-warning-icon:before { - content: url("../common/images/status_warning.svg"); - width: 100%; - height: 100%; } - -/* autoprefixer: ignore next */ -@media print, (max-resolution: 0.99dppx) { - .oj-fwk-icon-status-warning, .oj-message-status-icon.oj-message-warning-icon { - background-image: none; } - .oj-fwk-icon-status-warning:before, .oj-message-status-icon.oj-message-warning-icon:before { - content: url("../common/images/status_warning.svg"); - width: 100%; - height: 100%; } } - -.oj-fwk-icon-status-warning2 { - background-image: url("../common/images/sprites/sprite.svg"); - background-size: 332px 52px; - background-position: -321px -2px; - width: 9px; - height: 9px; } - -.oj-hicontrast .oj-fwk-icon-status-warning2 { - background-image: none; } - -.oj-hicontrast .oj-fwk-icon-status-warning2:before { - content: url("../common/images/status_warning2.svg"); - width: 100%; - height: 100%; } - -/* autoprefixer: ignore next */ -@media print, (max-resolution: 0.99dppx) { - .oj-fwk-icon-status-warning2 { - background-image: none; } - .oj-fwk-icon-status-warning2:before { - content: url("../common/images/status_warning2.svg"); - width: 100%; - height: 100%; } } - -/* Icons - --------------------------------------------------------------------*/ -@font-face { - font-family: 'Alta Icon Font'; - src: url("fonts/internal_iconfont.woff") format("woff"); } - -/*-------------------------------------------------------------------- - / Generic style that can be used for widget images - / You can use the mixin ("oj-icon-content") to generate - / a class with additions/overrides - / - / For example let's say you used the mixin ("oj-icon-content") to - / generate a class ".binky-icon". You - / could then put class="oj-icon binky-icon" on your dom element. - --------------------------------------------------------------------*/ -.oj-fwk-icon, .oj-panel-drag-icon, .oj-panel-expand-icon, .oj-panel-collapse-icon, .oj-panel-remove-icon, .oj-listview-drill-icon, .oj-listview-drag-handle, .oj-web-applayout-offcanvas-icon, .oj-progressstatus-cancel-icon, -.oj-component-icon, -.oj-popup-tail.oj-popup-tail-simple { - font-family: "Alta Icon Font"; - font-size: 16px; - line-height: 1; - display: inline-block; - font-weight: normal; - speak: none; - font-style: normal; - font-variant: normal; - text-transform: none; - color: rgba(0, 0, 0, 0.8); - text-align: center; - box-sizing: content-box; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; } - .oj-fwk-icon:before, .oj-panel-drag-icon:before, .oj-panel-expand-icon:before, .oj-panel-collapse-icon:before, .oj-panel-remove-icon:before, .oj-listview-drill-icon:before, .oj-listview-drag-handle:before, .oj-web-applayout-offcanvas-icon:before, .oj-progressstatus-cancel-icon:before, - .oj-component-icon:before, - .oj-popup-tail.oj-popup-tail-simple:before { - display: inline-block; } - -/*-------------------------------------------------------------------- - / Generic style that can be used for images - / App developers can use the mixin ("oj-icon-content") to generate - / a class with additions/overrides - / - / For example let's say you used the mixin ("oj-icon-content") to - / generate a class ".binky-icon". You - / could then put class="oj-icon binky-icon" on your dom element. - --------------------------------------------------------------------*/ -.oj-icon { - display: inline-block; - width: 16px; - height: 16px; - line-height: 1; - overflow: hidden; - direction: ltr; - text-align: center; - box-sizing: content-box; } - .oj-icon:before { - display: inline-block; - box-sizing: content-box; } - -a .oj-clickable-icon, -a.oj-clickable-icon, -a.oj-clickable-icon-nocontext { - font-weight: normal; } - -a .oj-clickable-icon, -a.oj-clickable-icon, -a.oj-clickable-icon-nocontext, -a:visited .oj-clickable-icon, -a:visited.oj-clickable-icon, -a:visited.oj-clickable-icon-nocontext, -.oj-default .oj-clickable-icon, -.oj-default.oj-clickable-icon, -.oj-default.oj-clickable-icon-nocontext { - color: #8a8d8f; } - -a:hover .oj-clickable-icon, -a:hover.oj-clickable-icon, -a:hover.oj-clickable-icon-nocontext, -.oj-hover .oj-clickable-icon, -.oj-hover.oj-clickable-icon, -.oj-hover.oj-clickable-icon-nocontext { - color: #76b8e1; } - -a:active .oj-clickable-icon, -a:active.oj-clickable-icon, -a:active.oj-clickable-icon-nocontext, -.oj-active .oj-clickable-icon, -.oj-active.oj-clickable-icon, -.oj-active.oj-clickable-icon-nocontext { - color: #027bc7; } - -a.oj-selected .oj-clickable-icon, -a.oj-selected.oj-clickable-icon, -a.oj-selected.oj-clickable-icon-nocontext, -.oj-selected .oj-clickable-icon, -.oj-selected.oj-clickable-icon, -.oj-selected.oj-clickable-icon-nocontext { - color: #027bc7; } - -a.oj-disabled .oj-clickable-icon, -a.oj-disabled.oj-clickable-icon, -a.oj-disabled.oj-clickable-icon-nocontext, -.oj-disabled .oj-clickable-icon, -.oj-disabled a .oj-clickable-icon, -.oj-disabled.oj-clickable-icon, -.oj-disabled.oj-clickable-icon-nocontext { - color: #cbcccd; - opacity: 1; } - -.oj-fwk-icon-load:before, .oj-tree-loading .oj-tree-icon:before, -.oj-collapsed a.oj-tree-loading > .oj-tree-node-icon.oj-tree-icon:before, .oj-rowexpander-lazyload-icon:before, .oj-listview-expanding-icon:before { - content: url("../common/images/node_anim.gif"); } - -.oj-fwk-icon-status-confirmation, .oj-message-status-icon.oj-message-confirmation-icon, .oj-progressstatus-done-icon, .oj-fwk-icon-status-info, .oj-message-status-icon.oj-message-info-icon, .oj-fwk-icon-status-warning, .oj-message-status-icon.oj-message-warning-icon, .oj-fwk-icon-status-error, .oj-message-status-icon.oj-message-error-icon, .oj-progressstatus-error-icon, .oj-fwk-icon-folder-open, .oj-expanded:not(.oj-tree-type) > a .oj-tree-node-icon, .oj-expanded > .oj-treeview-item-content > .oj-treeview-item-icon, .oj-fwk-icon-folder-collapsed, .oj-collapsed:not(.oj-tree-type) > a .oj-tree-node-icon, .oj-collapsed > .oj-treeview-item-content > .oj-treeview-item-icon, .oj-fwk-icon-document, .oj-tree-leaf:not(.oj-tree-type) a .oj-tree-node-icon, .oj-treeview-leaf > .oj-treeview-item-content > .oj-treeview-item-icon { - font-size: 16px; } - -.oj-fwk-icon-status-error2, -.oj-fwk-icon-status-warning2, -.oj-fwk-icon-status-info2, -.oj-fwk-icon-status-confirmation2 { - font-size: 9px; } - -.oj-fwk-icon-cbsingle-hover-selected, .oj-selector:hover .oj-selector-wrapper.oj-selected { - background-image: url("images/sprites/sprite.svg"); - background-size: 968px 44px; - background-position: -2px -2px; - width: 16px; - height: 16px; } - -.oj-hicontrast .oj-fwk-icon-cbsingle-hover-selected, .oj-hicontrast .oj-selector:hover .oj-selector-wrapper.oj-selected, .oj-selector:hover .oj-hicontrast .oj-selector-wrapper.oj-selected { - background-image: none; } - -.oj-hicontrast .oj-fwk-icon-cbsingle-hover-selected:before, .oj-hicontrast .oj-selector:hover .oj-selector-wrapper.oj-selected:before, .oj-selector:hover .oj-hicontrast .oj-selector-wrapper.oj-selected:before { - content: url("images/cbsingle_hover_selected.svg"); - width: 100%; - height: 100%; } - -/* autoprefixer: ignore next */ -@media print, (max-resolution: 0.99dppx) { - .oj-fwk-icon-cbsingle-hover-selected, .oj-selector:hover .oj-selector-wrapper.oj-selected { - background-image: none; } - .oj-fwk-icon-cbsingle-hover-selected:before, .oj-selector:hover .oj-selector-wrapper.oj-selected:before { - content: url("images/cbsingle_hover_selected.svg"); - width: 100%; - height: 100%; } } - -.oj-fwk-icon-cbsingle-hover-unselected, .oj-selector:hover .oj-selector-wrapper:not(.oj-selected) { - background-image: url("images/sprites/sprite.svg"); - background-size: 968px 44px; - background-position: -22px -2px; - width: 16px; - height: 16px; } - -.oj-hicontrast .oj-fwk-icon-cbsingle-hover-unselected, .oj-hicontrast .oj-selector:hover .oj-selector-wrapper:not(.oj-selected), .oj-selector:hover .oj-hicontrast .oj-selector-wrapper:not(.oj-selected) { - background-image: none; } - -.oj-hicontrast .oj-fwk-icon-cbsingle-hover-unselected:before, .oj-hicontrast .oj-selector:hover .oj-selector-wrapper:not(.oj-selected):before, .oj-selector:hover .oj-hicontrast .oj-selector-wrapper:not(.oj-selected):before { - content: url("images/cbsingle_hover_unselected.svg"); - width: 100%; - height: 100%; } - -/* autoprefixer: ignore next */ -@media print, (max-resolution: 0.99dppx) { - .oj-fwk-icon-cbsingle-hover-unselected, .oj-selector:hover .oj-selector-wrapper:not(.oj-selected) { - background-image: none; } - .oj-fwk-icon-cbsingle-hover-unselected:before, .oj-selector:hover .oj-selector-wrapper:not(.oj-selected):before { - content: url("images/cbsingle_hover_unselected.svg"); - width: 100%; - height: 100%; } } - -.oj-fwk-icon-checkbox-dis-selected, .oj-menucheckbox-icon.oj-selected.oj-disabled::after, .oj-checkboxset .oj-disabled.oj-selected .oj-radiocheckbox-icon { - background-image: url("images/sprites/sprite.svg"); - background-size: 968px 44px; - background-position: -42px -2px; - width: 16px; - height: 16px; } - -.oj-hicontrast .oj-fwk-icon-checkbox-dis-selected, .oj-hicontrast .oj-menucheckbox-icon.oj-selected.oj-disabled::after, .oj-hicontrast .oj-checkboxset .oj-disabled.oj-selected .oj-radiocheckbox-icon, .oj-checkboxset .oj-disabled.oj-selected .oj-hicontrast .oj-radiocheckbox-icon { - background-image: none; } - -.oj-hicontrast .oj-fwk-icon-checkbox-dis-selected:before, .oj-hicontrast .oj-checkboxset .oj-disabled.oj-selected .oj-radiocheckbox-icon:before, .oj-checkboxset .oj-disabled.oj-selected .oj-hicontrast .oj-radiocheckbox-icon:before { - content: url("images/checkbox_dis_selected.svg"); - width: 100%; - height: 100%; } - -/* autoprefixer: ignore next */ -@media print, (max-resolution: 0.99dppx) { - .oj-fwk-icon-checkbox-dis-selected, .oj-menucheckbox-icon.oj-selected.oj-disabled::after, .oj-checkboxset .oj-disabled.oj-selected .oj-radiocheckbox-icon { - background-image: none; } - .oj-fwk-icon-checkbox-dis-selected:before, .oj-checkboxset .oj-disabled.oj-selected .oj-radiocheckbox-icon:before { - content: url("images/checkbox_dis_selected.svg"); - width: 100%; - height: 100%; } } - -.oj-fwk-icon-checkbox-dis-unselected, .oj-menucheckbox-icon.oj-disabled::after, .oj-checkboxset .oj-disabled .oj-radiocheckbox-icon { - background-image: url("images/sprites/sprite.svg"); - background-size: 968px 44px; - background-position: -62px -2px; - width: 16px; - height: 16px; } - -.oj-hicontrast .oj-fwk-icon-checkbox-dis-unselected, .oj-hicontrast .oj-menucheckbox-icon.oj-disabled::after, .oj-hicontrast .oj-checkboxset .oj-disabled .oj-radiocheckbox-icon, .oj-checkboxset .oj-disabled .oj-hicontrast .oj-radiocheckbox-icon { - background-image: none; } - -.oj-hicontrast .oj-fwk-icon-checkbox-dis-unselected:before, .oj-hicontrast .oj-checkboxset .oj-disabled .oj-radiocheckbox-icon:before, .oj-checkboxset .oj-disabled .oj-hicontrast .oj-radiocheckbox-icon:before { - content: url("images/checkbox_dis_unselected.svg"); - width: 100%; - height: 100%; } - -/* autoprefixer: ignore next */ -@media print, (max-resolution: 0.99dppx) { - .oj-fwk-icon-checkbox-dis-unselected, .oj-menucheckbox-icon.oj-disabled::after, .oj-checkboxset .oj-disabled .oj-radiocheckbox-icon { - background-image: none; } - .oj-fwk-icon-checkbox-dis-unselected:before, .oj-checkboxset .oj-disabled .oj-radiocheckbox-icon:before { - content: url("images/checkbox_dis_unselected.svg"); - width: 100%; - height: 100%; } } - -.oj-fwk-icon-checkbox-ena-selected, .oj-menucheckbox-icon.oj-selected::after, .oj-checkboxset .oj-selected .oj-radiocheckbox-icon { - background-image: url("images/sprites/sprite.svg"); - background-size: 968px 44px; - background-position: -82px -2px; - width: 16px; - height: 16px; } - -.oj-hicontrast .oj-fwk-icon-checkbox-ena-selected, .oj-hicontrast .oj-menucheckbox-icon.oj-selected::after, .oj-hicontrast .oj-checkboxset .oj-selected .oj-radiocheckbox-icon, .oj-checkboxset .oj-selected .oj-hicontrast .oj-radiocheckbox-icon { - background-image: none; } - -.oj-hicontrast .oj-fwk-icon-checkbox-ena-selected:before, .oj-hicontrast .oj-checkboxset .oj-selected .oj-radiocheckbox-icon:before, .oj-checkboxset .oj-selected .oj-hicontrast .oj-radiocheckbox-icon:before { - content: url("images/checkbox_ena_selected.svg"); - width: 100%; - height: 100%; } - -/* autoprefixer: ignore next */ -@media print, (max-resolution: 0.99dppx) { - .oj-fwk-icon-checkbox-ena-selected, .oj-menucheckbox-icon.oj-selected::after, .oj-checkboxset .oj-selected .oj-radiocheckbox-icon { - background-image: none; } - .oj-fwk-icon-checkbox-ena-selected:before, .oj-checkboxset .oj-selected .oj-radiocheckbox-icon:before { - content: url("images/checkbox_ena_selected.svg"); - width: 100%; - height: 100%; } } - -.oj-fwk-icon-checkbox-ena-unselected, .oj-menucheckbox-icon::after, .oj-checkboxset .oj-radiocheckbox-icon { - background-image: url("images/sprites/sprite.svg"); - background-size: 968px 44px; - background-position: -102px -2px; - width: 16px; - height: 16px; } - -.oj-hicontrast .oj-fwk-icon-checkbox-ena-unselected, .oj-hicontrast .oj-menucheckbox-icon::after, .oj-hicontrast .oj-checkboxset .oj-radiocheckbox-icon, .oj-checkboxset .oj-hicontrast .oj-radiocheckbox-icon { - background-image: none; } - -.oj-hicontrast .oj-fwk-icon-checkbox-ena-unselected:before, .oj-hicontrast .oj-checkboxset .oj-radiocheckbox-icon:before, .oj-checkboxset .oj-hicontrast .oj-radiocheckbox-icon:before { - content: url("images/checkbox_ena_unselected.svg"); - width: 100%; - height: 100%; } - -/* autoprefixer: ignore next */ -@media print, (max-resolution: 0.99dppx) { - .oj-fwk-icon-checkbox-ena-unselected, .oj-menucheckbox-icon::after, .oj-checkboxset .oj-radiocheckbox-icon { - background-image: none; } - .oj-fwk-icon-checkbox-ena-unselected:before, .oj-checkboxset .oj-radiocheckbox-icon:before { - content: url("images/checkbox_ena_unselected.svg"); - width: 100%; - height: 100%; } } - -.oj-fwk-icon-checkbox-pressed-selected, .oj-checkboxset-wrapper > .oj-active.oj-selected .oj-radiocheckbox-icon, .oj-selector:active .oj-selector-wrapper.oj-selected { - background-image: url("images/sprites/sprite.svg"); - background-size: 968px 44px; - background-position: -122px -2px; - width: 16px; - height: 16px; } - -.oj-hicontrast .oj-fwk-icon-checkbox-pressed-selected, .oj-hicontrast .oj-checkboxset-wrapper > .oj-active.oj-selected .oj-radiocheckbox-icon, .oj-checkboxset-wrapper > .oj-active.oj-selected .oj-hicontrast .oj-radiocheckbox-icon, .oj-hicontrast .oj-selector:active .oj-selector-wrapper.oj-selected, .oj-selector:active .oj-hicontrast .oj-selector-wrapper.oj-selected { - background-image: none; } - -.oj-hicontrast .oj-fwk-icon-checkbox-pressed-selected:before, .oj-hicontrast .oj-checkboxset-wrapper > .oj-active.oj-selected .oj-radiocheckbox-icon:before, .oj-checkboxset-wrapper > .oj-active.oj-selected .oj-hicontrast .oj-radiocheckbox-icon:before, .oj-hicontrast .oj-selector:active .oj-selector-wrapper.oj-selected:before, .oj-selector:active .oj-hicontrast .oj-selector-wrapper.oj-selected:before { - content: url("images/checkbox_pressed_selected.svg"); - width: 100%; - height: 100%; } - -/* autoprefixer: ignore next */ -@media print, (max-resolution: 0.99dppx) { - .oj-fwk-icon-checkbox-pressed-selected, .oj-checkboxset-wrapper > .oj-active.oj-selected .oj-radiocheckbox-icon, .oj-selector:active .oj-selector-wrapper.oj-selected { - background-image: none; } - .oj-fwk-icon-checkbox-pressed-selected:before, .oj-checkboxset-wrapper > .oj-active.oj-selected .oj-radiocheckbox-icon:before, .oj-selector:active .oj-selector-wrapper.oj-selected:before { - content: url("images/checkbox_pressed_selected.svg"); - width: 100%; - height: 100%; } } - -.oj-fwk-icon-checkbox-pressed-unselected, .oj-checkboxset-wrapper > .oj-active .oj-radiocheckbox-icon, .oj-selector:active .oj-selector-wrapper:not(.oj-selected) { - background-image: url("images/sprites/sprite.svg"); - background-size: 968px 44px; - background-position: -142px -2px; - width: 16px; - height: 16px; } - -.oj-hicontrast .oj-fwk-icon-checkbox-pressed-unselected, .oj-hicontrast .oj-checkboxset-wrapper > .oj-active .oj-radiocheckbox-icon, .oj-checkboxset-wrapper > .oj-active .oj-hicontrast .oj-radiocheckbox-icon, .oj-hicontrast .oj-selector:active .oj-selector-wrapper:not(.oj-selected), .oj-selector:active .oj-hicontrast .oj-selector-wrapper:not(.oj-selected) { - background-image: none; } - -.oj-hicontrast .oj-fwk-icon-checkbox-pressed-unselected:before, .oj-hicontrast .oj-checkboxset-wrapper > .oj-active .oj-radiocheckbox-icon:before, .oj-checkboxset-wrapper > .oj-active .oj-hicontrast .oj-radiocheckbox-icon:before, .oj-hicontrast .oj-selector:active .oj-selector-wrapper:not(.oj-selected):before, .oj-selector:active .oj-hicontrast .oj-selector-wrapper:not(.oj-selected):before { - content: url("images/checkbox_pressed_unselected.svg"); - width: 100%; - height: 100%; } - -/* autoprefixer: ignore next */ -@media print, (max-resolution: 0.99dppx) { - .oj-fwk-icon-checkbox-pressed-unselected, .oj-checkboxset-wrapper > .oj-active .oj-radiocheckbox-icon, .oj-selector:active .oj-selector-wrapper:not(.oj-selected) { - background-image: none; } - .oj-fwk-icon-checkbox-pressed-unselected:before, .oj-checkboxset-wrapper > .oj-active .oj-radiocheckbox-icon:before, .oj-selector:active .oj-selector-wrapper:not(.oj-selected):before { - content: url("images/checkbox_pressed_unselected.svg"); - width: 100%; - height: 100%; } } - -.oj-fwk-icon-checkbox-tristate-partial { - background-image: url("images/sprites/sprite.svg"); - background-size: 968px 44px; - background-position: -162px -2px; - width: 16px; - height: 16px; } - -.oj-hicontrast .oj-fwk-icon-checkbox-tristate-partial { - background-image: none; } - -.oj-hicontrast .oj-fwk-icon-checkbox-tristate-partial:before { - content: url("images/checkbox_tristate_partial.svg"); - width: 100%; - height: 100%; } - -/* autoprefixer: ignore next */ -@media print, (max-resolution: 0.99dppx) { - .oj-fwk-icon-checkbox-tristate-partial { - background-image: none; } - .oj-fwk-icon-checkbox-tristate-partial:before { - content: url("images/checkbox_tristate_partial.svg"); - width: 100%; - height: 100%; } } - -.oj-fwk-icon-checkbox-tristate-selected, .oj-selector .oj-selector-wrapper.oj-selected { - background-image: url("images/sprites/sprite.svg"); - background-size: 968px 44px; - background-position: -182px -2px; - width: 16px; - height: 16px; } - -.oj-hicontrast .oj-fwk-icon-checkbox-tristate-selected, .oj-hicontrast .oj-selector .oj-selector-wrapper.oj-selected, .oj-selector .oj-hicontrast .oj-selector-wrapper.oj-selected { - background-image: none; } - -.oj-hicontrast .oj-fwk-icon-checkbox-tristate-selected:before, .oj-hicontrast .oj-selector .oj-selector-wrapper.oj-selected:before, .oj-selector .oj-hicontrast .oj-selector-wrapper.oj-selected:before { - content: url("images/checkbox_tristate_selected.svg"); - width: 100%; - height: 100%; } - -/* autoprefixer: ignore next */ -@media print, (max-resolution: 0.99dppx) { - .oj-fwk-icon-checkbox-tristate-selected, .oj-selector .oj-selector-wrapper.oj-selected { - background-image: none; } - .oj-fwk-icon-checkbox-tristate-selected:before, .oj-selector .oj-selector-wrapper.oj-selected:before { - content: url("images/checkbox_tristate_selected.svg"); - width: 100%; - height: 100%; } } - -.oj-fwk-icon-checkbox-tristate-unselected, .oj-selector .oj-selector-wrapper:not(.oj-selected) { - background-image: url("images/sprites/sprite.svg"); - background-size: 968px 44px; - background-position: -202px -2px; - width: 16px; - height: 16px; } - -.oj-hicontrast .oj-fwk-icon-checkbox-tristate-unselected, .oj-hicontrast .oj-selector .oj-selector-wrapper:not(.oj-selected), .oj-selector .oj-hicontrast .oj-selector-wrapper:not(.oj-selected) { - background-image: none; } - -.oj-hicontrast .oj-fwk-icon-checkbox-tristate-unselected:before, .oj-hicontrast .oj-selector .oj-selector-wrapper:not(.oj-selected):before, .oj-selector .oj-hicontrast .oj-selector-wrapper:not(.oj-selected):before { - content: url("images/checkbox_tristate_unselected.svg"); - width: 100%; - height: 100%; } - -/* autoprefixer: ignore next */ -@media print, (max-resolution: 0.99dppx) { - .oj-fwk-icon-checkbox-tristate-unselected, .oj-selector .oj-selector-wrapper:not(.oj-selected) { - background-image: none; } - .oj-fwk-icon-checkbox-tristate-unselected:before, .oj-selector .oj-selector-wrapper:not(.oj-selected):before { - content: url("images/checkbox_tristate_unselected.svg"); - width: 100%; - height: 100%; } } - -.oj-fwk-icon-checkmark-blue, .oj-train-button.oj-visited::before { - background-image: url("images/sprites/sprite.svg"); - background-size: 968px 44px; - background-position: -222px -2px; - width: 16px; - height: 16px; } - -.oj-hicontrast .oj-fwk-icon-checkmark-blue, .oj-hicontrast .oj-train-button.oj-visited::before { - background-image: none; } - -.oj-hicontrast .oj-fwk-icon-checkmark-blue:before { - content: url("images/checkmark_blue.svg"); - width: 100%; - height: 100%; } - -/* autoprefixer: ignore next */ -@media print, (max-resolution: 0.99dppx) { - .oj-fwk-icon-checkmark-blue, .oj-train-button.oj-visited::before { - background-image: none; } - .oj-fwk-icon-checkmark-blue:before { - content: url("images/checkmark_blue.svg"); - width: 100%; - height: 100%; } } - -.oj-fwk-icon-checkmark-white, .oj-train-button.oj-hover.oj-visited::before { - background-image: url("images/sprites/sprite.svg"); - background-size: 968px 44px; - background-position: -242px -2px; - width: 16px; - height: 16px; } - -.oj-hicontrast .oj-fwk-icon-checkmark-white, .oj-hicontrast .oj-train-button.oj-hover.oj-visited::before { - background-image: none; } - -.oj-hicontrast .oj-fwk-icon-checkmark-white:before { - content: url("images/checkmark_white.svg"); - width: 100%; - height: 100%; } - -/* autoprefixer: ignore next */ -@media print, (max-resolution: 0.99dppx) { - .oj-fwk-icon-checkmark-white, .oj-train-button.oj-hover.oj-visited::before { - background-image: none; } - .oj-fwk-icon-checkmark-white:before { - content: url("images/checkmark_white.svg"); - width: 100%; - height: 100%; } } - -.oj-fwk-icon-move-handle, .oj-listview-drag-handle { - background-image: url("images/sprites/sprite.svg"); - background-size: 968px 44px; - background-position: -262px -2px; - width: 28px; - height: 15px; } - -.oj-hicontrast .oj-fwk-icon-move-handle, .oj-hicontrast .oj-listview-drag-handle { - background-image: none; } - -.oj-hicontrast .oj-fwk-icon-move-handle:before, .oj-hicontrast .oj-listview-drag-handle:before { - content: url("images/move_handle.svg"); - width: 100%; - height: 100%; } - -/* autoprefixer: ignore next */ -@media print, (max-resolution: 0.99dppx) { - .oj-fwk-icon-move-handle, .oj-listview-drag-handle { - background-image: none; } - .oj-fwk-icon-move-handle:before, .oj-listview-drag-handle:before { - content: url("images/move_handle.svg"); - width: 100%; - height: 100%; } } - -.oj-fwk-icon-radio-dis-selected, .oj-radioset .oj-disabled.oj-selected .oj-radiocheckbox-icon { - background-image: url("images/sprites/sprite.svg"); - background-size: 968px 44px; - background-position: -294px -2px; - width: 16px; - height: 16px; } - -.oj-hicontrast .oj-fwk-icon-radio-dis-selected, .oj-hicontrast .oj-radioset .oj-disabled.oj-selected .oj-radiocheckbox-icon, .oj-radioset .oj-disabled.oj-selected .oj-hicontrast .oj-radiocheckbox-icon { - background-image: none; } - -.oj-hicontrast .oj-fwk-icon-radio-dis-selected:before, .oj-hicontrast .oj-radioset .oj-disabled.oj-selected .oj-radiocheckbox-icon:before, .oj-radioset .oj-disabled.oj-selected .oj-hicontrast .oj-radiocheckbox-icon:before { - content: url("images/radio_dis_selected.svg"); - width: 100%; - height: 100%; } - -/* autoprefixer: ignore next */ -@media print, (max-resolution: 0.99dppx) { - .oj-fwk-icon-radio-dis-selected, .oj-radioset .oj-disabled.oj-selected .oj-radiocheckbox-icon { - background-image: none; } - .oj-fwk-icon-radio-dis-selected:before, .oj-radioset .oj-disabled.oj-selected .oj-radiocheckbox-icon:before { - content: url("images/radio_dis_selected.svg"); - width: 100%; - height: 100%; } } - -.oj-fwk-icon-radio-dis-unselected, .oj-radioset .oj-disabled .oj-radiocheckbox-icon { - background-image: url("images/sprites/sprite.svg"); - background-size: 968px 44px; - background-position: -314px -2px; - width: 16px; - height: 16px; } - -.oj-hicontrast .oj-fwk-icon-radio-dis-unselected, .oj-hicontrast .oj-radioset .oj-disabled .oj-radiocheckbox-icon, .oj-radioset .oj-disabled .oj-hicontrast .oj-radiocheckbox-icon { - background-image: none; } - -.oj-hicontrast .oj-fwk-icon-radio-dis-unselected:before, .oj-hicontrast .oj-radioset .oj-disabled .oj-radiocheckbox-icon:before, .oj-radioset .oj-disabled .oj-hicontrast .oj-radiocheckbox-icon:before { - content: url("images/radio_dis_unselected.svg"); - width: 100%; - height: 100%; } - -/* autoprefixer: ignore next */ -@media print, (max-resolution: 0.99dppx) { - .oj-fwk-icon-radio-dis-unselected, .oj-radioset .oj-disabled .oj-radiocheckbox-icon { - background-image: none; } - .oj-fwk-icon-radio-dis-unselected:before, .oj-radioset .oj-disabled .oj-radiocheckbox-icon:before { - content: url("images/radio_dis_unselected.svg"); - width: 100%; - height: 100%; } } - -.oj-fwk-icon-radio-ena-selected, .oj-radioset .oj-selected .oj-radiocheckbox-icon { - background-image: url("images/sprites/sprite.svg"); - background-size: 968px 44px; - background-position: -334px -2px; - width: 16px; - height: 16px; } - -.oj-hicontrast .oj-fwk-icon-radio-ena-selected, .oj-hicontrast .oj-radioset .oj-selected .oj-radiocheckbox-icon, .oj-radioset .oj-selected .oj-hicontrast .oj-radiocheckbox-icon { - background-image: none; } - -.oj-hicontrast .oj-fwk-icon-radio-ena-selected:before, .oj-hicontrast .oj-radioset .oj-selected .oj-radiocheckbox-icon:before, .oj-radioset .oj-selected .oj-hicontrast .oj-radiocheckbox-icon:before { - content: url("images/radio_ena_selected.svg"); - width: 100%; - height: 100%; } - -/* autoprefixer: ignore next */ -@media print, (max-resolution: 0.99dppx) { - .oj-fwk-icon-radio-ena-selected, .oj-radioset .oj-selected .oj-radiocheckbox-icon { - background-image: none; } - .oj-fwk-icon-radio-ena-selected:before, .oj-radioset .oj-selected .oj-radiocheckbox-icon:before { - content: url("images/radio_ena_selected.svg"); - width: 100%; - height: 100%; } } - -.oj-fwk-icon-radio-ena-unselected, .oj-radioset .oj-radiocheckbox-icon { - background-image: url("images/sprites/sprite.svg"); - background-size: 968px 44px; - background-position: -354px -2px; - width: 16px; - height: 16px; } - -.oj-hicontrast .oj-fwk-icon-radio-ena-unselected, .oj-hicontrast .oj-radioset .oj-radiocheckbox-icon, .oj-radioset .oj-hicontrast .oj-radiocheckbox-icon { - background-image: none; } - -.oj-hicontrast .oj-fwk-icon-radio-ena-unselected:before, .oj-hicontrast .oj-radioset .oj-radiocheckbox-icon:before, .oj-radioset .oj-hicontrast .oj-radiocheckbox-icon:before { - content: url("images/radio_ena_unselected.svg"); - width: 100%; - height: 100%; } - -/* autoprefixer: ignore next */ -@media print, (max-resolution: 0.99dppx) { - .oj-fwk-icon-radio-ena-unselected, .oj-radioset .oj-radiocheckbox-icon { - background-image: none; } - .oj-fwk-icon-radio-ena-unselected:before, .oj-radioset .oj-radiocheckbox-icon:before { - content: url("images/radio_ena_unselected.svg"); - width: 100%; - height: 100%; } } - -.oj-fwk-icon-radio-pressed-selected, .oj-radioset-wrapper > .oj-selected.oj-active .oj-radiocheckbox-icon { - background-image: url("images/sprites/sprite.svg"); - background-size: 968px 44px; - background-position: -374px -2px; - width: 16px; - height: 16px; } - -.oj-hicontrast .oj-fwk-icon-radio-pressed-selected, .oj-hicontrast .oj-radioset-wrapper > .oj-selected.oj-active .oj-radiocheckbox-icon, .oj-radioset-wrapper > .oj-selected.oj-active .oj-hicontrast .oj-radiocheckbox-icon { - background-image: none; } - -.oj-hicontrast .oj-fwk-icon-radio-pressed-selected:before, .oj-hicontrast .oj-radioset-wrapper > .oj-selected.oj-active .oj-radiocheckbox-icon:before, .oj-radioset-wrapper > .oj-selected.oj-active .oj-hicontrast .oj-radiocheckbox-icon:before { - content: url("images/radio_pressed_selected.svg"); - width: 100%; - height: 100%; } - -/* autoprefixer: ignore next */ -@media print, (max-resolution: 0.99dppx) { - .oj-fwk-icon-radio-pressed-selected, .oj-radioset-wrapper > .oj-selected.oj-active .oj-radiocheckbox-icon { - background-image: none; } - .oj-fwk-icon-radio-pressed-selected:before, .oj-radioset-wrapper > .oj-selected.oj-active .oj-radiocheckbox-icon:before { - content: url("images/radio_pressed_selected.svg"); - width: 100%; - height: 100%; } } - -.oj-fwk-icon-radio-pressed-unselected, .oj-radioset-wrapper > .oj-active .oj-radiocheckbox-icon { - background-image: url("images/sprites/sprite.svg"); - background-size: 968px 44px; - background-position: -394px -2px; - width: 16px; - height: 16px; } - -.oj-hicontrast .oj-fwk-icon-radio-pressed-unselected, .oj-hicontrast .oj-radioset-wrapper > .oj-active .oj-radiocheckbox-icon, .oj-radioset-wrapper > .oj-active .oj-hicontrast .oj-radiocheckbox-icon { - background-image: none; } - -.oj-hicontrast .oj-fwk-icon-radio-pressed-unselected:before, .oj-hicontrast .oj-radioset-wrapper > .oj-active .oj-radiocheckbox-icon:before, .oj-radioset-wrapper > .oj-active .oj-hicontrast .oj-radiocheckbox-icon:before { - content: url("images/radio_pressed_unselected.svg"); - width: 100%; - height: 100%; } - -/* autoprefixer: ignore next */ -@media print, (max-resolution: 0.99dppx) { - .oj-fwk-icon-radio-pressed-unselected, .oj-radioset-wrapper > .oj-active .oj-radiocheckbox-icon { - background-image: none; } - .oj-fwk-icon-radio-pressed-unselected:before, .oj-radioset-wrapper > .oj-active .oj-radiocheckbox-icon:before { - content: url("images/radio_pressed_unselected.svg"); - width: 100%; - height: 100%; } } - -.oj-fwk-icon-spinner-00, .oj-pulltorefresh-icon-initial { - background-image: url("images/sprites/sprite.svg"); - background-size: 968px 44px; - background-position: -414px -2px; - width: 40px; - height: 40px; } - -.oj-hicontrast .oj-fwk-icon-spinner-00, .oj-hicontrast .oj-pulltorefresh-icon-initial { - background-image: none; } - -.oj-hicontrast .oj-fwk-icon-spinner-00:before, .oj-hicontrast .oj-pulltorefresh-icon-initial:before { - content: url("images/spinner_00.svg"); - width: 100%; - height: 100%; } - -/* autoprefixer: ignore next */ -@media print, (max-resolution: 0.99dppx) { - .oj-fwk-icon-spinner-00, .oj-pulltorefresh-icon-initial { - background-image: none; } - .oj-fwk-icon-spinner-00:before, .oj-pulltorefresh-icon-initial:before { - content: url("images/spinner_00.svg"); - width: 100%; - height: 100%; } } - -.oj-fwk-icon-spinner-10, .oj-pulltorefresh-icon-10-percent { - background-image: url("images/sprites/sprite.svg"); - background-size: 968px 44px; - background-position: -458px -2px; - width: 40px; - height: 40px; } - -.oj-hicontrast .oj-fwk-icon-spinner-10, .oj-hicontrast .oj-pulltorefresh-icon-10-percent { - background-image: none; } - -.oj-hicontrast .oj-fwk-icon-spinner-10:before, .oj-hicontrast .oj-pulltorefresh-icon-10-percent:before { - content: url("images/spinner_10.svg"); - width: 100%; - height: 100%; } - -/* autoprefixer: ignore next */ -@media print, (max-resolution: 0.99dppx) { - .oj-fwk-icon-spinner-10, .oj-pulltorefresh-icon-10-percent { - background-image: none; } - .oj-fwk-icon-spinner-10:before, .oj-pulltorefresh-icon-10-percent:before { - content: url("images/spinner_10.svg"); - width: 100%; - height: 100%; } } - -.oj-fwk-icon-spinner-20, .oj-pulltorefresh-icon-20-percent { - background-image: url("images/sprites/sprite.svg"); - background-size: 968px 44px; - background-position: -502px -2px; - width: 40px; - height: 40px; } - -.oj-hicontrast .oj-fwk-icon-spinner-20, .oj-hicontrast .oj-pulltorefresh-icon-20-percent { - background-image: none; } - -.oj-hicontrast .oj-fwk-icon-spinner-20:before, .oj-hicontrast .oj-pulltorefresh-icon-20-percent:before { - content: url("images/spinner_20.svg"); - width: 100%; - height: 100%; } - -/* autoprefixer: ignore next */ -@media print, (max-resolution: 0.99dppx) { - .oj-fwk-icon-spinner-20, .oj-pulltorefresh-icon-20-percent { - background-image: none; } - .oj-fwk-icon-spinner-20:before, .oj-pulltorefresh-icon-20-percent:before { - content: url("images/spinner_20.svg"); - width: 100%; - height: 100%; } } - -.oj-fwk-icon-spinner-30, .oj-pulltorefresh-icon-30-percent { - background-image: url("images/sprites/sprite.svg"); - background-size: 968px 44px; - background-position: -546px -2px; - width: 40px; - height: 40px; } - -.oj-hicontrast .oj-fwk-icon-spinner-30, .oj-hicontrast .oj-pulltorefresh-icon-30-percent { - background-image: none; } - -.oj-hicontrast .oj-fwk-icon-spinner-30:before, .oj-hicontrast .oj-pulltorefresh-icon-30-percent:before { - content: url("images/spinner_30.svg"); - width: 100%; - height: 100%; } - -/* autoprefixer: ignore next */ -@media print, (max-resolution: 0.99dppx) { - .oj-fwk-icon-spinner-30, .oj-pulltorefresh-icon-30-percent { - background-image: none; } - .oj-fwk-icon-spinner-30:before, .oj-pulltorefresh-icon-30-percent:before { - content: url("images/spinner_30.svg"); - width: 100%; - height: 100%; } } - -.oj-fwk-icon-spinner-40, .oj-pulltorefresh-icon-40-percent { - background-image: url("images/sprites/sprite.svg"); - background-size: 968px 44px; - background-position: -590px -2px; - width: 40px; - height: 40px; } - -.oj-hicontrast .oj-fwk-icon-spinner-40, .oj-hicontrast .oj-pulltorefresh-icon-40-percent { - background-image: none; } - -.oj-hicontrast .oj-fwk-icon-spinner-40:before, .oj-hicontrast .oj-pulltorefresh-icon-40-percent:before { - content: url("images/spinner_40.svg"); - width: 100%; - height: 100%; } - -/* autoprefixer: ignore next */ -@media print, (max-resolution: 0.99dppx) { - .oj-fwk-icon-spinner-40, .oj-pulltorefresh-icon-40-percent { - background-image: none; } - .oj-fwk-icon-spinner-40:before, .oj-pulltorefresh-icon-40-percent:before { - content: url("images/spinner_40.svg"); - width: 100%; - height: 100%; } } - -.oj-fwk-icon-spinner-50, .oj-pulltorefresh-icon-50-percent { - background-image: url("images/sprites/sprite.svg"); - background-size: 968px 44px; - background-position: -634px -2px; - width: 40px; - height: 40px; } - -.oj-hicontrast .oj-fwk-icon-spinner-50, .oj-hicontrast .oj-pulltorefresh-icon-50-percent { - background-image: none; } - -.oj-hicontrast .oj-fwk-icon-spinner-50:before, .oj-hicontrast .oj-pulltorefresh-icon-50-percent:before { - content: url("images/spinner_50.svg"); - width: 100%; - height: 100%; } - -/* autoprefixer: ignore next */ -@media print, (max-resolution: 0.99dppx) { - .oj-fwk-icon-spinner-50, .oj-pulltorefresh-icon-50-percent { - background-image: none; } - .oj-fwk-icon-spinner-50:before, .oj-pulltorefresh-icon-50-percent:before { - content: url("images/spinner_50.svg"); - width: 100%; - height: 100%; } } - -.oj-fwk-icon-spinner-60, .oj-pulltorefresh-icon-60-percent { - background-image: url("images/sprites/sprite.svg"); - background-size: 968px 44px; - background-position: -678px -2px; - width: 40px; - height: 40px; } - -.oj-hicontrast .oj-fwk-icon-spinner-60, .oj-hicontrast .oj-pulltorefresh-icon-60-percent { - background-image: none; } - -.oj-hicontrast .oj-fwk-icon-spinner-60:before, .oj-hicontrast .oj-pulltorefresh-icon-60-percent:before { - content: url("images/spinner_60.svg"); - width: 100%; - height: 100%; } - -/* autoprefixer: ignore next */ -@media print, (max-resolution: 0.99dppx) { - .oj-fwk-icon-spinner-60, .oj-pulltorefresh-icon-60-percent { - background-image: none; } - .oj-fwk-icon-spinner-60:before, .oj-pulltorefresh-icon-60-percent:before { - content: url("images/spinner_60.svg"); - width: 100%; - height: 100%; } } - -.oj-fwk-icon-spinner-70, .oj-pulltorefresh-icon-70-percent { - background-image: url("images/sprites/sprite.svg"); - background-size: 968px 44px; - background-position: -722px -2px; - width: 40px; - height: 40px; } - -.oj-hicontrast .oj-fwk-icon-spinner-70, .oj-hicontrast .oj-pulltorefresh-icon-70-percent { - background-image: none; } - -.oj-hicontrast .oj-fwk-icon-spinner-70:before, .oj-hicontrast .oj-pulltorefresh-icon-70-percent:before { - content: url("images/spinner_70.svg"); - width: 100%; - height: 100%; } - -/* autoprefixer: ignore next */ -@media print, (max-resolution: 0.99dppx) { - .oj-fwk-icon-spinner-70, .oj-pulltorefresh-icon-70-percent { - background-image: none; } - .oj-fwk-icon-spinner-70:before, .oj-pulltorefresh-icon-70-percent:before { - content: url("images/spinner_70.svg"); - width: 100%; - height: 100%; } } - -.oj-fwk-icon-spinner-80, .oj-pulltorefresh-icon-80-percent { - background-image: url("images/sprites/sprite.svg"); - background-size: 968px 44px; - background-position: -766px -2px; - width: 40px; - height: 40px; } - -.oj-hicontrast .oj-fwk-icon-spinner-80, .oj-hicontrast .oj-pulltorefresh-icon-80-percent { - background-image: none; } - -.oj-hicontrast .oj-fwk-icon-spinner-80:before, .oj-hicontrast .oj-pulltorefresh-icon-80-percent:before { - content: url("images/spinner_80.svg"); - width: 100%; - height: 100%; } - -/* autoprefixer: ignore next */ -@media print, (max-resolution: 0.99dppx) { - .oj-fwk-icon-spinner-80, .oj-pulltorefresh-icon-80-percent { - background-image: none; } - .oj-fwk-icon-spinner-80:before, .oj-pulltorefresh-icon-80-percent:before { - content: url("images/spinner_80.svg"); - width: 100%; - height: 100%; } } - -.oj-fwk-icon-spinner-90, .oj-pulltorefresh-icon-90-percent { - background-image: url("images/sprites/sprite.svg"); - background-size: 968px 44px; - background-position: -810px -2px; - width: 40px; - height: 40px; } - -.oj-hicontrast .oj-fwk-icon-spinner-90, .oj-hicontrast .oj-pulltorefresh-icon-90-percent { - background-image: none; } - -.oj-hicontrast .oj-fwk-icon-spinner-90:before, .oj-hicontrast .oj-pulltorefresh-icon-90-percent:before { - content: url("images/spinner_90.svg"); - width: 100%; - height: 100%; } - -/* autoprefixer: ignore next */ -@media print, (max-resolution: 0.99dppx) { - .oj-fwk-icon-spinner-90, .oj-pulltorefresh-icon-90-percent { - background-image: none; } - .oj-fwk-icon-spinner-90:before, .oj-pulltorefresh-icon-90-percent:before { - content: url("images/spinner_90.svg"); - width: 100%; - height: 100%; } } - -.oj-fwk-icon-spinner-static, .oj-progress-circle-overlay { - background-image: url("images/sprites/sprite.svg"); - background-size: 968px 44px; - background-position: -854px -2px; - width: 32px; - height: 32px; } - -.oj-hicontrast .oj-fwk-icon-spinner-static, .oj-hicontrast .oj-progress-circle-overlay { - background-image: none; } - -.oj-hicontrast .oj-fwk-icon-spinner-static:before, .oj-hicontrast .oj-progress-circle-overlay:before { - content: url("images/spinner_static.svg"); - width: 100%; - height: 100%; } - -/* autoprefixer: ignore next */ -@media print, (max-resolution: 0.99dppx) { - .oj-fwk-icon-spinner-static, .oj-progress-circle-overlay { - background-image: none; } - .oj-fwk-icon-spinner-static:before, .oj-progress-circle-overlay:before { - content: url("images/spinner_static.svg"); - width: 100%; - height: 100%; } } - -.oj-fwk-icon-status-confirmation, .oj-message-status-icon.oj-message-confirmation-icon, .oj-progressstatus-done-icon { - background-image: url("images/sprites/sprite.svg"); - background-size: 968px 44px; - background-position: -890px -2px; - width: 16px; - height: 16px; } - -.oj-hicontrast .oj-fwk-icon-status-confirmation, .oj-hicontrast .oj-message-status-icon.oj-message-confirmation-icon, .oj-hicontrast .oj-progressstatus-done-icon { - background-image: none; } - -.oj-hicontrast .oj-fwk-icon-status-confirmation:before, .oj-hicontrast .oj-message-status-icon.oj-message-confirmation-icon:before, .oj-hicontrast .oj-progressstatus-done-icon:before { - content: url("images/status_confirmation.svg"); - width: 100%; - height: 100%; } - -/* autoprefixer: ignore next */ -@media print, (max-resolution: 0.99dppx) { - .oj-fwk-icon-status-confirmation, .oj-message-status-icon.oj-message-confirmation-icon, .oj-progressstatus-done-icon { - background-image: none; } - .oj-fwk-icon-status-confirmation:before, .oj-message-status-icon.oj-message-confirmation-icon:before, .oj-progressstatus-done-icon:before { - content: url("images/status_confirmation.svg"); - width: 100%; - height: 100%; } } - -.oj-fwk-icon-status-error, .oj-message-status-icon.oj-message-error-icon, .oj-progressstatus-error-icon { - background-image: url("images/sprites/sprite.svg"); - background-size: 968px 44px; - background-position: -910px -2px; - width: 16px; - height: 16px; } - -.oj-hicontrast .oj-fwk-icon-status-error, .oj-hicontrast .oj-message-status-icon.oj-message-error-icon, .oj-hicontrast .oj-progressstatus-error-icon { - background-image: none; } - -.oj-hicontrast .oj-fwk-icon-status-error:before, .oj-hicontrast .oj-message-status-icon.oj-message-error-icon:before, .oj-hicontrast .oj-progressstatus-error-icon:before { - content: url("images/status_error.svg"); - width: 100%; - height: 100%; } - -/* autoprefixer: ignore next */ -@media print, (max-resolution: 0.99dppx) { - .oj-fwk-icon-status-error, .oj-message-status-icon.oj-message-error-icon, .oj-progressstatus-error-icon { - background-image: none; } - .oj-fwk-icon-status-error:before, .oj-message-status-icon.oj-message-error-icon:before, .oj-progressstatus-error-icon:before { - content: url("images/status_error.svg"); - width: 100%; - height: 100%; } } - -.oj-fwk-icon-status-info, .oj-message-status-icon.oj-message-info-icon { - background-image: url("images/sprites/sprite.svg"); - background-size: 968px 44px; - background-position: -930px -2px; - width: 16px; - height: 16px; } - -.oj-hicontrast .oj-fwk-icon-status-info, .oj-hicontrast .oj-message-status-icon.oj-message-info-icon { - background-image: none; } - -.oj-hicontrast .oj-fwk-icon-status-info:before, .oj-hicontrast .oj-message-status-icon.oj-message-info-icon:before { - content: url("images/status_info.svg"); - width: 100%; - height: 100%; } - -/* autoprefixer: ignore next */ -@media print, (max-resolution: 0.99dppx) { - .oj-fwk-icon-status-info, .oj-message-status-icon.oj-message-info-icon { - background-image: none; } - .oj-fwk-icon-status-info:before, .oj-message-status-icon.oj-message-info-icon:before { - content: url("images/status_info.svg"); - width: 100%; - height: 100%; } } - -.oj-fwk-icon-status-warning, .oj-message-status-icon.oj-message-warning-icon { - background-image: url("images/sprites/sprite.svg"); - background-size: 968px 44px; - background-position: -950px -2px; - width: 16px; - height: 16px; } - -.oj-hicontrast .oj-fwk-icon-status-warning, .oj-hicontrast .oj-message-status-icon.oj-message-warning-icon { - background-image: none; } - -.oj-hicontrast .oj-fwk-icon-status-warning:before, .oj-hicontrast .oj-message-status-icon.oj-message-warning-icon:before { - content: url("images/status_warning.svg"); - width: 100%; - height: 100%; } - -/* autoprefixer: ignore next */ -@media print, (max-resolution: 0.99dppx) { - .oj-fwk-icon-status-warning, .oj-message-status-icon.oj-message-warning-icon { - background-image: none; } - .oj-fwk-icon-status-warning:before, .oj-message-status-icon.oj-message-warning-icon:before { - content: url("images/status_warning.svg"); - width: 100%; - height: 100%; } } - -/* resizable */ -/* --------------------------------------------------------------- */ -.oj-resizable { - position: relative; } - -.oj-resizable-handle { - position: absolute; - font-size: 0.1px; - display: block; - z-index: 900; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; } - -.oj-resizable-disabled .oj-resizable-handle, -.oj-resizable-autohide .oj-resizable-handle { - display: none; } - -.oj-resizable-n { - cursor: n-resize; - height: 7px; - width: 100%; - top: -5px; - left: 0; } - -.oj-resizable-s { - cursor: s-resize; - height: 7px; - width: 100%; - bottom: -5px; - left: 0; } - -.oj-resizable-e { - cursor: e-resize; - width: 7px; - right: -5px; - top: 0; - height: 100%; } - -.oj-resizable-w { - cursor: w-resize; - width: 7px; - left: -5px; - top: 0; - height: 100%; } - -.oj-resizable-se { - cursor: se-resize; - width: 12px; - height: 12px; - right: 1px; - bottom: 1px; } - -.oj-resizable-sw { - cursor: sw-resize; - width: 9px; - height: 9px; - left: -5px; - bottom: -5px; } - -.oj-resizable-nw { - cursor: nw-resize; - width: 9px; - height: 9px; - left: -5px; - top: -5px; } - -.oj-resizable-ne { - cursor: ne-resize; - width: 9px; - height: 9px; - right: -5px; - top: -5px; } - -.oj-panel { - border: 1px solid #e0e1e1; - background-color: white; - border-radius: 1px; - padding: 0.85714rem; - box-sizing: border-box; - overflow: hidden; - position: relative; } - -.oj-panel-alt1 { - background-color: #f2f2f3; - border-color: #e0e1e1; } - -.oj-panel-alt2 { - background-color: #e8f2fb; - border-color: #d1e6f9; } - -.oj-panel-alt3 { - background-color: #fef9e8; - border-color: #fef3ce; } - -.oj-panel-alt4 { - background-color: #ffe4e1; - border-color: #ffcdc8; } - -.oj-panel-alt5 { - background-color: #fce8fe; - border-color: #facefe; } - -.oj-panel.oj-selected { - border-color: #027bc7; } - -.oj-hicontrast .oj-panel.oj-selected { - border-width: 3px; } - -.oj-panel-shadow-sm { - box-shadow: 0 2px 2px 0 hsla(0, 0%, 0%,0.14), 0 3px 1px -2px hsla(0, 0%, 0%,0.2), 0 1px 5px 0 hsla(0, 0%, 0%,0.12); } - -.oj-panel-shadow-md { - box-shadow: 0 4px 5px 0 hsla(0, 0%, 0%,0.14), 0 1px 10px 0 hsla(0, 0%, 0%,0.12), 0 2px 4px -1px hsla(0, 0%, 0%,0.2); } - -.oj-panel-shadow-lg { - box-shadow: 0 6px 10px 0 hsla(0, 0%, 0%,0.14), 0 1px 18px 0 hsla(0, 0%, 0%,0.12), 0 3px 5px -1px hsla(0, 0%, 0%,0.2); } - -.oj-panel-drag-handle { - text-align: center; - vertical-align: middle; - cursor: move; - height: 20px; - line-height: 20px; - margin-top: -0.85714rem; - margin-left: -0.85714rem; - margin-right: -0.85714rem; } - -.oj-panel-resize-button, -.oj-panel-remove-button, -.oj-panel-resize-button.oj-button, -.oj-panel-remove-button.oj-button { - position: absolute; - margin-bottom: 0; - overflow: hidden; - width: 2.28571rem; } - html:not([dir="rtl"]) .oj-panel-resize-button, html:not([dir="rtl"]) - .oj-panel-remove-button, html:not([dir="rtl"]) - .oj-panel-resize-button.oj-button, html:not([dir="rtl"]) - .oj-panel-remove-button.oj-button { - right: 0; } - html[dir="rtl"] .oj-panel-resize-button, html[dir="rtl"] - .oj-panel-remove-button, html[dir="rtl"] - .oj-panel-resize-button.oj-button, html[dir="rtl"] - .oj-panel-remove-button.oj-button { - left: 0; } - -.oj-panel-resize-button { - bottom: 0; } - -.oj-panel-remove-button { - top: 0; } - -.oj-panel-resize-button .oj-panel-expand-icon.oj-end, -.oj-panel-resize-button .oj-panel-collapse-icon.oj-end, -.oj-panel-remove-button .oj-panel-remove-icon.oj-end { - margin-left: auto; - margin-right: auto; } - -oj-collapsible:not(.oj-complete) { - visibility: hidden; } - -oj-collapsible { - display: block; } - -.oj-collapsible { - margin-bottom: 10px; - -webkit-tap-highlight-color: transparent; } - -/* collapsible with "showDetail" style */ -/* ------------------------------------*/ -/* - * this is the default style for collapsible header - */ -.oj-collapsible-header { - color: rgba(0, 0, 0, 0.85); - display: flex; - align-items: center; - position: relative; - padding: 5px 0 3px 0; - margin: 0; } - -/* - * this is the default style for collapsible content - */ -.oj-collapsible-content { - color: rgba(0, 0, 0, 0.8); - background-color: transparent; - padding: 4px 0 0; - margin: 0; } - -/* - * add more padding between header and collapsible content when header has a border - */ -.oj-header-border + .oj-collapsible-wrapper > .oj-collapsible-content { - padding-top: 7px; - padding-bottom: 4px; } - -/* - * specify sizes for h1 - h4 collapsible header - */ -h1.oj-collapsible-header { - font-size: 2.42857rem; } - -h2.oj-collapsible-header { - font-size: 1.71429rem; } - -h3.oj-collapsible-header { - font-size: 1.42857rem; } - -h4.oj-collapsible-header { - font-size: 1.28571rem; } - -/* - * applied to the disabled collapsible header - */ -.oj-collapsible.oj-disabled > .oj-collapsible-header { - color: rgba(0, 0, 0, 0.38); } - -/* - * remove top padding for the first nested collapsible - */ -.oj-collapsible-content > .oj-collapsible:first-child > .oj-collapsible-header { - padding-top: 0; } - -/* collapsible content transition effects */ -/* -------------------------------------- */ -/* - * transtion properties and duration - */ -.oj-collapsible-transition { - transition: max-height 0.4s; } - -/* - * applied to the wrapper of the collapsible content. - */ -.oj-collapsible-wrapper { - border: 0; - padding: 0; - margin: 0; } - -/* suppress all browser decorations of anchors in the header */ -/* --------------------------------------------------------- */ -.oj-collapsible-header a, -.oj-collapsible-header a:active, -.oj-collapsible-header a:visited, -.oj-collapsible-header a:hover, -.oj-collapsible-header a:focus { - text-decoration: none; } - -/* disclosure icons for headers */ -/* -----------------------------*/ -.oj-collapsible-header-icon { - padding: 5px 3px 5px 5px; - outline-offset: -5px; } - -.oj-collapsible-header-icon:not(.oj-focus-highlight):focus { - outline: none; } - -/* - * set hand cursor while over the clickable area - */ -.oj-collapsible-header.oj-hover, -.oj-collapsible-header-icon.oj-hover { - cursor: pointer; } - -/* - * applied to the disclosure icon - */ -.oj-collapsible-header .oj-collapsible-header-icon, -.oj-collapsible-header .oj-collapsible-header-icon:hover { - color: #8a8d8f; } - -/* - * applied to the disclosure icon when it's hovered - * add .oj-collapsible-header .oj-collapsible-header-icon.oj-hover - * to override color set in a:hover.oj-clickable-icon-nocontext - */ -.oj-collapsible-header.oj-hover .oj-collapsible-header-icon, -.oj-collapsible-header .oj-collapsible-header-icon.oj-hover { - color: #76b8e1; } - -/* - * applied to the disclosure icon when it's active - */ -.oj-collapsible-header.oj-active .oj-collapsible-header-icon, -.oj-collapsible-header .oj-collapsible-header-icon.oj-active { - color: #027bc7; } - -/* - * For disabled header icons - */ -.oj-collapsible.oj-disabled > .oj-collapsible-header > .oj-collapsible-header-icon { - color: #cbcccd; - opacity: 1; } - -.oj-collapsible-header a, -.oj-collapsible-header .oj-collapsible-header-icon { - /* - * For a basic collapsible (not in an accordion) - * the closed font icon has some whitespace on the left side, - * use a negative margin to move over the icon - */ } - html:not([dir="rtl"]) .oj-collapsible-header a, html:not([dir="rtl"]) - .oj-collapsible-header .oj-collapsible-header-icon { - margin-left: -7px; } - html[dir="rtl"] .oj-collapsible-header a, html[dir="rtl"] - .oj-collapsible-header .oj-collapsible-header-icon { - margin-right: -7px; } - -/* accordion */ -/* --------------------------------------------------------------- */ -oj-accordion:not(.oj-complete) { - visibility: hidden; } - -oj-accordion { - display: block; } - -/* - * applied to the disabled accordion headerd - */ -.oj-accordion-collapsible.oj-disabled > .oj-collapsible-header { - color: rgba(0, 0, 0, 0.38); - background-color: #fafafa; - background-image: none; } - -/* - * need to reset margin (bottom) here because it's being set in collapsible - */ -.oj-collapsible.oj-accordion-collapsible { - margin: 0; } - -/* - * applied to the accordion header but not to any nested collapsible headers - */ -.oj-accordion-collapsible > .oj-collapsible-header { - padding-top: 3px; - padding-bottom: 3px; - border: 0 solid #e5e6e6; - border-width: 1px; - font-size: 1.42857rem; - background-color: #f2f2f3; - background-image: none; } - -/* - * need to restore top padding for the first nested collapsible, - * because it's being reset in collapsible - */ -.oj-collapsible-content > .oj-accordion-collapsible.oj-collapsible:first-child > .oj-collapsible-header { - padding-top: 3px; } - -/* - * need to reset margin because it's being set in collapsible to -7px - */ -.oj-accordion-collapsible > .oj-collapsible-header > .oj-collapsible-header-icon { - padding: 9px; - outline-offset: -9px; } - html:not([dir="rtl"]) .oj-accordion-collapsible > .oj-collapsible-header > .oj-collapsible-header-icon { - margin: 0; } - html[dir="rtl"] .oj-accordion-collapsible > .oj-collapsible-header > .oj-collapsible-header-icon { - margin: 0; } - -/* - * applied to the accordion content but not to any nested collapsible contents - */ -.oj-accordion-collapsible > .oj-collapsible-wrapper > .oj-collapsible-content { - padding: 0.85714rem; } - -/* - * applied to the accordion header border bottom when collapsed - */ -.oj-accordion-collapsible.oj-collapsed > .oj-collapsible-header { - border-width: 1px 1px 0; } - -/* - * applied to the accordion header border for the last child when collapsed - */ -.oj-accordion-collapsible.oj-collapsed:last-child > .oj-collapsible-header { - border-bottom-width: 1px; } - -/* conveyorbelt */ -/* --------------------------------------------------------------- */ -oj-conveyor-belt:not(.oj-complete) { - visibility: hidden; } - -oj-conveyor-belt { - display: block; } - -.oj-conveyorbelt { - position: relative; } - -.oj-conveyorbelt, -.oj-conveyorbelt-overflow-container, -.oj-conveyorbelt-content-container { - display: flex; - align-items: center; } - -.oj-conveyorbelt.oj-conveyorbelt-vertical { - display: inline-flex; } - -.oj-conveyorbelt.oj-conveyorbelt-vertical, -.oj-conveyorbelt.oj-conveyorbelt-vertical > .oj-conveyorbelt-overflow-container, -.oj-conveyorbelt.oj-conveyorbelt-vertical > .oj-conveyorbelt-overflow-container > .oj-conveyorbelt-content-container { - flex-direction: column; } - -.oj-conveyorbelt-overflow-container { - overflow: hidden; - flex: 1 1 auto; } - -.oj-conveyorbelt-content-container { - position: relative; - flex: 1 0 auto; } - -.oj-conveyorbelt-item { - flex: 0 0 auto; } - -.oj-conveyorbelt-item.oj-navigationlist, -.oj-conveyorbelt-item.oj-tabbar { - flex: 1 0 auto; } - -/* overflow indicators */ -.oj-conveyorbelt-overflow-indicator { - box-sizing: border-box; - display: flex; - align-items: center; - justify-content: center; - width: 2.28571rem; - height: 2.28571rem; - line-height: 2.28571rem; - cursor: default; - border-radius: 2px; - text-align: center; - border: 1px solid; - flex: 0 0 auto; - position: relative; } - -.oj-conveyorbelt-overflow-indicator.oj-default { - border-color: transparent; } - -.oj-conveyorbelt-overflow-indicator.oj-hover { - background-color: #f7f7f8; - background-image: none; - border-color: #cbcccd; } - -.oj-conveyorbelt-overflow-indicator.oj-active, -.oj-conveyorbelt-overflow-indicator.oj-active.oj-hover { - background-color: #027bc7; - background-image: none; - border-color: #027bc7; - opacity: 1; } - -/* overflow icons */ -.oj-conveyorbelt-overflow-indicator .oj-conveyorbelt-overflow-icon { - cursor: inherit; - vertical-align: middle; - margin-bottom: 3px; } - -.oj-conveyorbelt-overflow-indicator.oj-default .oj-conveyorbelt-overflow-icon { - color: #8a8d8f; } - -.oj-conveyorbelt-overflow-indicator.oj-hover .oj-conveyorbelt-overflow-icon { - color: #76b8e1; } - -.oj-conveyorbelt-overflow-indicator.oj-active .oj-conveyorbelt-overflow-icon, -.oj-conveyorbelt-overflow-indicator.oj-active.oj-hover .oj-conveyorbelt-overflow-icon { - color: white; } - -.oj-conveyorbelt-option-defaults { - font-family: '{"arrowVisibility":"visible"}'; } - -/* filmstrip */ -/* --------------------------------------------------------------- */ -oj-film-strip:not(.oj-complete) { - visibility: hidden; } - -.oj-filmstrip { - min-height: 1px; - min-width: 1px; - overflow: hidden; } - -.oj-filmstrip:not(.oj-focus-highlight):focus { - outline: none; } - -.oj-filmstrip-container { - position: relative; - display: flex; } - -.oj-filmstrip-vertical.oj-filmstrip-container, -.oj-filmstrip-vertical .oj-filmstrip-container { - flex-direction: column; } - -.oj-filmstrip-content-container { - overflow: hidden; } - -.oj-filmstrip-pages-container, -.oj-filmstrip-page, -.oj-filmstrip-content-container { - flex-grow: 1; - flex-shrink: 0; } - -.oj-filmstrip-item-container { - align-items: center; - justify-content: space-around; } - -.oj-filmstrip-item { - flex-grow: 0; - flex-shrink: 0; } - -.oj-filmstrip-transition { - transition: transform 0.4s; - transition-timing-function: ease-in-out; } - -.oj-filmstrip-transition-display-as-firstpage { - order: -1; } - -.oj-filmstrip-transition-display-as-lastpage { - order: 1; } - -html:not([dir="rtl"]) .oj-filmstrip:not(.oj-filmstrip-vertical) .oj-filmstrip-transition-next-oldpage-to, html:not([dir="rtl"]) -.oj-filmstrip:not(.oj-filmstrip-vertical) .oj-filmstrip-transition-next-newpage-to { - transform: translate3d(-100%, 0, 0); } - -html[dir="rtl"] .oj-filmstrip:not(.oj-filmstrip-vertical) .oj-filmstrip-transition-next-oldpage-to, html[dir="rtl"] -.oj-filmstrip:not(.oj-filmstrip-vertical) .oj-filmstrip-transition-next-newpage-to { - transform: translate3d(100%, 0, 0); } - -html:not([dir="rtl"]) .oj-filmstrip:not(.oj-filmstrip-vertical) .oj-filmstrip-transition-prev-oldpage-to, html:not([dir="rtl"]) -.oj-filmstrip:not(.oj-filmstrip-vertical) .oj-filmstrip-transition-prev-newpage-to { - transform: translate3d(100%, 0, 0); } - -html[dir="rtl"] .oj-filmstrip:not(.oj-filmstrip-vertical) .oj-filmstrip-transition-prev-oldpage-to, html[dir="rtl"] -.oj-filmstrip:not(.oj-filmstrip-vertical) .oj-filmstrip-transition-prev-newpage-to { - transform: translate3d(-100%, 0, 0); } - -.oj-filmstrip.oj-filmstrip-vertical .oj-filmstrip-transition-next-oldpage-to, -.oj-filmstrip.oj-filmstrip-vertical .oj-filmstrip-transition-next-newpage-to { - transform: translate3d(0, -100%, 0); } - -.oj-filmstrip.oj-filmstrip-vertical .oj-filmstrip-transition-prev-oldpage-to, -.oj-filmstrip.oj-filmstrip-vertical .oj-filmstrip-transition-prev-newpage-to { - transform: translate3d(0, 100%, 0); } - -/* navigation arrows */ -.oj-filmstrip-arrow-container { - display: flex; - align-items: center; - flex-grow: 0; - flex-shrink: 0; - align-self: center; } - -.oj-filmstrip-vertical .oj-filmstrip-arrow-container { - flex-direction: column; } - -.oj-filmstrip-arrow-container-overlay { - position: absolute; } - -html:not([dir="rtl"]) .oj-filmstrip-arrow-container-overlay.oj-start { - left: 0; } - -html[dir="rtl"] .oj-filmstrip-arrow-container-overlay.oj-start { - right: 0; } - -html:not([dir="rtl"]) .oj-filmstrip-arrow-container-overlay.oj-end { - right: 0; } - -html[dir="rtl"] .oj-filmstrip-arrow-container-overlay.oj-end { - left: 0; } - -.oj-filmstrip-arrow-container-overlay.oj-start, -.oj-filmstrip-arrow-container-overlay.oj-end { - top: 50%; - transform: translate3d(0, -50%, 0); } - -.oj-filmstrip-arrow-container-overlay.oj-top { - top: 0; } - -.oj-filmstrip-arrow-container-overlay.oj-bottom { - bottom: 0; } - -html:not([dir="rtl"]) .oj-filmstrip-arrow-container-overlay.oj-top, html:not([dir="rtl"]) -.oj-filmstrip-arrow-container-overlay.oj-bottom { - left: 50%; - transform: translate3d(-50%, 0, 0); } - -html[dir="rtl"] .oj-filmstrip-arrow-container-overlay.oj-top, html[dir="rtl"] -.oj-filmstrip-arrow-container-overlay.oj-bottom { - right: 50%; - transform: translate3d(50%, 0, 0); } - -.oj-filmstrip-arrow { - box-sizing: border-box; - width: 2.28571rem; - height: 2.28571rem; - line-height: 2.28571rem; - cursor: default; - border-radius: 2px; - opacity: 1; - text-align: center; - border: 1px solid; - display: inline-block; - outline: none; } - -.oj-filmstrip-arrow.oj-default { - border-color: transparent; } - -.oj-filmstrip-arrow.oj-hover { - background-color: #f7f7f8; - background-image: none; - border-color: #cbcccd; } - -.oj-filmstrip-arrow.oj-active, -.oj-filmstrip-arrow.oj-active.oj-hover { - background-color: #027bc7; - background-image: none; - border-color: #027bc7; - opacity: 1; } - -/* navigation arrow icons */ -.oj-filmstrip-arrow .oj-filmstrip-arrow-icon { - cursor: inherit; - vertical-align: middle; - margin-bottom: 5px; } - -.oj-filmstrip-arrow.oj-default .oj-filmstrip-arrow-icon { - color: #8a8d8f; } - -.oj-filmstrip-arrow.oj-hover .oj-filmstrip-arrow-icon { - color: #76b8e1; } - -.oj-filmstrip-arrow.oj-active .oj-filmstrip-arrow-icon, -.oj-filmstrip-arrow.oj-active.oj-hover .oj-filmstrip-arrow-icon { - color: white; } - -.oj-filmstrip-arrow-transition { - transition: opacity 0.25s; - transition-timing-function: ease-in-out; } - -.oj-filmstrip.oj-filmstrip-hover .oj-filmstrip-arrow-transition.oj-filmstrip-arrow-container { - opacity: 1; } - -.oj-filmstrip.oj-filmstrip-hover .oj-filmstrip-arrow-transition.oj-filmstrip-arrow { - opacity: 1; } - -.oj-filmstrip:not(.oj-filmstrip-hover) .oj-filmstrip-arrow-transition { - opacity: 0; } - -/* masonrylayout */ -/* --------------------------------------------------------------- */ -oj-masonry-layout:not(.oj-complete) { - visibility: hidden; } - -oj-masonry-layout { - display: block; } - -.oj-masonrylayout { - min-height: 1px; - min-width: 1px; - position: relative; } - -/* masonry tile */ -.oj-masonrylayout-tile { - box-sizing: border-box; - position: absolute; } - -.oj-masonrylayout .oj-masonrylayout-tile { - position: absolute; } - -.oj-masonrylayout-tile.oj-drop { - background-color: #d9f4fa; - border: 1px solid #c2eaf3; - opacity: .75; } - -.oj-masonrylayout-tile.oj-drag { - opacity: .75; } - -.oj-masonrylayout-tile-transition-show-from { - opacity: 0; } - -.oj-masonrylayout-tile-1x1 { - margin: 5px; - width: 150px; - height: 150px; } - -.oj-masonrylayout-tile-1x2 { - margin: 5px; - width: 150px; - height: 310px; } - -.oj-masonrylayout-tile-1x3 { - margin: 5px; - width: 150px; - height: 470px; } - -.oj-masonrylayout-tile-2x1 { - margin: 5px; - width: 310px; - height: 150px; } - -.oj-masonrylayout-tile-2x2 { - margin: 5px; - width: 310px; - height: 310px; } - -.oj-masonrylayout-tile-2x3 { - margin: 5px; - width: 310px; - height: 470px; } - -.oj-masonrylayout-tile-3x1 { - margin: 5px; - width: 470px; - height: 150px; } - -.oj-masonrylayout-tile-3x2 { - margin: 5px; - width: 470px; - height: 310px; } - -.oj-masonrylayout-option-defaults { - font-family: '{"animation":{"insert":[{"effect":"zoomIn","duration":"0.25s","timingFunction":"ease-in-out"},"fadeIn"],"remove":[{"effect":"zoomOut","duration":"0.25s","timingFunction":"ease-in-out"},"fadeOut"],"move":{"effect":"addTransition","duration":"0.25s","timingFunction":"ease-in-out","transitionProperties":["width","height","top","left","right"]},"resize":{"effect":"addTransition","duration":"0.25s","timingFunction":"ease-in-out","transitionProperties":["width","height","top","left","right"]},"reorder":{"effect":"addTransition","duration":"0.2s","timingFunction":"ease-in-out","transitionProperties":["width","height","top","left","right"]}}}'; } - -/* tabs */ -/* --------------------------------------------------------------- */ -oj-tabs:not(.oj-complete) { - visibility: hidden; } - -/* - * applied to the tabs - */ -.oj-tabs { - position: relative; - font-size: 1rem; } - -/* - * use flexbox so that vertial tabs automatically lay out correctly on resize - */ -.oj-tabs.oj-tabs-vertical { - display: flex; } - -/* - * applied to the tab bar - */ -.oj-tabs-nav { - white-space: nowrap; - margin: 0; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; } - -.oj-tabs-tab:not(.oj-focus-highlight):focus { - outline: none; } - -/* - * applied to a tab when it's selected - */ -.oj-tabs-tab.oj-selected { - background-color: white; } - -.oj-tabs, -.oj-tabs-tab .oj-tabs-close-icon, -.oj-tabs-tab .oj-tabs-anchor { - -webkit-tap-highlight-color: transparent; } - -.oj-tabs-tab a:active { - background-color: transparent; } - -/* - * applied to the tab header - */ -.oj-tabs-anchor { - cursor: pointer; - outline: none; - display: inline-block; - padding: .55rem .85rem .65rem .85rem; - vertical-align: middle; } - -/* - * applied to the tab title text - * display inline so the close icon is aligned with the title text - */ -.oj-tabs-title { - display: inline-block; - min-width: 1rem; - line-height: 1rem; - vertical-align: middle; - font-weight: normal; - text-decoration: none; - color: #02629f; } - -/* - * applied to the tab title text when it's overflow - */ -.oj-tabs-title-overflow { - display: inline-block; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; } - -/* - * applied to the tab anchor when it's disabled - */ -.oj-tabs-tab.oj-disabled .oj-tabs-anchor { - cursor: text; - text-decoration: none; } - -/* suppress all browser decorations of anchors in the tab */ -.oj-tabs-tab a, -.oj-tabs-tab a:active, -.oj-tabs-tab a:visited, -.oj-tabs-tab a:hover, -.oj-tabs-tab a:focus { - text-decoration: none; } - -/* - * applied to the icon font in the tab title - - .oj-tabs-tab-icon { - @extend .oj-clickable-icon; - } - */ -/* - * applied to the icon font in the tab title and close icon - * add .oj-tabs-tab .oj-tabs-close-icon:hover to - * override color set in a:hover.oj-clickable-icon-nocontext - */ -.oj-tabs-tab .oj-tabs-tab-icon, -.oj-tabs-tab .oj-tabs-close-icon, -.oj-tabs-tab .oj-tabs-close-icon:hover { - color: #8a8d8f; } - -/* - * applied to the icon font in the tab title and close icon when hovered - */ -.oj-tabs-tab.oj-hover .oj-tabs-tab-icon, -.oj-tabs-tab .oj-tabs-close-icon.oj-hover { - color: #76b8e1; } - -/* - * applied to the icon font in the tab title and close icon when active - */ -.oj-tabs-tab.oj-active .oj-tabs-tab-icon, -.oj-tabs-tab .oj-tabs-close-icon.oj-active { - color: #027bc7; } - -/* - * applied to the icon font in the tab title and close icon when selected - */ -.oj-tabs-tab.oj-selected .oj-tabs-tab-icon { - color: #027bc7; } - -/* - * applied to the icon font in the tab title and close icon when disabled - */ -.oj-tabs-tab.oj-disabled .oj-tabs-tab-icon { - color: #cbcccd; - opacity: 1; } - -/* - * applied to the horizontal tab - * need to set overflow-x to hidden to avoid the scrollbar from showing up - * temporarily while adding a new tab. - */ -.oj-tabs-horizontal.oj-tabs { - overflow-x: hidden; } - -.oj-tabs-horizontal > .oj-tabs-nav-root .oj-tabs-tab { - display: inline-block; - position: relative; } - -/* - * applied to the tab placeholder created when reordering - */ -.oj-tabs-horizontal > .oj-tabs-nav-root .oj-tabs-tab.oj-sortable-placeholder { - margin-bottom: -1rem; } - -.oj-tabs-horizontal.oj-tabs-bottom > .oj-tabs-nav-root .oj-tabs-tab.oj-sortable-placeholder { - margin-top: -1rem; } - -/* - * Bug 18283133 - ER for placing buttons alongside tabs - */ -/* - * For the facet after the tab bar, grow but no shrink when resized - */ -.oj-tabs-facet { - flex: 1 0 auto; } - -/* - * For the facet before the tab bar, no grow or shrink when resized - */ -.oj-tabs-facet.oj-start { - flex: 0 0 auto; } - -/* - * For the conveyor belt, set flex-basis in JS - * set min-width to allow the content to be shrunk smaller than its content size - */ -.oj-tabs-conveyorbelt-wrapper { - min-width: 1px; } - -/* - * Use flex layout only if the tab bar contains any facets - */ -.oj-tabs-horizontal > .oj-tabs-nav-root:not(.oj-conveyorbelt) { - display: flex; } - -/* - * Container of the horizontal tab bar - */ -.oj-tabs-conveyor { - display: inline-block; } - -/* - * applied to the conveyorbelt buttons - */ -html:not([dir="rtl"]) .oj-tabs-nav-root .oj-conveyorbelt-overflow-indicator.oj-start { - margin-right: 5px; } - -html[dir="rtl"] .oj-tabs-nav-root .oj-conveyorbelt-overflow-indicator.oj-start { - margin-left: 5px; } - -html:not([dir="rtl"]) .oj-tabs-nav-root .oj-conveyorbelt-overflow-indicator.oj-end { - margin-left: 5px; } - -html[dir="rtl"] .oj-tabs-nav-root .oj-conveyorbelt-overflow-indicator.oj-end { - margin-right: 5px; } - -/* - * applied to the panel body - */ -.oj-tabs-panel { - display: block; - padding: 0.85714rem; - color: rgba(0, 0, 0, 0.8); - background-color: white; } - -/* vertical tabs */ -/* --------------------------------------------------------------- */ -/* - * applied to the vertical tab bar - */ -.oj-tabs-vertical > .oj-tabs-nav-root { - margin: 0; - flex: 0 0 auto; - position: relative; - white-space: nowrap; } - -/* - * applied to the vertical tab - */ -.oj-tabs-vertical > .oj-tabs-nav-root .oj-tabs-tab { - list-style: none; - position: relative; - top: 0; - margin: 0; - white-space: nowrap; } - -/* - * apply to the selected tab - */ -html:not([dir="rtl"]) .oj-tabs-vertical > .oj-tabs-nav-root .oj-tabs-tab.oj-selected { - margin-right: -1px; } - -html[dir="rtl"] .oj-tabs-vertical > .oj-tabs-nav-root .oj-tabs-tab.oj-selected { - margin-left: -1px; } - -html:not([dir="rtl"]) .oj-tabs-vertical.oj-tabs-end > .oj-tabs-nav-root .oj-tabs-tab.oj-selected { - margin-right: 0; - margin-left: -1px; } - -html[dir="rtl"] .oj-tabs-vertical.oj-tabs-end > .oj-tabs-nav-root .oj-tabs-tab.oj-selected { - margin-left: 0; - margin-right: -1px; } - -/* - * applied to the body of vertical tabs - */ -.oj-tabs-vertical > .oj-tabs-panel { - margin-top: 0; - flex: 1 1; - min-width: 0; - min-height: 0; } - -/* Tabs with the oj-tabs-icon-only class specified */ -/* --------------------------------------------------------------- */ -/* - * override background setting in - * .oj-tabs-icon-only > .oj-tabs-nav-root .oj-tabs-tab - */ -.oj-tabs-text-icon > .oj-tabs-nav-root .oj-tabs-tab.oj-selected, -.oj-tabs-text-icon > .oj-tabs-nav-root .oj-tabs-tab.oj-selected.oj-hover, -.oj-tabs-icon-only > .oj-tabs-nav-root .oj-tabs-tab.oj-selected, -.oj-tabs-icon-only > .oj-tabs-nav-root .oj-tabs-tab.oj-selected.oj-hover { - background-color: white; - background-image: none; } - -.oj-tabs-text-icon > .oj-tabs-nav-root .oj-tabs-close-icon { - padding-top: 4px; } - -.oj-tabs-icon-only > .oj-tabs-nav-root .oj-tabs-anchor { - padding: 0.68rem; } - -.oj-tabs-text-icon > .oj-tabs-nav-root .oj-tabs-anchor { - padding: 0.7rem 0.6rem 0.7rem 0.6rem; } - -/* - * applied to the vertical tabs with icon only in the tab header - */ -.oj-tabs-vertical.oj-tabs-icon-only > .oj-tabs-nav-root .oj-tabs-anchor { - padding: 0.68rem 0.6rem 0.68rem 0.6rem; } - -/* - * applied to the vertical tabs with text and icon in the tab header - */ -.oj-tabs-vertical.oj-tabs-text-icon > .oj-tabs-nav-root .oj-tabs-anchor { - padding: 0.8rem 0.6rem 0.8rem 0.6rem; } - -/* - * applied to the tab bar - */ -.oj-tabs-nav { - padding: 0; - border: 0; } - -/* - * applied to each tab - */ -.oj-tabs-tab { - border-color: transparent; - border-style: solid; } - -/* - * applied to a selected tab - */ -.oj-tabs-tab.oj-selected { - border-color: #027bc7; } - -/* - * applied to the selected tab icon, needed for icon font icons - */ -.oj-tabs-tab.oj-selected .oj-tabs-tab-icon { - font-weight: normal; } - -/* - * applied to the tab title when it's hovered - */ -.oj-tabs-tab.oj-hover .oj-tabs-title { - text-decoration: underline; } - -.oj-tabs-tab.oj-hover .oj-tabs-tab-icon { - text-decoration: none; } - -/* - * applied to the tab title text when it's disabled - */ -.oj-tabs-tab.oj-disabled .oj-tabs-title { - color: rgba(0, 0, 0, 0.38); } - -/* - * applied to the tab content - */ -.oj-tabs-tab-content { - white-space: nowrap; - border-color: transparent; - border-style: solid; - border-width: 1px 1px 0 1px; - border-radius: 0 0 0 0; } - -/* - * used to display the left and right borders of the selected tab - */ -.oj-tabs-tab.oj-selected .oj-tabs-tab-content { - border-color: #cbcccd; } - -/* - * applied to the horizontal tab when it is selected - */ -.oj-tabs-horizontal > .oj-tabs-nav-root .oj-tabs-tab-content, -.oj-tabs-horizontal.oj-tabs-bottom > .oj-tabs-nav-root .oj-tabs-tab-content { - border-width: 0 1px 0 1px; } - -/* - * applied to a horizontal tab - */ -.oj-tabs-horizontal > .oj-tabs-nav-root .oj-tabs-tab { - top: 0; - margin: 0; - border-width: 3px 0 0 0; - border-radius: 0 0 0 0; } - -/* - * applied to a horizontal tab when edge = bottom - */ -.oj-tabs-horizontal.oj-tabs-bottom > .oj-tabs-nav-root .oj-tabs-tab { - border-width: 0 0 3px 0; } - -.oj-tabs-horizontal.oj-tabs-text-icon.oj-tabs-bottom > .oj-tabs-nav-root .oj-tabs-tab, -.oj-tabs-horizontal.oj-tabs-icon-only.oj-tabs-bottom > .oj-tabs-nav-root .oj-tabs-tab { - border-width: 0 0 1px 0; } - -/* - * In alta horizontal tabs - * make the start border on the first selected tab match the container - */ -html:not([dir="rtl"]) .oj-first-child-selected > .oj-tabs-nav-root .oj-tabs-tab.oj-selected .oj-tabs-tab-content { - border-left-color: #e0e1e1; } - -html[dir="rtl"] .oj-first-child-selected > .oj-tabs-nav-root .oj-tabs-tab.oj-selected .oj-tabs-tab-content { - border-right-color: #e0e1e1; } - -/* close icon for tabs */ -/* -----------------------------*/ -/* - * close icon style - */ -.oj-tabs-close-icon { - overflow: hidden; - cursor: pointer; - text-align: center; - vertical-align: middle; - width: 1.84rem; - line-height: 2.2rem; } - html:not([dir="rtl"]) .oj-tabs-close-icon { - margin-left: -0.75rem; } - html[dir="rtl"] .oj-tabs-close-icon { - margin-right: -0.75rem; } - -/* - * applied to the panel body - */ -.oj-tabs-panel { - border: 1px solid #e0e1e1; - border-radius: 3px; - margin-top: -1px; } - -/* - * applied to the panel body when edge = bottom - */ -.oj-tabs-bottom > .oj-tabs-panel { - margin-top: 0; - margin-bottom: -1px; } - -/* - * don't apply top left border radius when the 1st tab is selected - */ -html:not([dir="rtl"]) .oj-first-child-selected > .oj-tabs-panel { - border-top-left-radius: 0; } - -html[dir="rtl"] .oj-first-child-selected > .oj-tabs-panel { - border-top-right-radius: 0; } - -/* - * applied to the panel body when 1st tab is selected and edge = bottom - */ -html:not([dir="rtl"]) .oj-tabs-bottom.oj-first-child-selected > .oj-tabs-panel { - border-bottom-left-radius: 0; } - -html[dir="rtl"] .oj-tabs-bottom.oj-first-child-selected > .oj-tabs-panel { - border-bottom-right-radius: 0; } - -/* vertical tabs */ -/* --------------------------------------------------------------- */ -/* - * applied to the vertical tab bar - */ -.oj-tabs-vertical > .oj-tabs-nav-root { - padding: 15px 0 0; } - -/* - * applied to the vertical tab - */ -.oj-tabs-vertical > .oj-tabs-nav-root .oj-tabs-tab { - line-height: 1rem; } - html:not([dir="rtl"]) .oj-tabs-vertical > .oj-tabs-nav-root .oj-tabs-tab { - border-width: 0 0 0 3px; - border-radius: 0 0 0 0; } - html[dir="rtl"] .oj-tabs-vertical > .oj-tabs-nav-root .oj-tabs-tab { - border-width: 0 3px 0 0; - border-radius: 0 0 0 0; } - -/* - * applied to the vertical tab when edge = end - */ -html[dir="rtl"] .oj-tabs-vertical.oj-tabs-end > .oj-tabs-nav-root .oj-tabs-tab { - border-width: 0 0 0 3px; - border-radius: 0 0 0 0; } - -html:not([dir="rtl"]) .oj-tabs-vertical.oj-tabs-end > .oj-tabs-nav-root .oj-tabs-tab { - border-width: 0 3px 0 0; - border-radius: 0 0 0 0; } - -html:not([dir="rtl"]) .oj-tabs-vertical.oj-tabs-text-icon > .oj-tabs-nav-root .oj-tabs-tab, html:not([dir="rtl"]) -.oj-tabs-vertical.oj-tabs-icon-only > .oj-tabs-nav-root .oj-tabs-tab { - border-width: 1px; } - -html[dir="rtl"] .oj-tabs-vertical.oj-tabs-text-icon > .oj-tabs-nav-root .oj-tabs-tab, html[dir="rtl"] -.oj-tabs-vertical.oj-tabs-icon-only > .oj-tabs-nav-root .oj-tabs-tab { - border-width: 1px; } - -/* - * applied to the vertical tab - */ -.oj-tabs-vertical > .oj-tabs-nav-root .oj-tabs-tab-content { - border-width: 1px 0 1px 0; } - html:not([dir="rtl"]) .oj-tabs-vertical > .oj-tabs-nav-root .oj-tabs-tab-content { - border-radius: 0 0 0 0; } - html[dir="rtl"] .oj-tabs-vertical > .oj-tabs-nav-root .oj-tabs-tab-content { - border-radius: 0 0 0 0; } - -/* - * applied to the vertical tab header - */ -.oj-tabs-vertical > .oj-tabs-nav-root .oj-tabs-anchor { - padding: 1.1rem 0.8rem 1.1rem 0.8rem; } - -/* Tabs with the oj-tabs-icon-only class specified */ -/* --------------------------------------------------------------- */ -.oj-tabs-text-icon > .oj-tabs-nav-root .oj-tabs-tab, -.oj-tabs-icon-only > .oj-tabs-nav-root .oj-tabs-tab { - border-width: 1px; - border-radius: 0; } - -.oj-tabs-text-icon > .oj-tabs-nav-root .oj-tabs-tab-content, -.oj-tabs-icon-only > .oj-tabs-nav-root .oj-tabs-tab-content { - border-width: 0; - border-radius: 0; } - -.oj-tabs-text-icon > .oj-tabs-nav-root .oj-tabs-tab.oj-selected, -.oj-tabs-icon-only > .oj-tabs-nav-root .oj-tabs-tab.oj-selected { - border-color: #e0e1e1; } - -/* vertical tabs with the oj-tabs-icon-only class specified */ -/* --------------------------------------------------------------- */ -/* - * display top, bottom and left border and border radius on the selected tab - */ -html:not([dir="rtl"]) .oj-tabs-vertical.oj-tabs-text-icon > .oj-tabs-nav-root .oj-tabs-tab.oj-selected, html:not([dir="rtl"]) -.oj-tabs-vertical.oj-tabs-icon-only > .oj-tabs-nav-root .oj-tabs-tab.oj-selected { - border-radius: 2px 0 0 2px; - border-right-color: transparent; } - -html[dir="rtl"] .oj-tabs-vertical.oj-tabs-text-icon > .oj-tabs-nav-root .oj-tabs-tab.oj-selected, html[dir="rtl"] -.oj-tabs-vertical.oj-tabs-icon-only > .oj-tabs-nav-root .oj-tabs-tab.oj-selected { - border-radius: 0 2px 2px 0; - border-left-color: transparent; } - -/* - * display top, bottom and right border and border radius on the selected tab - * when edge = end - */ -html:not([dir="rtl"]) .oj-tabs-vertical.oj-tabs-text-icon.oj-tabs-end > .oj-tabs-nav-root .oj-tabs-tab.oj-selected, html:not([dir="rtl"]) -.oj-tabs-vertical.oj-tabs-icon-only.oj-tabs-end > .oj-tabs-nav-root .oj-tabs-tab.oj-selected { - border-radius: 0 2px 2px 0; - border-color: #e0e1e1; - margin-left: -1px; - border-left-color: transparent; } - -html[dir="rtl"] .oj-tabs-vertical.oj-tabs-text-icon.oj-tabs-end > .oj-tabs-nav-root .oj-tabs-tab.oj-selected, html[dir="rtl"] -.oj-tabs-vertical.oj-tabs-icon-only.oj-tabs-end > .oj-tabs-nav-root .oj-tabs-tab.oj-selected { - border-radius: 2px 0 0 2px; - border-color: #e0e1e1; - margin-right: -1px; - border-right-color: transparent; } - -/* horizontal tabs with the oj-tabs-icon-only class specified */ -/* --------------------------------------------------------------- */ -/* - * display top, right and left border and border radius on the selected tab - */ -.oj-tabs-horizontal.oj-tabs-text-icon > .oj-tabs-nav-root .oj-tabs-tab.oj-selected, -.oj-tabs-horizontal.oj-tabs-icon-only > .oj-tabs-nav-root .oj-tabs-tab.oj-selected { - border-bottom-color: transparent; - border-radius: 2px 2px 0 0; } - -.oj-tabs-horizontal.oj-tabs-text-icon.oj-tabs-bottom > .oj-tabs-nav-root .oj-tabs-tab.oj-selected, -.oj-tabs-horizontal.oj-tabs-icon-only.oj-tabs-bottom > .oj-tabs-nav-root .oj-tabs-tab.oj-selected { - border-color: #e0e1e1; - border-radius: 0 0 2px 2px; } - -/* train */ -/* --------------------------------------------------------------- */ -oj-train:not(.oj-complete) { - visibility: hidden; } - -oj-train { - display: block; } - -.oj-train { - white-space: nowrap; - text-align: center; } - -.oj-train-wrapper { - font-size: 0; - display: inline-block; - position: relative; - vertical-align: top; } - -/* Class that can be added to stretch train to container size */ -.oj-train-stretch .oj-train-wrapper { - width: 100%; } - -/* Wrapper class that contains step connector and fill */ -.oj-train-connector-wrapper { - position: absolute; - width: 100%; - box-sizing: border-box; - padding: 0 49px; } - -/* Classes that define the bar connecting the steps */ -.oj-train-connector, -.oj-train-connector-fill { - position: relative; - height: 0px; - width: 100%; - top: 13px; - box-sizing: border-box; } - -.oj-train-connector { - background-color: #e5e6e6; } - -/* Shades in the connector to the position of the selected step */ -.oj-train-connector-fill { - background-color: transparent; - margin-top: -2px; } - -/* Connector circle behind the individual step buttons which matches the connector */ -.oj-train-button-connector { - position: relative; - display: inline-block; - box-sizing: border-box; - width: 28px; - height: 28px; - background-color: #e5e6e6; - border-radius: 50%; } - -.oj-train-step-list-item:last-child > .oj-train-button-connector { - top: 2px; } - -.oj-train-button-connector.oj-train-fill { - background-color: transparent; - background-image: none; } - -.oj-train-step-individual-connector { - position: relative; - visibility: visible; - height: 2px; - width: calc(100% - 48px); - top: 15px; - background-color: #e5e6e6; } - html:not([dir="rtl"]) .oj-train-step-individual-connector { - left: calc(50% + 24px); } - html[dir="rtl"] .oj-train-step-individual-connector { - right: calc(50% + 24px); } - -.oj-train-step-individual-connector.oj-train-connector-before-selected-step { - background-color: #c6c7c8; - width: calc(100% - 28px); } - html:not([dir="rtl"]) .oj-train-step-individual-connector.oj-train-connector-before-selected-step { - left: calc(50% + 14px); } - html[dir="rtl"] .oj-train-step-individual-connector.oj-train-connector-before-selected-step { - right: calc(50% + 14px); } - -/* Inividual step buttons that are used for train navigation */ -.oj-train-button { - cursor: pointer; - display: flex; - align-items: center; - justify-content: center; - box-sizing: border-box; - border-style: solid; - border-width: 2px; - width: 28px; - height: 28px; - margin: 0px; - border-radius: 50%; } - -.oj-train-button.oj-default { - border-color: #8a8d8f; - background-color: white; } - -.oj-train-button.oj-visited { - border-color: #8a8d8f; - background-color: white; } - -.oj-train-button.oj-hover { - border-color: #76b8e1; - background-color: #76b8e1; } - -.oj-train-button.oj-selected { - border-color: #027bc7; - background-color: #027bc7; - cursor: default; } - -.oj-train-button.oj-disabled { - border-color: #e0e1e1; - background-color: white; - cursor: default; } - -.oj-train-button.oj-active, -.oj-train-button.oj-hover.oj-active { - background-color: #027bc7; - border-color: #027bc7; } - -.oj-train-step-list-item.oj-confirmation .oj-train-button, -.oj-train-step-list-item.oj-info .oj-train-button, -.oj-train-step-list-item.oj-invalid .oj-train-button, -.oj-train-step-list-item.oj-warning .oj-train-button { - background-color: transparent; - border-color: transparent; } - -.oj-train-button-text { - font-size: 13px; - font-weight: normal; - color: rgba(0, 0, 0, 0.8); - display: inherit; } - -.oj-train-button.oj-active .oj-train-button-text, -.oj-train-button.oj-hover.oj-active .oj-train-button-text, -.oj-train-button.oj-hover.oj-visited.oj-active .oj-train-button-text { - color: white; } - -.oj-train-button.oj-disabled .oj-train-button-text { - color: rgba(0, 0, 0, 0.38); } - -.oj-train-button.oj-hover .oj-train-button-text, -.oj-train-button.oj-visited.oj-hover .oj-train-button-text { - color: white; } - -.oj-train-button.oj-visited .oj-train-button-text { - display: none; - color: #027bc7; } - -.oj-train-button.oj-selected .oj-train-button-text { - color: white; } - -.oj-train-step-list { - margin: 0; - padding: 0; } - -/* Class for each li that stores the label and button information for each step in the train */ -.oj-train-step-list-item { - font-size: 1rem; - width: 98px; - white-space: normal; - text-align: center; - display: inline-block; - vertical-align: top; - line-height: normal; } - -.oj-train-label-wrapper { - position: relative; - overflow: hidden; - text-overflow: ellipsis; - margin-right: 5px; - margin-left: 5px; - margin-top: 14px; } - -.oj-train-step-list-item:last-child > .oj-train-label-wrapper { - top: 2px; } - -.oj-train-label { - text-decoration: none; - color: rgba(0, 0, 0, 0.8); - text-align: center; } - -.oj-train-label.oj-visited { - color: rgba(0, 0, 0, 0.8); } - -.oj-train-label.oj-disabled { - text-decoration: none; - font-weight: normal; - color: rgba(0, 0, 0, 0.38); - opacity: 1; } - -.oj-train-label.oj-active, -.oj-train-label.oj-hover.oj-active { - text-decoration: none; - font-weight: 500; - cursor: pointer; } - -.oj-train-label.oj-hover { - cursor: pointer; } - -.oj-train-label.oj-selected { - text-decoration: none; - cursor: default; - font-weight: 500; } - -.oj-train-label:not(.oj-focus-highlight):focus { - outline: none; } - -.oj-train-icon { - position: absolute; - margin-bottom: 0; - display: flex; - align-items: center; - justify-content: center; - left: 0; - top: 0; - width: 28px; - height: 28px; - color: white; - border-radius: 50%; - font-size: unset; - box-sizing: border-box; - border-width: 0; - border-style: solid; } - -.oj-train-icon.oj-confirmation { - background-color: #81ba5f; } - -.oj-train-button.oj-disabled .oj-train-icon { - background-color: white; - border-color: #e0e1e1; - border-width: 2px; - color: rgba(0, 0, 0, 0.38); } - -.oj-train-button.oj-hover .oj-train-icon, -.oj-train-button.oj-visited.oj-hover .oj-train-icon, -.oj-train-button.oj-visited.oj-hover .oj-train-icon.oj-confirmation, -.oj-train-button.oj-visited.oj-hover .oj-train-icon.oj-error, -.oj-train-button.oj-visited.oj-hover .oj-train-icon.oj-info, -.oj-train-button.oj-visited.oj-hover .oj-train-icon.oj-warning { - background-image: linear-gradient(rgba(255, 255, 255, 0.3), rgba(255, 255, 255, 0.3)); } - -.oj-train-button.oj-visited .oj-train-icon.oj-confirmation, -.oj-train-button.oj-selected .oj-train-icon.oj-confirmation { - background-color: #81ba5f; - border-color: #8a8d8f; } - -.oj-train-button.oj-active .oj-train-icon.oj-confirmation, -.oj-train-button.oj-hover.oj-active .oj-train-icon.oj-confirmation, -.oj-train-button.oj-hover.oj-visited.oj-active .oj-train-icon.oj-confirmation { - background-image: linear-gradient(rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.2)); } - -.oj-train-icon.oj-error { - background-color: #de2333; } - -.oj-train-button.oj-visited .oj-train-icon.oj-error, -.oj-train-button.oj-selected .oj-train-icon.oj-error { - background-color: #de2333; } - -.oj-train-button.oj-active .oj-train-icon.oj-error, -.oj-train-button.oj-hover.oj-active .oj-train-icon.oj-error, -.oj-train-button.oj-hover.oj-visited.oj-active .oj-train-icon.oj-error { - background-image: linear-gradient(rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.2)); } - -.oj-train-icon.oj-info { - background-color: #2b94bf; } - -.oj-train-button.oj-visited .oj-train-icon.oj-info, -.oj-train-button.oj-selected .oj-train-icon.oj-info { - background-color: #2b94bf; } - -.oj-train-button.oj-active .oj-train-icon.oj-info, -.oj-train-button.oj-hover.oj-active .oj-train-icon.oj-info, -.oj-train-button.oj-hover.oj-visited.oj-active .oj-train-icon.oj-info { - background-image: linear-gradient(rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.2)); } - -.oj-train-icon.oj-warning { - background-color: #f6b846; } - -.oj-train-button.oj-visited .oj-train-icon.oj-warning, -.oj-train-button.oj-selected .oj-train-icon.oj-warning { - background-color: #f6b846; } - -.oj-train-button.oj-active .oj-train-icon.oj-warning, -.oj-train-button.oj-hover.oj-active .oj-train-icon.oj-warning, -.oj-train-button.oj-hover.oj-visited.oj-active .oj-train-icon.oj-warning { - background-image: linear-gradient(rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.2)); } - -.oj-train-icon.oj-hover { - cursor: pointer; } - -.oj-hicontrast .oj-train-button.oj-selected { - border-width: 14px; } - -.oj-hicontrast .oj-train-button.oj-disabled { - border-style: dotted; } - -.oj-hicontrast .oj-train-button.oj-visited { - border-width: 2px; } - -.oj-hicontrast .oj-train-connector { - border: 1px solid; } - -.oj-hicontrast .oj-train-connector-fill { - border: 1px solid; } - -.oj-train-button.oj-visited::before { - content: ""; - display: inherit; } - -.oj-train-button.oj-hover.oj-visited::before { - content: ""; } - -/* button */ -/* --------------------------------------------------------------- */ -oj-button:not(.oj-complete) { - visibility: hidden; } - -[hidden].oj-button, -[hidden].oj-button-nocomp { - display: none; } - -.oj-button, -.oj-button-nocomp { - height: 2.28571rem; - margin-bottom: 4px; - font-size: 1rem; - display: inline-flex; - vertical-align: middle; } - -.oj-button-button { - width: 100%; - height: 100%; } - -.oj-button-jqui, -.oj-button-nocomp, -.oj-button-button { - justify-content: center; - min-width: 0; - align-items: center; - padding: 0; - border: 1px solid; - border-radius: 2px; - white-space: nowrap; - overflow: hidden; - box-sizing: border-box; - font-family: inherit; - -webkit-tap-highlight-color: transparent; } - -html body .oj-button-jqui, -html body .oj-button-nocomp, -html body .oj-button-button { - cursor: default; } - -input.oj-button[type="button"], -input.oj-button[type="submit"], -input.oj-button[type="reset"] { - display: inline-block; } - -/* The root element of toggle (radio and checkbox) buttons */ -.oj-button-toggle { - position: relative; } - -/* The