From 7be95544827a95524a9b683d946ee7473e6854f9 Mon Sep 17 00:00:00 2001 From: brunomilitzer Date: Fri, 21 Jan 2022 09:52:42 +0000 Subject: Removed PDP Monitoring from GUI Issue-ID: POLICY-3888 Change-Id: If59a7b7ad3074e718772051e2a13134eadb54997 Signed-off-by: brunomilitzer --- gui-pdp-monitoring/pom.xml | 232 -- gui-pdp-monitoring/src/main/assembly/frontend.xml | 32 - .../gui/pdp/monitoring/PdpMonitoringMain.java | 175 - .../gui/pdp/monitoring/PdpMonitoringServer.java | 77 - .../PdpMonitoringServerParameterException.java | 47 - .../PdpMonitoringServerParameterParser.java | 115 - .../monitoring/PdpMonitoringServerParameters.java | 90 - .../policy/gui/pdp/monitoring/package-info.java | 27 - .../gui/pdp/monitoring/rest/EngineStatus.java | 43 - .../monitoring/rest/PdpMonitoringRestResource.java | 278 -- .../pdp/monitoring/rest/StatisticsResponse.java | 48 - .../pdp/monitoring/MonitoringExceptionTest.java | 39 - .../gui/pdp/monitoring/MonitoringMainTest.java | 169 - .../gui/pdp/monitoring/MonitoringRestTest.java | 41 - .../gui/pdp/monitoring/rest/EngineStatusTest.java | 40 - .../monitoring/rest/StatisticsResponseTest.java | 39 - gui-pdp-monitoring/src/webapp/.babelrc | 5 - gui-pdp-monitoring/src/webapp/.gitignore | 5 - .../src/webapp/dist/css/interfaceAssets.css | 3453 -------------------- .../src/webapp/dist/css/papChartLib.css | 64 - gui-pdp-monitoring/src/webapp/dist/css/styles.css | 515 --- .../src/webapp/dist/images/logo_onap.png | Bin 21360 -> 0 bytes gui-pdp-monitoring/src/webapp/dist/index.html | 64 - .../resources/16px/rowCollapsed_black_16px.svg | 19 - .../dist/resources/16px/rowExpanded_black_16px.svg | 18 - .../dist/resources/16px/settings_black_16px.svg | 20 - .../webapp/dist/resources/systemBar/help_black.svg | 19 - .../dist/resources/systemBar/logout_black.svg | 15 - .../src/webapp/js/MonitoringChart.js | 247 -- .../src/webapp/js/MonitoringConfig.js | 126 - gui-pdp-monitoring/src/webapp/js/MonitoringMain.js | 111 - .../src/webapp/js/MonitoringTable.js | 61 - .../src/webapp/js/MonitoringUtils.js | 417 --- .../src/webapp/js/PdpEngineWorkerStatus.js | 148 - gui-pdp-monitoring/src/webapp/js/PdpInformation.js | 65 - gui-pdp-monitoring/src/webapp/js/PdpListView.js | 76 - .../src/webapp/js/PdpStatisticsSummary.js | 142 - .../src/webapp/js/__test__/MonitoringChart.test.js | 40 - .../src/webapp/js/__test__/MonitoringMain.test.js | 60 - .../src/webapp/js/__test__/MonitoringTable.test.js | 33 - .../src/webapp/js/__test__/MonitoringUtils.test.js | 109 - .../js/__test__/PdpEngineWorkerStatus.test.js | 37 - .../src/webapp/js/__test__/PdpInformation.test.js | 31 - .../src/webapp/js/__test__/PdpListView.test.js | 63 - .../js/__test__/PdpStatisticsSummary.test.js | 38 - gui-pdp-monitoring/src/webapp/package.json | 44 - gui-pdp-monitoring/src/webapp/webpack.config.js | 18 - 47 files changed, 7555 deletions(-) delete mode 100644 gui-pdp-monitoring/pom.xml delete mode 100644 gui-pdp-monitoring/src/main/assembly/frontend.xml delete mode 100644 gui-pdp-monitoring/src/main/java/org/onap/policy/gui/pdp/monitoring/PdpMonitoringMain.java delete mode 100644 gui-pdp-monitoring/src/main/java/org/onap/policy/gui/pdp/monitoring/PdpMonitoringServer.java delete mode 100644 gui-pdp-monitoring/src/main/java/org/onap/policy/gui/pdp/monitoring/PdpMonitoringServerParameterException.java delete mode 100644 gui-pdp-monitoring/src/main/java/org/onap/policy/gui/pdp/monitoring/PdpMonitoringServerParameterParser.java delete mode 100644 gui-pdp-monitoring/src/main/java/org/onap/policy/gui/pdp/monitoring/PdpMonitoringServerParameters.java delete mode 100644 gui-pdp-monitoring/src/main/java/org/onap/policy/gui/pdp/monitoring/package-info.java delete mode 100644 gui-pdp-monitoring/src/main/java/org/onap/policy/gui/pdp/monitoring/rest/EngineStatus.java delete mode 100644 gui-pdp-monitoring/src/main/java/org/onap/policy/gui/pdp/monitoring/rest/PdpMonitoringRestResource.java delete mode 100644 gui-pdp-monitoring/src/main/java/org/onap/policy/gui/pdp/monitoring/rest/StatisticsResponse.java delete mode 100644 gui-pdp-monitoring/src/test/java/org/onap/policy/gui/pdp/monitoring/MonitoringExceptionTest.java delete mode 100644 gui-pdp-monitoring/src/test/java/org/onap/policy/gui/pdp/monitoring/MonitoringMainTest.java delete mode 100644 gui-pdp-monitoring/src/test/java/org/onap/policy/gui/pdp/monitoring/MonitoringRestTest.java delete mode 100644 gui-pdp-monitoring/src/test/java/org/onap/policy/gui/pdp/monitoring/rest/EngineStatusTest.java delete mode 100644 gui-pdp-monitoring/src/test/java/org/onap/policy/gui/pdp/monitoring/rest/StatisticsResponseTest.java delete mode 100644 gui-pdp-monitoring/src/webapp/.babelrc delete mode 100644 gui-pdp-monitoring/src/webapp/.gitignore delete mode 100644 gui-pdp-monitoring/src/webapp/dist/css/interfaceAssets.css delete mode 100644 gui-pdp-monitoring/src/webapp/dist/css/papChartLib.css delete mode 100644 gui-pdp-monitoring/src/webapp/dist/css/styles.css delete mode 100644 gui-pdp-monitoring/src/webapp/dist/images/logo_onap.png delete mode 100644 gui-pdp-monitoring/src/webapp/dist/index.html delete mode 100644 gui-pdp-monitoring/src/webapp/dist/resources/16px/rowCollapsed_black_16px.svg delete mode 100644 gui-pdp-monitoring/src/webapp/dist/resources/16px/rowExpanded_black_16px.svg delete mode 100644 gui-pdp-monitoring/src/webapp/dist/resources/16px/settings_black_16px.svg delete mode 100644 gui-pdp-monitoring/src/webapp/dist/resources/systemBar/help_black.svg delete mode 100644 gui-pdp-monitoring/src/webapp/dist/resources/systemBar/logout_black.svg delete mode 100644 gui-pdp-monitoring/src/webapp/js/MonitoringChart.js delete mode 100644 gui-pdp-monitoring/src/webapp/js/MonitoringConfig.js delete mode 100644 gui-pdp-monitoring/src/webapp/js/MonitoringMain.js delete mode 100644 gui-pdp-monitoring/src/webapp/js/MonitoringTable.js delete mode 100644 gui-pdp-monitoring/src/webapp/js/MonitoringUtils.js delete mode 100644 gui-pdp-monitoring/src/webapp/js/PdpEngineWorkerStatus.js delete mode 100644 gui-pdp-monitoring/src/webapp/js/PdpInformation.js delete mode 100644 gui-pdp-monitoring/src/webapp/js/PdpListView.js delete mode 100644 gui-pdp-monitoring/src/webapp/js/PdpStatisticsSummary.js delete mode 100644 gui-pdp-monitoring/src/webapp/js/__test__/MonitoringChart.test.js delete mode 100644 gui-pdp-monitoring/src/webapp/js/__test__/MonitoringMain.test.js delete mode 100644 gui-pdp-monitoring/src/webapp/js/__test__/MonitoringTable.test.js delete mode 100644 gui-pdp-monitoring/src/webapp/js/__test__/MonitoringUtils.test.js delete mode 100644 gui-pdp-monitoring/src/webapp/js/__test__/PdpEngineWorkerStatus.test.js delete mode 100644 gui-pdp-monitoring/src/webapp/js/__test__/PdpInformation.test.js delete mode 100644 gui-pdp-monitoring/src/webapp/js/__test__/PdpListView.test.js delete mode 100644 gui-pdp-monitoring/src/webapp/js/__test__/PdpStatisticsSummary.test.js delete mode 100644 gui-pdp-monitoring/src/webapp/package.json delete mode 100644 gui-pdp-monitoring/src/webapp/webpack.config.js (limited to 'gui-pdp-monitoring') diff --git a/gui-pdp-monitoring/pom.xml b/gui-pdp-monitoring/pom.xml deleted file mode 100644 index ae6667f..0000000 --- a/gui-pdp-monitoring/pom.xml +++ /dev/null @@ -1,232 +0,0 @@ - - - 4.0.0 - - org.onap.policy.gui - policy-gui - 2.2.1-SNAPSHOT - - - gui-pdp-monitoring - ${project.artifactId} - GUI for monitoring PDP Statistics - - - src/webapp - ${project.basedir}/src/webapp/node/node - ${project.basedir}/src/main/java,${project.basedir}/src/webapp/js - src/webapp/js/__test__/** - - - - - org.onap.policy.common - policy-endpoints - - - org.onap.policy.common - utils-test - ${policy.common.version} - test - - - org.onap.policy.models - policy-models-pdp - ${policy.models.version} - - - commons-cli - commons-cli - - - org.mockito - mockito-all - test - - - - - install - ${project.build.directory}/classes - - - com.github.eirslett - frontend-maven-plugin - 1.9.1 - - v14.17.0 - ${webapp.dir} - ${webapp.dir} - ${repo.npm} - - - - install node - - install-node-and-npm - - - 6.14.5 - - - - npm install - - npm - - - install - - - - npm test - - npm - - test - - test - - - - webpack build - - webpack - - - - - - org.apache.maven.plugins - maven-assembly-plugin - - - generate-gui-pdp-monitoring-tar - package - - single - - - - src/main/assembly/frontend.xml - - ${project.artifactId}-${project.version} - - - - - - org.apache.maven.plugins - maven-clean-plugin - 3.0.0 - - - - ${webapp.dir}/node - - - ${webapp.dir}/node_modules - - - ${webapp.dir} - - package-lock.json - dist/bundle.js - - - - - - - org.apache.maven.plugins - maven-shade-plugin - - - package - - shade - - - - - ${project.artifactId}-uber-${project.version} - true - monitoring - - - *:* - - - - - *:* - - META-INF/*.SF - META-INF/*.DSA - META-INF/*.RSA - - - - - - - reference.conf - - - log4j.properties - - - org.onap.policy.gui.pdp.monitoring.PdpMonitoringMain - - - - - - org.codehaus.mojo - build-helper-maven-plugin - 3.0.0 - - - attach-artifacts - package - - attach-artifact - - - - - ${project.build.directory}/${project.artifactId}-uber-${project.version}.jar - uber.jar - - - - - - - - - diff --git a/gui-pdp-monitoring/src/main/assembly/frontend.xml b/gui-pdp-monitoring/src/main/assembly/frontend.xml deleted file mode 100644 index 610121b..0000000 --- a/gui-pdp-monitoring/src/main/assembly/frontend.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - frontend - - tar.gz - - false - - - ${webapp.dir}/dist - pdp-monitoring - - - diff --git a/gui-pdp-monitoring/src/main/java/org/onap/policy/gui/pdp/monitoring/PdpMonitoringMain.java b/gui-pdp-monitoring/src/main/java/org/onap/policy/gui/pdp/monitoring/PdpMonitoringMain.java deleted file mode 100644 index 2c0bb3a..0000000 --- a/gui-pdp-monitoring/src/main/java/org/onap/policy/gui/pdp/monitoring/PdpMonitoringMain.java +++ /dev/null @@ -1,175 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2020-2021 Nordix Foundation. - * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.gui.pdp.monitoring; - -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.TimeUnit; -import lombok.Getter; -import lombok.ToString; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * The main class for Pdp Statistics Monitoring. - * - * @author Yehui Wang (yehui.wang@est.tech) - */ -@ToString -public class PdpMonitoringMain { - // Logger for this class - private static final Logger LOGGER = LoggerFactory.getLogger(PdpMonitoringMain.class); - - // Recurring string constants - private static final String PDP_MONITORING_PREFIX = "Pdp Monitoring GUI ("; - - // Services state - public enum ServicesState { - STOPPED, READY, INITIALIZING, RUNNING - } - - @Getter - private ServicesState state = ServicesState.STOPPED; - - // The parameters for the Server - private PdpMonitoringServerParameters parameters = null; - - // The Pdp Monitoring services this class is running - private PdpMonitoringServer pdpMonitoringServer = null; - - private CountDownLatch startedLatch = new CountDownLatch(1); - - private CountDownLatch shutdownLatch = new CountDownLatch(1); - - /** - * Constructor, kicks off the GUI service. - * - * @param args The command line arguments for the RESTful service - */ - public PdpMonitoringMain(final String[] args) { - - // Server parameter parsing - final var parser = new PdpMonitoringServerParameterParser(); - - try { - // Get and check the parameters - parameters = parser.parse(args); - } catch (final PdpMonitoringServerParameterException e) { - throw new PdpMonitoringServerParameterException(PDP_MONITORING_PREFIX + this + ") parameter error, " - + e.getMessage() + '\n' + parser.getHelp(PdpMonitoringMain.class.getName()), e); - } - - if (parameters.isHelpSet()) { - throw new PdpMonitoringServerParameterException(parser.getHelp(PdpMonitoringMain.class.getName())); - } - - // Validate the parameters - final var validationResult = parameters.validate(); - if (!validationResult.isValid()) { - throw new PdpMonitoringServerParameterException( - PDP_MONITORING_PREFIX + this + ") parameters invalid, " + validationResult.getResult() + '\n' - + parser.getHelp(PdpMonitoringMain.class.getName())); - } - - state = ServicesState.READY; - } - - /** - * Initialize the rest service. - */ - public void init() { - LOGGER.info(PDP_MONITORING_PREFIX + "{}) starting at {} . . .", this, parameters.getBaseUri()); - - try { - state = ServicesState.INITIALIZING; - - // Start the Pdp Monitoring service - pdpMonitoringServer = new PdpMonitoringServer(parameters); - - // Add a shutdown hook to shut down the servlet services when the process is exiting - Runtime.getRuntime().addShutdownHook(new Thread(this::shutdown)); - - state = ServicesState.RUNNING; - - if (parameters.getTimeToLive() == PdpMonitoringServerParameters.INFINITY_TIME_TO_LIVE) { - LOGGER.info(PDP_MONITORING_PREFIX + "{}) starting at {} . . .", this, parameters.getTimeToLive()); - } else { - LOGGER.info(PDP_MONITORING_PREFIX + "{}) started", this); - } - - startedLatch.countDown(); - - // Find out how long is left to wait - long timeRemaining = parameters.getTimeToLive(); - if (timeRemaining >= 0) { - if (!shutdownLatch.await(timeRemaining, TimeUnit.SECONDS)) { - shutdown(); - } - } else { - shutdownLatch.await(); - } - } catch (final Exception e) { - LOGGER.warn("{} failed with error", this, e); - } finally { - shutdown(); - } - - } - - /** - * Waits for the service to enter the running state. - * - * @param timeout time to wait - * @param unit time units - * @return {@code true} if the service started within the specified time - * @throws InterruptedException if an interrupt occurs - */ - protected boolean awaitStart(long timeout, TimeUnit unit) throws InterruptedException { - return startedLatch.await(timeout, unit); - } - - /** - * Explicitly shut down the services. - */ - public void shutdown() { - if (pdpMonitoringServer != null) { - LOGGER.info(PDP_MONITORING_PREFIX + "{}) shutting down", this); - pdpMonitoringServer.shutdown(parameters.getPort()); - } - shutdownLatch.countDown(); - state = ServicesState.STOPPED; - LOGGER.info(PDP_MONITORING_PREFIX + "{}) shutting down", this); - } - - /** - * Main method, main entry point for command. - * - * @param args The command line arguments for the GUI - */ - public static void main(final String[] args) { - try { - final var main = new PdpMonitoringMain(args); - main.init(); - } catch (final Exception e) { - LOGGER.error("start failed", e); - } - } -} diff --git a/gui-pdp-monitoring/src/main/java/org/onap/policy/gui/pdp/monitoring/PdpMonitoringServer.java b/gui-pdp-monitoring/src/main/java/org/onap/policy/gui/pdp/monitoring/PdpMonitoringServer.java deleted file mode 100644 index bfb273d..0000000 --- a/gui-pdp-monitoring/src/main/java/org/onap/policy/gui/pdp/monitoring/PdpMonitoringServer.java +++ /dev/null @@ -1,77 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2020 Nordix Foundation. - * Modifications Copyright (C) 2020 AT&T - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.gui.pdp.monitoring; - -import lombok.NonNull; -import org.onap.policy.common.endpoints.http.server.HttpServletServer; -import org.onap.policy.common.endpoints.http.server.HttpServletServerFactoryInstance; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * This class is used to launch the services. It creates a Jetty embedded web server and runs the - * services. - * - * @author Yehui Wang (yehui.wang@est.tech) - */ -public class PdpMonitoringServer { - // Logger for this class - private static final Logger LOGGER = LoggerFactory.getLogger(PdpMonitoringServer.class); - - // The HTTP server exposing JAX-RS resources defined in this application. - private HttpServletServer jerseyServer; - - /** - * Starts the HTTP server for the Pdp statistics monitoring on the default base URI and with the - * default REST packages. - */ - public PdpMonitoringServer() { - this(new PdpMonitoringServerParameters()); - } - - /** - * Starts the HTTP server for the Pdp statistics monitoring GUI. - * - * @param parameters The Pdp parameters to use to start the server. - */ - public PdpMonitoringServer(@NonNull final PdpMonitoringServerParameters parameters) { - LOGGER.debug("Pdp Monitoring starting . . ."); - - jerseyServer = HttpServletServerFactoryInstance.getServerFactory().build("PDP Monitoring Rest Server", false, - parameters.getServerHost(), parameters.getPort(), parameters.getContextPath(), false, true); - jerseyServer.addServletPackage(parameters.getDefaultRestPath(), parameters.getRestPackage()); - jerseyServer.start(); - - LOGGER.debug("Pdp Monitoring started"); - } - - /** - * Shut down the web server. - * - * @param restPort port number of jersey server - */ - public void shutdown(int restPort) { - LOGGER.debug("Pdp Monitoring . . ."); - HttpServletServerFactoryInstance.getServerFactory().destroy(restPort); - LOGGER.debug("Pdp Monitoring shut down"); - } -} diff --git a/gui-pdp-monitoring/src/main/java/org/onap/policy/gui/pdp/monitoring/PdpMonitoringServerParameterException.java b/gui-pdp-monitoring/src/main/java/org/onap/policy/gui/pdp/monitoring/PdpMonitoringServerParameterException.java deleted file mode 100644 index 8977d33..0000000 --- a/gui-pdp-monitoring/src/main/java/org/onap/policy/gui/pdp/monitoring/PdpMonitoringServerParameterException.java +++ /dev/null @@ -1,47 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2020 Nordix Foundation. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.gui.pdp.monitoring; - -/** - * A run time exception used to report parsing and parameter input errors. - */ -public class PdpMonitoringServerParameterException extends IllegalArgumentException { - private static final long serialVersionUID = 6520231162404452427L; - - /** - * Create an PdpMonitoringServerParameterException with a message. - * - * @param message the message - */ - public PdpMonitoringServerParameterException(final String message) { - super(message); - } - - /** - * Create an PdpMonitoringServerParameterException with a message and an exception. - * - * @param message the message - * @param throwable The exception that caused the exception - */ - public PdpMonitoringServerParameterException(final String message, final Throwable throwable) { - super(message, throwable); - } -} diff --git a/gui-pdp-monitoring/src/main/java/org/onap/policy/gui/pdp/monitoring/PdpMonitoringServerParameterParser.java b/gui-pdp-monitoring/src/main/java/org/onap/policy/gui/pdp/monitoring/PdpMonitoringServerParameterParser.java deleted file mode 100644 index 7846b0e..0000000 --- a/gui-pdp-monitoring/src/main/java/org/onap/policy/gui/pdp/monitoring/PdpMonitoringServerParameterParser.java +++ /dev/null @@ -1,115 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2020 Nordix Foundation. - * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved. - * Modifications Copyright (C) 2021 Bell Canada. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.gui.pdp.monitoring; - -import java.io.PrintWriter; -import java.io.StringWriter; -import java.util.Arrays; -import org.apache.commons.cli.CommandLine; -import org.apache.commons.cli.DefaultParser; -import org.apache.commons.cli.HelpFormatter; -import org.apache.commons.cli.Option; -import org.apache.commons.cli.Options; -import org.apache.commons.cli.ParseException; - -/** - * This class reads and handles command line parameters to the Pdp Statistics services. - * - * @author Yehui Wang (yehui.wang@est.tech) - */ -public class PdpMonitoringServerParameterParser { - // Apache Commons CLI options - private final Options options; - - /** - * Construct the options for the Pdp monitoring services. - */ - public PdpMonitoringServerParameterParser() { - options = new Options(); - options.addOption("h", "help", false, "outputs the usage of this command"); - options.addOption(Option.builder("p").longOpt("port").desc("port to use for the Pdp Services REST calls") - .hasArg().argName("PORT").required(false).type(Number.class).build()); - options.addOption(Option.builder("t").longOpt("time-to-live") - .desc("the amount of time in seconds that the server will run for before terminating").hasArg() - .argName("TIME_TO_LIVE").required(false).type(Number.class).build()); - } - - /** - * Parse the command line options. - * - * @param args the arguments - * @return parsed parameters - */ - public PdpMonitoringServerParameters parse(final String[] args) { - CommandLine commandLine = null; - try { - commandLine = new DefaultParser().parse(options, args); - } catch (final ParseException e) { - throw new PdpMonitoringServerParameterException("invalid command line arguments specified", e); - } - - final var parameters = new PdpMonitoringServerParameters(); - final String[] remainingArgs = commandLine.getArgs(); - - if (commandLine.getArgs().length > 0) { - throw new PdpMonitoringServerParameterException( - "too many command line arguments specified : " + Arrays.toString(remainingArgs)); - } - - if (commandLine.hasOption('h')) { - parameters.setHelpSet(true); - } - try { - if (commandLine.hasOption('p')) { - parameters.setPort(((Number) commandLine.getParsedOptionValue("port")).intValue()); - } - } catch (final ParseException e) { - throw new PdpMonitoringServerParameterException("error parsing argument \"port\"", e); - } - try { - if (commandLine.hasOption('t')) { - parameters.setTimeToLive(((Number) commandLine.getParsedOptionValue("time-to-live")).longValue()); - } - } catch (final ParseException e) { - throw new PdpMonitoringServerParameterException("error parsing argument \"time-to-live\"", e); - } - - return parameters; - } - - /** - * Get help information. - * - * @param mainClassName the main class name for the help output - * @return help string - */ - public String getHelp(final String mainClassName) { - final var stringWriter = new StringWriter(); - final var stringPrintWriter = new PrintWriter(stringWriter); - - final var helpFormatter = new HelpFormatter(); - helpFormatter.printHelp(stringPrintWriter, 120, mainClassName + " [options...] ", "", options, 0, 0, ""); - - return stringWriter.toString(); - } -} diff --git a/gui-pdp-monitoring/src/main/java/org/onap/policy/gui/pdp/monitoring/PdpMonitoringServerParameters.java b/gui-pdp-monitoring/src/main/java/org/onap/policy/gui/pdp/monitoring/PdpMonitoringServerParameters.java deleted file mode 100644 index 78fb479..0000000 --- a/gui-pdp-monitoring/src/main/java/org/onap/policy/gui/pdp/monitoring/PdpMonitoringServerParameters.java +++ /dev/null @@ -1,90 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2020-2021 Nordix Foundation. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.gui.pdp.monitoring; - -import java.net.URI; -import lombok.Getter; -import lombok.Setter; -import lombok.ToString; -import org.onap.policy.common.parameters.BeanValidator; -import org.onap.policy.common.parameters.ValidationResult; -import org.onap.policy.common.parameters.annotations.Max; -import org.onap.policy.common.parameters.annotations.Min; - -/** - * This class reads and handles command line parameters to the Pdp Monitoring services. - * - * @author Yehui Wang (yehui.wang@est.tech) - */ -@ToString -@Getter -@Setter -public class PdpMonitoringServerParameters { - public static final int INFINITY_TIME_TO_LIVE = -1; - - // Base URI the HTTP server will listen on - private static final String DEFAULT_SERVER_URI_ROOT = "http://0.0.0.0:"; - private static final String DEFAULT_REST_PATH = "papservices/*"; - private static final String DEFAULT_CONTEXT_PATH = "/"; - private static final String SERVER_HOST = "0.0.0.0"; - private static final int DEFAULT_REST_PORT = 17999; - // Package that will field REST requests - private static final String DEFAULT_REST_PACKAGE = "org.onap.policy.gui.pdp.monitoring.rest"; - - // The services parameters - private boolean helpSet = false; - - @Min(1024) - @Max(65534) - private int port = DEFAULT_REST_PORT; - - @Min(-1) - private long timeToLive = INFINITY_TIME_TO_LIVE; - - /** - * Validate the parameters. - * - * @return the result of the validation - */ - public ValidationResult validate() { - return new BeanValidator().validateTop(PdpMonitoringServerParameters.class.getSimpleName(), this); - } - - public URI getBaseUri() { - return URI.create(DEFAULT_SERVER_URI_ROOT + port + "/" + DEFAULT_REST_PATH); - } - - public String getRestPackage() { - return DEFAULT_REST_PACKAGE; - } - - public String getContextPath() { - return DEFAULT_CONTEXT_PATH; - } - - public String getServerHost() { - return SERVER_HOST; - } - - public String getDefaultRestPath() { - return "/" + DEFAULT_REST_PATH; - } -} diff --git a/gui-pdp-monitoring/src/main/java/org/onap/policy/gui/pdp/monitoring/package-info.java b/gui-pdp-monitoring/src/main/java/org/onap/policy/gui/pdp/monitoring/package-info.java deleted file mode 100644 index d1595b8..0000000 --- a/gui-pdp-monitoring/src/main/java/org/onap/policy/gui/pdp/monitoring/package-info.java +++ /dev/null @@ -1,27 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2020 Nordix Foundation. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -/** - * Implements the PDP monitoring GUI. - * - * @author Yehui Wang (yehui.wang@est.tech) - */ - -package org.onap.policy.gui.pdp.monitoring; diff --git a/gui-pdp-monitoring/src/main/java/org/onap/policy/gui/pdp/monitoring/rest/EngineStatus.java b/gui-pdp-monitoring/src/main/java/org/onap/policy/gui/pdp/monitoring/rest/EngineStatus.java deleted file mode 100644 index 5d2d38a..0000000 --- a/gui-pdp-monitoring/src/main/java/org/onap/policy/gui/pdp/monitoring/rest/EngineStatus.java +++ /dev/null @@ -1,43 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2020 Nordix Foundation. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.gui.pdp.monitoring.rest; - -import lombok.Setter; - - -/** - * A POJO class to record engine worker status. - * - * @author Yehui Wang (yehui.wang@est.tech) - * - */ -@Setter -@SuppressWarnings("unused") -class EngineStatus { - private String timestamp; - private String id; - private String status; - private String lastMessage; - private long upTime; - private long policyExecutions; - private String lastPolicyDuration; - private String averagePolicyDuration; -} diff --git a/gui-pdp-monitoring/src/main/java/org/onap/policy/gui/pdp/monitoring/rest/PdpMonitoringRestResource.java b/gui-pdp-monitoring/src/main/java/org/onap/policy/gui/pdp/monitoring/rest/PdpMonitoringRestResource.java deleted file mode 100644 index 60dfc81..0000000 --- a/gui-pdp-monitoring/src/main/java/org/onap/policy/gui/pdp/monitoring/rest/PdpMonitoringRestResource.java +++ /dev/null @@ -1,278 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2020-2021 Nordix Foundation. - * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved. - * Modifications Copyright (C) 2021 Bell Canada. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.gui.pdp.monitoring.rest; - -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.JsonDeserializer; -import com.google.gson.reflect.TypeToken; -import java.time.Instant; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import javax.ws.rs.Consumes; -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import lombok.AllArgsConstructor; -import lombok.EqualsAndHashCode; -import lombok.Getter; -import org.onap.policy.common.endpoints.event.comm.bus.internal.BusTopicParams; -import org.onap.policy.common.endpoints.http.client.HttpClient; -import org.onap.policy.common.endpoints.http.client.HttpClientConfigException; -import org.onap.policy.common.endpoints.http.client.HttpClientFactoryInstance; -import org.onap.policy.common.utils.coder.CoderException; -import org.onap.policy.common.utils.coder.StandardCoder; -import org.onap.policy.models.pdp.concepts.PdpEngineWorkerStatistics; -import org.onap.policy.models.pdp.concepts.PdpGroups; -import org.onap.policy.models.pdp.concepts.PdpStatistics; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * The class represents the root resource exposed at the base URL
- * The url to access this resource would be in the form {@code /rest/....}
- * For example: a GET request to the following URL - * {@code http://localhost:18989/papservices/rest/?hostName=localhost&port=12345} - * - * Note: An allocated {@code hostName} and {@code port} query parameter must be included in - * all requests. Datasets for different {@code hostName} are completely isolated from one another. - * - * @author Yehui Wang (yehui.wang@est.tech) - */ -@Path("monitoring/") -@Produces({MediaType.APPLICATION_JSON}) -@Consumes({MediaType.APPLICATION_JSON}) -public class PdpMonitoringRestResource { - // Get a reference to the logger - private static final Logger LOGGER = LoggerFactory.getLogger(PdpMonitoringRestResource.class); - // Set up a map separated by host and engine for the data - private static final Map>> cache = new HashMap<>(); - - // Set the maximum number of stored data entries to be stored for each engine - private static final int MAX_CACHED_ENTITIES = 50; - - private static Gson gson = new GsonBuilder() - .registerTypeAdapter(Instant.class, (JsonDeserializer) (jsonElement, type, jsonDeserializationContext) - -> Instant.parse(jsonElement.getAsJsonPrimitive().getAsString())) - .create(); - - /** - * Query Pdps. - * - * @param useHttps use Http or not - * @param hostname hostname the host name of the engine service to connect to. - * @param port port the port number of the engine service to connect to. - * @param username user name - * @param password password - * @return a Response object containing Pdps in JSON - * @throws HttpClientConfigException exception - */ - @GET - public Response getPdps(@QueryParam("useHttps") final String useHttps, - @QueryParam("hostname") final String hostname, @QueryParam("port") final int port, - @QueryParam("username") final String username, @QueryParam("password") final String password) - throws HttpClientConfigException { - - return Response - .ok(getHttpClient(useHttps, hostname, port, username, password, "policy/pap/v1/pdps").get().getEntity(), - MediaType.APPLICATION_JSON) - .build(); - } - - /** - * Query Pdp statistics. - * - * @param useHttps use Http or not - * @param hostname the host name of the engine service to connect to. - * @param port the port number of the engine service to connect to. - * @param username user name - * @param password password - * @param id PdpGroupName/PdpSubGroup/PdpIntanceID - * @return a Response object containing the Pdp status and context data in JSON - * @throws HttpClientConfigException exception - * @throws CoderException Coder exception - */ - @GET - @Path("statistics/") - public Response getStatistics(@QueryParam("useHttps") final String useHttps, - @QueryParam("hostname") final String hostname, @QueryParam("port") final int port, - @QueryParam("username") final String username, @QueryParam("password") final String password, - @QueryParam("id") final String id) throws HttpClientConfigException, CoderException { - - var pdpGroups = getHttpClient(useHttps, hostname, port, username, password, "policy/pap/v1/pdps").get() - .readEntity(PdpGroups.class); - String groupName; - String subGroup; - String instanceId; - String[] idArray = id.split("/"); - if (idArray.length == 3) { - groupName = idArray[0]; - subGroup = idArray[1]; - instanceId = idArray[2]; - } else { - throw new IllegalArgumentException("Cannot parse groupName, subGroup and instanceId from " + id); - } - - var pdp = pdpGroups.getGroups().stream().filter(group -> group.getName().equals(groupName)) - .flatMap(group -> group.getPdpSubgroups().stream().filter(sub -> sub.getPdpType().equals(subGroup))) - .flatMap(sub -> sub.getPdpInstances().stream() - .filter(instance -> instance.getInstanceId().equals(instanceId))) - .filter(Objects::nonNull).findFirst().orElseThrow(); - - final var responseObject = new StatisticsResponse(); - - // Engine Service data - responseObject.setEngineId(pdp.getInstanceId()); - responseObject.setServer(hostname); - responseObject.setPort(Integer.toString(port)); - responseObject.setHealthStatus(pdp.getHealthy().name()); - responseObject.setPdpState(pdp.getPdpState().name()); - - String statisticsEntity = getHttpClient(useHttps, hostname, port, username, password, - "policy/pap/v1/pdps/statistics/" + id + "?recordCount=1").get().readEntity(String.class); - Map>> pdpStats = gson.fromJson(statisticsEntity, - new TypeToken>>>() {}.getType()); - - final List engineStatusList = new ArrayList<>(); - - if (!pdpStats.isEmpty()) { - var pdpStatistics = pdpStats.get(groupName).get(subGroup).get(0); - responseObject.setTimeStamp(pdpStatistics.getTimeStamp().toString()); - responseObject.setPolicyDeployCount(pdpStatistics.getPolicyDeployCount()); - responseObject.setPolicyDeploySuccessCount(pdpStatistics.getPolicyDeploySuccessCount()); - responseObject.setPolicyDeployFailCount(pdpStatistics.getPolicyDeployFailCount()); - responseObject.setPolicyExecutedCount(pdpStatistics.getPolicyExecutedCount()); - responseObject.setPolicyExecutedSuccessCount(pdpStatistics.getPolicyExecutedSuccessCount()); - responseObject.setPolicyExecutedFailCount(pdpStatistics.getPolicyExecutedFailCount()); - - // Engine Status data - for (final PdpEngineWorkerStatistics engineStats : pdpStatistics.getEngineStats()) { - try { - final var engineStatusObject = new EngineStatus(); - engineStatusObject.setTimestamp(pdpStatistics.getTimeStamp().toString()); - engineStatusObject.setId(engineStats.getEngineId()); - engineStatusObject.setStatus(engineStats.getEngineWorkerState().name()); - engineStatusObject.setLastMessage(new Date(engineStats.getEngineTimeStamp()).toString()); - engineStatusObject.setUpTime(engineStats.getUpTime()); - engineStatusObject.setPolicyExecutions(engineStats.getEventCount()); - engineStatusObject.setLastPolicyDuration(gson.toJson( - getValuesFromCache(id, engineStats.getEngineId() + "_last_policy_duration", - pdpStatistics.getTimeStamp().getEpochSecond(), engineStats.getLastExecutionTime()), - List.class)); - engineStatusObject.setAveragePolicyDuration( - gson.toJson(getValuesFromCache(id, engineStats.getEngineId() + "_average_policy_duration", - pdpStatistics.getTimeStamp().getEpochSecond(), - (long) engineStats.getAverageExecutionTime()), List.class)); - engineStatusList.add(engineStatusObject); - } catch (final RuntimeException e) { - LOGGER.warn("Error getting status of engine with ID " + engineStats.getEngineId() + "
", e); - } - } - } else { - responseObject.setTimeStamp("N/A"); - responseObject.setPolicyDeployCount("N/A"); - responseObject.setPolicyDeploySuccessCount("N/A"); - responseObject.setPolicyDeployFailCount("N/A"); - responseObject.setPolicyExecutedCount("N/A"); - responseObject.setPolicyExecutedSuccessCount("N/A"); - responseObject.setPolicyExecutedFailCount("N/A"); - } - - responseObject.setStatus(engineStatusList); - return Response.ok(new StandardCoder().encode(responseObject), MediaType.APPLICATION_JSON).build(); - } - - private HttpClient getHttpClient(String useHttps, String hostname, int port, String username, String password, - String basePath) throws HttpClientConfigException { - var busParams = new BusTopicParams(); - busParams.setClientName("pdp-monitoring"); - busParams.setHostname(hostname); - busParams.setManaged(false); - busParams.setPassword(password); - busParams.setPort(port); - busParams.setUseHttps(useHttps.equals("https")); - busParams.setUserName(username); - busParams.setBasePath(basePath); - return HttpClientFactoryInstance.getClientFactory().build(busParams); - } - - /** - * This method takes in the latest data entry for an engine, adds it to an existing data set and - * returns the full map for that host and engine. - * - * @param uri the pdp uri - * @param id the engines id - * @param timestamp the timestamp of the latest data entry - * @param latestValue the value of the latest data entry - * @return a list of {@code Counter} objects for that engine - */ - private synchronized List getValuesFromCache(final String uri, final String id, final long timestamp, - final long latestValue) { - - Map> engineStatus = cache.computeIfAbsent(uri, k -> new HashMap<>()); - - List valueList = engineStatus.computeIfAbsent(id, k -> new SlidingWindowList<>(MAX_CACHED_ENTITIES)); - - valueList.add(new Counter(timestamp, latestValue)); - - return valueList; - } - - /** - * A list of values that uses a FIFO sliding window of a fixed size. - */ - @EqualsAndHashCode(callSuper = true) - @AllArgsConstructor - public class SlidingWindowList extends LinkedList { - private static final long serialVersionUID = -7187277916025957447L; - - private final int maxEntries; - - @Override - public boolean add(final V elm) { - if (this.size() > (maxEntries - 1)) { - this.removeFirst(); - } - return super.add(elm); - } - } - - /** - * A class used to storing a single data entry for an engine. - */ - @Getter - @AllArgsConstructor - public class Counter { - private final long timestamp; - private final long value; - } - -} diff --git a/gui-pdp-monitoring/src/main/java/org/onap/policy/gui/pdp/monitoring/rest/StatisticsResponse.java b/gui-pdp-monitoring/src/main/java/org/onap/policy/gui/pdp/monitoring/rest/StatisticsResponse.java deleted file mode 100644 index ada722f..0000000 --- a/gui-pdp-monitoring/src/main/java/org/onap/policy/gui/pdp/monitoring/rest/StatisticsResponse.java +++ /dev/null @@ -1,48 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2020 Nordix Foundation. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.gui.pdp.monitoring.rest; - -import java.util.List; -import lombok.Setter; - -/** - * A POJO class to record Pdp statistics. - * - * @author Yehui Wang (yehui.wang@est.tech) - * - */ -@Setter -@SuppressWarnings("unused") -class StatisticsResponse { - private String engineId; - private String server; - private String port; - private String healthStatus; - private String pdpState; - private String timeStamp; - private Object policyDeployCount; - private Object policyDeploySuccessCount; - private Object policyDeployFailCount; - private Object policyExecutedCount; - private Object policyExecutedSuccessCount; - private Object policyExecutedFailCount; - private List status; -} diff --git a/gui-pdp-monitoring/src/test/java/org/onap/policy/gui/pdp/monitoring/MonitoringExceptionTest.java b/gui-pdp-monitoring/src/test/java/org/onap/policy/gui/pdp/monitoring/MonitoringExceptionTest.java deleted file mode 100644 index 80262e9..0000000 --- a/gui-pdp-monitoring/src/test/java/org/onap/policy/gui/pdp/monitoring/MonitoringExceptionTest.java +++ /dev/null @@ -1,39 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2020 Nordix Foundation. - * Modifications Copyright (C) 2020 AT&T Inc. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.gui.pdp.monitoring; - -import static org.junit.Assert.assertEquals; - -import org.junit.Test; -import org.onap.policy.common.utils.test.ExceptionsTester; - -/** - * Test the Pdp monitoring exception. - * - */ -public class MonitoringExceptionTest { - - @Test - public void test() { - assertEquals(2, new ExceptionsTester().test(PdpMonitoringServerParameterException.class)); - } -} diff --git a/gui-pdp-monitoring/src/test/java/org/onap/policy/gui/pdp/monitoring/MonitoringMainTest.java b/gui-pdp-monitoring/src/test/java/org/onap/policy/gui/pdp/monitoring/MonitoringMainTest.java deleted file mode 100644 index 3606b44..0000000 --- a/gui-pdp-monitoring/src/test/java/org/onap/policy/gui/pdp/monitoring/MonitoringMainTest.java +++ /dev/null @@ -1,169 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2020 Nordix Foundation. - * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.gui.pdp.monitoring; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.catchThrowable; -import static org.junit.Assert.fail; - -import org.junit.Test; - -/** - * Test the periodic event manager utility. - */ -public class MonitoringMainTest { - @Test - public void testMonitoringServerBad() { - try { - final String[] eventArgs = {"-z"}; - - PdpMonitoringMain.main(eventArgs); - } catch (Exception exc) { - fail("test should not throw an exception"); - } - } - - @Test - public void testMonitoringServerOk() { - try { - final String[] eventArgs = {"-t", "1"}; - - PdpMonitoringMain.main(eventArgs); - } catch (Exception exc) { - fail("test should not throw an exception"); - } - } - - @Test - public void testMonitoringServerBadOptions() { - final String[] eventArgs = {"-zabbu"}; - Throwable thrown = catchThrowable(() -> new PdpMonitoringMain(eventArgs)); - assertThat(thrown).isInstanceOf(PdpMonitoringServerParameterException.class) - .hasMessageContaining("parameter error, invalid command line arguments specified"); - - } - - @Test - public void testMonitoringServerHelp() { - final String[] eventArgs = {"-h"}; - Throwable thrown = catchThrowable(() -> new PdpMonitoringMain(eventArgs)); - assertThat(thrown).isInstanceOf(PdpMonitoringServerParameterException.class).hasMessageContaining( - "usage: org.onap.policy.gui.pdp.monitoring.PdpMonitoringMain [options...]"); - } - - @Test - public void testMonitoringServerPortBad() { - final String[] eventArgs = {"-p", "hello"}; - Throwable thrown = catchThrowable(() -> new PdpMonitoringMain(eventArgs)); - assertThat(thrown).isInstanceOf(PdpMonitoringServerParameterException.class) - .hasMessageContaining("error parsing argument \"port\""); - } - - @Test - public void testMonitoringServerPortNegative() { - final String[] eventArgs = {"-p", "-1"}; - Throwable thrown = catchThrowable(() -> new PdpMonitoringMain(eventArgs)); - assertThat(thrown).isInstanceOf(PdpMonitoringServerParameterException.class).hasMessageContaining( - "item \"port\" value \"-1\" INVALID, is below the minimum value: 1024"); - } - - @Test - public void testMonitoringServerTtlTooSmall() { - final String[] eventArgs = {"-t", "-2"}; - - Throwable thrown = catchThrowable(() -> new PdpMonitoringMain(eventArgs)); - assertThat(thrown).isInstanceOf(PdpMonitoringServerParameterException.class) - .hasMessageContaining("item \"timeToLive\" value \"-2\" INVALID, is below the minimum value: -1"); - } - - @Test - public void testMonitoringServerTooManyPars() { - final String[] eventArgs = {"-t", "10", "-p", "12344", "aaa", "bbb"}; - - Throwable thrown = catchThrowable(() -> new PdpMonitoringMain(eventArgs)); - assertThat(thrown).isInstanceOf(PdpMonitoringServerParameterException.class) - .hasMessageContaining("parameter error, too many command line arguments specified : [aaa, bbb]"); - } - - @Test - public void testMonitoringServerTtlNotNumber() { - final String[] eventArgs = {"-t", "timetolive"}; - - Throwable thrown = catchThrowable(() -> new PdpMonitoringMain(eventArgs)); - assertThat(thrown).isInstanceOf(PdpMonitoringServerParameterException.class).hasMessageContaining( - "parameter error, error parsing argument \"time-to-live\""); - } - - @Test - public void testMonitoringServerPortTooBig() { - final String[] eventArgs = {"-p", "65536"}; - - Throwable thrown = catchThrowable(() -> new PdpMonitoringMain(eventArgs)); - assertThat(thrown).isInstanceOf(PdpMonitoringServerParameterException.class) - .hasMessageContaining("item \"port\" value \"65536\" INVALID, exceeds the maximum value: 65534"); - } - - @Test - public void testMonitoringOneSecStart() { - final String[] eventArgs = {"-t", "1"}; - - try { - PdpMonitoringMain monRestMain = new PdpMonitoringMain(eventArgs); - monRestMain.init(); - monRestMain.shutdown(); - - } catch (Exception ex) { - fail("test should not throw an exception"); - } - } - - @Test - public void testMonitoringForeverStart() { - final String[] eventArgs = {"-t", "-1"}; - - var monRestMain = new PdpMonitoringMain(eventArgs); - - Thread monThread = new Thread() { - @Override - public void run() { - monRestMain.init(); - } - }; - - try { - monThread.start(); - /* - * For some reason, getResource("webapp") returns null to PdpMonitoringServer, - * which results in an NPE, thus the server never gets started (in ANY of - * these test cases). Therefore, commented out the code that waits for it to - * start. - */ - // assertThat(monRestMain.awaitStart(5, TimeUnit.SECONDS)).isTrue(); - monRestMain.shutdown(); - monThread.join(5000); - assertThat(monThread.isAlive()).isFalse(); - } catch (Exception ex) { - monRestMain.shutdown(); - fail("test should not throw an exception"); - } - } -} diff --git a/gui-pdp-monitoring/src/test/java/org/onap/policy/gui/pdp/monitoring/MonitoringRestTest.java b/gui-pdp-monitoring/src/test/java/org/onap/policy/gui/pdp/monitoring/MonitoringRestTest.java deleted file mode 100644 index a8459cd..0000000 --- a/gui-pdp-monitoring/src/test/java/org/onap/policy/gui/pdp/monitoring/MonitoringRestTest.java +++ /dev/null @@ -1,41 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2020 Nordix Foundation. - * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.gui.pdp.monitoring; - -import static org.junit.Assert.assertEquals; - -import org.junit.Test; - -/** - * monitoring rest tests. - * - */ -public class MonitoringRestTest { - - @Test - public void test() { - var parameters = new PdpMonitoringServerParameters(); - parameters.setPort(12345); - assertEquals(12345, parameters.getPort()); - } - -} diff --git a/gui-pdp-monitoring/src/test/java/org/onap/policy/gui/pdp/monitoring/rest/EngineStatusTest.java b/gui-pdp-monitoring/src/test/java/org/onap/policy/gui/pdp/monitoring/rest/EngineStatusTest.java deleted file mode 100644 index 46a19dc..0000000 --- a/gui-pdp-monitoring/src/test/java/org/onap/policy/gui/pdp/monitoring/rest/EngineStatusTest.java +++ /dev/null @@ -1,40 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2020 AT&T - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.gui.pdp.monitoring.rest; - -import com.openpojo.reflection.filters.FilterClassName; -import com.openpojo.validation.Validator; -import com.openpojo.validation.ValidatorBuilder; -import com.openpojo.validation.rule.impl.SetterMustExistRule; -import com.openpojo.validation.test.impl.SetterTester; -import org.junit.Test; - -public class EngineStatusTest { - - @Test - public void testEngineStatus() { - final Validator validator = ValidatorBuilder.create().with(new SetterMustExistRule()) - .with(new SetterTester()).build(); - validator.validate(EngineStatus.class.getPackage().getName(), - new FilterClassName(EngineStatus.class.getName())); - } - -} diff --git a/gui-pdp-monitoring/src/test/java/org/onap/policy/gui/pdp/monitoring/rest/StatisticsResponseTest.java b/gui-pdp-monitoring/src/test/java/org/onap/policy/gui/pdp/monitoring/rest/StatisticsResponseTest.java deleted file mode 100644 index d38f08c..0000000 --- a/gui-pdp-monitoring/src/test/java/org/onap/policy/gui/pdp/monitoring/rest/StatisticsResponseTest.java +++ /dev/null @@ -1,39 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2020 AT&T - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.gui.pdp.monitoring.rest; - -import com.openpojo.reflection.filters.FilterClassName; -import com.openpojo.validation.Validator; -import com.openpojo.validation.ValidatorBuilder; -import com.openpojo.validation.rule.impl.SetterMustExistRule; -import com.openpojo.validation.test.impl.SetterTester; -import org.junit.Test; - -public class StatisticsResponseTest { - - @Test - public void testStatisticsResponse() { - final Validator validator = ValidatorBuilder.create().with(new SetterMustExistRule()) - .with(new SetterTester()).build(); - validator.validate(StatisticsResponse.class.getPackage().getName(), - new FilterClassName(StatisticsResponse.class.getName())); - } -} diff --git a/gui-pdp-monitoring/src/webapp/.babelrc b/gui-pdp-monitoring/src/webapp/.babelrc deleted file mode 100644 index 0639bf7..0000000 --- a/gui-pdp-monitoring/src/webapp/.babelrc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "presets": [ - "@babel/preset-env" - ] -} \ No newline at end of file diff --git a/gui-pdp-monitoring/src/webapp/.gitignore b/gui-pdp-monitoring/src/webapp/.gitignore deleted file mode 100644 index 0b898ee..0000000 --- a/gui-pdp-monitoring/src/webapp/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -node_modules/ -node/ -dist/bundle.js -coverage/ -reports/ \ No newline at end of file diff --git a/gui-pdp-monitoring/src/webapp/dist/css/interfaceAssets.css b/gui-pdp-monitoring/src/webapp/dist/css/interfaceAssets.css deleted file mode 100644 index 8123245..0000000 --- a/gui-pdp-monitoring/src/webapp/dist/css/interfaceAssets.css +++ /dev/null @@ -1,3453 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2020 Nordix Foundation. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ -@charset "utf-8"; - -html { - position: relative; - font-family: Arial, Helvetica, sans-serif; - font-size: 10px !important; - line-height: 10px !important; - margin: 0; - padding: 0; - width: 100%; - height: 100%; -} - -body { - font-size: 1.6rem; - line-height: 1.2rem; - color: #333333; - background-color: #ffffff; - margin: 0; - padding: 0; -} - -*:focus, .ebInput:focus, .ebIcon:focus, .ebCheckbox:focus+.ebCheckbox-inputStatus:after, - .ebRadioBtn:focus+.ebRadioBtn-inputStatus:after, textarea:focus, button:focus, - i:focus { - /** - * FF outline do not looks same as Chrome so adding box shadow - * FF outline is not working as expected - **/ - /* - * one way of outline - outline: #4d90fe auto 5px; - box-shadow: 0 0 0 1px #4d90fe; - -webkit-box-shadow: none; - */ - outline: none; // - box-shadow: 0 0 2px 1px #FFFFFF; -} - -h1, h2, h3, h4, h5, h6 { - color: #4d4d4d; - font-weight: bold; -} - -h1 { - line-height: 3.2rem; - font-size: 3.2rem; - font-weight: normal; - padding: 0.6rem 0; - margin: 0 0 0.6rem 0; -} - -h2 { - border-bottom: #000000 solid 1px; - line-height: 2.0rem; - font-size: 2.0rem; - font-weight: normal; - padding: 1.2rem 0 0.7rem 0; - margin: 0 0 0.4rem 0; -} - -h3 { - border-bottom: #7f7f7f solid 1px; - line-height: 1.6rem; - font-size: 1.6rem; - padding: 1.2rem 0 0.7rem 0; - margin: 0 0 0.4rem 0; - font-weight: normal; - color: #333333; -} - -h4 { - border-bottom: #b2b2b2 solid 1px; - line-height: 1.2rem; - font-size: 1.2rem; - padding: 0.6rem 0; - margin: 0 0 0.6rem 0; - font-weight: bold; - color: #333333; -} - -.ebLayout-SectionSubheading h3 { - float: left; - margin: 0; - border-bottom: none; -} - -/* System Bar */ -.ebSystemBar { - position: relative; - width: 100%; - height: 40px; - border-top: 4px solid #0066b3; - background-image: linear-gradient(180deg, #ffffff 0%, #f4f4f4 100%); - box-shadow: 0 1px 2px #D2D2D2; -} - -.ebSystemBar::before { - position: absolute; - top: -4px; - left: 0; - width: 100%; - height: 4px; - content: ""; - font-size: 0; - background: #0066b3; - background: -o-linear-gradient(left, #a2c517 10%, #009046 30%, #0082b6 50%, #151f77 - 75%, #db0050 100%); - background: -moz-linear-gradient(left, #a2c517 10%, #009046 30%, #0082b6 50%, - #151f77 75%, #db0050 100%); - background: -webkit-linear-gradient(left, #a2c517 10%, #009046 30%, #0082b6 50%, - #151f77 75%, #db0050 100%); - background: -ms-linear-gradient(left, #a2c517 10%, #009046 30%, #0082b6 50%, #151f77 - 75%, #db0050 100%); - background: -webkit-gradient(linear, left top, right top, color-stop(0.1, #a2c517), - color-stop(0.3, #009046), color-stop(0.5, #0082b6), - color-stop(0.75, #151f77), color-stop(1, #db0050)); - background: linear-gradient(left, #a2c517 10%, #009046 30%, #0082b6 50%, #151f77 75% - , #db0050 100%); -} - -.ebSystemBar-logo { - position: absolute; - top: 0; - bottom: 0; - left: 0; - height: 40px; - width: 20px; - padding: 0 10px; - background: url('../resources/systemBar/econ01.svg') no-repeat center - center transparent; - background-size: 20px; -} - -.ebSystemBar-topMenuName { - display: inline-block; - padding: 0 5px 0 40px; - margin: 0; - line-height: 40px; - font-size: 20px; - color: #58585A; -} - -.ebSystemBar-topMenu { - position: absolute; - top: 0; - bottom: 0; - left: 50px; - list-style: none; - height: 40px; - margin: 0; - padding: 0; -} - -.ebSystemBar-topMenu li { - display: inline-block; -} - -.ebSystemBar-topMenu a { - padding: 0 5px 0 15px; - margin: 0; - font-size: 1.6em; - line-height: 40px; - color: #58585a; - cursor: pointer; - text-decoration: none; -} - -.ebSystemBar-topMenu a:hover { - color: #0066B3; -} - -.ebSystemBar-rightButton { - float: right; - display: inline-block; - line-height: 40px; - vertical-align: middle; -} - -.ebSystemBar-rightButton a { - display: block; - padding: 0 18px 0 18px; - font-size: 1.3rem; - color: #0066B3; - background-color: transparent; - background-repeat: no-repeat; - background-position: 18px center; - border-left: solid 1px #D2D2D2; -} - -.ebSystemBar-rightButton a:hover { - text-decoration: underline; -} - -.ebSystemBar-rightButton:hover { - background-image: linear-gradient(180deg, #f2f2f2 0%, #e8e8e8 100%); -} - -@media screen and (max-width: 640px) { - .ebSystemBar-topBar-rightButton a { - width: 0; - padding-left: 34px; - text-indent: -9999px; - } -} - -/* Inline Message */ -.ebInlineMessage { - padding: 5px 15px 0px 7px; - font-size: 0; - position: fixed; - bottom: 0; - left: 2; - width: calc(100% - 30px); - height: 66px; - border: 3px solid #adadad; - background-color: #FFFFFF; -} - -.ebInlineMessage-iconHolder, .ebInlineMessage-contentHolder { - display: inline-block; - vertical-align: top; -} - -.ebInlineMessage-iconHolder { - width: 20px; - margin: 0 12px 0 0; -} - -.ebInlineMessage-contentHolder { - width: calc(100% - 32px); - font-size: 1.2rem; -} - -.ebInlineMessage-header { - margin-top: 3px; - font-size: 14px; - line-height: 14px; -} - -.ebInlineMessage-separator { - height: 1px; - margin: 12px 0; - background-color: #adadad; - opacity: 0.3; -} - -.ebInlineMessage-description { - color: #666666; - white-space: pre; -} - -/* Table */ -.ebTable { - margin: 0; - padding: 0; - table-layout: fixed; - border-left: 1px solid #cccccc; // - ewatkmi: added for visible border; - border-right: 1px solid #cccccc; // - ewatkmi: added for visible border; - border-bottom: 1px solid #cccccc; // - ewatkmi: added for visible border; - border-collapse: collapse; - border-spacing: 0; - color: #1a1a1a; -} - -.ebTable_fullW { - width: 100%; -} - -.ebTable-th_resizable, .ebTable-th_sortable { - position: relative; -} - -.ebTable-th_resizable .ebTable-headerResize { - position: absolute; - top: -20px; - bottom: -20px; - right: -12px; - width: 10px; - cursor: col-resize; - -khtml-user-select: none; - -moz-user-select: none; - -o-user-select: none; - -webkit-user-select: none; - user-select: none; -} - -.ebTable-th_sortable { - cursor: pointer !important; -} - -.ebTable-th_sortable .ebTable-header { - display: flex; - flex-wrap: nowrap; - flex-direction: row; - align-items: center; -} - -.ebTable-th_sortable .ebTable-headerText { - flex-shrink: 1; - flex-grow: 0; - margin-right: 8px; - box-sizing: border-box; - -khtml-user-select: none; - -moz-user-select: none; - -o-user-select: none; - -webkit-user-select: none; - user-select: none; -} - -.ebTable-th_sortable .ebTable-headerSort { - flex-grow: 0; - flex-shrink: 0; - flex-basis: 10px; - margin-left: 4px; -} - -.ebTable-th_sortable .ebTable-headerSortOrder { - flex-grow: 1; - color: #999999; - font-weight: normal; -} - -.ebTable-header { - position: relative; - display: block; - width: 100%; - -moz-box-sizing: border-box; - box-sizing: border-box; -} - -.ebTable-headerText { - padding: 4px 0; - display: inline-block; - vertical-align: middle; - width: 100%; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} - -.ebTable thead tr { - height: 3.2rem; - font-size: 1.2rem; - font-weight: bold; - text-align: left; -} - -.ebTable thead tr th { - padding-left: 1.2rem; - padding-right: 1.2rem; - text-align: left; - cursor: default; - border-top: #cccccc solid 1px; - border-bottom: #cccccc solid 1px; - border-right: #e6e6e6 solid 1px; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -.ebTable thead tr th:last-child { - border-right: none; -} - -.ebTable thead tr:hover { - background: none; -} - -.ebTable thead tr:active { - background: none; -} - -.ebTable tbody tr { - height: 3.2rem; - font-size: 1.2rem; - border-bottom: #e6e6e6 solid 1px; -} - -.ebTable tbody tr td { - margin: 0; - padding: 0 1.2rem; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - cursor: default; - border-right: #e6e6e6 solid 1px; -} - -.ebTable tbody tr td:last-child { - border-right: none; -} - -.ebTable_striped tbody tr { - border-bottom: none; -} - -.ebTable_striped tbody tr td { - border-right: none; -} - -.ebTable_striped tbody tr:nth-of-type(even) { - background-color: #f2f2f2; -} - -.ebTable_striped tbody tr:nth-of-type(odd) { // - ewatkmi: added for nested tables; - background-color: #ffffff; -} - -.ebTable_compact tbody tr { - height: 2.6rem; -} - -.ebTable_expandableStriped { - border-collapse: separate; -} - -.ebTable_expandableStriped tbody tr { - border-bottom: none; -} - -.ebTable_expandableStriped tbody tr td { - border-right: none; -} - -.ebTable_expandableStriped tbody tr:nth-of-type(4n-1), - .ebTable_expandableStriped tbody tr:nth-of-type(4n) { - background-color: #f2f2f2; -} - -.ebTable_pinstripe tr td { - border-bottom: #e6e6e6 solid 1px; -} - -.ebTable_color_paleBlue.ebTable thead tr th { - background-color: #99ddee; - border-top: none; - border-bottom: none; -} - -.ebTable_color_paleBlue.ebTable_striped tbody tr:nth-of-type(even) { - background-color: #e6f6fb; -} - -.ebTable_color_purple.ebTable thead tr th { - background-color: #ca9bc1; - border-top: none; - border-bottom: none; -} - -.ebTable_color_purple.ebTable_striped tbody tr:nth-of-type(even) { - background-color: #f2e6ef; -} - -.ebTable_color_darkGreen.ebTable thead tr th { - background-color: #99c0bf; - border-top: none; - border-bottom: none; -} - -.ebTable_color_darkGreen.ebTable_striped tbody tr:nth-of-type(even) { - background-color: #e6efef; -} - -.ebTable_color_green.ebTable thead tr th { - background-color: #d0e3a2; - border-top: none; - border-bottom: none; -} - -.ebTable_color_green.ebTable_striped tbody tr:nth-of-type(even) { - background-color: #f3f8e8; -} - -.ebTable_color_yellow.ebTable thead tr th { - background-color: #fde499; - border-top: none; - border-bottom: none; -} - -.ebTable_color_yellow.ebTable_striped tbody tr:nth-of-type(even) { - background-color: #fff8e6; -} - -.ebTable_color_orange.ebTable thead tr th { - background-color: #f9d099; - border-top: none; - border-bottom: none; -} - -.ebTable_color_orange.ebTable_striped tbody tr:nth-of-type(even) { - background-color: #fef3e6; -} - -.ebTable_color_red.ebTable thead tr th { - background-color: #f4a6a3; - border-top: none; - border-bottom: none; -} - -.ebTable_color_red.ebTable_striped tbody tr:nth-of-type(even) { - background-color: #fce9e8; -} - -.ebTable_borderTop_none thead tr th { - border-top: none; -} - -.ebTable_verticalBorders_none thead tr th, .ebTable_verticalBorders_none tr td - { - border-right: none !important; - border-left: none !important; -} - -.ebTable_wrapHeaders th { - white-space: normal !important; - text-overflow: inherit !important; -} - -.ebTable_wrapHeaders th .ebTable-headerText { - white-space: normal !important; - text-overflow: inherit !important; -} - -.ebTable-expandableRow { - height: inherit !important; - display: none; -} - -.ebTable-expandableRow_expanded { - display: table-row; -} - -.ebTable-expandableRow>td { - padding: 0 !important; -} - -.ebTable-expandableRow>td>div { - overflow: hidden; - height: 0; - transition: height 0.3s ease-in-out; -} -/** - * Hover/Active/Selected Effects - * - * Modifiers: - * .ebTable_hoverActive_none (disables native hover and active selectors, primarily for pin columns plugin) - */ -.ebTable { - /** Hover effect **/ -} - -.ebTable.ebTable:not (.ebTable_hoverActive_none ) tbody tr:not (.ebTable-expandableRow - ):not (.headerRow ):hover>*, .ebTable tbody tr:not (.ebTable-expandableRow - ):not (.headerRow ).ebTableRow_hover>* { - background-image: linear-gradient(0deg, rgba(0, 102, 179, 0.1), - rgba(0, 102, 179, 0.1)); -} - -.ebTable.ebTable_highlightedEffect_solid tbody tr:not (.ebTable-expandableRow - ).ebTableRow_highlighted>* { - background-color: #ffffff !important; -} - -/* Context Menu */ -.ebContextMenu { - position: relative; - width: 16px; - height: 16px; -} - -.ebContextMenu:focus { - outline: none; -} - -.ebContextMenu-ExpandBtn, .ebContextMenu-expandBtn { - width: 16px; - height: 16px; - position: relative; - -khtml-user-select: none; - -moz-user-select: none; - -o-user-select: none; - -webkit-user-select: none; - user-select: none; -} - -.ebContextMenu-ExpandBtn:focus, .ebContextMenu-expandBtn:focus { - outline: none; -} - -.ebContextMenu-Dropdown, .ebContextMenu-body { - position: absolute; - z-index: 1500; - min-width: 60px; - width: auto; - height: auto; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - -khtml-user-select: none; - -moz-user-select: none; - -o-user-select: none; - -webkit-user-select: none; - user-select: none; - box-shadow: 5px 5px 5px #87888A; -} - -.ebContextMenu-Dropdown_corner_default, - .ebContextMenu-body_corner_default { - position: absolute; - top: 20px; - left: 0px; -} - -.ebContextMenu-Dropdown_corner_topRight, - .ebContextMenu-body_corner_topRight { - position: absolute; - top: 20px; - right: 0px; -} - -.ebContextMenu-Dropdown_corner_bottomLeft, - .ebContextMenu-body_corner_bottomLeft { - position: absolute; - bottom: 20px; - left: 0px; -} - -.ebContextMenu-Dropdown_corner_bottomRight, - .ebContextMenu-body_corner_bottomRight { - position: absolute; - bottom: 20px; - right: 0px; -} - -.ebContextMenu-Dropdown_visible_false, .ebContextMenu-body_visible_false - { - visibility: hidden; -} - -.ebContextMenu-Dropdown_visible_true, .ebContextMenu-body_visible_true { - display: block; -} - -/* Component List */ -.ebComponentList { - position: relative; - z-index: 1500; - padding: 4px 0; - margin: 0; - color: #333333; - list-style: none; - background-color: #ffffff; - border: #bfbfbf solid 1px; - box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2); - border-radius: 3px; - -moz-box-sizing: border-box; - box-sizing: border-box; -} - -.ebComponentList-group, .ebComponentList-item { - padding: 0 0.8rem; - line-height: 2.4rem; - font-size: 1.2rem; - background-color: #ffffff; -} - -.ebComponentList-iconHolder { - display: inline-block; - vertical-align: middle; - width: 16px; - padding-right: 8px; -} - -.ebComponentList-item { - cursor: pointer; -} - -.ebComponentList-item-name { - display: inline-block; - font-size: 12px; - text-overflow: ellipsis; - overflow: hidden; - width: calc(100% - 24px); - vertical-align: middle; -} - -.ebComponentList-item_icon { - font-size: 0; -} - -.ebComponentList-link, .ebComponentList-item, .ebComponentList-item>*, - .ebComponentList-group-header { - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden; -} - -.ebComponentList-group { - display: block; -} - -.ebComponentList-group_expandable_collapsed>.ebComponentList-group-header, - .ebComponentList-group_expandable_expanded>.ebComponentList-group-header - { - font-size: 0; - cursor: pointer; - white-space: nowrap; - height: 24px; - vertical-align: middle; -} - -.ebComponentList-group_expandable_collapsed>.ebComponentList-group-header .ebComponentList-iconHolder+.ebComponentList-group-name, - .ebComponentList-group_expandable_expanded>.ebComponentList-group-header .ebComponentList-iconHolder+.ebComponentList-group-name - { - width: calc(100% - 40px); -} - -.ebComponentList-group_expandable_collapsed>.ebComponentList-inner, - .ebComponentList-group_expandable_expanded>.ebComponentList-inner { - padding: 0 0 0 24px; - margin: 0 -0.8rem; -} - -.ebComponentList-group_expandable_collapsed>.ebComponentList-group-header - { - border: none; -} - -.ebComponentList-group_expandable_collapsed>.ebComponentList-inner .ebComponentList-item - { - overflow: hidden; - padding: 0; - margin: 0; - height: 0; - opacity: 0; - transition: height 0.2s linear, padding 0.075s 0.075s linear, margin - 0.075s 0.075s linear, opacity 0.075s linear; -} - -.ebComponentList-group_expandable_collapsed>.ebComponentList-inner .ebComponentList-group_expandable_collapsed .ebComponentList-group-header, - .ebComponentList-group_expandable_collapsed>.ebComponentList-inner .ebComponentList-group_expandable_expanded .ebComponentList-group-header - { - overflow: hidden; - padding: 0; - margin: 0; - height: 0; - opacity: 0; - transition: height 0.2s linear, padding 0.075s 0.075s linear, margin - 0.075s 0.075s linear, opacity 0.075s linear; -} - -.ebComponentList-group_expandable_collapsed>.ebComponentList-inner .ebComponentList-group>.ebComponentList-inner - { - padding: 0; - margin: 0; - transition: padding 0.1s 0.1s linear, margin 0.1s 0.1s linear; -} - -.ebComponentList-group_expandable_expanded>.ebComponentList-group-header - { - border-bottom: 1px solid #999; -} - -.ebComponentList-group_expandable_expanded>.ebComponentList-inner>.ebComponentList-item - { - overflow: hidden; - height: 24px; - transition: height 0.2s linear, padding 0.075s linear, margin 0.075s - linear, opacity 0.15s 0.15s linear; -} - -.ebComponentList-group_expandable_expanded>.ebComponentList-inner>.ebComponentList-group_expandable_expanded>.ebComponentList-group-header, - .ebComponentList-group_expandable_expanded>.ebComponentList-inner>.ebComponentList-group_expandable_collapsed>.ebComponentList-group-header - { - overflow: hidden; - height: 24px; - text-overflow: ellipsis; - transition: height 0.2s linear, padding 0.075s linear, margin 0.075s - linear, opacity 0.15s 0.15s linear; -} - -.ebComponentList-group:not (.ebComponentList-group_expandable_collapsed - ):not (.ebComponentList-group_expandable_expanded ) >.ebComponentList-group-header - { - cursor: default !important; - pointer-events: none !important; - -ms-touch-action: none !important; - touch-action: none !important; - -khtml-user-select: none !important; - -moz-user-select: none !important; - -o-user-select: none !important; - -webkit-user-select: none !important; - user-select: none; -} - -.ebComponentList-group-header { - font-size: 1.2rem; - font-weight: bold; - line-height: 2.4rem; - border-bottom: 1px solid #999; - background-color: #ffffff; -} - -.ebComponentList-group-header_icon { - font-size: 0; -} - -.ebComponentList-group-header_icon>.ebComponentList-group-name { - width: calc(100% - 24px); -} - -.ebComponentList-group-name { - display: inline-block; - width: calc(100% - 16px); - font-size: 1.2rem; - line-height: 2.4rem; - font-weight: bold; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; - vertical-align: middle; -} - -.ebComponentList-inner { - margin: 0 -0.8rem; - padding: 4px 0 0 0; -} - -.ebComponentList-link { - display: block; -} - -.ebComponentList-link:hover { - text-decoration: none; -} - -.ebComponentList-separator { - height: 1px; - margin: 0.4rem; - background-color: #E6E6E6; -} - -.ebComponentList_focus_forced .ebComponentList-item:hover { - background-color: transparent; -} - -.ebComponentList_focus_forced .ebComponentList-item_focused:hover { - background-color: #e6f0f7; -} - -.ebComponentList:not (.ebComponentList_focus_forced ) .ebComponentList-item:hover - { - background-color: #e6f0f7; -} - -.ebComponentList_focus_forced .ebComponentList-item:active, - .ebComponentList:not (.ebComponentList_focus_forced ) .ebComponentList-item:active - { - background-color: #cce0f0; -} - -.ebComponentList-item { - /* Fixes MultiSelectBox ellipsis bug in Firefox */ - margin: 0px !important; - font-size: 1em !important; -} - -.ebComponentList-item_focused { - background-color: #e6f0f7; -} - -.ebComponentList-item_disabled { - color: #b0b0af; - cursor: not-allowed !important; -} - -.ebComponentList-item_disabled:hover, .ebComponentList-item_disabled:active - { - background-color: inherit !important; -} - -.ebComponentList-item_selected { - position: relative; - cursor: default; -} - -.ebComponentList-item_selected>.ebComponentList-link { - cursor: default; - color: #333333; - cursor: default !important; - pointer-events: none !important; - -ms-touch-action: none !important; - touch-action: none !important; - -khtml-user-select: none !important; - -moz-user-select: none !important; - -o-user-select: none !important; - -webkit-user-select: none !important; - user-select: none; -} - -.ebComponentList-item_selected:before { - position: absolute; - content: ""; - left: 0; - top: 0; - bottom: 0; - width: 100%; - opacity: .2; - background-color: #0967b2; -} - -.ebComponentList-item>.ebComponentList-checkboxHolder>.ebCheckbox { - margin-left: 1px; -} - -.ebComponentList-item>.ebComponentList-checkboxHolder>.ebCheckbox-label - { - padding-left: 3px; - overflow: hidden; - font-size: 12px; - line-height: 2.4rem; - text-overflow: ellipsis; - width: calc(100% - 24px); -} - -.ebComponentList-info { - color: #333333; - font-style: italic; - text-align: center; -} - -.ebComponentList-info:hover { - background-color: #ffffff; -} - -.ebComponentList-info:active { - background-color: #ffffff; -} - -.ebComponentList-info, .ebComponentList-loader { - display: none; - margin: 0.6rem; - cursor: default; -} - -.ebComponentList_info .ebComponentList-group, .ebComponentList_info .ebComponentList-separator, - .ebComponentList_info .ebComponentList-item { - display: none; -} - -.ebComponentList_info .ebComponentList-info { - display: block; -} - -.ebComponentList_loading { - min-height: 34px; -} - -.ebComponentList_loading .ebComponentList-loader { - display: block; -} - -.ebComponentList_loading .ebComponentList-item_selected:before { - display: none; -} - -.ebComponentList_loading>.ebComponentList-group, - .ebComponentList_loading>.ebComponentList-item, - .ebComponentList_loading>.ebComponentList-items>.ebComponentList-group, - .ebComponentList_loading>.ebComponentList-items>.ebComponentList-item { - opacity: 0.4; -} - -/* Scrollbar */ -.eb_scrollbar { - -webkit-overflow-scrolling: touch; - overflow: auto; -} - -.eb_scrollbar::-webkit-scrollbar { - width: 14px; - height: 14px; -} - -.eb_scrollbar::-webkit-scrollbar-track { - background-color: #f0f0f0; - background-clip: content-box; -} - -.eb_scrollbar::-webkit-scrollbar-thumb { - background-color: #cccccc; - border-radius: 3px; - transition: all 0.2s linear; - background-clip: content-box; -} - -.eb_scrollbar::-webkit-scrollbar-thumb:hover { - background-color: #999999; -} - -.eb_scrollbar::-webkit-scrollbar-button { - width: 14px; - height: 14px; - background-repeat: no-repeat; - background-color: #f0f0f0; - background-position: center; -} - -.eb_scrollbar::-webkit-scrollbar-button:hover { - background-color: #cccccc; -} - -.eb_scrollbar::-webkit-scrollbar-button:vertical:decrement { - background-position: center 4px; - background-image: - url("data:image/svg+xml;utf8,"); - border-top-left-radius: 2px; - border-top-right-radius: 2px; -} - -.eb_scrollbar::-webkit-scrollbar-button:vertical:increment { - background-image: - url("data:image/svg+xml;utf8,"); - border-bottom-left-radius: 2px; - border-bottom-right-radius: 2px; -} - -.eb_scrollbar::-webkit-scrollbar-button:horizontal:decrement { - background-position: 4px center; - background-image: - url("data:image/svg+xml;utf8,"); - border-bottom-left-radius: 2px; - border-top-left-radius: 2px; -} - -.eb_scrollbar::-webkit-scrollbar-button:horizontal:increment { - background-image: - url("data:image/svg+xml;utf8,"); - border-bottom-right-radius: 2px; - border-top-right-radius: 2px; -} - -/* Input */ -.ebInput { - display: inline-block; - vertical-align: middle; - text-align: left; - font-size: 1.2rem; - width: 140px; - height: 2.4rem; - padding: 0.4rem 0.6rem; - border: 1px solid #b3b3b3; - -moz-box-sizing: border-box; - box-sizing: border-box; - border-radius: 3px; - box-shadow: inset 1px 1px 0 0 #cccccc; - -webkit-appearance: none; - -moz-appearance: none; - -ms-appearance: none; - appearance: none; -} - -.ebInput_wMargin { - margin: 6px; -} - -.ebInput_txtCenter { - text-align: center; -} - -.ebInput_miniW, .ebInput_width_mini { - width: 40px; -} - -.ebInput_smallW, .ebInput_width_small { - width: 80px; -} - -.ebInput_longW, .ebInput_width_long { - width: 180px; -} - -.ebInput_xLongW, .ebInput_width_xLong { - width: 220px; -} - -.ebInput_width_full { - min-width: 40px; - width: 100%; -} - -.ebInput_noRightSide { - border-width: 1px 0 1px 1px; - border-radius: 3px 0 0 3px; -} - -.ebInput_noLeftSide { - border-width: 1px 1px 1px 0; - border-radius: 0 3px 3px 0; - box-shadow: inset 0 1px 0 0 #cccccc; -} - -.ebInput:hover { - border-color: #666666; -} - -.ebInput[readonly] { - cursor: text; // - box-shadow: none; - border-color: #E3E3E3; - background-color: #f0f0f0; - color: #b2b2b2; -} - -.ebInput[readonly]:hover { // - border-color: #E3E3E3; -} - -.ebInput_disabled, .ebInput:disabled { - color: #B2B2B2; - border-color: #B2B2B2; - background-color: rgba(0, 0, 0, 0.05); - -webkit-text-fill-color: #b2b2b2; - opacity: 1; - -ms-touch-action: none !important; - touch-action: none !important; - box-shadow: inset 1px 1px 0 0 #cccccc; -} - -.ebInput_borderColor { - border-color: #b3b3b3; -} - -.ebInput_borderColor_red { - border-color: #e32119; -} - -.ebInput_status_none { - border-color: #b3b3b3; -} - -.ebInput_status_warning { - border-color: #f08a00; -} - -.ebInput_status_error { - border-color: #e32119; -} - -.ebInput.eb_wMargin+.ebInput-status { - margin: -0.2rem 0.8rem 0 0.6rem; -} - -.ebInput-status { - display: block; - margin: 0.4rem 0 0 0; - line-height: 1.2rem; - min-height: 1.8rem; - font-size: 1.2rem; - font-weight: normal; -} - -.ebInput-statusOk, .ebInput-statusError { - vertical-align: middle; -} - -.ebInput-statusOk:before, .ebInput-statusError:before { - display: inline-block; - vertical-align: middle; - margin: 0 0.6rem 0 0; - width: 1.2rem; - height: 1.2rem; - content: ''; - background-repeat: no-repeat; -} - -.ebInput-statusInfo { - vertical-align: middle; - color: #8d8d8d; -} - -.ebInput-statusOk { - color: #89ba17; - display: none; -} - -.ebInput-statusOk:before { - background-image: url('../resources/form/valid_icon.svg'); -} - -.ebInput-statusError { - color: #e32119; - display: none; -} - -.ebInput-statusError:before { - background-image: url('../resources/form/invalid_icon.svg'); -} - -.ebInput-status_none { - display: none; -} - -.ebInput-status_hide .ebInput-statusOk, .ebInput-status_hide .ebInput-statusError, - .ebInput-status_hide .ebInput-statusInfo { - display: none; -} - -.ebInput-status_info .ebInput-statusInfo { - display: inline-block; -} - -.ebInput-status_info .ebInput-statusOk, .ebInput-status_info .ebInput-statusError - { - display: none; -} - -.ebInput-status_ok .ebInput-statusOk { - display: inline-block; -} - -.ebInput-status_ok .ebInput-statusError, .ebInput-status_ok .ebInput-statusInfo - { - display: none; -} - -.ebInput-status_error .ebInput-statusError { - display: inline-block; -} - -.ebInput-status_error .ebInput-statusOk, .ebInput-status_error .ebInput-statusInfo - { - display: none; -} - -.ebInput:not (.ebInput_validation_focusLost ):valid+.ebInput-status:not - (.ebInput-status_hide ):not (.ebInput-status_info ):not (.ebInput-status_ok - ):not (.ebInput-status_error ) .ebInput-statusOk { - display: inline-block; -} - -.ebInput:not (.ebInput_validation_focusLost ):invalid:not (.ebInput_borderColor - ):not (.ebInput_status_warning ):not (.ebInput_status_none ) { - border-color: #e32119; -} - -.ebInput:not (.ebInput_validation_focusLost ):invalid+.ebInput-status:not - (.ebInput-status_hide ):not (.ebInput-status_info ):not (.ebInput-status_ok - ):not (.ebInput-status_error ) .ebInput-statusError { - display: inline-block; -} - -.ebInput:not (.ebInput_validation_focusLost ):invalid+.ebInput-status:not - (.ebInput-status_hide ):not (.ebInput-status_info ):not (.ebInput-status_ok - ):not (.ebInput-status_error ) .ebInput-statusInfo { - display: none; -} - -.ebInput.ebInput_validation_focusLost:not (:focus ):valid+.ebInput-status:not - (.ebInput-status_hide ):not (.ebInput-status_info ):not (.ebInput-status_ok - ):not (.ebInput-status_error ) .ebInput-statusOk { - display: inline-block; -} - -.ebInput.ebInput_validation_focusLost:not (:focus ):invalid:not (.ebInput_borderColor - ):not (.ebInput_status_warning ):not (.ebInput_status_none ) { - border-color: #e32119; -} - -.ebInput.ebInput_validation_focusLost:not (:focus ):invalid+.ebInput-status:not - (.ebInput-status_hide ):not (.ebInput-status_info ):not (.ebInput-status_ok - ):not (.ebInput-status_error ) .ebInput-statusError { - display: inline-block; -} - -.ebInput.ebInput_validation_focusLost:not (:focus ):invalid+.ebInput-status:not - (.ebInput-status_hide ):not (.ebInput-status_info ):not (.ebInput-status_ok - ):not (.ebInput-status_error ) .ebInput-statusInfo { - display: none; -} - -/* Textarea */ -.ebTextArea { - -webkit-overflow-scrolling: touch; - overflow: auto; - display: inline-block; - vertical-align: middle; - text-align: left; - font-size: 1.2rem; - width: 140px; - padding: 0.4rem 0.6rem; - margin: 0; - border: 1px solid #b3b3b3; - font-family: arial; - -moz-box-sizing: border-box; - box-sizing: border-box; - border-radius: 3px; - box-shadow: inset 1px 1px 0 0 #cccccc; - -webkit-appearance: none; - -moz-appearance: none; - -ms-appearance: none; - appearance: none; -} - -.ebTextArea::-webkit-scrollbar { - width: 14px; - height: 14px; -} - -.ebTextArea::-webkit-scrollbar-track { - background-color: #f0f0f0; - background-clip: content-box; -} - -.ebTextArea::-webkit-scrollbar-thumb { - background-color: #cccccc; - border-radius: 3px; - transition: all 0.2s linear; - background-clip: content-box; -} - -.ebTextArea::-webkit-scrollbar-thumb:hover { - background-color: #999999; -} - -.ebTextArea::-webkit-scrollbar-button { - width: 14px; - height: 14px; - background-repeat: no-repeat; - background-color: #f0f0f0; - background-position: center; -} - -.ebTextArea::-webkit-scrollbar-button:hover { - background-color: #cccccc; -} - -.ebTextArea::-webkit-scrollbar-button:vertical:decrement { - background-position: center 4px; - background-image: - url("data:image/svg+xml;utf8,"); - border-top-left-radius: 2px; - border-top-right-radius: 2px; -} - -.ebTextArea::-webkit-scrollbar-button:vertical:increment { - background-image: - url("data:image/svg+xml;utf8,"); - border-bottom-left-radius: 2px; - border-bottom-right-radius: 2px; -} - -.ebTextArea::-webkit-scrollbar-button:horizontal:decrement { - background-position: 4px center; - background-image: - url("data:image/svg+xml;utf8,"); - border-bottom-left-radius: 2px; - border-top-left-radius: 2px; -} - -.ebTextArea::-webkit-scrollbar-button:horizontal:increment { - background-image: - url("data:image/svg+xml;utf8,"); - border-bottom-right-radius: 2px; - border-top-right-radius: 2px; -} - -.ebTextArea_noMargin { - margin: 0; -} - -.ebTextArea_txtCenter { - text-align: center; -} - -.ebTextArea_miniW, .ebTextArea_width_mini { - width: 40px; -} - -.ebTextArea_smallW, .ebTextArea_width_small { - width: 80px; -} - -.ebTextArea_longW, .ebTextArea_width_long { - width: 180px; -} - -.ebTextArea_xLongW, .ebTextArea_width_xLong { - width: 220px; -} - -.ebTextArea_width_full { - min-width: 40px; - width: 100%; -} - -.ebTextArea_noRightSide { - border-width: 1px 0 1px 1px; - border-radius: 3px 0 0 3px; -} - -.ebTextArea_noLeftSide { - border-width: 1px 1px 1px 0; - border-radius: 0 3px 3px 0; -} - -.ebTextArea:hover { - border-color: #666666; -} - -.ebTextArea[readonly] { - cursor: text; - border-color: #E3E3E3; - background-color: #f0f0f0; - color: #b2b2b2; -} - -.ebTextArea[readonly]:hover { // - border-color: #E3E3E3; -} - -.ebTextArea_disabled, .ebTextArea:disabled { - color: #B2B2B2; - border-color: #B2B2B2; - background-color: rgba(0, 0, 0, 0.05); - -ms-touch-action: none; - touch-action: none; - -webkit-text-fill-color: #b2b2b2; - opacity: 1; - box-shadow: inset 1px 1px 0 0 #cccccc; -} - -.ebTextArea_status_none { - border-color: #b3b3b3; -} - -.ebTextArea_status_warning { - border-color: #f08a00; -} - -.ebTextArea_status_error { - border-color: #e32119; -} - -.ebTextArea:invalid:not (.ebTextArea_status_warning ):not (.ebTextArea_status_none - ) { - border-color: #e32119; -} - -/* Button */ -.ebBtn { - position: relative; - display: inline-block; - vertical-align: middle; - color: #333333; - background-color: #ffffff; - border: none; - min-width: 60px; - box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.2); - border-radius: 3px; - -moz-box-sizing: border-box; - box-sizing: border-box; - background-image: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, - rgba(0, 0, 0, 0.1) 100%); - padding: 0 8px; - height: 2.4rem; - font-size: 1.2rem; - white-space: nowrap; - text-decoration: none; - text-align: center; - cursor: pointer; -} - -a.ebBtn:hover { - color: #333; -} - -a.ebBtn:focus, a.ebBtn:active, a.ebBtn_active { - text-decoration: none; -} - -.ebBtn:focus { - outline: none; - box-shadow: 0 0 2px 1px #4d90fe, 0 0 0 1px rgba(0, 0, 0, 0.2) inset; -} - -.ebBtn_color_blue, .ebBtn_color_darkBlue, .ebBtn_color_paleBlue, - .ebBtn_color_darkGreen, .ebBtn_color_green, .ebBtn_color_orange, - .ebBtn_color_red, .ebBtn_color_purple { - background-image: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, - rgba(0, 0, 0, 0.3) 100%); - color: #F0F0F0 !important; -} - -.ebBtn_color_blue:hover, .ebBtn_color_darkBlue:hover, - .ebBtn_color_paleBlue:hover, .ebBtn_color_darkGreen:hover, - .ebBtn_color_green:hover, .ebBtn_color_orange:hover, .ebBtn_color_red:hover, - .ebBtn_color_purple:hover { - background-image: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, - rgba(0, 0, 0, 0.1) 100%); -} - -.ebBtn_color_blue { - background-color: #0966b3; -} - -.ebBtn_color_darkBlue { - background-color: #0066b3; -} - -.ebBtn_color_paleBlue { - background-color: #00A9D4; -} - -.ebBtn_color_darkGreen { - background-color: #00625F; -} - -.ebBtn_color_green { - background-color: #89BA17; -} - -.ebBtn_color_orange { - background-color: #F08A00; -} - -.ebBtn_color_red { - background-color: #E32119; -} - -.ebBtn_color_purple { - background-color: #953882; -} - -.ebBtn_small { - font-size: 1.1rem; - padding: 0 6px; - height: 2rem; -} - -.ebBtn_large { - font-size: 1.4rem; - padding: 0 10px; - height: 3.8rem; -} - -.ebBtn:hover { - text-decoration: none; - background-image: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, - rgba(0, 0, 0, 0.15) 100%); -} - -.ebBtn_active, .ebBtn:active, .ebBtn_active:hover { - text-decoration: none; - box-shadow: inset 2px 2px 2.5px 0 rgba(0, 0, 0, 0.35), inset 0 0 0 1px - rgba(0, 0, 0, 0.2); - background-image: linear-gradient(180deg, rgba(0, 0, 0, 0.2) 0%, - rgba(0, 0, 0, 0.2) 100%); -} - -.ebBtn:disabled, .ebBtn_disabled, .ebBtn:disabled:hover, .ebBtn_disabled:hover, - .ebBtn:disabled:active, .ebBtn_disabled:active { - -ms-touch-action: none !important; - cursor: not-allowed !important; - touch-action: none !important; - background: rgba(0, 0, 0, 0.1); - color: #8d8d8d !important; -} - -.ebBtn:disabled .ebIcon, .ebBtn_disabled .ebIcon { - opacity: 0.3; -} - -.ebBtn_subtle { - background-image: none; - background-color: transparent; - box-shadow: none; - min-width: auto; -} - -.ebBtn_subtle:hover { - background-image: none; - box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.2); -} - -.ebBtn_subtle:focus { - box-shadow: 0 0 2px 1px #4d90fe, 0 0 0 1px rgba(0, 0, 0, 0.2) inset; -} - -.ebBtn_subtle:active, .ebBtn_subtle.ebBtn_subtle_active { - text-decoration: none; - box-shadow: inset 2px 2px 2.5px 0 rgba(0, 0, 0, 0.35), inset 0 0 0 1px - rgba(0, 0, 0, 0.2); - background-image: linear-gradient(180deg, rgba(0, 0, 0, 0.2) 0%, - rgba(0, 0, 0, 0.2) 100%); -} - -.ebBtn_subtle:disabled, .ebBtn_subtle.ebBtn_subtle_disabled, - .ebBtn_subtle:disabled:hover, .ebBtn_subtle.ebBtn_subtle_disabled:hover, - .ebBtn_subtle:disabled:active, .ebBtn_subtle.ebBtn_subtle_disabled:active - { - background-color: transparent; - box-shadow: none; -} - -.ebBtn:active:focus, .ebBtn_active:focus { - box-shadow: inset 2px 2px 2.5px 0 rgba(0, 0, 0, 0.35), inset 0 0 0 1px - rgba(0, 0, 0, 0.2), 0 0 2px 1px #4d90fe; - background-image: linear-gradient(180deg, rgba(0, 0, 0, 0.2) 0%, - rgba(0, 0, 0, 0.2) 100%); -} - -/* Combobox */ -.ebCombobox { - position: relative; - display: inline-block; - vertical-align: middle; - white-space: nowrap; - margin: 0; - padding: 0; - height: 2.4rem; -} - -.ebCombobox_width_full { - min-width: 70px; - width: 100%; -} - -.ebCombobox_width_full .ebInput { - width: calc(100% - 30px); -} - -.ebCombobox-list, .ebCombobox-body { - position: absolute; - margin-top: 6px; - display: none; - width: 100%; -} - -.ebCombobox-list_rightAlign, .ebCombobox-body_rightAlign { - right: 0; -} - -.ebCombobox-Helper, .ebCombobox-helper { - position: relative; - display: inline-block; - vertical-align: middle; - width: 30px; - /*height: 100%; ewwatkmi: replaced with 2.4rem below*/ - height: 2.4rem; - cursor: pointer; - border: 1px solid #999999; - background-color: #ffffff; - -moz-box-sizing: border-box; - box-sizing: border-box; - border-radius: 0 3px 3px 0; - -webkit-appearance: none; - -moz-appearance: none; - -ms-appearance: none; - appearance: none; - background-image: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, - rgba(0, 0, 0, 0.1) 100%); -} - -.ebCombobox-Helper:hover, .ebCombobox-helper:hover { - background-image: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, - rgba(0, 0, 0, 0.15) 100%); -} - -.ebCombobox-Helper:active, .ebCombobox-helper:active { - box-shadow: inset 2px 2px 3px 0 rgba(0, 0, 0, 0.35); - background-image: linear-gradient(180deg, rgba(0, 0, 0, 0.2) 0%, - rgba(0, 0, 0, 0.2) 100%); -} - -.ebCombobox-Helper:disabled, .ebCombobox-helper:disabled { - border-color: #b2b2b2; -} - -.ebCombobox-Helper:disabled, .ebCombobox-helper:disabled, - .ebCombobox-Helper:disabled:hover, .ebCombobox-helper:disabled:hover, - .ebCombobox-Helper:disabled:active, .ebCombobox-helper:disabled:active - { - -ms-touch-action: none !important; - cursor: not-allowed !important; - touch-action: none !important; - background: #e5e5e5; - color: #B2B2B2; - cursor: not-allowed; - box-shadow: none; -} - -.ebCombobox-Helper .ebCombobox-iconHolder, .ebCombobox-helper .ebCombobox-iconHolder - { - display: inline-block; - opacity: 0.7; - cursor: pointer; - line-height: 2.2rem; -} - -.ebCombobox-Helper .ebCombobox-iconHolder .ebIcon, .ebCombobox-helper .ebCombobox-iconHolder .ebIcon - { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - margin: auto; -} - -.ebCombobox:hover>.ebCombobox-Helper, .ebCombobox:hover>.ebCombobox-helper - { - border-color: #666666; -} - -.ebCombobox - -.ebInput -:focus - -~ -.ebCombobox-list -, /*.ebCombobox .ebInput:focus ~ .ebCombobox-body,*/ -.ebCombobox -:active -> -.ebCombobox-list -, /*.ebCombobox:active > .ebCombobox-body*/ -{ -display -: - -block -; - - -} -.ebCombobox>.ebCombobox-list, .ebCombobox>.ebCombobox-body { - display: none; -} - -.ebCombobox_noMargin { - margin: 0; -} - -.ebCombobox_disabled, .ebCombobox_disabled *:hover { - -ms-touch-action: none !important; - cursor: not-allowed !important; - touch-action: none !important; -} - -.ebCombobox_disabled .ebCombobox-iconHolder, .ebCombobox_disabled .ebCombobox-iconHolder:hover, - .ebCombobox_disabled .ebCombobox-iconHolder:active { - -ms-touch-action: none !important; - cursor: not-allowed !important; - touch-action: none !important; - opacity: 0.3; -} - -.ebCombobox_disabled:hover>.ebCombobox-Helper, .ebCombobox_disabled:hover>.ebCombobox-helper - { - border-color: #b2b2b2; -} - -.ebCombobox_disabled:active>.ebCombobox-list, .ebCombobox_disabled:active>.ebCombobox-body - { - display: none; -} - -.ebCombobox_disabled .ebInput:focus ~ .ebCombobox-list, - .ebCombobox_disabled .ebInput:focus ~ .ebCombobox-body { - display: none; -} - -.ebCombobox_status_warning .ebInput { - border-color: #f08a00; -} - -.ebCombobox_status_error .ebInput { - border-color: #e32119; -} - -/* Switcher */ -.ebSwitcher { - position: relative; - height: 24px; - width: 84px; - display: block; - overflow: hidden; - cursor: pointer; - border: 1px solid #ccc; - border-radius: 3px; - -khtml-user-select: none; - -moz-user-select: none; - -o-user-select: none; - -webkit-user-select: none; - user-select: none; -} - -.ebSwitcher-checkbox { - display: none; -} - -.ebSwitcher-body { - position: relative; - font-size: 0; - white-space: nowrap; - top: 0; - left: 0; - width: 100%; - height: 100%; - transition: left 0.2s linear; -} - -.ebSwitcher-onLabel, .ebSwitcher-switch, .ebSwitcher-offLabel { - display: inline-block; - vertical-align: top; - overflow: hidden; - height: 100%; -} - -.ebSwitcher-onLabel, .ebSwitcher-offLabel { - width: calc(100% - 24px); - line-height: 2.4rem; - color: white; - text-align: center; - font-size: 1.2rem; -} - -.ebSwitcher-onLabel { - background-color: red; -} - -.ebSwitcher-onLabel2 { - background-color: #89ba17; -} - -.ebSwitcher-offLabel { - background-color: #89ba17; -} - -.ebSwitcher-offLabel2 { - background-color: red; -} - -.ebSwitcher-switch { - height: 24px; - width: 24px; - transition: left 0.2s; -} - -.ebSwitcher-switch::after { - content: ""; - position: absolute; - margin: -1px; - width: 24px; - height: 24px; - display: inline-block; - background: #ffffff; - background-image: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, - rgba(0, 0, 0, 0.1) 100%); - border-radius: 3px; - border: 1px solid rgba(0, 0, 0, 0.2); -} - -.ebSwitcher-checkbox:not (:checked ) +.ebSwitcher-body { - left: calc(-100% + 24px); -} - -.ebSwitcher:focus { - /* - outline: #4d90fe auto 5px; - box-shadow: 0 0 0 1px #4d90fe; - -webkit-box-shadow: none; - */ - outline: none; - box-shadow: 0 0 2px 1px #4d90fe; -} - -.ebSwitcher_status_warning { - border-color: #f08a00; -} - -.ebSwitcher_status_error { - border-color: #e32119; -} - -.ebSwitcher_disabled { - cursor: not-allowed; -} - -.ebSwitcher_disabled .ebSwitcher-onLabel, .ebSwitcher_disabled .ebSwitcher-offLabel, - .ebSwitcher_disabled .ebSwitcher-switch::after { - background-color: #e5e5e5; - background-image: none; - color: #8d8d8d; -} - -/* Dropdown */ -.ebDropdown { - position: relative; - display: inline-block; - height: 2.4rem; - padding: 0; - margin: 0; -} - -.ebDropdown-list, .ebDropdown-body { - position: absolute; - margin-top: 6px; - display: none; - min-width: 100%; -} - -.ebDropdown-list_rightAlign, .ebDropdown-body_rightAlign { - right: 0; -} - -.ebDropdown-Header, .ebDropdown-header { - position: relative; - display: inline-block; - vertical-align: middle; - height: 100%; - min-width: 60px; - margin: 0; - padding: 6px 8px; - line-height: 1.2rem; - font-size: 1.2rem; - text-align: left; - text-decoration: none; - white-space: nowrap; - color: #333333; - background-color: #ffffff; - border: none; - cursor: pointer; - box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.2); - border-radius: 3px; - -moz-box-sizing: border-box; - box-sizing: border-box; - background-image: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, - rgba(0, 0, 0, 0.1) 100%); -} - -.ebDropdown-Header:hover, .ebDropdown-header:hover { - background-image: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, - rgba(0, 0, 0, 0.15) 100%); -} - -.ebDropdown-Header:active, .ebDropdown-header:active { - box-shadow: inset 2px 2px 2.5px 0 rgba(0, 0, 0, 0.35), inset 0 0 0 1px - rgba(0, 0, 0, 0.2); - background-image: linear-gradient(180deg, rgba(0, 0, 0, 0.2) 0%, - rgba(0, 0, 0, 0.2) 100%); -} - -.ebDropdown-Header .ebDropdown-caption, .ebDropdown-header .ebDropdown-caption - { - display: inline-block; - padding: 0 4px 0 0; - vertical-align: middle; - min-width: 27px; -} - -.ebDropdown-Header .ebDropdown-iconHolder, .ebDropdown-header .ebDropdown-iconHolder - { - display: inline-block; - cursor: pointer; - opacity: 0.7; -} - -.ebDropdown .ebDropdown-Header:focus+.ebDropdown-list, .ebDropdown .ebDropdown-header:focus+.ebDropdown-body, - .ebDropdown .ebDropdown-Header:active+.ebDropdown-list, .ebDropdown .ebDropdown-header:active+.ebDropdown-body, - .ebDropdown:focus>.ebDropdown-list, .ebDropdown:focus>.ebDropdown-body, - .ebDropdown:active>.ebDropdown-list, .ebDropdown:active>.ebDropdown-body - { - display: block; -} - -.ebDropdown_disabled .ebDropdown-Header, .ebDropdown_disabled .ebDropdown-header - { - background: rgba(0, 0, 0, 0.1); - color: #B2B2B2; -} - -.ebDropdown_disabled .ebDropdown-Header, .ebDropdown_disabled .ebDropdown-header, - .ebDropdown_disabled .ebDropdown-Header:hover, .ebDropdown_disabled .ebDropdown-header:hover, - .ebDropdown_disabled .ebDropdown-Header:active, .ebDropdown_disabled .ebDropdown-header:active - { - -ms-touch-action: none !important; - cursor: not-allowed !important; - touch-action: none !important; -} - -.ebDropdown_disabled .ebDropdown-Header:hover, .ebDropdown_disabled .ebDropdown-header:hover, - .ebDropdown_disabled .ebDropdown-Header:active, .ebDropdown_disabled .ebDropdown-header:active - { - background: rgba(0, 0, 0, 0.1); - color: #B2B2B2; - box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.2); -} - -.ebDropdown_disabled .ebDropdown-Header .ebDropdown-iconHolder, - .ebDropdown_disabled .ebDropdown-header .ebDropdown-iconHolder, - .ebDropdown_disabled .ebDropdown-Header .ebDropdown-iconHolder:hover, - .ebDropdown_disabled .ebDropdown-header .ebDropdown-iconHolder:hover, - .ebDropdown_disabled .ebDropdown-Header .ebDropdown-iconHolder:active, - .ebDropdown_disabled .ebDropdown-header .ebDropdown-iconHolder:active { - -ms-touch-action: none !important; - cursor: not-allowed !important; - touch-action: none !important; - opacity: 0.3; -} - -.ebDropdown_disabled .ebDropdown-Header:focus+.ebDropdown-list, - .ebDropdown_disabled .ebDropdown-header:focus+.ebDropdown-body, - .ebDropdown_disabled .ebDropdown-Header:active+.ebDropdown-list, - .ebDropdown_disabled .ebDropdown-header:active+.ebDropdown-body, - .ebDropdown_disabled:focus>.ebDropdown-list, .ebDropdown_disabled:focus>.ebDropdown-body, - .ebDropdown_disabled:active>.ebDropdown-list, .ebDropdown_disabled:active>.ebDropdown-body - { - display: none; -} - -/* Icons */ -.ebIcon { - display: inline-block; - vertical-align: middle; - border: none; - height: 16px; - width: 16px; - line-height: 1.6rem; - background-repeat: no-repeat; - background-position: center; - background-color: transparent; - background-size: 100%; - -khtml-user-select: none; - -moz-user-select: none; - -o-user-select: none; - -webkit-user-select: none; - user-select: none; - /*small icons */ - /*16px icons*/ -} - -.ebIcon_interactive { - opacity: 0.7; - cursor: pointer; -} - -.ebIcon_interactive:hover { - opacity: 1.0; -} - -.ebIcon_interactive:active { - opacity: 0.4; -} - -.ebIcon_button { - margin: 10px; -} - -.ebIcon_noVertAlign { - vertical-align: inherit; -} - -.ebIcon_disabled { - cursor: default; -} - -.ebIcon_disabled, .ebIcon_disabled:hover, .ebIcon_disabled:active { - opacity: 0.3; -} - -.ebIcon_small { - width: 1rem; - height: 1rem; - line-height: 1rem; -} - -.ebIcon_big { - width: 2rem; - height: 2rem; - line-height: 2rem; -} - -.ebIcon_large { - width: 2.8rem; - height: 2.8rem; - line-height: 2.8rem; -} - -.ebIcon_wMargin { - margin: 4px; -} - -.ebIcon_upArrow { - background-image: url('../resources/16px/ArrowUpSmall_black_16px.svg'); -} - -.ebIcon_upArrow_white { - background-image: url('../resources/16px/arrowUpSmall_white_16px.svg'); -} - -.ebIcon_downArrow { - background-image: url('../resources/16px/ArrowDownSmall_black_16px.svg'); -} - -.ebIcon_downArrow_white { - background-image: url('../resources/16px/ArrowDownSmall_white_16px.svg'); -} - -.ebIcon_leftArrow { - background-image: url('../resources/16px/ArrowLeftSmall_black_16px.svg'); -} - -.ebIcon_leftArrow_white { - background-image: url('../resources/16px/ArrowLeftSmall_white_16px.svg'); -} - -.ebIcon_rightArrow { - background-image: - url('../resources/16px/ArrowRightSmall_black_16px.svg'); -} - -.ebIcon_rightArrow_white { - background-image: - url('../resources/16px/ArrowRightSmall_white_16px.svg'); -} - -.ebIcon_prevArrow { - background-image: - url('../resources/16px/ArrowDoubleLeftSmall_black_16px.svg'); -} - -.ebIcon_nextArrow { - background-image: - url('../resources/16px/ArrowDoubleRightSmall_black_16px.svg'); -} - -.ebIcon_upArrow_10px { - background-image: url('../resources/10px/ArrowUpSmall_black_10px.svg'); -} - -.ebIcon_downArrow_10px { - background-image: url('../resources/10px/ArrowDownSmall_black_10px.svg'); -} - -.ebIcon_leftArrow_10px { - background-image: url('../resources/10px/ArrowLeftSmall_black_10px.svg'); -} - -.ebIcon_rightArrow_10px { - background-image: - url('../resources/10px/ArrowRightSmall_black_10px.svg'); -} - -.ebIcon_prevArrow_10px { - background-image: - url('../resources/10px/ArrowDoubleLeftSmall_black_10px.svg'); -} - -.ebIcon_nextArrow_10px { - background-image: - url('../resources/10px/ArrowDoubleRightSmall_black_10px.svg'); -} - -.ebIcon_errorSmall { - background-image: url('../resources/other/errorSmall_red_10px.svg'); -} - -.ebIcon_tickSmallBlack { - background-image: url('../resources/other/tick_black_10x8px.svg'); -} - -.ebIcon_tickSmallGreen { - background-image: url('../resources/other/tick_green_10x8px.svg'); -} - -.ebIcon_upArrowLarge { - background-image: url('../resources/16px/ArrowUp_black_16px.svg'); -} - -.ebIcon_upArrowLarge_white { - background-image: url('../resources/16px/ArrowUp_white_16px.svg'); -} - -.ebIcon_downArrowLarge { - background-image: url('../resources/16px/ArrowDown_black_16px.svg'); -} - -.ebIcon_downArrowLarge_white { - background-image: url('../resources/16px/ArrowDown_white_16px.svg'); -} - -.ebIcon_downArrowLarge_blue { - background-image: url('../resources/16px/ArrowDown_blue_16px.svg'); -} - -.ebIcon_leftArrowLarge { - background-image: url('../resources/16px/ArrowLeft_black_16px.svg'); -} - -.ebIcon_leftArrowLarge_white { - background-image: url('../resources/16px/ArrowLeft_white_16px.svg'); -} - -.ebIcon_rightArrowLarge { - background-image: url('../resources/16px/ArrowRight_black_16px.svg'); -} - -.ebIcon_rightArrowLarge_white { - background-image: url('../resources/16px/ArrowRight_white_16px.svg'); -} - -.ebIcon_circleArrowDown { - background-image: - url('../resources/16px/circleArrowDown_black_16px.svg'); -} - -.ebIcon_circleArrowDown_white { - background-image: - url('../resources/16px/circleArrowDown_white_16px.svg'); -} - -.ebIcon_circleArrowLeft { - background-image: - url('../resources/16px/circleArrowLeft_black_16px.svg'); -} - -.ebIcon_circleArrowLeft_white { - background-image: - url('../resources/16px/circleArrowLeft_white_16px.svg'); -} - -.ebIcon_circleArrowRight { - background-image: - url('../resources/16px/circleArrowRight_black_16px.svg'); -} - -.ebIcon_circleArrowRight_white { - background-image: - url('../resources/16px/circleArrowRight_white_16px.svg'); -} - -.ebIcon_circleArrowUp { - background-image: url('../resources/16px/circleArrowUp_black_16px.svg'); -} - -.ebIcon_circleArrowUp_white { - background-image: url('../resources/16px/circleArrowUp_white_16px.svg'); -} - -.ebIcon_circleCaretDown { - background-image: - url('../resources/16px/circleCaretDown_black_16px.svg'); -} - -.ebIcon_circleCaretDown_white { - background-image: - url('../resources/16px/circleCaretDown_white_16px.svg'); -} - -.ebIcon_circleCaretLeft { - background-image: - url('../resources/16px/circleCaretLeft_black_16px.svg'); -} - -.ebIcon_circleCaretLeft_white { - background-image: - url('../resources/16px/circleCaretLeft_white_16px.svg'); -} - -.ebIcon_circleCaretRight { - background-image: - url('../resources/16px/circleCaretRight_black_16px.svg'); -} - -.ebIcon_circleCaretRight_white { - background-image: - url('../resources/16px/circleCaretRight_white_16px.svg'); -} - -.ebIcon_circleCaretUp { - background-image: url('../resources/16px/circleCaretUp_black_16px.svg'); -} - -.ebIcon_circleCaretUp_white { - background-image: url('../resources/16px/circleCaretUp_white_16px.svg'); -} - -.ebIcon_eLogo { - background-image: url('../resources/systemBar/econ01.svg'); -} - -.ebIcon_comment { - background-image: url('../resources/16px/Comment_black_16px.svg'); -} - -.ebIcon_comment_white { - background-image: url('../resources/16px/comment_white.svg'); -} - -.ebIcon_copy { - background-image: url('../resources/16px/copy_black_16px.svg'); -} - -.ebIcon_copy_white { - background-image: url('../resources/16px/copy_white_16px.svg'); -} - -.ebIcon_cut { - background-image: url('../resources/16px/cut_black.svg'); -} - -.ebIcon_cut_white { - background-image: url('../resources/16px/cut_white.svg'); -} - -.ebIcon_delete { - background-image: url('../resources/16px/delete_black_16px.svg'); -} - -.ebIcon_delete_white { - background-image: url('../resources/16px/delete_white_16px.svg'); -} - -.ebIcon_duplicate { - background-image: url('../resources/16px/duplicate_black_16px.svg'); -} - -.ebIcon_duplicate_white { - background-image: url('../resources/16px/duplicate_white_16px.svg'); -} - -.ebIcon_edit { - background-image: url('../resources/16px/edit_black_16px.svg'); -} - -.ebIcon_editWhite { - background-image: url('../resources/16px/edit_white_16px.svg'); -} - -.ebIcon_newFile { - background-image: url('../resources/16px/newFile_black_16px.svg'); -} - -.ebIcon_newFile_white { - background-image: url('../resources/16px/newFile_white_16px.svg'); -} - -.ebIcon_save { - background-image: url('../resources/16px/save_black_16px.svg'); -} - -.ebIcon_save_white { - background-size: contain; - background-image: url('../resources/16px/save_white.svg'); -} - -.ebIcon_filter { - background-image: url('../resources/16px/filter_black_16px.svg'); -} - -.ebIcon_filterOn { - background-image: url('../resources/16px/filters_on.svg'); -} - -.ebIcon_filterOff { - background-image: url('../resources/16px/filters_off.svg'); -} - -.ebIcon_filter_white { - background-image: url('../resources/16px/filter_white_16px.svg'); -} - -.ebIcon_folder { - background-image: url('../resources/16px/folder_black_16px.svg'); -} - -.ebIcon_folder_white { - background-image: url('../resources/16px/folder_white_16px.svg'); -} - -.ebIcon_folderClosed { - background-image: url('../resources/16px/folderClosed_black.svg'); -} - -.ebIcon_folderClosed_white { - background-image: url('../resources/16px/folderClosed_white.svg'); -} - -.ebIcon_detach { - background-image: url('../resources/16px/detach_black_16px.svg'); -} - -.ebIcon_detach_white { - background-size: contain; - background-image: url('../resources/16px/detach_white.svg'); -} - -.ebIcon_import { - background-image: url('../resources/16px/import_black.svg'); -} - -.ebIcon_import_white { - background-image: url('../resources/16px/import_white.svg'); -} - -.ebIcon_export { - background-image: url('../resources/16px/export_black_16px.svg'); -} - -.ebIcon_export_white { - background-image: url('../resources/16px/export_white.svg'); -} - -.ebIcon_undo { - background-image: url('../resources/16px/undo_black_16px.svg'); -} - -.ebIcon_undo_white { - background-image: url('../resources/16px/undo_white_16px.svg'); -} - -.ebIcon_cancelled { - background-image: url('../resources/16px/Cancelled_Black_16px.svg'); -} - -.ebIcon_draft { - background-size: contain; - background-image: url('../resources/16px/draft.svg'); -} - -.ebIcon_importExport { - background-image: url('../resources/16px/import_export.svg'); -} - -.ebIcon_login { - background-image: url('../resources/16px/login.svg'); -} - -.ebIcon_move { - background-image: url('../resources/16px/move.svg'); -} - -.ebIcon_remove { - background-image: url('../resources/16px/remove.svg'); -} - -.ebIcon_valid { - background-image: url('../resources/16px/valid_icon.svg'); -} - -.ebIcon_invalid { - background-image: url('../resources/16px/invalid_icon.svg'); -} - -.ebIcon_error { - background-image: url('../resources/16px/error_red_16px.svg'); -} - -.ebIcon_warning { - background-image: url('../resources/16px/warning_yellow_16px.svg'); -} - -.ebIcon_warningOrange { - background-image: url('../resources/16px/warning_orange_16px.svg'); -} - -.ebIcon_warning_white { - background-image: url('../resources/16px/warning_white.svg'); -} - -.ebIcon_warningShield { - background-image: url('../resources/16px/warningShield_black_16px.svg'); -} - -.ebIcon_warningShield_white { - background-size: contain; - background-image: url('../resources/16px/warningShield_white.svg'); -} - -.ebIcon_mail { - background-image: url('../resources/16px/mail_black_16px.svg'); -} - -.ebIcon_mail_white { - background-image: url('../resources/16px/mail_white_16px.svg'); -} - -.ebIcon_mailRead { - background-image: url('../resources/16px/mailRead_black_16px.svg'); -} - -.ebIcon_mailRead_white { - background-image: url('../resources/16px/mailRead_white_16px.svg'); -} - -.ebIcon_link { - background-image: url('../resources/16px/Link_black_16px.svg');; -} - -.ebIcon_lock { - background-image: url('../resources/16px/lock_black_16px.svg'); -} - -.ebIcon_lock_white { - background-image: url('../resources/16px/lock_white_16px.svg'); -} - -.ebIcon_unlock { - background-image: url('../resources/16px/unlock_black_16px.svg'); -} - -.ebIcon_unlock_white { - background-image: url('../resources/16px/unlock_white_16px.svg'); -} - -.ebIcon_logout { - background-image: url('../resources/16px/logout_black_16px.svg'); -} - -.ebIcon_menu { - background-image: url('../resources/16px/menu_black_16px.svg'); -} - -.ebIcon_menu_white { - background-image: url('../resources/16px/menu_white_16px.svg'); -} - -.ebIcon_search { - background-image: url('../resources/16px/search_black_16px.svg'); -} - -.ebIcon_searchWhite { - background-image: url('../resources/16px/search_white_16px.svg'); -} - -.ebIcon_advancedSearch { - background-image: - url('../resources/16px/advanced_search_black_16px.svg'); -} - -.ebIcon_advancedSearchWhite { - background-image: - url('../resources/16px/advanced_search_white_16px.svg'); -} - -.ebIcon_share { - background-image: url('../resources/16px/share_black_16px.svg'); -} - -.ebIcon_share_white { - background-image: url('../resources/16px/share_white.svg'); -} - -.ebIcon_star { - background-image: url('../resources/16px/star_black_16px.svg'); -} - -.ebIcon_star_white { - background-image: url('../resources/16px/star_white_16px.svg'); -} - -.ebIcon_star_yellow { - background-image: url('../resources/16px/star_yellow_16px.svg'); -} - -.ebIcon_starOutline { - background-image: url('../resources/16px/star_outline_black_16px.svg'); -} - -.ebIcon_starOutline_white { - background-image: url('../resources/16px/star_outline_white_16px.svg'); -} - -.ebIcon_starOutline_yellow { - background-image: url('../resources/16px/star_outline_yellow_16px.svg'); -} - -.ebIcon_tick { - background-image: url('../resources/16px/tick_green_16px.svg'); -} - -.ebIcon_tick_black { - background-image: url('../resources/16px/tick_16px.svg'); -} - -.ebIcon_simpleGreenTick { - background-image: url('../resources/16px/simple_green_tick.svg'); -} - -.ebIcon_simpleTick_black { - background-image: url('../resources/16px/simple_tick.svg'); -} - -.ebIcon_download { - background-image: url('../resources/16px/download_black.svg'); -} - -.ebIcon_download_white { - background-image: url('../resources/16px/download_white.svg'); -} - -.ebIcon_downloadWhite { - background-image: url('../resources/16px/download_white_16px.svg'); -} - -.ebIcon_documentWhite { - background-image: url('../resources/16px/document_white_16px.svg'); -} - -.ebIcon_expand { - background-image: url('../resources/16px/expand_black_16px.svg'); -} - -.ebIcon_rowCollapsed { - background-image: url('../resources/16px/rowCollapsed_black_16px.svg'); -} - -.ebIcon_rowExpanded { - background-image: url('../resources/16px/rowExpanded_black_16px.svg'); -} - -.ebIcon_rowView { - background-image: url('../resources/16px/rowView_black_16px.svg'); -} - -.ebIcon_rowView_white { - background-image: url('../resources/16px/rowView_white.svg'); -} - -.ebIcon_externalApp { - background-image: url('../resources/16px/externalApp_black_16px.svg'); -} - -.ebIcon_externalApp_white { - background-image: url('../resources/16px/externalApp_white_16px.svg'); -} - -.ebIcon_fullscreen { - background-image: url('../resources/16px/fullscreen_black_16px.svg'); -} - -.ebIcon_fullscreenMinimize { - background-image: - url('../resources/16px/fullscreenMinimise_black_16px.svg'); -} - -.ebIcon_help { - background-image: url('../resources/16px/help_black_16px.svg'); -} - -.ebIcon_help_white { - background-image: url('../resources/16px/help_white.svg'); -} - -.ebIcon_info { - background-image: url('../resources/16px/info_black.svg'); -} - -.ebIcon_info_white { - background-image: url('../resources/16px/info_white.svg'); -} - -.ebIcon_dialogInfo { - background-image: url('../resources/16px/dialogInfo_blue.svg'); -} - -.ebIcon_dialogInfo_white { - background-image: url('../resources/16px/dialogInfo_white.svg'); -} - -.ebIcon_infoMsgIndicator { - background-image: url('../resources/16px/infoMsgIndicator_16px.svg'); -} - -.ebIcon_exitFullscreen { - background-image: - url('../resources/16px/minimiseFullscreen_black_16px.svg'); -} - -.ebIcon_refresh { - background-image: url('../resources/16px/refresh_black_16px.svg'); -} - -.ebIcon_refresh_white { - background-image: url('../resources/16px/refresh_white_16px.svg'); -} - -.ebIcon_settings { - background-image: url('../resources/16px/settings_black_16px.svg'); -} - -.ebIcon_settings_white { - background-image: url('../resources/16px/settings_white_16px.svg'); -} - -.ebIcon_user { - background-image: url('../resources/16px/user_black_16px.svg'); -} - -.ebIcon_user_white { - background-image: url('../resources/16px/user_white_16px.svg'); -} - -.ebIcon_close { - background-image: url('../resources/16px/X_black_16px.svg'); -} - -.ebIcon_close_white { - background-image: url('../resources/16px/close_white_16px.svg'); -} - -.ebIcon_close_blue { - background-image: url('../resources/16px/X_blue_16px.svg'); -} - -.ebIcon_close_paleBlue { - background-image: url('../resources/16px/X_paleBlue_16px.svg'); -} - -.ebIcon_close_green { - background-image: url('../resources/16px/X_green_16px.svg'); -} - -.ebIcon_close_orange { - background-image: url('../resources/16px/X_orange_16px.svg'); -} - -.ebIcon_close_red { - background-image: url('../resources/16px/X_red_16px.svg'); -} - -.ebIcon_close_yellow { - background-image: url('../resources/16px/X_yellow_16px.svg'); -} - -.ebIcon_minus { - background-image: url('../resources/16px/minus_black_16px.svg'); -} - -.ebIcon_plus { - background-image: url('../resources/16px/plus_black_16px.svg'); -} - -.ebIcon_add { - background-image: url('../resources/16px/add_black_16px.svg'); -} - -.ebIcon_add_white { - background-image: url('../resources/16px/add_white_16px.svg'); -} - -.ebIcon_multiSelect { - background-image: url('../resources/16px/multiSelect_black_16px.svg'); -} - -.ebIcon_multiSelect_white { - background-size: contain; - background-image: url('../resources/16px/multiSelect_white.svg'); -} - -.ebIcon_multiSort { - background-image: url('../resources/16px/multi-sort.svg'); -} - -.ebIcon_multiSort_white { - background-image: url('../resources/16px/multi-sort_white.svg'); -} - -.ebIcon_sort { - background-image: url('../resources/16px/sort.svg'); -} - -.ebIcon_sort_white { - background-image: url('../resources/16px/sort_white.svg'); -} - -.ebIcon_stop { - background-image: url('../resources/16px/stop_black_16px.svg'); -} - -.ebIcon_pause { - background-image: url('../resources/16px/pause_black_16px.svg'); -} - -.ebIcon_suspend { - background-image: url('../resources/16px/suspend_black_16px.svg'); -} - -.ebIcon_resume { - background-image: url('../resources/16px/resume_black_16px.svg'); -} - -.ebIcon_play { - background-image: url('../resources/16px/play_black_16px.svg'); -} - -.ebIcon_fastForward { - background-image: url('../resources/16px/fastForward_black_16px.svg'); -} - -.ebIcon_fastRewind { - background-image: url('../resources/16px/fastRewind_black_16px.svg'); -} - -.ebIcon_print { - background-image: url('../resources/16px/print_black_16px.svg'); -} - -.ebIcon_print_white { - background-image: url('../resources/16px/print_white_16px.svg'); -} - -.ebIcon_calendar { - background-image: url('../resources/16px/calendar_black_16px.svg'); -} - -.ebIcon_calendar_white { - background-image: url('../resources/16px/calendar_white_16px.svg'); -} - -.ebIcon_addToFolder { - background-image: url('../resources/16px/addToFolder_black.svg'); -} - -.ebIcon_addToFolder_white { - background-image: url('../resources/16px/addToFolder_white.svg'); -} - -.ebIcon_alarmCleared { - background-image: url('../resources/16px/alarmCleared_16px.svg'); -} - -.ebIcon_alarmCleared_white { - background-image: url('../resources/16px/alarmCleared_white_16px.svg'); -} - -.ebIcon_alarmCritical { - background-image: url('../resources/16px/alarmCritical_16px.svg'); -} - -.ebIcon_alarmCritical_white { - background-image: url('../resources/16px/alarmCritical_white_16px.svg'); -} - -.ebIcon_alarmHeartbeat { - background-image: url('../resources/16px/alarmHeartbeat_16px.svg'); -} - -.ebIcon_alarmIndeterminate { - background-image: url('../resources/16px/alarmIndeterminate_16px.svg'); -} - -.ebIcon_alarmIndeterminate_white { - background-image: - url('../resources/16px/alarmIndeterminate_white_16px.svg'); -} - -.ebIcon_alarmMajor { - background-image: url('../resources/16px/alarmMajor_16px.svg'); -} - -.ebIcon_alarmMajor_white { - background-image: url('../resources/16px/alarmMajor_white_16px.svg'); -} - -.ebIcon_alarmMinor { - background-image: url('../resources/16px/alarmMinor_16px.svg'); -} - -.ebIcon_alarmMinor_white { - background-image: url('../resources/16px/alarmMinor_white_16px.svg'); -} - -.ebIcon_alarmWarning { - background-image: url('../resources/16px/alarmWarning_16px.svg'); -} - -.ebIcon_alarmWarning_white { - background-image: url('../resources/16px/alarmWarning_white_16px.svg'); -} - -.ebIcon_alarmOtherGrouping { - background-image: url('../resources/16px/alarmOtherGrouping_16px.svg'); -} - -.ebIcon_alarmUnacknowledged { - background-image: url('../resources/16px/alarmUnacknowledged.svg'); -} - -.ebIcon_alarmUnacknowledged_white { - background-image: url('../resources/16px/alarmUnacknowledged_white.svg'); -} - -.ebIcon_alarmUnspecified { - background-image: url('../resources/16px/alarmUnspecified_16px.svg'); -} - -.ebIcon_acknowledgeAlarm { - background-image: url('../resources/16px/acknowledgeAlarm.svg'); -} - -.ebIcon_acknowledgeAlarm_white { - background-image: url('../resources/16px/acknowledgeAlarm_white.svg'); -} - -.ebIcon_clearAlarm { - background-image: url('../resources/16px/clearAlarm.svg'); -} - -.ebIcon_clearAlarm_white { - background-image: url('../resources/16px/clearAlarm_white.svg'); -} - -.ebIcon_bsc { - background-image: url('../resources/16px/BSC_black_16px.svg'); -} - -.ebIcon_bscYellow { - background-image: url('../resources/16px/BSC_Yellow_16px.svg'); -} - -.ebIcon_bscFunction { - background-image: url('../resources/16px/BSCFunction_black_16px.svg'); -} - -.ebIcon_bscFunctionYellow { - background-image: url('../resources/16px/BSCFunction_Yellow_16px.svg'); -} - -.ebIcon_cabinet { - background-image: url('../resources/16px/cabinet_black_16px.svg'); -} - -.ebIcon_cellGray { - background-image: url('../resources/16px/cell_gray_16px.svg'); -} - -.ebIcon_cellGreen { - background-image: url('../resources/16px/cell_green_16px.svg'); -} - -.ebIcon_cellRed { - background-image: url('../resources/16px/cell_red_16px.svg'); -} - -.ebIcon_cellAdjacent { - background-image: url('../resources/16px/cellAdjacent_16px.svg'); -} - -.ebIcon_cellExternal { - background-image: url('../resources/16px/cellExternal_16px.svg'); -} - -.ebIcon_charging { - background-image: url('../resources/16px/charging_black.svg'); -} - -.ebIcon_charging_white { - background-size: contain; - background-image: url('../resources/16px/charging_white.svg'); -} - -.ebIcon_connected { - background-image: url('../resources/16px/connected_black_16px.svg'); -} - -.ebIcon_disconnected { - background-image: url('../resources/16px/disconnected_black_16px.svg'); -} - -.ebIcon_connectionError { - background-image: - url('../resources/16px/connectionError_black_16px.svg'); -} - -.ebIcon_core { - background-image: url('../resources/16px/core_black_16px.svg'); -} - -.ebIcon_coreSubscriber { - background-image: url('../resources/16px/coreSubscriber_black_16px.svg'); -} - -.ebIcon_database { - background-image: url('../resources/16px/database_black_16px.svg'); -} - -.ebIcon_ftpServer { - background-image: url('../resources/16px/ftpServer_black_16px.svg'); -} - -.ebIcon_ftpServerFunction { - background-image: - url('../resources/16px/ftpServerFunction_black_16px.svg'); -} - -.ebIcon_gatewayFunction { - background-image: - url('../resources/16px/gatewayFunction_black_16px.svg'); -} - -.ebIcon_grabHandle { - background-image: url('../resources/16px/grabHandle_black_16px.svg'); -} - -.ebIcon_grabHandle_white { - background-size: contain; - background-image: url('../resources/16px/grabHandle_white.svg'); -} - -.ebIcon_managedFunction { - background-image: - url('../resources/16px/managedFunction_black_16px.svg'); -} - -.ebIcon_managedGroup { - background-image: url('../resources/16px/managedGroup_black_16px.svg'); -} - -.ebIcon_managementNode { - background-image: url('../resources/16px/managementNode_black_16px.svg'); -} - -.ebIcon_network { - background-image: url('../resources/16px/network_black_16px.svg'); -} - -.ebIcon_networkElement { - background-image: url('../resources/16px/networkElement_black_16px.svg'); -} - -.ebIcon_networkElement_white { - background-image: url('../resources/16px/networkElement_white_16px.svg'); -} - -.ebIcon_rbs { - background-image: url('../resources/16px/RBS_black_16px.svg'); -} - -.ebIcon_rbs_white { - background-image: url('../resources/16px/RBS_white_16px.svg'); -} - -.ebIcon_routeSwitch { - background-image: url('../resources/16px/routeSwitch.svg'); -} - -.ebIcon_rxi { - background-image: url('../resources/16px/rxi_black_16px.svg'); -} - -.ebIcon_switchFunction { - background-image: url('../resources/16px/switchFunction_black_16px.svg'); -} - -.ebIcon_technicianPresent { - background-image: url('../resources/16px/technicianPresent_16px.svg'); -} - -.ebIcon_terminal { - background-image: url('../resources/16px/terminal_black_16px.svg'); -} - -.ebIcon_topology { - background-image: url('../resources/16px/topology_black_16px.svg'); -} - -.ebIcon_access { - background-image: url('../resources/16px/access_black_16px.svg'); -} - -.ebIcon_access_white { - background-image: url('../resources/16px/access_white_16px.svg'); -} - -.ebIcon_accessSettings { - background-image: url('../resources/16px/accessSettings_black_16px.svg'); -} - -.ebIcon_accessSettings_white { - background-image: url('../resources/16px/accessSettings_white_16px.svg'); -} - -.ebIcon_alignCenter { - background-image: url('../resources/16px/alignCenter_black_16px.svg'); -} - -.ebIcon_alignCenter_white { - background-image: url('../resources/16px/alignCenter_white.svg'); -} - -.ebIcon_alignLeft { - background-image: url('../resources/16px/alignLeft_black_16px.svg'); -} - -.ebIcon_alignLeft_white { - background-image: url('../resources/16px/alignLeft_white.svg'); -} - -.ebIcon_alignRight { - background-image: url('../resources/16px/alignRight_black_16px.svg'); -} - -.ebIcon_alignRight_white { - background-image: url('../resources/16px/alignRight_white.svg'); -} - -.ebIcon_cli { - background-image: - url('../resources/16px/CommandLineInterface_black_16px.svg'); -} - -.ebIcon_cli_white { - background-image: - url('../resources/16px/CommandLineInterface_white_16px.svg'); -} - -.ebIcon_controllingNode { - background-image: url('../resources/16px/controllingNode.svg'); -} - -.ebIcon_grid3x3 { - background-image: url('../resources/16px/grid3X3_black_16px.svg'); -} - -.ebIcon_grid3x3_white { - background-image: url('../resources/16px/grid3x3_white.svg'); -} - -.ebIcon_grid4x4 { - background-image: url('../resources/16px/grid4X4_black_16px.svg'); -} - -.ebIcon_grid4x4_white { - background-image: url('../resources/16px/grid4x4_white.svg'); -} - -.ebIcon_gridView { - background-image: url('../resources/16px/gridView_black_16px.svg'); -} - -.ebIcon_gridView_white { - background-image: url('../resources/16px/gridView_white.svg'); -} - -.ebIcon_jumpTo { - background-image: url('../resources/16px/jumpTo_black_16px.svg'); -} - -.ebIcon_microwave { - background-image: url('../resources/16px/microwave.svg'); -} - -.ebIcon_mo { - background-image: url('../resources/16px/mo.svg'); -} - -.ebIcon_security { - background-image: url('../resources/16px/security_black_16px.svg'); -} - -.ebIcon_security_white { - background-image: url('../resources/16px/security_white_16px.svg'); -} - -.ebIcon_site { - background-image: url('../resources/16px/site_black_16px.svg'); -} - -.ebIcon_siteManager { - background-image: url('../resources/16px/siteManager_black_16px.svg'); -} - -.ebIcon_subnetwork { - background-image: url('../resources/16px/subnetwork.svg'); -} - -.ebIcon_gateway, .ebIcon_switch { - background-image: url('../resources/16px/switch.svg'); -} - -.ebIcon_tip { - background-image: url('../resources/16px/tip_black_16px.svg'); -} - -.ebIcon_tip_white { - background-image: url('../resources/16px/tip_white_16px.svg'); -} - -.ebIcon_attach { - background-image: url('../resources/16px/attach_black_16px.svg'); -} - -.ebIcon_attach_white { - background-size: contain; - background-image: url('../resources/16px/attach_white.svg'); -} - -.ebIcon_clock { - background-image: url('../resources/16px/clock_black_16px.svg'); -} - -.ebIcon_clock_white { - background-image: url('../resources/16px/clock_white_16px.svg'); -} - -.ebIcon_windowMaximize { - background-image: url('../resources/16px/WindowMaximize_black_16px.svg'); -} - -.ebIcon_windowMinimize { - background-image: url('../resources/16px/WindowMinimize_black_16px.svg'); -} - -.ebIcon_deprecated { - background-image: url('../resources/16px/deprecated_16px.svg'); -} - -.ebIcon_obsolete { - background-image: url('../resources/16px/obsolete_16px.svg'); -} - -.ebIcon_newStatus_blue { - background-image: url('../resources/16px/newStatus_blue_16px.svg'); -} - -.ebIcon_newStatus_green { - background-image: url('../resources/16px/newStatus_green_16px.svg'); -} - -.ebIcon_upload { - background-image: url('../resources/16px/upload_black_16px.svg'); -} - -.ebIcon_activate { - background-image: url('../resources/16px/activate_black_16px.svg'); -} - -.ebIcon_activate_white { - background-size: contain; - background-image: url('../resources/16px/activate_white.svg'); -} - -.ebIcon_deactivate { - background-image: url('../resources/16px/deactivate_black_16px.svg'); -} - -.ebIcon_deactivate_white { - background-size: contain; - background-image: url('../resources/16px/deactivate_white.svg'); -} - -.ebIcon_switchBetween { - background-image: url('../resources/16px/switchBetween_black_16px.svg'); -} - -.ebIcon_switchBetween_white { - background-image: url('../resources/16px/switchBetween_white_16px.svg'); -} - -.ebIcon_eye { - background-image: url('../resources/16px/eye_black_16px.svg'); -} - -.ebIcon_eye_white { - background-image: url('../resources/16px/eye_white_16px.svg'); -} - -.ebIcon_eyeLine { - background-image: url('../resources/16px/eyeLine_black_16px.svg'); -} - -.ebIcon_eyeLine_white { - background-image: url('../resources/16px/eyeLine_white.svg'); -} - -.ebIcon_activityTray { - background-image: url('../resources/16px/activity_16px_black.svg'); -} - -.ebIcon_note { - background-image: url('../resources/16px/note_black_16px.svg'); - background-size: contain; -} - -.ebIcon_note_white { - background-image: url('../resources/16px/note_white_16px.svg'); -} - -.ebIcon_tableView { - background-image: url('../resources/16px/tableView_black_16px.svg'); -} - -.ebIcon_tableView_white { - background-image: url('../resources/16px/tableView_white_16px.svg'); -} - -.ebIcon_synced { - background-image: url('../resources/16px/Syncd_16px.svg'); -} - -.ebIcon_syncError { - background-image: url('../resources/16px/SyncError_16px.svg'); -} - -.ebIcon_syncing { - background-image: url('../resources/16px/Syncing_Static_16px.svg'); -} - -.ebIcon_syncing_animated { - background-image: url('../resources/16px/Syncing_Animated_16px.svg'); -} - -/* Breadcrumb */ -.ebBreadcrumbs { - position: relative; - display: block; - font-size: 0; - margin-top: 12px; - margin-bottom: 4px; -} - -.ebBreadcrumbs-link { - font-size: 1.2rem; - vertical-align: middle; - display: inline-block -} - -.ebBreadcrumbs-list { - position: absolute; - left: 0; - margin-top: 6px; - display: none; - min-width: calc(100% - 16px); - max-width: 250px; - z-index: 1500 -} - -.ebBreadcrumbs-arrow { - margin-left: .6rem; - vertical-align: middle; - outline: none; - display: inline-block; - line-height: 12px -} - -.ebBreadcrumbs-arrow:focus>* { - opacity: 1 -} - -.ebBreadcrumbs-arrow_hidden { - display: none -} - -.ebBreadcrumbs-arrow:focus+.ebBreadcrumbs-list { - display: block -} - -.ebBreadcrumbs-item { - position: relative; - font-size: 0; - white-space: nowrap; - display: inline-block; - margin-bottom: .8rem -} - -.ebBreadcrumbs-item:after { - vertical-align: middle; - display: inline-block; - width: 20px; - content: "/"; - font-size: 1.6rem; - text-align: center; - color: #999; - cursor: default !important; - pointer-events: none !important; - -ms-touch-action: none !important; - touch-action: none !important; - -khtml-user-select: none !important; - -moz-user-select: none !important; - -o-user-select: none !important; - -webkit-user-select: none !important; - user-select: none -} - -.ebBreadcrumbs-item:last-child { - margin-right: 0 -} - -.ebBreadcrumbs-item:last-child>.ebBreadcrumbs-link { - -ms-touch-action: none !important; - touch-action: none !important; - -khtml-user-select: none !important; - -moz-user-select: none !important; - -o-user-select: none !important; - -webkit-user-select: none !important; - user-select: none -} - -.ebBreadcrumbs-item:last-child:after { - content: ""; - padding: 0; - font-size: 0; - width: 0; -} - -.ebBreadcrumbs a { - font-size: 1.2rem; - color: #0066b3; - text-decoration: none; -} - -.ebBreadcrumbs a:hover { - text-decoration: underline; - outline: none; -} - -.ebBreadcrumbs a:active { - text-decoration: underline -} - -.ebBreadcrumbs a:focus { - outline: none; - text-decoration: underline; - box-shadow: none; -} \ No newline at end of file diff --git a/gui-pdp-monitoring/src/webapp/dist/css/papChartLib.css b/gui-pdp-monitoring/src/webapp/dist/css/papChartLib.css deleted file mode 100644 index 5dafa25..0000000 --- a/gui-pdp-monitoring/src/webapp/dist/css/papChartLib.css +++ /dev/null @@ -1,64 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2020 Nordix Foundation. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ -path { // - stroke: #5fbadd; - stroke-width: 2; - fill: none; -} - -.axis path, .axis line { - fill: none; - stroke: grey; - stroke-width: 1; - shape-rendering: crispEdges; -} - -.tooltip { - position: absolute; - text-align: center; - width: 90px; - height: 42px; - padding: 2px; - font: 12px sans-serif; - background: white; - border: 2px solid grey; - border-radius: 8px; - pointer-events: none; -} - -.papChart, .papChart_inline { - display: inline-block; - position: relative; - width: 45%; - padding-bottom: 21%; - vertical-align: top; - overflow: hidden; -} - -.papChart:nth-child(even) { - margin-left: 50px; -} - -.svg-content-responsive { - display: inline-block; - position: absolute; - top: 10px; - left: 0; -} diff --git a/gui-pdp-monitoring/src/webapp/dist/css/styles.css b/gui-pdp-monitoring/src/webapp/dist/css/styles.css deleted file mode 100644 index f05277c..0000000 --- a/gui-pdp-monitoring/src/webapp/dist/css/styles.css +++ /dev/null @@ -1,515 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2020 Nordix Foundation. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ -.ebSystemBar-config { - position: absolute; - top: 0; - bottom: 0; - right: 0; - height: 40px; - width: 20px; - padding: 0 10px; - background: url('../resources/16px/settings_black_16px.svg') no-repeat - center center transparent; - background-size: 20px; - cursor: pointer; -} - -.content { - display: none; - padding: 10px; -} - -.context { - margin-left: 5px; -} - -.wrapper { - border: 1px dashed #ddd; - box-shadow: 0 0 0 3px #fff, 0 0 0 5px #ddd, 0 0 0 10px #fff, 0 0 2px - 10px #eee; - padding: 10px; - margin: 10px; - min-width: 1287px; -} - -.engineService { - margin-left: 5px; - padding-bottom: 10px; -} - -.papDialogDiv { - background-color: white; - position: fixed; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - min-width: 310px; - min-height: 140px; - resize: both; - overflow: auto; - padding: 10px 10px 10px 10px; - border: 1px solid #c0c0c0; - border-radius: 3px; - box-shadow: 3px 7px 5px #555555; -} - -.papDialogDiv { - background-color: white; - position: fixed; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - min-width: 310px; - min-height: 140px; - resize: both; - overflow: auto; - padding: 10px 10px 10px 10px; - border: 1px solid #c0c0c0; - border-radius: 3px; - box-shadow: 3px 7px 5px #555555; -} - -.papErrorDialogDiv { - max-width: 80%; - max-height: 80%; - overflow: hidden; -} - -/* Dialog */ -.papDialogDiv .headingSpan { - width: 100%; - height: 30px; - display: inline-block; - text-align: center; - font-weight: bold; - font-size: 20px; - padding: 5px 0px 0px 0px; - border-bottom: #c0c0c0 solid 1px; -} - -.papDialogDivBackground { - position: fixed; - height: 100%; - width: 100%; - background-color: rgba(0, 0, 0, 0.5); - top: 0px; - left: 0px; -} - -.dialogMessage { - white-space: pre-wrap; - font: 14px "Lucida Sans Unicode", "Lucida Grande", sans-serif; - overflow-y: auto; - max-height: 480px; - overflow-x: hidden; - word-wrap: break-word; -} - -/* Form */ -.resultFormDiv .form-style-1 .field-textarea { - height: 480px; - font-size: 15px; -} - -.form-style-1 { - margin: 10px auto; - font: 16px "Lucida Sans Unicode", "Lucida Grande", sans-serif; -} - -.form-style-1 li { - padding: 0; - display: block; - list-style: none; - margin: 10px 0 0 0; -} - -.form-style-1 label { - margin: 0 0 3px 0; - padding: 0px; - display: block; - font-weight: bold; -} - -.form-style-1 input[type=text], .form-style-1 input[type=date], - .form-style-1 input[type=datetime], .form-style-1 input[type=number], - .form-style-1 input[type=search], .form-style-1 input[type=time], - .form-style-1 input[type=url], .form-style-1 input[type=email], - textarea, select { - box-sizing: border-box; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - border: 1px solid #BEBEBE; - padding: 0px 7px; - margin: 0px; - -webkit-transition: all 0.30s ease-in-out; - -moz-transition: all 0.30s ease-in-out; - -ms-transition: all 0.30s ease-in-out; - -o-transition: all 0.30s ease-in-out; - outline: none; -} - -.form-style-1 input[type=text]:focus, .form-style-1 input[type=date]:focus, - .form-style-1 input[type=datetime]:focus, .form-style-1 input[type=number]:focus, - .form-style-1 input[type=search]:focus, .form-style-1 input[type=time]:focus, - .form-style-1 input[type=url]:focus, .form-style-1 input[type=email]:focus, - .form-style-1 textarea:focus, .form-style-1 select:focus { - -moz-box-shadow: 0 0 8px #88D5E9; - -webkit-box-shadow: 0 0 8px #88D5E9; - box-shadow: 0 0 8px #88D5E9; - border: 1px solid #88D5E9; -} - -.form-style-1 input:focus::-webkit-input-placeholder { - color: transparent; -} - -.form-style-1 input:focus:-moz-placeholder { - color: transparent; -} - -.form-style-1 .field { - font-size: 15px; -} - -.form-style-1 .field-divided { - width: 49%; - font-size: 15px; -} - -.form-style-1 .field-long { - width: 100%; - font-size: 15px; -} - -.form-style-1 .field-medium { - width: 50%; - font-size: 15px; -} - -.form-style-1 .field-select { - width: 100%; - font-size: 15px; -} - -.form-style-1 .field-textarea { - height: 100px; - font-size: 15px; -} - -.form-style-1 .field-javaType { - width: 100%; - font-size: 15px; -} - -.form-style-1 .field-schemaFlavour { - width: 100%; - font-size: 15px; -} - -.form-style-1 .field-taskSelLogic { - width: 100%; - font-size: 15px; - height: 300px; -} - -.form-style-1 .field-taskLogic { - width: 100%; - font-size: 15px; - height: 300px; -} - -.form-style-1 .field-finalizerLogic { - width: 100%; - font-size: 15px; - height: 300px; -} - -.form-style-1 .field-schemaDefinition { - width: 100%; - font-size: 15px; - height: 100px; -} - -.form-style-1 .required { - color: red; -} - -.form-style-1 .button { - font-size: 15px; -} - -.form-style-1 .delete_ex { - height: 30px; - width: 30px; - opacity: 1; - font-size: 30px; - line-height: 30px; - transition: all 0.8s; - border: 1px solid transparent; - text-align: center; -} - -.form-style-1 .delete_ex:hover { - border-radius: 50%; - background: tomato; - border: 1px solid black; -} - -.form-style-1 .delete_ex_disabled { - width: 0px; - opacity: 0; -} - -/* Icons */ -.expandIcon { - float: right; -} - -.engineContextTitle { - padding: 1.2rem 0 .7rem 0; - font-weight: normal; -} - -.ignoreConflictsLabel { - font-size: 1.4rem; - padding-right: 15px; -} - -#engineServicesTable_periodic_events { - align-items: center; - display: flex; - height: 30px; -} - -.modelLoading { - margin-left: 5px; -} - -.layoutWrapper { - margin: 0 40px; -} - -.appHeading { - color: rgb(51, 51, 51); - display: block; - font-family: Arial, Helvetica, sans-serif; - font-size: 12px; - height: 32px; - line-height: 12px; - position: relative; -} - -.ebQuickActionBar { - margin-top: 1.2rem; - font-size: 0; - height: 32px; - padding: 0.4rem 0; - background-color: #e8e8e8; - position: relative; - width: 100%; - overflow: hidden; - line-height: 0; - box-sizing: border-box; - -webkit-transition: background-color 0.1s ease-in; - transition: background-color 0.1s ease-in; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -ms-border-radius: 3px; - border-radius: 3px; -} - -.ebQuickActionBar_context { - background-color: #f3f3f3; - border-bottom: 2px solid #65cbe5; - box-sizing: border-box; - height: 32px; -} - -.ebQuickActionBar>* { - margin-left: 0.4rem; - margin-right: 0.4rem; - vertical-align: middle; -} - -.ebQuickActionBar-iconHolder { - display: inline-block; - vertical-align: middle; - height: 1.6rem; -} - -.ebQuickActionBar-separator { - display: inline-block; - vertical-align: middle; - border-left: 1px solid #CCCCCC; - margin: 0 8px; - height: 2.4rem; -} - -.ebQuickActionBar-Commands, .ebQuickActionBar-commands { - display: inline-block; - margin: 0; - font-size: 0; - line-height: 2.4rem; -} - -.ebQuickActionBar-Commands-iconHolder, - .ebQuickActionBar-commands-iconHolder { - display: inline-block; - vertical-align: middle; - height: 1.6rem; -} - -.ebQuickActionBar-Commands-separator, - .ebQuickActionBar-commands-separator { - display: inline-block; - vertical-align: middle; - border-left: 1px solid #CCCCCC; - margin: 0 8px; - height: 2.4rem; -} - -.ebQuickActionBar-Commands>*, .ebQuickActionBar-commands>* { - margin-left: 0.4rem; - margin-right: 0.4rem; - vertical-align: middle; -} - -.ebQuickActionBar-Commands-block, .ebQuickActionBar-commands-block, - .ebQuickActionBar-CommandsBlock, .ebQuickActionBar-commandsBlock { - margin: 0 0.8rem; - display: inline-block; -} - -.ebQuickActionBar-Commands-block>*, .ebQuickActionBar-commands-block>*, - .ebQuickActionBar-CommandsBlock>*, .ebQuickActionBar-commandsBlock>* { - margin-left: 0.4rem; - margin-right: 0.4rem; - vertical-align: middle; -} - -.ebQuickActionBar-Commands-block :last-child, - .ebQuickActionBar-commands-block :last-child, - .ebQuickActionBar-CommandsBlock :last-child, - .ebQuickActionBar-commandsBlock :last-child { - margin-right: 0; -} - -.title { - padding: 0px; -} - -.dataTd { - max-width: 1000px; - word-wrap: break-word; - white-space: normal !important; -} - -body { - font-family: 'Nunito Sans', sans-serif; - font-weight: 400; - line-height: 1.6; - color: rgb(48, 47, 47); - background-size: cover; - background-repeat: no-repeat; - min-height: calc(100vh - 2 * 4vw); } - -.container { - max-width: 200rem; - margin: 0vw auto; - background-color: #fff; - border-radius: 6px; - overflow: hidden; - box-shadow: 0 2rem 6rem 0.5rem rgba(101, 90, 86, 0.2); - display: grid; - grid-template-rows: 3rem minmax(100rem, auto); - grid-template-columns: 0.4fr 3.4fr; - grid-template-areas: "head head head" "list recipe shopping"; } - -.header { - grid-area: head; - background-color: #F9F5F3; - display: flex; - align-items: center; - justify-content: space-between; } - -.onapLogo { - padding-left: 15px; - height: 24px; - width: 100px; - padding-top: 7px; -} - -.pdps { - padding: 1rem; - background: #e6e6e6;} - .pdps__list { - list-style: none; - margin-inline-start: -2em; } - .pdps__link:hover { - background-color: #F9F5F3; - transform: translateY(-2px); } - .pdps__link--active { - background-color: #e6e6e6; - font-weight: bold;} - -.statistics { - background-color: #F9F5F3; - border-top: 1px solid #fff; } - -.pdps__list li { - list-style: none; - margin: 5px 0 5px 20px; -} -.pdps__list li[level='0'] { - margin-left: 0; -} -.pdps__list li:not(.parentNode) { - padding-left: 2px; -} -.triangle { - width:0; - height:0; - overflow:hidden; - font-size: 0; - line-height: 0; - border-width:5px; - transition: transform .2s; - transform-origin: left center; - border-style:solid dashed dashed dashed; - border-color:transparent transparent transparent #000; -} -.closed .triangle { - transform: rotateZ(90deg); -} -.pdps__list div.title { - height: 21px; - position: relative; -} -.pdps__list div.title i { - position: absolute; - top: 6px; - left: 0; -} -.pdps__list div.title p { - position: absolute; - top: -3px; - left: 15px; - margin: 0; -} \ No newline at end of file diff --git a/gui-pdp-monitoring/src/webapp/dist/images/logo_onap.png b/gui-pdp-monitoring/src/webapp/dist/images/logo_onap.png deleted file mode 100644 index c6f6857..0000000 Binary files a/gui-pdp-monitoring/src/webapp/dist/images/logo_onap.png and /dev/null differ diff --git a/gui-pdp-monitoring/src/webapp/dist/index.html b/gui-pdp-monitoring/src/webapp/dist/index.html deleted file mode 100644 index 4bb2745..0000000 --- a/gui-pdp-monitoring/src/webapp/dist/index.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - ONAP Policy Client Monitoring - - - - - - - - - - -
-
-
- -
ONAP Policy Framework PDP Monitoring
-
-
-
-
-

PDP List

-
    -
-
-
-
-
-

PDP (Policy Decision Point) Information

-
-

PDP Aggregated Statistics

-
-

PDP Engine Worker Statistics

-
-
-
-
-
- - - \ No newline at end of file diff --git a/gui-pdp-monitoring/src/webapp/dist/resources/16px/rowCollapsed_black_16px.svg b/gui-pdp-monitoring/src/webapp/dist/resources/16px/rowCollapsed_black_16px.svg deleted file mode 100644 index 6878c86..0000000 --- a/gui-pdp-monitoring/src/webapp/dist/resources/16px/rowCollapsed_black_16px.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - -]> - - - - - - - - - - diff --git a/gui-pdp-monitoring/src/webapp/dist/resources/16px/rowExpanded_black_16px.svg b/gui-pdp-monitoring/src/webapp/dist/resources/16px/rowExpanded_black_16px.svg deleted file mode 100644 index 5e3e46a..0000000 --- a/gui-pdp-monitoring/src/webapp/dist/resources/16px/rowExpanded_black_16px.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - -]> - - - - - - - - - diff --git a/gui-pdp-monitoring/src/webapp/dist/resources/16px/settings_black_16px.svg b/gui-pdp-monitoring/src/webapp/dist/resources/16px/settings_black_16px.svg deleted file mode 100644 index c347888..0000000 --- a/gui-pdp-monitoring/src/webapp/dist/resources/16px/settings_black_16px.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - -]> - - - - - - - diff --git a/gui-pdp-monitoring/src/webapp/dist/resources/systemBar/help_black.svg b/gui-pdp-monitoring/src/webapp/dist/resources/systemBar/help_black.svg deleted file mode 100644 index 14fdf5d..0000000 --- a/gui-pdp-monitoring/src/webapp/dist/resources/systemBar/help_black.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - diff --git a/gui-pdp-monitoring/src/webapp/dist/resources/systemBar/logout_black.svg b/gui-pdp-monitoring/src/webapp/dist/resources/systemBar/logout_black.svg deleted file mode 100644 index af297ac..0000000 --- a/gui-pdp-monitoring/src/webapp/dist/resources/systemBar/logout_black.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - diff --git a/gui-pdp-monitoring/src/webapp/js/MonitoringChart.js b/gui-pdp-monitoring/src/webapp/js/MonitoringChart.js deleted file mode 100644 index 94a18df..0000000 --- a/gui-pdp-monitoring/src/webapp/js/MonitoringChart.js +++ /dev/null @@ -1,247 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2020-2021 Nordix Foundation. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -import * as d3 from "d3"; - -/* - * Create a chart and append it to a container - */ -function createChart(data, container, title, unit, lineStroke, nodeColour) { - // Set the dimensions of the canvas - var margin = { - top: 30, - right: 20, - bottom: 30, - left: 50 - }, width = 600 - margin.left - margin.right, height = 270 - margin.top - - margin.bottom; - - // Set the ranges - var x = d3.time.scale().range([0, width]); - var y = d3.scale.linear().range([height, 0]); - - // Define the axes - var xAxis = d3.svg.axis().scale(x).orient("bottom").ticks(5).innerTickSize( - -height).outerTickSize(0).tickPadding(10); - - var yAxis = d3.svg.axis().scale(y).orient("left").ticks(10).innerTickSize( - -width).outerTickSize(0).tickPadding(10); - - // Define the line - var valueline = d3.svg.line().x(function (d) { - return x(d.timestamp); - }).y(function (d) { - return y(d.value); - }); - - // Add the svg canvas to the container - var svg = d3.select(container).append("svg").attr("preserveAspectRatio", - "xMinYMin meet").attr("viewBox", "0 0 600 400").classed( - "svg-content-responsive", true).append("g").attr("transform", - "translate(" + margin.left + "," + margin.top + ")"); - - // Set the unit for the value - svg.attr("unit", unit); - - data = formatDataForChart(data); - - // Scale the range of the data - x.domain(d3.extent(data, function (d) { - return d.timestamp; - })); - y.domain([0, d3.max(data, function (d) { - return Math.ceil((d.value + 1) / 10) * 10; - })]); - - // Set the colour of the line - if (!lineStroke) { - lineStroke = "#5fbadd" - } - - // Set the colour of the circles - if (!nodeColour) { - nodeColour = "#00A9D4" - } - - // Add the valueline path - svg.append("path").attr("class", "line").data(data).attr("unit", unit) - .attr("stroke", lineStroke).attr("d", valueline(data)); - - // Add the scatterplot - svg.selectAll("circle").data(data).enter().append("circle").attr("r", 3.5) - .attr("class", "circle").attr("fill", nodeColour).attr("cx", - function (d) { - return x(d.timestamp); - }).attr("cy", function (d) { - return y(d.value); - }) - - // Apply the tooltip to each node - .on("mouseover", handleMouseOver) - .on("mouseout", handleMouseOut); - - // Add the X Axis - svg.append("g").attr("class", "x axis").attr("transform", - "translate(0," + height + ")").call(xAxis); - - // Add the Y Axis - svg.append("g").attr("class", "y axis").call(yAxis); - - // Add the title - svg.append("text").attr("x", (width / 2)).attr("y", 0 - (margin.top / 2)) - .attr("text-anchor", "middle").style("font-size", "16px").style( - "text-decoration", "underline").text(title); - - // Add the background - svg.selectAll(".tick:not(:first-of-type) line").attr("stroke", "#777") - .attr("stroke-dasharray", "2,2"); -} - -/* - * Generates random chart data. Used when initializing the charts so that they - * are not empty on load - */ -function generateRandomData() { - var data = []; - for (var i = 0; i < 30; i++) { - data.push({ - timestamp: new Date().getTime() - (i * 5000), - value: Math.floor(Math.random() * 100) + 1 - }); - } - return data; -} - -/* - * Update a chart belonging to a specific container - */ -function updateChart(container, data, nodeColour) { - var margin = { - top: 30, - right: 20, - bottom: 30, - left: 50 - }, width = 600 - margin.left - margin.right, height = 270 - margin.top - - margin.bottom; - - data = formatDataForChart(data); - - // Select the chart - var svg = d3.select(container); - - // Set the ranges - var x = d3.time.scale().range([0, width]); - var y = d3.scale.linear().range([height, 0]); - - // Define the axes - var xAxis = d3.svg.axis().scale(x).orient("bottom").ticks(5).innerTickSize( - -height).outerTickSize(0).tickPadding(10); - - var yAxis = d3.svg.axis().scale(y).orient("left").ticks(10).innerTickSize( - -width).outerTickSize(0).tickPadding(10); - - // Scale the range of the data - x.domain(d3.extent(data, function (d) { - return d.timestamp; - })); - y.domain([0, d3.max(data, function (d) { - return Math.ceil((d.value + 1) / 10) * 10; - })]); - - // Update the valueline path - var valueline = d3.svg.line().x(function (d) { - return x(d.timestamp); - }).y(function (d) { - return y(d.value); - }); - - // Remove all nodes - svg.selectAll("circle").remove(); - - // Set the node colour if one is passed in - if (!nodeColour) { - nodeColour = "#00A9D4" - } - - // Make the changes - svg.select(".line").data(data) // change the line - .transition().duration(750).attr("d", valueline(data)); - svg.select(".x.axis") // change the x axis - .transition().duration(750).call(xAxis.ticks(5)); - svg.select(".y.axis") // change the y axis - .transition().duration(750).call(yAxis); - - // Redraw the nodes based on the new data - svg.select("svg").select("g").selectAll("circle").data(data).enter() - .append("circle").attr("r", 3.5).attr("class", "circle").attr( - "fill", nodeColour).attr("cx", function (d) { - return x(d.timestamp); - }).attr("cy", function (d) { - return y(d.value); - }) - - // Apply the tooltip to each node - .on("mouseover", handleMouseOver) - .on("mouseout", handleMouseOut); - -} - -/* - * Initialize a singleton div used as a floating tooltip for all charts - */ -function initTooltip() { - d3.select("body").append("div").attr("class", "tooltip").attr("id", - "tooltip").style("opacity", 0); -} - -/* - * Format a date object to string - */ -function formatDate(date) { - return date.toLocaleString().replace(',', ''); -} - -function formatDataForChart(data) { - // Format the data for the chart - data.forEach(function (d) { - d.value = +d.value; - }); - - return data; -} - -function handleMouseOver(d) { - var unit = svg.select(".line").attr("unit"); - - d3.select("body").select(".tooltip").transition() - .duration(50).style("opacity", 1); - d3.select("body").select(".tooltip").html( - formatDate(new Date(d.timestamp)) + "
" - + d.value + (unit ? " " + unit : "")) - .style("left", (d3.event.pageX) + "px").style( - "top", (d3.event.pageY - 28) + "px"); -} - -function handleMouseOut(d) { - d3.select("body").select(".tooltip").transition() - .duration(500).style("opacity", 0); -} - -export {initTooltip, createChart, updateChart, generateRandomData}; diff --git a/gui-pdp-monitoring/src/webapp/js/MonitoringConfig.js b/gui-pdp-monitoring/src/webapp/js/MonitoringConfig.js deleted file mode 100644 index 6e5200e..0000000 --- a/gui-pdp-monitoring/src/webapp/js/MonitoringConfig.js +++ /dev/null @@ -1,126 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2020-2021 Nordix Foundation. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -// Configuration used for page layout and charts -const config = { - refresh: 5000, - engineService: { - parent: "engineService", - tableId: "engineServicesTable", - headers: [{ - title: "Engine Service ID", - id: "engine_id" - }, { - title: "GroupName", - id: "group_name" - }, { - title: "SubGroupName", - id: "subgroup_name" - }, { - title: "HealthStatus", - id: "health_status" - }, { - title: "PdpState", - id: "pdp_state" - }, { - title: "Pap server:port", - id: "server_port" - }] - }, - engineSummary: { - parent: "engineSummary", - tableId: "engineSummaryTable", - headers: [{ - title: "Timestamp", - id: "timestamp" - }, { - title: "Sum of policy deploy", - id: "policy_deploy" - }, { - title: "Sum of policy deploy success", - id: "policy_deploy_success" - }, { - title: "Sum of policy deploy fail", - id: "policy_deploy_fail" - }, { - title: "Sum of policy executions", - id: "policy_executions" - }, { - title: "Sum of policy executions success", - id: "policy_executions_success" - }, { - title: "Sum of policy executions fail", - id: "policy_executions_fail" - }, { - title: "Up Time(ms)", - id: "up_time" - }], - chart: { - avgPolicyDurationChart: { - parent: "avgPolicyDuration", - title: "Average Policy Duration (ms)", - unit: "ms", - lineStroke: "#5FBADD", - nodeColour: "#00A9D4" - }, - } - }, - engineStatus: { - parent: "engineStatus", - tableId: "engineStatusTable", - headers: [{ - title: "Timestamp", - id: "timestamp" - }, { - title: "Engine ID", - id: "engine_id" - }, { - title: "Engine Status", - id: "engine_status" - }, { - title: "Last Message", - id: "last_message" - }, { - title: "Up Time (ms)", - id: "up_time" - }, { - title: "Policy Executions", - id: "policy_executions" - }] - }, - engineChart: { - lastPolicyDurationChart: { - parent: "lastPolicyDurationChart", - title: "Last Policy Duration (ms)", - unit: "ms", - lineStroke: "#F5A241", - nodeColour: "#F08A00" - }, - averagePolicyDurationChart: { - parent: "averagePolicyDurationChart", - title: "Average Policy Duration (ms)", - unit: "ms", - lineStroke: "#00625F", - nodeColour: "#007B78" - } - } -}; - -export { config, }; diff --git a/gui-pdp-monitoring/src/webapp/js/MonitoringMain.js b/gui-pdp-monitoring/src/webapp/js/MonitoringMain.js deleted file mode 100644 index 48aa96c..0000000 --- a/gui-pdp-monitoring/src/webapp/js/MonitoringMain.js +++ /dev/null @@ -1,111 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2020-2021 Nordix Foundation. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -import $ from "jquery"; -import { initTooltip } from "./MonitoringChart"; -import { getEngineURL, clearEngineURL, setUpPage, - removeChildrenElementsByClass, ajax_get_statistics -} from "./MonitoringUtils"; -import { setEngineServiceData } from "./PdpInformation"; -import { config } from "./MonitoringConfig"; -import { setEngineSummaryData } from "./PdpStatisticsSummary"; -import { highlightSelected } from "./PdpListView"; -import { setEngineStatusData } from "./PdpEngineWorkerStatus"; - -function servicesCallback(data){ - var engineURL = localStorage.getItem("pap-monitor-services"); - if (engineURL) { - engineURL = JSON.parse(engineURL); - if (engineURL.hostname === data.server && engineURL.port === data.port) { - setEngineServiceData(data.engineId, window.groupName, window.subGroupName, data.healthStatus, data.pdpState, data.server, data.port); - setEngineSummaryData(data.status, data.timeStamp, data.policyDeployCount, data.policyDeploySuccessCount, data.policyDeployFailCount, data.policyExecutedCount, data.policyExecutedSuccessCount, data.policyExecutedFailCount); - - if (window.engine_id === data.engineId){ - setEngineStatusData(data.status, false); - }else{ - removeChildrenElementsByClass(config.engineStatus.parent); - setEngineStatusData(data.status, true); - } - - window.engine_id = data.engineId; - - // Make content visible after data has been returned for the first time - if (!$(".content").is(':visible')) { - $(".content").fadeIn(); - } - - // Repeat the same request - setTimeout(function() { - window.servicesCall = ajax_get_statistics(window.restRootURL + "statistics/", servicesCallback, - window.services.useHttps, window.services.hostname, window.services.port, - window.services.username, window.services.password, window.id); - }, config.refresh); - } - } -} - -/* - * Called after the DOM is ready - */ -function readyCallback() { - window.restRootURL = location.protocol - + "//" - + window.location.hostname - + ':' + window.location.port - + window.location.pathname - + "papservices/monitoring/"; - // Initialize tooltip for the charts - initTooltip(); - - // Set up the structure of the page - setUpPage(true); - - // Check cookies for engine URL - getEngineURL(); - - // Add click event to config icon for clearing engine URL - $(".ebSystemBar-config").click( - function() { - // Clear the engine URL - clearEngineURL(true); - - // Request the engine URL - getEngineURL(); - } - ); - - ['hashchange', 'load'].forEach(event => window.addEventListener(event, function () { - // Get ID from url - window.id = window.location.hash.replace('#', ''); - if (window.id !== '') { - var arr = window.id.split("/"); - window.groupName = arr[0]; - window.subGroupName = arr[1]; - highlightSelected(window.id); - ajax_get_statistics(restRootURL + "statistics/", servicesCallback, - window.services.useHttps, window.services.hostname, window.services.port, - window.services.username, window.services.password, window.id); - } - })); -} - -$(document).ready(readyCallback); -// Export for unit testing -export { readyCallback, servicesCallback }; diff --git a/gui-pdp-monitoring/src/webapp/js/MonitoringTable.js b/gui-pdp-monitoring/src/webapp/js/MonitoringTable.js deleted file mode 100644 index 229ef6a..0000000 --- a/gui-pdp-monitoring/src/webapp/js/MonitoringTable.js +++ /dev/null @@ -1,61 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2020 Nordix Foundation. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -/* - * Create a table with given headers - */ -function createEngineTable(parent, id, tableHeaders) { - var table = createTable(id); - - var tableHead = document.createElement("thead"); - table.appendChild(tableHead); - tableHead.setAttribute("id", "engineTableHeader"); - - var tableHeaderRow = document.createElement("tr"); - tableHead.appendChild(tableHeaderRow); - tableHeaderRow.setAttribute("id", "engineTableHeaderRow"); - - for ( var t in tableHeaders) { - var tableHeader = document.createElement("th"); - tableHeaderRow.appendChild(tableHeader); - tableHeader.setAttribute("id", "engineTableHeader"); - tableHeader.appendChild(document.createTextNode(tableHeaders[t])); - } - - var tableBody = document.createElement("tbody"); - tableBody.setAttribute("id", "engineTableBody"); - table.appendChild(tableBody); - - parent.append(table); - - return table; -} - -/* - * Create a table and apply UISDK styles to it - */ -function createTable(id) { - var table = document.createElement("table"); - table.setAttribute("id", id); - table.setAttribute("class", "papTable ebTable elTablelib-Table-table ebTable_striped"); - return table; -} - -export { createEngineTable }; \ No newline at end of file diff --git a/gui-pdp-monitoring/src/webapp/js/MonitoringUtils.js b/gui-pdp-monitoring/src/webapp/js/MonitoringUtils.js deleted file mode 100644 index 2f2b044..0000000 --- a/gui-pdp-monitoring/src/webapp/js/MonitoringUtils.js +++ /dev/null @@ -1,417 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2020 Nordix Foundation. - * Modifications Copyright (C) 2021 Bell Canada. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -import $ from "jquery"; -import { createEngineServiceTable } from "./PdpInformation"; -import { createEngineSummaryTable } from "./PdpStatisticsSummary"; -import { RenderPdpList } from "./PdpListView"; - -/* - * Crate a dialog with input, attach it to a given parent and show an optional message - */ -function papDialogFormActivate(formParent, message) { - papUtilsRemoveElement("papDialogDiv"); - - var contentelement = document.createElement("papDialogDiv"); - var formDiv = document.createElement("div"); - var backgroundDiv = document.createElement("div"); - backgroundDiv.setAttribute("id", "papDialogDivBackground"); - backgroundDiv.setAttribute("class", "papDialogDivBackground"); - - backgroundDiv.appendChild(formDiv); - contentelement.appendChild(backgroundDiv); - formParent.appendChild(contentelement); - - formDiv.setAttribute("id", "papDialogDiv"); - formDiv.setAttribute("class", "papDialogDiv"); - - var headingSpan = document.createElement("span"); - formDiv.appendChild(headingSpan); - - headingSpan.setAttribute("class", "headingSpan"); - headingSpan.innerHTML = "PAP Configuration"; - - var form = document.createElement("papDialog"); - formDiv.appendChild(form); - - form.setAttribute("id", "papDialog"); - form.setAttribute("class", "form-style-1"); - form.setAttribute("method", "post"); - - if (message) { - var messageLI = document.createElement("li"); - messageLI.setAttribute("class", "dialogMessage"); - messageLI.innerHTML = message; - form.appendChild(messageLI); - } - - var services = localStorage.getItem("pap-monitor-services_old"); - //url - var input = createDialogList(form, "papDialogUrlInput","Pap rest baseURL:", "services_url_input", "http://localhost:12345", (services && services !== "null") ? JSON.parse(services).useHttps + "://" + JSON.parse(services).hostname + ":" - + JSON.parse(services).port : ""); - - //UserName - createDialogList(form, "papDialogUsernameInput","Pap UserName:", "services_username_input", "username", (services && services !== "null") ? JSON.parse(services).username : ""); - - //Password - createDialogList(form, "papDialogPasswordInput","Pap Password:", "services_password_input", "password", (services && services !== "null") ? JSON.parse(services).password : ""); - - //submit - var inputLI = document.createElement("li"); - form.appendChild(inputLI); - var submitInput = document.createElement("input"); - submitInput.setAttribute("id", "submit"); - submitInput.setAttribute("class", "button ebBtn"); - submitInput.setAttribute("type", "submit"); - submitInput.setAttribute("value", "Submit"); - submitInput.onclick = papDialogFormSubmitPressed; - inputLI.appendChild(submitInput); - - // Enter key press triggers submit - $(input).keyup(function(event) { - if (event.keyCode == 13) { - $(submitInput).click(); - } - }); - - input.focus(); -} - -function createDialogList(form, forA, reminder, id, placeholder, value_old){ - var diaLI = document.createElement("li"); - form.appendChild(diaLI); - - var diaLabel = document.createElement("label"); - diaLI.appendChild(diaLabel); - - diaLabel.setAttribute("for", forA); - diaLabel.innerHTML = reminder; - - var diaLabelSpan = document.createElement("span"); - diaLabel.appendChild(diaLabelSpan); - - diaLabelSpan.setAttribute("class", "required"); - diaLabelSpan.innerHTML = "*"; - - var input = document.createElement("input"); - input.setAttribute("id", id); - input.setAttribute("placeholder", placeholder); - input.value = value_old; - diaLI.appendChild(input); - return input; -} - -/* - * Create a dialog for displaying text - */ -function papTextDialogActivate(formParent, message, title) { - papUtilsRemoveElement("papDialogDiv"); - - var contentelement = document.createElement("div"); - contentelement.setAttribute("id", "papDialogDiv") - var formDiv = document.createElement("div"); - var backgroundDiv = document.createElement("div"); - backgroundDiv.setAttribute("id", "papDialogDivBackground"); - backgroundDiv.setAttribute("class", "papDialogDivBackground"); - - backgroundDiv.appendChild(formDiv); - contentelement.appendChild(backgroundDiv); - formParent.appendChild(contentelement); - - formDiv.setAttribute("id", "papErrorDialogDiv"); - formDiv.setAttribute("class", "papDialogDiv papErrorDialogDiv"); - - var headingSpan = document.createElement("span"); - formDiv.appendChild(headingSpan); - - headingSpan.setAttribute("class", "headingSpan"); - headingSpan.innerHTML = title; - - var form = document.createElement("div"); - formDiv.appendChild(form); - - form.setAttribute("id", "papDialog"); - form.setAttribute("class", "form-style-1"); - form.setAttribute("method", "post"); - - if (message) { - var messageLI = document.createElement("li"); - messageLI.setAttribute("class", "dialogMessage"); - messageLI.innerHTML = message; - form.appendChild(messageLI); - } - - var inputLI = document.createElement("li"); - form.appendChild(inputLI); - - var cancelInput = document.createElement("input"); - cancelInput.setAttribute("class", "button ebBtn"); - cancelInput.setAttribute("type", "submit"); - cancelInput.setAttribute("value", "Close"); - cancelInput.onclick = newModelFormCancelPressed; - form.appendChild(cancelInput); -} - -/* - * Create a Success dialog - */ -function papSuccessDialogActivate(formParent, message) { - papTextDialogActivate(formParent, message, "Success"); -} - -/* - * Create an Error dialog - */ -function papErrorDialogActivate(formParent, message) { - papTextDialogActivate(formParent, message, "Error"); -} - -/* - * Dialog cancel callback - */ -function newModelFormCancelPressed() { - papUtilsRemoveElement("papDialogDivBackground"); -} - -/* - * Dialog submit callback - */ -function papDialogFormSubmitPressed() { - var url = $('#services_url_input').val(); - var userName = $('#services_username_input').val(); - var passWord = $('#services_password_input').val(); - if (url.length > 0 && userName.length > 0 && passWord.length > 0) { - var engineConfig = { - useHttps : url.split(":")[0] == "https"? "https": "http", - hostname : url.split(":")[1].split("//")[1], - port : url.split(":")[2], - username : userName, - password : passWord - }; - localStorage.setItem("pap-monitor-services_old", JSON.stringify(engineConfig)); - localStorage.setItem("pap-monitor-services", JSON.stringify(engineConfig)); - papUtilsRemoveElement("papDialogDivBackground"); - getEngineURL(); - } -} - -/* - * Remove an element from the page - */ -function papUtilsRemoveElement(elementname) { - var element = document.getElementById(elementname); - if (element != null) { - element.parentNode.removeChild(element); - } -} - -function getHomepageURL() { - var homepageURL = location.protocol - + "//" - + window.location.hostname - + (location.port ? ':' + location.port : '') - + (location.pathname.endsWith("/monitoring/") ? location.pathname.substring(0, location.pathname - .indexOf("monitoring/")) : location.pathname); - location.href = homepageURL; -} - -function removeChildrenElementsByClass(className){ - var elements = document.getElementsByClassName(className); - elements[0].innerHTML = ''; -} - -/* - * Clears and resets all content on the page - */ -function setUpPage(clearPdps) { - // Hide all content - $('#content').hide(); - - // Clear each div - $('#content > div').each(function () { - $(this).empty(); - }); - - // clear hashchange - history.replaceState(null, null, ' '); - - //remove last search result of pdps. - if (clearPdps) { - removeChildrenElementsByClass('pdps__list'); - } else { - localStorage.setItem("pap-monitor-services", localStorage.getItem("pap-monitor-services_old")); - } - - // Reset trackers for tables - window.engineStatusTables = []; - - // Set up content div's - createEngineServiceTable(); - createEngineSummaryTable(); -} - -/* - * Retrieves the engine URL from the cookie. If it has not been set yet, then a - * dialog is shown asking for it - */ -function getEngineURL(message) { - // The engine URL is stored in a cookie using the key - // "pap-monitor-services" - var services = localStorage.getItem("pap-monitor-services"); - - // If an engine URL is stored in the cookie - if (services) { - // Parse the engine URL - window.services = JSON.parse(services); - - // Send a request with that engine URL - ajax_get(window.restRootURL, getPdpList, - window.services.useHttps, window.services.hostname, window.services.port, - window.services.username, window.services.password); - } else { - // Prompt for engine URL - papDialogFormActivate(document.body, message); - } -} - -/* - * Clears the cookie and reset the page - */ -function clearEngineURL(clearPdps) { - - if (typeof window.servicesCall !== "undefined") { - window.servicesCall.abort(); - } - - // Remove engine URL from cookie - localStorage.removeItem("pap-monitor-services"); - - // Reset the page - setUpPage(clearPdps); -} - -function getPdpList(data) { - const pdpArray = []; - for (let value of data.groups) { - var map = {}; - map.title = value.name; - map.children = []; - (value.pdpSubgroups).forEach((pdpSubgroup, index) => { - map.children[index] = {}; - map.children[index].title = pdpSubgroup.pdpType; - const instanceId = []; - pdpSubgroup.pdpInstances.forEach(pdpInstance => { - var instanceIdMap = {}; - instanceIdMap.title = pdpInstance.instanceId; - instanceId.push(instanceIdMap) - }); - map.children[index].children = instanceId; - }); - pdpArray.push(map); - } - RenderPdpList(pdpArray, 'pdps__list'); -} - -/* - * Send a GET request - */ -function ajax_get(requestURL, callback, useHttps, hostname, port, username, password, params, errorCallback) { - var data = { - useHttps: useHttps, - hostname: hostname, - port: port, - username: username, - password: password - }; - for (var p in params) { - data[p] = params[p]; - } - return $.ajax({ - type: 'GET', - url: requestURL, - dataType: "json", - data: data, - success: function (data, textStatus, jqXHR) { - if (callback) { - callback(data); - } - }, - error: function (jqXHR, textStatus, errorThrown) { - if (jqXHR.status == 500 || jqXHR.status == 404) { - if (jqXHR.status == 404 || jqXHR.responseText.indexOf("Request failed.") !== -1) { - clearEngineURL(true); - getEngineURL("Cannot connect to PAP"); - } else { - papErrorDialogActivate(document.body, jqXHR.responseText); - } - } - if (errorCallback) { - errorCallback(jqXHR, textStatus, errorThrown); - } - } - }); -} - -function ajax_get_statistics(requestURL, callback, useHttps, hostname, port, username, password, id, params, errorCallback) { - var data = { - useHttps: useHttps, - hostname: hostname, - port: port, - username: username, - password: password, - id: id - }; - for (var p in params) { - data[p] = params[p]; - } - return $.ajax({ - type: 'GET', - url: requestURL, - dataType: "json", - data: data, - success: function (data, textStatus, jqXHR) { - if (callback) { - callback(data); - } - }, - error: function (jqXHR, textStatus, errorThrown) { - if (jqXHR.status == 500 || jqXHR.status == 404) { - clearEngineURL(false); - papErrorDialogActivate(document.body, "Failed to get Statistics in DB."); - } - if (errorCallback) { - errorCallback(jqXHR, textStatus, errorThrown); - } - } - }); -} - -export { - removeChildrenElementsByClass, - papDialogFormActivate, - papErrorDialogActivate, - clearEngineURL, - getEngineURL, - setUpPage, - ajax_get, - ajax_get_statistics, - papUtilsRemoveElement, -}; \ No newline at end of file diff --git a/gui-pdp-monitoring/src/webapp/js/PdpEngineWorkerStatus.js b/gui-pdp-monitoring/src/webapp/js/PdpEngineWorkerStatus.js deleted file mode 100644 index f130617..0000000 --- a/gui-pdp-monitoring/src/webapp/js/PdpEngineWorkerStatus.js +++ /dev/null @@ -1,148 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2020 Nordix Foundation. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -import $ from "jquery"; -import { createEngineTable } from "./MonitoringTable"; -import { config } from "./MonitoringConfig"; -import { createChart, updateChart } from "./MonitoringChart"; -/* - * Create an Engine Status Table and its charts - */ -function createEngineStatusTable(id, startStopStatus) { - var tableId = config.engineStatus.tableId; - var headers = config.engineStatus.headers; - - // Create a wrapper div for both the table and the charts - var wrapper = document.createElement("div"); - wrapper.setAttribute("id", id + "_wrapper"); - wrapper.setAttribute("class", "wrapper"); - $("." + config.engineStatus.parent).append(wrapper); - - // Create the table - var table = createEngineTable($(wrapper), id, headers.map(function(a) { - return a.title; - })); - var tableRow = document.createElement("tr"); - var tableData = ""; - for ( var h in headers) { - tableData += ""; - } - tableRow.innerHTML = tableData; - // var actionTD = $(tableRow).find("#" + tableId + "_action"); - // var checked = (startStopStatus === "STOPPED") ? "checked" : ""; - var chartWrapper = document.createElement("div"); - chartWrapper.setAttribute("id", "chartWrapper"); - - $(table).children("#engineTableBody").append(tableRow); - - var expand = document.createElement("i"); - expand.setAttribute("class", "ebIcon ebIcon_rowExpanded ebIcon_large ebIcon_interactive expandIcon"); - $(expand).click(function() { - if ($(chartWrapper).is(":visible")) { - expand.setAttribute("class", "ebIcon ebIcon_rowCollapsed ebIcon_large ebIcon_interactive expandIcon"); - } else { - expand.setAttribute("class", "ebIcon ebIcon_rowExpanded ebIcon_large ebIcon_interactive expandIcon"); - } - $(chartWrapper).slideToggle(); - }.bind(window)); - $(wrapper).append(expand); - $(wrapper).append(chartWrapper); - return table; -} - -/* - * Check for any changes in the Engine Status Table data and its charts and - * update only where necessary - */ -function setEngineStatusData(engineStatusData, changed) { - var tableId = config.engineStatus.tableId; - var headers = config.engineStatus.headers.map(function(a) { - return a.id; - }); - for ( var esd in engineStatusData) { - var id = tableId + "_" + engineStatusData[esd].id; - var existingTable = undefined; - for ( var est in window.engineStatusTables) { - if (id === window.engineStatusTables[est].getAttribute("id")) { - existingTable = window.engineStatusTables[est]; - } - } - - var data = [ engineStatusData[esd].timestamp, id.split("_")[1], engineStatusData[esd].status, - engineStatusData[esd].lastMessage, engineStatusData[esd].upTime, - engineStatusData[esd].policyExecutions ]; - - var table = existingTable; - // If no table already exists for the engine, add one - if (!table || changed) { - table = createEngineStatusTable(id, engineStatusData[esd].status); - table.setAttribute("id", id); - table.style["margin-bottom"] = "10px"; - table.style.display = "inline-block"; - window.engineStatusTables.push(table); - } - - // Update data in table - for ( var h in headers) { - var td = $(table).find("#" + tableId + "_" + headers[h]); - if (td.html() !== data[h]) { - $(table).find("#" + tableId + "_" + headers[h]).html(data[h]); - } - } - - // Update charts - var wrapper = $(table).parent(); - var chartWrapper = $(wrapper).find("#chartWrapper") - - var chartConfig = config.engineChart.lastPolicyDurationChart; - var lastPolicyDurationChart = wrapper.find("#" + chartConfig.parent)[0]; - if (lastPolicyDurationChart) { - updateChart(lastPolicyDurationChart, JSON.parse(engineStatusData[esd].lastPolicyDuration), - chartConfig.nodeColour); - } else { - chartConfig = config.engineChart.lastPolicyDurationChart; - var lastPolicyDurationDiv = document.createElement("div"); - lastPolicyDurationDiv.setAttribute("id", chartConfig.parent); - lastPolicyDurationDiv.setAttribute("class", "papChart"); - - createChart(engineStatusData[esd].lastPolicyDuration, lastPolicyDurationDiv, - chartConfig.title, chartConfig.unit, chartConfig.lineStroke, chartConfig.nodeColour); - $(chartWrapper).append(lastPolicyDurationDiv); - } - - chartConfig = config.engineChart.averagePolicyDurationChart; - var averagePolicyDurationChart = wrapper.find("#" + chartConfig.parent)[0]; - if (averagePolicyDurationChart) { - updateChart(averagePolicyDurationChart, JSON.parse(engineStatusData[esd].averagePolicyDuration), - chartConfig.nodeColour); - } else { - chartConfig = config.engineChart.averagePolicyDurationChart; - var averagePolicyDurationDiv = document.createElement("div"); - averagePolicyDurationDiv.setAttribute("id", chartConfig.parent); - averagePolicyDurationDiv.setAttribute("class", "papChart"); - createChart(engineStatusData[esd].averagePolicyDuration, averagePolicyDurationDiv, - chartConfig.title, chartConfig.unit, chartConfig.lineStroke, chartConfig.nodeColour); - $(chartWrapper).append(averagePolicyDurationDiv); - } - - } -} - -export { setEngineStatusData, }; \ No newline at end of file diff --git a/gui-pdp-monitoring/src/webapp/js/PdpInformation.js b/gui-pdp-monitoring/src/webapp/js/PdpInformation.js deleted file mode 100644 index f25c245..0000000 --- a/gui-pdp-monitoring/src/webapp/js/PdpInformation.js +++ /dev/null @@ -1,65 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2020-2021 Nordix Foundation. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -import $ from "jquery"; -import { config } from "./MonitoringConfig"; -import { createEngineTable } from "./MonitoringTable"; - -/* - * Create the Engine Service Table - */ -function createEngineServiceTable() { - var tableId = config.engineService.tableId; - var headers = config.engineService.headers; - var table = createEngineTable($("." + config.engineService.parent), tableId, headers.map(function(a) { - return a.title; - })); - var tableRow = document.createElement("tr"); - var tableData = ""; - for ( var h in headers) { - tableData += ""; - } - tableRow.innerHTML = tableData; - $(table).children("#engineTableBody").append(tableRow); -} - -/* - * Check for any changes in the Engine Service Table data and update only where - * necessary - */ -function setEngineServiceData(engineId, groupName, subGroupName, healthStatus, pdpState, server, port) { - window.engineId = engineId; - var tableId = config.engineService.tableId; - var headers = config.engineService.headers.map(function(a) { - return a.id; - }); - var data = [ engineId, groupName, subGroupName, healthStatus, pdpState, server + ":" + port ]; - - var engineServiceTable = $("#engineServicesTable"); - - for ( var h in headers) { - var td = engineServiceTable.find("#" + tableId + "_" + headers[h]); - if (td.html() !== data[h]) { - engineServiceTable.find("#" + tableId + "_" + headers[h]).html(data[h]); - } - } -} - -export { createEngineServiceTable, setEngineServiceData }; \ No newline at end of file diff --git a/gui-pdp-monitoring/src/webapp/js/PdpListView.js b/gui-pdp-monitoring/src/webapp/js/PdpListView.js deleted file mode 100644 index 1e248ce..0000000 --- a/gui-pdp-monitoring/src/webapp/js/PdpListView.js +++ /dev/null @@ -1,76 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2020-2021 Nordix Foundation. - * Modifications Copyright (C) 2021 Bell Canada. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -function RenderPdpList(treeArr, className) { - var $ = treeArr, - root = document.createDocumentFragment(), - childLevel = 0 - var index='' - var isNode=false - function insertChildren(parentNode, traverseArr, subGroup) { - - for(let value of traverseArr) { - if(parentNode === root) { - childLevel = 0 - } - var currentLi = document.createElement('li') - currentLi.setAttribute('level', childLevel) - if(value.children && value.children.length > 0) { - var title = document.createElement('div') - var triangle = document.createElement('i') - var text = document.createElement('p') - currentLi.classList.add('parentNode') - title.classList.add('title') - triangle.classList.add('triangle') - text.innerText = value.title - title.appendChild(triangle) - title.appendChild(text) - currentLi.appendChild(title) - childLevel++ - if(isNode) index="" - if(subGroup !== null){ - index+= subGroup+"/" - } - insertChildren(currentLi, value.children, value.title) - }else { - var a = document.createElement('a') - a.setAttribute('href',"#"+index+subGroup+"/"+value.title) - a.classList.add('pdps__link') - a.textContent= value.title - currentLi.appendChild(a) - isNode=true - } - parentNode.appendChild(currentLi) - } - } - insertChildren(root, $, null) - document.querySelector('ul.' + className + '').appendChild(root) -} - -function highlightSelected (id){ - const resultsArr = Array.from(document.querySelectorAll('.pdps__link')); - resultsArr.forEach(el => { - el.classList.remove('pdps__link--active'); - }); - document.querySelector(`.pdps__link[href*="${id}"]`).classList.add('pdps__link--active'); -} - -export { RenderPdpList, highlightSelected, }; \ No newline at end of file diff --git a/gui-pdp-monitoring/src/webapp/js/PdpStatisticsSummary.js b/gui-pdp-monitoring/src/webapp/js/PdpStatisticsSummary.js deleted file mode 100644 index b8065bb..0000000 --- a/gui-pdp-monitoring/src/webapp/js/PdpStatisticsSummary.js +++ /dev/null @@ -1,142 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2020 Nordix Foundation. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -import $ from "jquery"; -import { config } from "./MonitoringConfig"; -import { createEngineTable } from "./MonitoringTable"; -import { createChart, updateChart } from "./MonitoringChart"; -import { papUtilsRemoveElement } from "./MonitoringUtils"; - -/* - * Create the Engine Service Table - */ -function createEngineSummaryTable() { - var tableId = config.engineSummary.tableId; - var headers = config.engineSummary.headers; - - // Create a wrapper div for both the table and the charts - var wrapper = document.createElement("div"); - wrapper.setAttribute("id", "engineSummary_wrapper"); - wrapper.setAttribute("class", "wrapper_borderless"); - $("." + config.engineSummary.parent).append(wrapper); - - var table = createEngineTable($(wrapper), tableId, headers.map(function(a) { - return a.title; - })); - var tableRow = document.createElement("tr"); - var tableData = ""; - for ( var h in headers) { - tableData += ""; - } - tableRow.innerHTML = tableData; - - $(table).children("#engineTableBody").append(tableRow); - -} - -function setEngineSummaryData(data, timeStamp, policyDeployCount, policyDeploySuccessCount, policyDeployFailCount, policyExecutedCount, policyExecutedSuccessCount, policyExecutedFailCount) { - _setEngineSummaryData(timeStamp, getAvgPolicyDuration(data), policyDeployCount, policyDeploySuccessCount, policyDeployFailCount, policyExecutedCount, policyExecutedSuccessCount, policyExecutedFailCount, getUptimeOfOldestEngine(data)); -} - -/* - * Check for any changes in the Engine Summary Table data and update only where - * necessary - */ -function _setEngineSummaryData(timestamp, avgPolicyDuration, policyDeployCount, policyDeploySuccessCount, policyDeployFailCount, policyExecutedCount, policyExecutedSuccessCount, policyExecutedFailCount, upTime) { - - var tableId = config.engineSummary.tableId; - var headers = config.engineSummary.headers.map(function(a) { - return a.id; - }); - var data = [ timestamp, policyDeployCount, policyDeploySuccessCount, policyDeployFailCount, policyExecutedCount, policyExecutedSuccessCount, policyExecutedFailCount ,upTime == -1? "N/A":upTime]; - - var engineSummaryTable = $("#engineSummaryTable"); - - for ( var h in headers) { - var td = engineSummaryTable.find("#" + tableId + "_" + headers[h]); - if (td.html() !== data[h]) { - engineSummaryTable.find("#" + tableId + "_" + headers[h]).html(data[h]); - } - } - - // Update charts - var wrapper = engineSummaryTable.parent(); - var chartConfig = config.engineSummary.chart.avgPolicyDurationChart; - var avgPolicyDurationChart = wrapper.find("#" + chartConfig.parent)[0]; - if (avgPolicyDuration.length) { - if (avgPolicyDurationChart) { - updateChart(avgPolicyDurationChart, avgPolicyDuration, chartConfig.nodeColour); - } else { - var avgPolicyDurationDiv = document.createElement("div"); - avgPolicyDurationDiv.setAttribute("id", chartConfig.parent); - avgPolicyDurationDiv.setAttribute("class", "papChart_inline"); - createChart(avgPolicyDuration, avgPolicyDurationDiv, chartConfig.title, chartConfig.unit, - chartConfig.lineStroke, chartConfig.nodeColour); - $(wrapper).append(avgPolicyDurationDiv); - } - } else if (avgPolicyDurationChart){ - papUtilsRemoveElement(chartConfig.parent); - } -} - -function getUptimeOfOldestEngine(data) { - var oldestUpTime = -1; - for ( var d in data) { - if (data[d].upTime > oldestUpTime) { - oldestUpTime = data[d].upTime; - } - } - return oldestUpTime; -} - -function getSumOfPolicyExecutions(data) { - var totalPolicyExecutions = 0; - for ( var d in data) { - totalPolicyExecutions += data[d].policyExecutions; - } - return totalPolicyExecutions; -} - -function getAvgPolicyDuration(data) { - var chartData = []; - var avgPolicyDurations = []; - for ( var d in data) { - var avgPolicyDuration = data[d].averagePolicyDuration; - avgPolicyDurations.push(avgPolicyDuration); - } - - if (avgPolicyDurations.length > 0) { - chartData = avgPolicyDurations[0]; - for (var i = 1; i < avgPolicyDurations.length; i++) { - var engineData = avgPolicyDurations[i]; - for ( var c in chartData) { - chartData[c].value += engineData[c].value; - } - } - } - - for ( var c2 in chartData) { - chartData[c2].value = Math.round(chartData[c2].value / data.length); - } - - return chartData; -} - -export { createEngineSummaryTable, setEngineSummaryData, }; \ No newline at end of file diff --git a/gui-pdp-monitoring/src/webapp/js/__test__/MonitoringChart.test.js b/gui-pdp-monitoring/src/webapp/js/__test__/MonitoringChart.test.js deleted file mode 100644 index 6fa0e05..0000000 --- a/gui-pdp-monitoring/src/webapp/js/__test__/MonitoringChart.test.js +++ /dev/null @@ -1,40 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2020 Nordix Foundation. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -import * as MonitoringChart from "../MonitoringChart"; - -const data = MonitoringChart.generateRandomData(); -const container = null; -const title = null; -const unit = null; -const lineStroke = ""; -const nodeColour = ""; - -test("test create chart is available", () => { - MonitoringChart.createChart(data, container, title, unit, lineStroke, nodeColour); - expect(data.length).toBe(30); -}); - -test("update Chart", () => { - MonitoringChart.initTooltip; - expect(data.length).toBe(30); -}); - - diff --git a/gui-pdp-monitoring/src/webapp/js/__test__/MonitoringMain.test.js b/gui-pdp-monitoring/src/webapp/js/__test__/MonitoringMain.test.js deleted file mode 100644 index cfbfaf6..0000000 --- a/gui-pdp-monitoring/src/webapp/js/__test__/MonitoringMain.test.js +++ /dev/null @@ -1,60 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2020 Nordix Foundation. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -import * as sut from "../MonitoringMain"; - -import * as MonitoringChart from "../MonitoringChart"; -import * as MonitoringUtils from "../MonitoringUtils"; -import * as PdpInformation from "../PdpInformation"; -import * as PdpStatisticsSummary from "../PdpStatisticsSummary"; -import * as PdpEngineWorkerStatus from "../PdpEngineWorkerStatus"; - -test("test ready", () => { - MonitoringChart.initTooltip = jest.fn(); - MonitoringUtils.setUpPage = jest.fn(); - MonitoringUtils.getEngineURL = jest.fn(); - sut.readyCallback(); - expect(MonitoringChart.initTooltip).toHaveBeenCalled(); - expect(MonitoringUtils.setUpPage).toHaveBeenCalled(); - expect(MonitoringUtils.getEngineURL).toHaveBeenCalled(); -}); - -test("test service callback", () => { - const storedData = { - useHttps: "http", - hostname: "localhost", - port: 7979, - username: "username", - password: "password", - }; - - const data = { - server: "localhost", - port: 7979, - } - window.localStorage.setItem("pap-monitor-services", JSON.stringify(storedData)); - PdpInformation.setEngineServiceData = jest.fn(); - PdpStatisticsSummary.setEngineSummaryData = jest.fn(); - PdpEngineWorkerStatus.setEngineStatusData = jest.fn(); - sut.servicesCallback(data); - expect(PdpInformation.setEngineServiceData).toHaveBeenCalled(); - expect(PdpStatisticsSummary.setEngineSummaryData).toHaveBeenCalled(); - expect(PdpEngineWorkerStatus.setEngineStatusData).toHaveBeenCalled(); -}); \ No newline at end of file diff --git a/gui-pdp-monitoring/src/webapp/js/__test__/MonitoringTable.test.js b/gui-pdp-monitoring/src/webapp/js/__test__/MonitoringTable.test.js deleted file mode 100644 index 2f67925..0000000 --- a/gui-pdp-monitoring/src/webapp/js/__test__/MonitoringTable.test.js +++ /dev/null @@ -1,33 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2020 Nordix Foundation. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -import $ from 'jquery'; -import * as MonitoringTable from "../MonitoringTable" - -var wrapper = document.createElement("example") -wrapper.setAttribute("id", "engineSummary_wrapper"); -wrapper.setAttribute("class", "wrapper_borderless"); - -test("create necessary engine table", () => { - MonitoringTable.createEngineTable($(wrapper), null, null); - expect(document.getElementById("engineTableBody")).toBeDefined(); - expect(document.getElementById("engineTableHeader")).toBeDefined(); - expect(document.getElementById("engineTableHeaderRow")).toBeDefined(); - }); \ No newline at end of file diff --git a/gui-pdp-monitoring/src/webapp/js/__test__/MonitoringUtils.test.js b/gui-pdp-monitoring/src/webapp/js/__test__/MonitoringUtils.test.js deleted file mode 100644 index 35eb297..0000000 --- a/gui-pdp-monitoring/src/webapp/js/__test__/MonitoringUtils.test.js +++ /dev/null @@ -1,109 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2020 Nordix Foundation. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -import $ from 'jquery'; -import * as sut from "../MonitoringUtils"; -import * as PdpInformation from "../PdpInformation"; -import * as PdpStatisticsSummary from "../PdpStatisticsSummary"; -import * as PdpListView from '../PdpListView'; - -const requestURL = "http://localhost:7979"; - -const serviceData = { - useHttps: "http", - hostname: "localhost", - port: 7979, - username: "username", - password: "password", -}; - -test('ajax_get ok', () => { - const callback = jest.fn(); - $.ajax = jest.fn().mockImplementation((args) => { args.success(); }); - sut.ajax_get(requestURL, callback, serviceData.useHttps, serviceData.hostname, serviceData.port, - serviceData.username, serviceData.password, {}, null); - expect(callback).toHaveBeenCalled(); -}); - -test('ajax_get error', () => { - const errorCallback = jest.fn(); - const jqXHR = { status: 500, responseText: "" }; - $.ajax = jest.fn().mockImplementation( - args => { - args.error(jqXHR, null, null); - } - ); - sut.ajax_get(requestURL, null, serviceData.useHttps, serviceData.hostname, serviceData.port, - serviceData.username, serviceData.password, {}, errorCallback); - expect(errorCallback).toHaveBeenCalled(); -}); - -test('ajax_get_statistics ok', () => { - const callback = jest.fn(); - $.ajax = jest.fn().mockImplementation((args) => { args.success(); }); - sut.ajax_get_statistics(requestURL, callback, serviceData.useHttps, serviceData.hostname, serviceData.port, - serviceData.username, serviceData.password, "", {}, null); - expect(callback).toHaveBeenCalled(); -}); - -test('ajax_get_statistics error', () => { - const errorCallback = jest.fn(); - const jqXHR = { status: 500, responseText: "" }; - $.ajax = jest.fn().mockImplementation( - args => { - args.error(jqXHR, null, null); - } - ); - PdpInformation.createEngineServiceTable = jest.fn(); - PdpStatisticsSummary.createEngineSummaryTable = jest.fn(); - sut.ajax_get_statistics(requestURL, null, serviceData.useHttps, serviceData.hostname, serviceData.port, - serviceData.username, serviceData.password, "", {}, errorCallback); - - expect(errorCallback).toHaveBeenCalled(); - expect(PdpInformation.createEngineServiceTable).toHaveBeenCalled(); - expect(PdpStatisticsSummary.createEngineSummaryTable).toHaveBeenCalled(); -}); - -test('getEngineURL popup dialog', () => { - window.localStorage.clear(); - sut.getEngineURL("message"); - $('#submit').click(); - expect($("papDialogDiv")).toHaveLength(1); -}); - -test('getEngineURL read from localStorage', () => { - window.localStorage.setItem("pap-monitor-services", JSON.stringify(serviceData)); - const data = { - groups: [{ - pdpSubgroups: [{ - pdpType: "apex", - pdpInstances: [{ - instanceId: "apex-pdp1", - }], - }] - } - ], - }; - - $.ajax = jest.fn().mockImplementation((args) => { args.success(data); }); - PdpListView.RenderPdpList = jest.fn(); - sut.getEngineURL("message"); - expect(PdpListView.RenderPdpList.mock.calls[0][0]).toHaveLength(1); -}); diff --git a/gui-pdp-monitoring/src/webapp/js/__test__/PdpEngineWorkerStatus.test.js b/gui-pdp-monitoring/src/webapp/js/__test__/PdpEngineWorkerStatus.test.js deleted file mode 100644 index 39b74f5..0000000 --- a/gui-pdp-monitoring/src/webapp/js/__test__/PdpEngineWorkerStatus.test.js +++ /dev/null @@ -1,37 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2020 Nordix Foundation. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -import * as PdpEngineWorkerStatus from "../PdpEngineWorkerStatus"; -import * as MonitoringChart from "../MonitoringChart"; - -test("set engine status data", () => { - var temp = MonitoringChart.generateRandomData(); - var engineStatusData = [{id : 1, lastPolicyDuration : 1, averagePolicyDuration: 1}]; - var changed = jest.fn(() => { - return false; - }); - - engineStatusData[0].lastPolicyDuration = temp; - engineStatusData[0].averagePolicyDuration = temp; - window.engineStatusTables = []; - PdpEngineWorkerStatus.setEngineStatusData(engineStatusData, changed); - - expect(window.engineStatusTables[0]).toBeDefined(); -}); \ No newline at end of file diff --git a/gui-pdp-monitoring/src/webapp/js/__test__/PdpInformation.test.js b/gui-pdp-monitoring/src/webapp/js/__test__/PdpInformation.test.js deleted file mode 100644 index 993eb54..0000000 --- a/gui-pdp-monitoring/src/webapp/js/__test__/PdpInformation.test.js +++ /dev/null @@ -1,31 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2020 Nordix Foundation. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -import * as PdpInformation from "../PdpInformation" - -test("create engine service table", () => { - PdpInformation.createEngineServiceTable(); - expect(document.getElementById("string")).toBeDefined(); -}) - -test("ser engine service data", () => { - PdpInformation.setEngineServiceData("testing", "testing", "testing", "testing", "testing", null, null); - expect(document.getElementById("testing")).toBeDefined(); -}) \ No newline at end of file diff --git a/gui-pdp-monitoring/src/webapp/js/__test__/PdpListView.test.js b/gui-pdp-monitoring/src/webapp/js/__test__/PdpListView.test.js deleted file mode 100644 index 3d38be9..0000000 --- a/gui-pdp-monitoring/src/webapp/js/__test__/PdpListView.test.js +++ /dev/null @@ -1,63 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2020 Nordix Foundation. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -import * as PdpListView from "../PdpListView"; -const pdpArray = []; - -test("render pdp list", () => { - const data = { - groups: [{ - pdpSubgroups: [{ - pdpType: "apex", - pdpInstances: [{ - instanceId: "apex-pdp1", - }], - }] - } - ], - }; - - for (let i = 0; i < data.groups.length; i++) { - var map = {}; - map.title = data.groups[i].name; - map.children = []; - (data.groups[i].pdpSubgroups).forEach((pdpSubgroup, index) => { - map.children[index] = {}; - map.children[index].title = pdpSubgroup.pdpType; - const instanceId = []; - pdpSubgroup.pdpInstances.forEach(pdpInstance => { - var instanceIdMap = {}; - instanceIdMap.title = pdpInstance.instanceId; - instanceId.push(instanceIdMap) - }); - map.children[index].children = instanceId; - }); - pdpArray.push(map); - }; - - document.body.innerHTML = '
    '; - PdpListView.RenderPdpList(pdpArray, "pdps__list"); - expect(document.querySelector('a.' + 'pdps__link').innerHTML).toBe("apex-pdp1"); -}); - -test("high light selected", () => { - PdpListView.highlightSelected(1); - expect(document.querySelector(`.pdps__link[href*="${1}"]`)).toBeDefined(); -}) \ No newline at end of file diff --git a/gui-pdp-monitoring/src/webapp/js/__test__/PdpStatisticsSummary.test.js b/gui-pdp-monitoring/src/webapp/js/__test__/PdpStatisticsSummary.test.js deleted file mode 100644 index 03404b7..0000000 --- a/gui-pdp-monitoring/src/webapp/js/__test__/PdpStatisticsSummary.test.js +++ /dev/null @@ -1,38 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2020 Nordix Foundation. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -import * as PdpEngineSummary from "../PdpStatisticsSummary"; - -var data = [{averagePolicyDuration : [ - { timestamp: 1584979433034, value: 95 }, - { timestamp: 1584979428034, value: 78 }, - { timestamp: 1584979423034, value: 71 }, - { timestamp: 1584979418034, value: 79 }, - { timestamp: 1584979413034, value: 21 }]}] - -test("create engine summary table", () => { - PdpEngineSummary.createEngineSummaryTable(); - expect(document.getElementById("string")).toBeDefined(); -}) - -test("set engine service data", () => { - PdpEngineSummary.setEngineSummaryData(data, null, 1, 2, 3, 1, 2, 3) - expect(document.getElementById("engineSummaryTable")).toBeDefined(); -}) \ No newline at end of file diff --git a/gui-pdp-monitoring/src/webapp/package.json b/gui-pdp-monitoring/src/webapp/package.json deleted file mode 100644 index 7cd8777..0000000 --- a/gui-pdp-monitoring/src/webapp/package.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "gui-pdp-monitoring", - "version": "0.0.2", - "description": "GUI for monitoring Pdps Statistics", - "main": "index.js", - "scripts": { - "test": "jest", - "build": "webpack", - "start": "webpack-dev-server --open" - }, - "author": "", - "devDependencies": { - "@babel/cli": "^7.8.4", - "@babel/core": "^7.8.7", - "@babel/preset-env": "^7.11.0", - "babel-jest": "^25.1.0", - "jest": "^26.6.3", - "jest-sonar-reporter": "^2.0.0", - "webpack": "^4.42.0", - "webpack-cli": "^3.3.11", - "webpack-dev-server": "^3.10.3" - }, - "dependencies": { - "chokidar": "^3.4.3", - "d3": "^3.5.17", - "jquery": "^3.4.1", - "resolve-url": "^0.2.1", - "urix": "^0.1.0" - }, - "jest": { - "collectCoverage": true, - "coverageDirectory": "../../target/code-coverage", - "transform": { - "^.+\\.[t|j]sx?$": "babel-jest" - }, - "testResultsProcessor": "jest-sonar-reporter" - }, - "jestSonar": { - "reportPath": "../../target/reports", - "reportFile": "test-reporter.xml", - "indent": 4, - "sonar56x": true - } -} diff --git a/gui-pdp-monitoring/src/webapp/webpack.config.js b/gui-pdp-monitoring/src/webapp/webpack.config.js deleted file mode 100644 index 4b1c179..0000000 --- a/gui-pdp-monitoring/src/webapp/webpack.config.js +++ /dev/null @@ -1,18 +0,0 @@ -const path = require('path'); - -module.exports = { - mode: 'production', - entry: './js/MonitoringMain.js', - output: { - filename: 'bundle.js', - path: path.resolve(__dirname, 'dist'), - }, - devServer: { - contentBase: path.join(__dirname, 'dist'), - compress: true, - port: 9000, - proxy: { - "/papservices/monitoring": "http://localhost:17999", - } - } -}; -- cgit 1.2.3-korg