summaryrefslogtreecommitdiffstats
path: root/ONAP-SDK-APP
diff options
context:
space:
mode:
Diffstat (limited to 'ONAP-SDK-APP')
-rw-r--r--ONAP-SDK-APP/README.md68
-rw-r--r--ONAP-SDK-APP/pom.xml100
-rw-r--r--ONAP-SDK-APP/src/main/java/org/onap/portalapp/conf/ExternalAppConfig.java (renamed from ONAP-SDK-APP/src/main/java/org/openecomp/portalapp/conf/ExternalAppConfig.java)44
-rw-r--r--ONAP-SDK-APP/src/main/java/org/onap/portalapp/conf/ExternalAppInitializer.java (renamed from ONAP-SDK-APP/src/main/java/org/openecomp/portalapp/conf/ExternalAppInitializer.java)4
-rw-r--r--ONAP-SDK-APP/src/main/java/org/onap/portalapp/conf/HibernateMappingLocations.java (renamed from ONAP-SDK-APP/src/main/java/org/openecomp/portalapp/conf/HibernateMappingLocations.java)19
-rw-r--r--ONAP-SDK-APP/src/main/java/org/onap/portalapp/filter/SecurityXssFilter.java90
-rw-r--r--ONAP-SDK-APP/src/main/java/org/onap/portalapp/login/LoginStrategyImpl.java113
-rw-r--r--ONAP-SDK-APP/src/main/java/org/onap/portalapp/scheduler/Register.java (renamed from ONAP-SDK-APP/src/main/java/org/openecomp/portalapp/scheduler/Register.java)25
-rw-r--r--ONAP-SDK-APP/src/main/java/org/onap/portalapp/scheduler/RegistryAdapter.java (renamed from ONAP-SDK-APP/src/main/java/org/openecomp/portalapp/scheduler/RegistryAdapter.java)17
-rw-r--r--ONAP-SDK-APP/src/main/java/org/onap/portalapp/service/AdminAuthExtension.java (renamed from ONAP-SDK-APP/src/main/java/org/openecomp/portalapp/service/AdminAuthExtension.java)12
-rw-r--r--ONAP-SDK-APP/src/main/java/org/openecomp/portalapp/lm/FusionLicenseManagerImpl.java88
-rw-r--r--ONAP-SDK-APP/src/main/java/org/openecomp/portalapp/lm/LicenseableClassImpl.java62
-rw-r--r--ONAP-SDK-APP/src/main/java/org/openecomp/portalapp/login/LoginStrategyImpl.java93
-rw-r--r--ONAP-SDK-APP/src/main/resources/key.properties23
-rw-r--r--ONAP-SDK-APP/src/main/resources/logback.xml49
-rw-r--r--ONAP-SDK-APP/src/main/resources/portal.properties28
-rw-r--r--ONAP-SDK-APP/src/main/webapp/WEB-INF/conf/system.properties38
-rw-r--r--ONAP-SDK-APP/src/main/webapp/WEB-INF/defs/definitions.xml10
-rw-r--r--ONAP-SDK-APP/src/main/webapp/WEB-INF/fusion/conf/fusion.properties9
-rw-r--r--ONAP-SDK-APP/src/main/webapp/WEB-INF/fusion/jsp/ds2/left-menu.jsp33
-rw-r--r--ONAP-SDK-APP/src/main/webapp/WEB-INF/fusion/orm/RNoteBookIntegration.hbm.xml2
-rw-r--r--ONAP-SDK-APP/src/main/webapp/WEB-INF/jsp/login.jsp2
-rw-r--r--ONAP-SDK-APP/src/main/webapp/WEB-INF/jsp/login_external.jsp2
-rw-r--r--ONAP-SDK-APP/src/main/webapp/WEB-INF/web.xml10
-rw-r--r--ONAP-SDK-APP/src/main/webapp/app/fusion/external/ds2/css/digital-ng-library/ecomp-ionicons.css193
-rw-r--r--ONAP-SDK-APP/src/main/webapp/app/fusion/external/ds2/css/digital-ng-library/ionicons.css105
-rw-r--r--ONAP-SDK-APP/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-profile/profile_searchDS2.html9
-rw-r--r--ONAP-SDK-APP/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-profile/self_profile.html41
-rw-r--r--ONAP-SDK-APP/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-samplePages/samplePage.html62
-rw-r--r--ONAP-SDK-APP/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2Header.html68
-rw-r--r--ONAP-SDK-APP/src/main/webapp/app/fusion/scripts/DS2-view-models/header-logo.html2
-rw-r--r--ONAP-SDK-APP/src/main/webapp/app/fusion/scripts/utils/page-resource-ds2.js97
-rw-r--r--ONAP-SDK-APP/src/main/webapp/static/fusion/sample/html/data/worddata.csv2
-rw-r--r--ONAP-SDK-APP/src/main/webapp/static/fusion/sample/images/Calendar-16x16.pngbin552 -> 0 bytes
-rw-r--r--ONAP-SDK-APP/src/main/webapp/static/fusion/sample/images/arrow-next.pngbin1561 -> 0 bytes
-rw-r--r--ONAP-SDK-APP/src/main/webapp/static/fusion/sample/images/arrow-prev.pngbin1557 -> 0 bytes
-rw-r--r--ONAP-SDK-APP/src/main/webapp/static/fusion/sample/images/copyicon.pngbin235 -> 0 bytes
-rw-r--r--ONAP-SDK-APP/src/main/webapp/static/fusion/sample/images/deleteicon.gifbin579 -> 0 bytes
-rw-r--r--ONAP-SDK-APP/src/main/webapp/static/fusion/sample/images/example-frame.pngbin33699 -> 0 bytes
-rw-r--r--ONAP-SDK-APP/src/main/webapp/static/fusion/sample/images/loading.gifbin6820 -> 0 bytes
-rw-r--r--ONAP-SDK-APP/src/main/webapp/static/fusion/sample/js/slides.min.jquery.js20
-rw-r--r--ONAP-SDK-APP/src/main/webapp/static/fusion/sample/js/spacegallery.js235
-rw-r--r--ONAP-SDK-APP/src/main/webapp/static/fusion/sample/org_chart/css/jquery.jOrgChart.css51
-rw-r--r--ONAP-SDK-APP/src/main/webapp/static/fusion/sample/org_chart/example.html85
-rw-r--r--ONAP-SDK-APP/src/main/webapp/static/fusion/sample/org_chart/example_vsp.html88
-rw-r--r--ONAP-SDK-APP/src/main/webapp/static/fusion/sample/org_chart/images/bkgd.pngbin133 -> 0 bytes
-rw-r--r--ONAP-SDK-APP/src/main/webapp/static/fusion/sample/org_chart/images/raspberry.jpgbin5755 -> 0 bytes
-rw-r--r--ONAP-SDK-APP/src/main/webapp/static/fusion/sample/org_chart/jquery.jOrgChart.js267
48 files changed, 689 insertions, 1577 deletions
diff --git a/ONAP-SDK-APP/README.md b/ONAP-SDK-APP/README.md
deleted file mode 100644
index 043a967fd..000000000
--- a/ONAP-SDK-APP/README.md
+++ /dev/null
@@ -1,68 +0,0 @@
-Onap SDK Web App
-=================
-
-This is a Maven project with the ONAP SDK web application for public release, containing files specific to requirements of the open-source version. This project uses the Maven war plugin to copy in ("overlay") the contents of the ONAP SDK web application overlay files distribution at package time.
-
-Use Apache Maven to build, package and deploy this webapp to a web container like Apache Tomcat. Eclipse users must install the M2E-WTP connector, see https://www.eclipse.org/m2e-wtp/
-Release Notes
-
-All of the release notes in the epsdk-app-common and epsdk-app-overlay areas apply here!
-
-Build 1.2.8, ?? ??? 2017
-
- put new entries here *
-
-Build 1.2.7, 10 Apr 2017
-
- Drop shared context property
-
-Build 1.2.6, 23 Mar 2017
-
- DE270905 Removed total page/current page text boxes from bottom of Profile Search page
- DE272154 SDK-App: self profile page, changes on drop downs not saved (120272)
- DE273128 Revise left menu to have unique IDs
- DE271378 fixed Camunda Page link in fn_menu; additional links were updated: Notebook
- US847688 Abstraction of support page content for AT&T vs Open Source in SQL Scripts
- Add sample defs/definitions.xml file for partner applications to configure jsp pages
- Downgrade angularJS from 1.5.0 to 1.4.8
-
-Build 1.2.5, 16 Mar 2017
-
- DE272709 Update icon names from DS1 to DS2 in database load script
- Upgrade to EPSDK libraries version 1.2.5
-
-Build 1.2.4, 10 Mar 2017
-
- DE272042 Add missing includes so left menu appears on collaborate and notebook pages
- DE272193 Fix class/icon name to restore role icon on Self Profile page
- Restore spinners by changing class name from icon-spinner to icon-primary-spinner
- DE272202 updated ionicon.css for open source version of report search page
- Removed unused js files from samplePage.html in epsdk-app-os
- Upgrade to EPSDK libraries version 1.2.4
-
-Build 1.2.3, 8 Mar 2017
-
- DE271038 Remove references to famous telecommunications company from system.properties
- Upgrade to EPSDK libraries version 1.2.3
-
-Build 1.2.2, 6 Mar 2017
-
- DE270658 EPSDK-app-os header is covering part of left menu.
- DE271510 Pages not loading in IE and FF properly. Drop page-resource-ds2.js; load scripts in HTML directly
- Remove references to famous telecommunications company hosts from fusion.properties, portal.properties
- Upgrade to EPSDK libraries version 1.2.2
-
-Build 1.2.1, 2 Mar 2017
-
- DE269231 Separated footer files on OS module displaying black footer with no content
- US847688 Split database scripts; include full set in distributions
- US847706 Refactored AdminAuthExtension to implement interface expected in OnboardingApiServiceImpl
- Added class conf/HibernateMappingLocations - moved out of common to apps
- Added file logback.xml to src/main/resources with appropriate logger names
- Extend HibernateMappingLocations with method that returns list of package names to scan
- Remove references to famous telecommunications company hosts from system.properties file
- Upgrade to EPSDK libraries version 1.2.1
-
-Build 1.2.0, 9 Feb 2017
-
- Initial release
diff --git a/ONAP-SDK-APP/pom.xml b/ONAP-SDK-APP/pom.xml
index 32cac6e92..e1497ccac 100644
--- a/ONAP-SDK-APP/pom.xml
+++ b/ONAP-SDK-APP/pom.xml
@@ -17,7 +17,6 @@
limitations under the License.
============LICENSE_END=========================================================
-->
-
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
@@ -31,14 +30,17 @@
<properties>
<encoding>UTF-8</encoding>
- <epsdk.version>1.3.1</epsdk.version>
+ <epsdk.version>2.1.0-SNAPSHOT</epsdk.version>
<springframework.version>4.2.0.RELEASE</springframework.version>
<hibernate.version>4.3.11.Final</hibernate.version>
<!-- Skip assembling the zip; assemble via mvn -Dskipassembly=false .. -->
<skipassembly>true</skipassembly>
<!-- Tests usually require some setup that maven cannot do, so skip. -->
<jackson.version>2.6.0</jackson.version>
- <sonar.exclusions>**/gen/**,**/generated-sources/**,**/yang-gen**,**/pax/**,src/main/webapp/**/*</sonar.exclusions>
+ <sonar.exclusions>**/gen/**,**/generated-sources/**,**/yang-gen**,**/pax/**,src/main/webapp/**/*</sonar.exclusions>
+ <!-- Version number gets stored only here -->
+ <tomcat.download.path>http://archive.apache.org/dist/tomcat/tomcat-8/v8.0.37/bin</tomcat.download.path>
+ <tomcat.download.name>apache-tomcat-8.0.37</tomcat.download.name>
</properties>
<profiles>
<!-- disable doclint, a new feature in Java 8, when generating javadoc -->
@@ -96,7 +98,7 @@
<artifactId>maven-war-plugin</artifactId>
<version>2.1</version>
<configuration>
- <attachClasses>true</attachClasses>
+ <attachClasses>true</attachClasses>
<archive>
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
@@ -111,8 +113,8 @@
<groupId>org.onap.portal.sdk</groupId>
<artifactId>epsdk-app-overlay</artifactId>
<excludes>
- <exclude>static/fusion/raptor/uigrid/vfs_fonts.js</exclude>
- </excludes>
+ <exclude>static/fusion/raptor/uigrid/vfs_fonts.js</exclude>
+ </excludes>
</overlay>
<overlay>
<groupId>org.onap.policy.engine</groupId>
@@ -122,29 +124,71 @@
</configuration>
</plugin>
<plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-assembly-plugin</artifactId>
- <version>3.0.0</version>
- <configuration>
- <skipAssembly>${skipassembly}</skipAssembly>
- <descriptors>
- <descriptor>${basedir}/distribution.xml</descriptor>
- </descriptors>
- </configuration>
- <executions>
- <execution>
- <id>make-assembly</id>
- <phase>package</phase>
- <goals>
- <goal>single</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <version>3.0.0</version>
+ <configuration>
+ <skipAssembly>${skipassembly}</skipAssembly>
+ <descriptors>
+ <descriptor>${basedir}/distribution.xml</descriptor>
+ </descriptors>
+ </configuration>
+ <executions>
+ <execution>
+ <id>make-assembly</id>
+ <phase>package</phase>
+ <goals>
+ <goal>single</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-deploy-plugin</artifactId>
+ <!-- parent specifies the<version>2.8</version> -->
+ <configuration>
+ <skip>true</skip>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>io.fabric8</groupId>
+ <artifactId>docker-maven-plugin</artifactId>
+ <version>0.22.0</version>
+ <configuration>
+ <verbose>true</verbose>
+ <images>
+ <image>
+ <name>onap/portal-sdk:${project.version}</name>
+ <build>
+ <from>frolvlad/alpine-oraclejdk8:slim</from>
+ <assembly>
+ <descriptorRef>artifact</descriptorRef>
+ </assembly>
+ <runCmds>
+ <!-- must be all on one line; use CDATA to turn off the Eclipse
+ formatter -->
+ <run><![CDATA[wget -q ${tomcat.download.path}/${tomcat.download.name}.tar.gz]]></run>
+ <run>tar -xzf ${tomcat.download.name}.tar.gz</run>
+ <run>rm -f ${tomcat.download.name}.tar.gz</run>
+ <run>rm -fr ${tomcat.download.name}/webapps/[a-z]*</run>
+ <run>mkdir -p /opt</run>
+ <run>mv ${tomcat.download.name} /opt</run>
+ <run><![CDATA[mv /maven/*.war /opt/${tomcat.download.name}/webapps/ONAPPORTALSDK.war]]></run>
+ </runCmds>
+ <cmd>
+ <shell>/opt/${tomcat.download.name}/bin/catalina.sh run</shell>
+ </cmd>
+ </build>
+ </image>
+ </images>
+ </configuration>
+ </plugin>
+
</plugins>
</build>
<dependencies>
- <!-- Policy overlay war -->
+ <!-- Policy overlay war -->
<dependency>
<groupId>org.onap.policy.engine</groupId>
<artifactId>POLICY-SDK-APP</artifactId>
@@ -202,7 +246,7 @@
<exclusions>
<exclusion>
<groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
+ <artifactId>mysql-connector-java</artifactId>
</exclusion>
</exclusions>
</dependency>
@@ -227,7 +271,7 @@
<artifactId>eelf-core</artifactId>
<version>0.0.1</version>
</dependency>
- <!-- bridge to implement commons-logging using slf4j -->
+ <!-- bridge to implement commons-logging using slf4j -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
diff --git a/ONAP-SDK-APP/src/main/java/org/openecomp/portalapp/conf/ExternalAppConfig.java b/ONAP-SDK-APP/src/main/java/org/onap/portalapp/conf/ExternalAppConfig.java
index 1b6397c05..7db760a93 100644
--- a/ONAP-SDK-APP/src/main/java/org/openecomp/portalapp/conf/ExternalAppConfig.java
+++ b/ONAP-SDK-APP/src/main/java/org/onap/portalapp/conf/ExternalAppConfig.java
@@ -17,21 +17,20 @@
* limitations under the License.
* ================================================================================
*/
-package org.openecomp.portalapp.conf;
+package org.onap.portalapp.conf;
import java.util.ArrayList;
import java.util.List;
-import org.openecomp.portalapp.login.LoginStrategyImpl;
-import org.openecomp.portalapp.scheduler.RegistryAdapter;
-import org.openecomp.portalsdk.core.auth.LoginStrategy;
-import org.openecomp.portalsdk.core.conf.AppConfig;
-import org.openecomp.portalsdk.core.conf.Configurable;
-import org.openecomp.portalsdk.core.objectcache.AbstractCacheManager;
-import org.openecomp.portalsdk.core.onboarding.exception.PortalAPIException;
-import org.openecomp.portalsdk.core.service.DataAccessService;
-import org.openecomp.portalsdk.core.util.CacheManager;
-import org.openecomp.portalsdk.core.util.SystemProperties;
+import org.onap.portalapp.login.LoginStrategyImpl;
+import org.onap.portalapp.scheduler.RegistryAdapter;
+import org.onap.portalsdk.core.auth.LoginStrategy;
+import org.onap.portalsdk.core.conf.AppConfig;
+import org.onap.portalsdk.core.conf.Configurable;
+import org.onap.portalsdk.core.objectcache.AbstractCacheManager;
+import org.onap.portalsdk.core.service.DataAccessService;
+import org.onap.portalsdk.core.util.CacheManager;
+import org.onap.portalsdk.core.util.SystemProperties;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
@@ -48,12 +47,12 @@ import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
/**
- * ONAP Portal SDK sample application. ONAP Portal SDK core AppConfig class to
+ * ONAP Portal SDK sample application. Extends core AppConfig class to
* reuse interceptors, view resolvers and other features defined there.
*/
@Configuration
@EnableWebMvc
-@ComponentScan(basePackages = "org.onap, org.openecomp")
+@ComponentScan(basePackages = "org.onap")
@PropertySource(value = { "${container.classpath:}/WEB-INF/conf/app/test.properties" }, ignoreResourceNotFound = true)
@Profile("src")
@EnableAsync
@@ -68,24 +67,27 @@ public class ExternalAppConfig extends AppConfig implements Configurable {
}
/**
- * @see org.openecomp.portalsdk.core.conf.AppConfig#viewResolver()
+ * @see org.onap.portalsdk.core.conf.AppConfig#viewResolver()
*/
+ @Override
public ViewResolver viewResolver() {
return super.viewResolver();
}
/**
- * @see org.openecomp.portalsdk.core.conf.AppConfig#addResourceHandlers(ResourceHandlerRegistry)
+ * @see org.onap.portalsdk.core.conf.AppConfig#addResourceHandlers(ResourceHandlerRegistry)
*
* @param registry
*/
+ @Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
super.addResourceHandlers(registry);
}
/**
- * @see org.openecomp.portalsdk.core.conf.AppConfig#dataAccessService()
+ * @see org.onap.portalsdk.core.conf.AppConfig#dataAccessService()
*/
+ @Override
public DataAccessService dataAccessService() {
// Echo the JDBC URL to assist developers when starting the app.
System.out.println("ExternalAppConfig: " + SystemProperties.DB_CONNECTIONURL + " is "
@@ -99,6 +101,7 @@ public class ExternalAppConfig extends AppConfig implements Configurable {
*
* @return List of String, size 1
*/
+ @Override
public List<String> addTileDefinitions() {
List<String> definitions = new ArrayList<>();
definitions.add("/WEB-INF/defs/definitions.xml");
@@ -136,15 +139,11 @@ public class ExternalAppConfig extends AppConfig implements Configurable {
*/
// @Bean // ANNOTATION COMMENTED OUT
// APPLICATIONS REQUIRING QUARTZ SHOULD RESTORE ANNOTATION
- public SchedulerFactoryBean schedulerFactoryBean() throws PortalAPIException {
+ public SchedulerFactoryBean schedulerFactoryBean() throws Exception {
SchedulerFactoryBean scheduler = new SchedulerFactoryBean();
scheduler.setTriggers(schedulerRegistryAdapter.getTriggers());
scheduler.setConfigLocation(appApplicationContext.getResource("WEB-INF/conf/quartz.properties"));
- try{
- scheduler.setDataSource(dataSource());
- }catch(Exception e){
- throw new PortalAPIException(e);
- }
+ scheduler.setDataSource(dataSource());
return scheduler;
}
@@ -160,7 +159,6 @@ public class ExternalAppConfig extends AppConfig implements Configurable {
@Bean
public LoginStrategy loginStrategy() {
-
return new LoginStrategyImpl();
}
}
diff --git a/ONAP-SDK-APP/src/main/java/org/openecomp/portalapp/conf/ExternalAppInitializer.java b/ONAP-SDK-APP/src/main/java/org/onap/portalapp/conf/ExternalAppInitializer.java
index 2a904ce3c..8a1fff0f5 100644
--- a/ONAP-SDK-APP/src/main/java/org/openecomp/portalapp/conf/ExternalAppInitializer.java
+++ b/ONAP-SDK-APP/src/main/java/org/onap/portalapp/conf/ExternalAppInitializer.java
@@ -17,9 +17,9 @@
* limitations under the License.
* ================================================================================
*/
-package org.openecomp.portalapp.conf;
+package org.onap.portalapp.conf;
-import org.openecomp.portalsdk.core.conf.AppInitializer;
+import org.onap.portalsdk.core.conf.AppInitializer;
public class ExternalAppInitializer extends AppInitializer {
diff --git a/ONAP-SDK-APP/src/main/java/org/openecomp/portalapp/conf/HibernateMappingLocations.java b/ONAP-SDK-APP/src/main/java/org/onap/portalapp/conf/HibernateMappingLocations.java
index c66a96c6b..01591ccf3 100644
--- a/ONAP-SDK-APP/src/main/java/org/openecomp/portalapp/conf/HibernateMappingLocations.java
+++ b/ONAP-SDK-APP/src/main/java/org/onap/portalapp/conf/HibernateMappingLocations.java
@@ -17,25 +17,18 @@
* limitations under the License.
* ================================================================================
*/
-package org.openecomp.portalapp.conf;
+package org.onap.portalapp.conf;
+import org.onap.portalsdk.core.conf.HibernateMappingLocatable;
import org.springframework.context.annotation.Profile;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.stereotype.Component;
-import org.openecomp.portalsdk.core.conf.HibernateMappingLocatable;
-
@Component
@Profile("src")
public class HibernateMappingLocations implements HibernateMappingLocatable {
- /*
- * (non-Javadoc)
- *
- * @see org.openecomp.portalsdk.core.conf.HibernateMappingLocatable#
- * getMappingLocations()
- */
@Override
public Resource[] getMappingLocations() {
return new Resource[] { new ClassPathResource("../fusion/orm/Fusion.hbm.xml"),
@@ -43,15 +36,9 @@ public class HibernateMappingLocations implements HibernateMappingLocatable {
new ClassPathResource("../fusion/orm/RNoteBookIntegration.hbm.xml") };
}
- /*
- * (non-Javadoc)
- *
- * @see org.openecomp.portalsdk.core.conf.HibernateMappingLocatable#
- * getPackagesToScan()
- */
@Override
public String[] getPackagesToScan() {
- return new String[] { "org.onap", "org.openecomp" };
+ return new String[] { "org.onap" };
}
}
diff --git a/ONAP-SDK-APP/src/main/java/org/onap/portalapp/filter/SecurityXssFilter.java b/ONAP-SDK-APP/src/main/java/org/onap/portalapp/filter/SecurityXssFilter.java
new file mode 100644
index 000000000..9843f604a
--- /dev/null
+++ b/ONAP-SDK-APP/src/main/java/org/onap/portalapp/filter/SecurityXssFilter.java
@@ -0,0 +1,90 @@
+/*-
+ * ================================================================================
+ * ONAP Portal SDK
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property
+ * ================================================================================
+ * 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.
+ * ================================================================================
+ */
+package org.onap.portalapp.filter;
+
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+
+import javax.servlet.FilterChain;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.lang.StringUtils;
+import org.onap.portalapp.util.SecurityXssValidator;
+import org.springframework.web.filter.OncePerRequestFilter;
+import org.springframework.web.util.ContentCachingRequestWrapper;
+import org.springframework.web.util.ContentCachingResponseWrapper;
+import org.springframework.web.util.WebUtils;
+
+public class SecurityXssFilter extends OncePerRequestFilter {
+
+ private static final String BAD_REQUEST = "BAD_REQUEST";
+
+ private SecurityXssValidator validator = SecurityXssValidator.getInstance();
+
+ private static String getRequestData(final HttpServletRequest request) throws UnsupportedEncodingException {
+ String payload = null;
+ ContentCachingRequestWrapper wrapper = WebUtils.getNativeRequest(request, ContentCachingRequestWrapper.class);
+ if (wrapper != null) {
+ byte[] buf = wrapper.getContentAsByteArray();
+ if (buf.length > 0) {
+ payload = new String(buf, 0, buf.length, wrapper.getCharacterEncoding());
+ }
+ }
+ return payload;
+ }
+
+ private static String getResponseData(final HttpServletResponse response) throws IOException {
+ String payload = null;
+ ContentCachingResponseWrapper wrapper = WebUtils.getNativeResponse(response,
+ ContentCachingResponseWrapper.class);
+ if (wrapper != null) {
+ byte[] buf = wrapper.getContentAsByteArray();
+ if (buf.length > 0) {
+ payload = new String(buf, 0, buf.length, wrapper.getCharacterEncoding());
+ wrapper.copyBodyToResponse();
+ }
+ }
+ return payload;
+ }
+
+ @SuppressWarnings("unused")
+ @Override
+ protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
+ throws ServletException, IOException {
+
+ if (request.getMethod().equalsIgnoreCase("POST") || request.getMethod().equalsIgnoreCase("PUT")) {
+
+ HttpServletRequest requestToCache = new ContentCachingRequestWrapper(request);
+ HttpServletResponse responseToCache = new ContentCachingResponseWrapper(response);
+ filterChain.doFilter(requestToCache, responseToCache);
+ String requestData = getRequestData(requestToCache);
+ String responseData = getResponseData(responseToCache);
+ if (StringUtils.isNotBlank(requestData) && validator.denyXSS(requestData)) {
+ throw new SecurityException(BAD_REQUEST);
+ }
+
+ } else {
+ filterChain.doFilter(request, response);
+ }
+
+ }
+}
diff --git a/ONAP-SDK-APP/src/main/java/org/onap/portalapp/login/LoginStrategyImpl.java b/ONAP-SDK-APP/src/main/java/org/onap/portalapp/login/LoginStrategyImpl.java
new file mode 100644
index 000000000..af6e0ae69
--- /dev/null
+++ b/ONAP-SDK-APP/src/main/java/org/onap/portalapp/login/LoginStrategyImpl.java
@@ -0,0 +1,113 @@
+/*-
+ * ================================================================================
+ * ONAP Portal SDK
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property
+ * ================================================================================
+ * 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.
+ * ================================================================================
+ */
+
+package org.onap.portalapp.login;
+
+import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.onap.portalsdk.core.auth.LoginStrategy;
+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.onap.portalsdk.core.onboarding.exception.CipherUtilException;
+import org.onap.portalsdk.core.onboarding.exception.PortalAPIException;
+import org.onap.portalsdk.core.onboarding.util.CipherUtil;
+import org.onap.portalsdk.core.util.SystemProperties;
+import org.springframework.web.servlet.ModelAndView;
+
+/**
+ * Implements basic single-signon login strategy for open-source applications
+ * when users start at Portal. Extracts an encrypted user ID sent by Portal.
+ */
+public class LoginStrategyImpl extends LoginStrategy {
+
+ private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(LoginStrategyImpl.class);
+
+ /**
+ * login for open source is same as external login in the non-open-source
+ * version.
+ */
+ @Override
+ public ModelAndView doLogin(HttpServletRequest request, HttpServletResponse response) throws Exception {
+ return doExternalLogin(request, response);
+ }
+
+ @Override
+ public String getUserId(HttpServletRequest request) throws PortalAPIException {
+ // Check ECOMP Portal cookie
+ Cookie ep = getCookie(request, EP_SERVICE);
+ if (ep == null) {
+ logger.debug(EELFLoggerDelegate.debugLogger, "getUserId: no EP_SERVICE cookie, returning null");
+ return null;
+ }
+
+ String userid = null;
+ try {
+ userid = getUserIdFromCookie(request);
+ } catch (Exception e) {
+ logger.error(EELFLoggerDelegate.errorLogger, "getUserId failed", e);
+ }
+ return userid;
+ }
+
+ /**
+ * Searches the request for the user-ID cookie and decrypts the value using a
+ * key configured in properties
+ *
+ * @param request
+ * HttpServletRequest
+ * @return User ID
+ * @throws CipherUtilException
+ * On any failure to decrypt
+ */
+ @SuppressWarnings("deprecation")
+ private String getUserIdFromCookie(HttpServletRequest request) throws CipherUtilException {
+ String userId = "";
+ Cookie userIdCookie = getCookie(request, USER_ID);
+ if (userIdCookie != null) {
+ final String cookieValue = userIdCookie.getValue();
+ if (!SystemProperties.containsProperty(SystemProperties.Decryption_Key))
+ throw new IllegalStateException("Failed to find property " + SystemProperties.Decryption_Key);
+ final String decryptionKey = SystemProperties.getProperty(SystemProperties.Decryption_Key);
+ userId = CipherUtil.decrypt(cookieValue, decryptionKey);
+ logger.debug(EELFLoggerDelegate.debugLogger, "getUserIdFromCookie: decrypted as {}", userId);
+ }
+ return userId;
+ }
+
+ /**
+ * Searches the request for the named cookie.
+ *
+ * @param request
+ * HttpServletRequest
+ * @param cookieName
+ * Name of desired cookie
+ * @return Cookie if found; otherwise null.
+ */
+ private Cookie getCookie(HttpServletRequest request, String cookieName) {
+ Cookie[] cookies = request.getCookies();
+ if (cookies != null)
+ for (Cookie cookie : cookies)
+ if (cookie.getName().equals(cookieName))
+ return cookie;
+ return null;
+ }
+
+}
diff --git a/ONAP-SDK-APP/src/main/java/org/openecomp/portalapp/scheduler/Register.java b/ONAP-SDK-APP/src/main/java/org/onap/portalapp/scheduler/Register.java
index 0bb7da14a..2a355787b 100644
--- a/ONAP-SDK-APP/src/main/java/org/openecomp/portalapp/scheduler/Register.java
+++ b/ONAP-SDK-APP/src/main/java/org/onap/portalapp/scheduler/Register.java
@@ -17,14 +17,14 @@
* limitations under the License.
* ================================================================================
*/
-package org.openecomp.portalapp.scheduler;
+package org.onap.portalapp.scheduler;
import java.util.ArrayList;
import java.util.List;
-import org.openecomp.portalsdk.core.logging.logic.EELFLoggerDelegate;
-import org.openecomp.portalsdk.core.scheduler.Registerable;
-import org.openecomp.portalsdk.core.util.SystemProperties;
+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.onap.portalsdk.core.scheduler.Registerable;
+import org.onap.portalsdk.core.util.SystemProperties;
import org.quartz.Trigger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.DependsOn;
@@ -34,10 +34,10 @@ import org.springframework.stereotype.Component;
@DependsOn({ "logRegistry", "systemProperties" })
public class Register implements Registerable {
- EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(Register.class);
+ private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(Register.class);
private List<Trigger> scheduleTriggers = new ArrayList<>();
- Trigger trigger[] = new Trigger[1];
+ Trigger[] trigger = new Trigger[1];
@Autowired
private LogRegistry logRegistry;
@@ -49,15 +49,12 @@ public class Register implements Registerable {
@Override
public void registerTriggers() {
- // if the property value is not available; the cron will not be added
- // and can be ignored. its safe to ignore the exceptions
- try {
- if (SystemProperties.getProperty(SystemProperties.LOG_CRON) != null)
- getScheduleTriggers().add(logRegistry.getTrigger());
- } catch (IllegalStateException ies) {
- logger.info(EELFLoggerDelegate.debugLogger, ("Log Cron not available") + ies);
+ // if the property value is not available; the cron will not be added.
+ if (SystemProperties.containsProperty(SystemProperties.LOG_CRON)) {
+ logger.debug(EELFLoggerDelegate.debugLogger,
+ "Adding log registry for cron property {}", SystemProperties.getProperty(SystemProperties.LOG_CRON));
+ getScheduleTriggers().add(logRegistry.getTrigger());
}
-
}
public List<Trigger> getScheduleTriggers() {
diff --git a/ONAP-SDK-APP/src/main/java/org/openecomp/portalapp/scheduler/RegistryAdapter.java b/ONAP-SDK-APP/src/main/java/org/onap/portalapp/scheduler/RegistryAdapter.java
index 18b3fa45f..241d2a18e 100644
--- a/ONAP-SDK-APP/src/main/java/org/openecomp/portalapp/scheduler/RegistryAdapter.java
+++ b/ONAP-SDK-APP/src/main/java/org/onap/portalapp/scheduler/RegistryAdapter.java
@@ -17,14 +17,14 @@
* limitations under the License.
* ================================================================================
*/
-package org.openecomp.portalapp.scheduler;
+package org.onap.portalapp.scheduler;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-import org.openecomp.portalsdk.core.scheduler.Registerable;
-import org.openecomp.portalsdk.workflow.services.WorkflowScheduleService;
+import org.onap.portalsdk.core.scheduler.Registerable;
+import org.onap.portalsdk.workflow.services.WorkflowScheduleService;
import org.quartz.Trigger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;
@@ -41,20 +41,15 @@ public class RegistryAdapter {
private SchedulerFactoryBean schedulerBean;
- Trigger trigger[] = new Trigger[1];
+ Trigger [] trigger = new Trigger[1];
public Trigger[] getTriggers() {
-
registry.registerTriggers();
-
List<Trigger> allTriggers = new ArrayList<>();
-
List<Trigger> coreTriggers = addCoreTriggers();
final Trigger[] extTriggerArray = registry.getTriggers();
-
allTriggers.addAll(Arrays.asList(extTriggerArray));
allTriggers.addAll(coreTriggers);
-
return allTriggers.toArray(trigger);
}
@@ -65,8 +60,8 @@ public class RegistryAdapter {
return triggers;
}
- public void setSchedulerBean(SchedulerFactoryBean _schedulerBean) {
- schedulerBean = _schedulerBean;
+ public void setSchedulerBean(final SchedulerFactoryBean schedulerBean) {
+ this.schedulerBean = schedulerBean;
}
public SchedulerFactoryBean getSchedulerBean() {
diff --git a/ONAP-SDK-APP/src/main/java/org/openecomp/portalapp/service/AdminAuthExtension.java b/ONAP-SDK-APP/src/main/java/org/onap/portalapp/service/AdminAuthExtension.java
index db5c0a69a..c769ded26 100644
--- a/ONAP-SDK-APP/src/main/java/org/openecomp/portalapp/service/AdminAuthExtension.java
+++ b/ONAP-SDK-APP/src/main/java/org/onap/portalapp/service/AdminAuthExtension.java
@@ -17,17 +17,17 @@
* limitations under the License.
* ================================================================================
*/
-package org.openecomp.portalapp.service;
+package org.onap.portalapp.service;
import java.util.Set;
+import org.onap.policy.model.Roles;
import org.onap.policy.rest.dao.CommonClassDao;
import org.onap.policy.rest.jpa.UserInfo;
-import org.openecomp.policy.model.Roles;
-import org.openecomp.portalapp.service.IAdminAuthExtension;
-import org.openecomp.portalsdk.core.domain.Role;
-import org.openecomp.portalsdk.core.domain.User;
-import org.openecomp.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.onap.portalapp.service.IAdminAuthExtension;
+import org.onap.portalsdk.core.domain.Role;
+import org.onap.portalsdk.core.domain.User;
+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
diff --git a/ONAP-SDK-APP/src/main/java/org/openecomp/portalapp/lm/FusionLicenseManagerImpl.java b/ONAP-SDK-APP/src/main/java/org/openecomp/portalapp/lm/FusionLicenseManagerImpl.java
deleted file mode 100644
index 454cd3378..000000000
--- a/ONAP-SDK-APP/src/main/java/org/openecomp/portalapp/lm/FusionLicenseManagerImpl.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*-
- * ================================================================================
- * ONAP Portal SDK
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property
- * ================================================================================
- * 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.
- * ================================================================================
- */
-package org.openecomp.portalapp.lm;
-
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-
-import javax.servlet.ServletContext;
-
-import org.openecomp.portalsdk.core.lm.FusionLicenseManager;
-import org.springframework.stereotype.Component;
-
-/*
- * Please note that this class is not being used; its a dummy stub to have a qualifying bean for the interface.
- */
-
-@Component
-public class FusionLicenseManagerImpl implements FusionLicenseManager {
-
- @Override
- public void initKeyStoreParam() {
-
- }
-
- @Override
- public void initCipherParam() {
-
- }
-
- @Override
- public void initLicenseParam() {
-
- }
-
- @Override
- public void doInitWork() {
-
- }
-
- @Override
- public int installLicense() {
- return 0;
- }
-
- @Override
- public synchronized int verifyLicense(ServletContext context) {
- return 0;
- }
-
- @Override
- public void generateLicense(Map<String, String> clientInfoMap, List<String> ipAddressList) throws Exception {
-
- }
-
- @Override
- public String nvl(String s) {
- return null;
- }
-
- @Override
- public Date getExpiredDate() {
- return null;
- }
-
- @Override
- public void setExpiredDate(Date expiredDate) {
-
- }
-
-}
diff --git a/ONAP-SDK-APP/src/main/java/org/openecomp/portalapp/lm/LicenseableClassImpl.java b/ONAP-SDK-APP/src/main/java/org/openecomp/portalapp/lm/LicenseableClassImpl.java
deleted file mode 100644
index 26c5d9174..000000000
--- a/ONAP-SDK-APP/src/main/java/org/openecomp/portalapp/lm/LicenseableClassImpl.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*-
- * ================================================================================
- * onap Portal SDK
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property
- * ================================================================================
- * 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.
- * ================================================================================
- */
-package org.openecomp.portalapp.lm;
-
-import java.io.FileNotFoundException;
-import java.io.InputStream;
-
-import org.openecomp.portalsdk.core.lm.LicenseableClass;
-
-/*
- * Please note that this class is not being used; its a dummy stub to have a qualifying bean for the interface.
- */
-
-public class LicenseableClassImpl implements LicenseableClass {
-
- public String getApplicationName() {
- return "";
- }
-
- public InputStream getPublicKeystoreAsInputStream() throws FileNotFoundException {
- return null;
- }
-
- public String getAlias() {
- return "";
- }
-
- public String getKeyPasswd() {
- return "";
- }
-
- public String getPublicKeystorePassword() {
- return "";
- }
-
- public String getCipherParamPassword() {
- return "";
- }
-
- @SuppressWarnings("rawtypes")
- public Class getClassToLicense() {
- return this.getClass();
- }
-}
-
diff --git a/ONAP-SDK-APP/src/main/java/org/openecomp/portalapp/login/LoginStrategyImpl.java b/ONAP-SDK-APP/src/main/java/org/openecomp/portalapp/login/LoginStrategyImpl.java
deleted file mode 100644
index 3b38f1d8e..000000000
--- a/ONAP-SDK-APP/src/main/java/org/openecomp/portalapp/login/LoginStrategyImpl.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*-
- * ================================================================================
- * ONAP Portal SDK
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property
- * ================================================================================
- * 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.
- * ================================================================================
- */
-package org.openecomp.portalapp.login;
-
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.onap.policy.common.logging.flexlogger.FlexLogger;
-import org.onap.policy.common.logging.flexlogger.Logger;
-import org.openecomp.portalsdk.core.auth.LoginStrategy;
-import org.openecomp.portalsdk.core.logging.logic.EELFLoggerDelegate;
-import org.openecomp.portalsdk.core.onboarding.exception.PortalAPIException;
-import org.openecomp.portalsdk.core.onboarding.util.CipherUtil;
-import org.openecomp.portalsdk.core.util.SystemProperties;
-import org.springframework.web.servlet.ModelAndView;
-
-public class LoginStrategyImpl extends LoginStrategy {
-
- private static final Logger LOGGER = FlexLogger.getLogger(LoginStrategyImpl.class);
-
- @Override
- public ModelAndView doLogin(HttpServletRequest request, HttpServletResponse response) throws Exception {
- // 'login' for opensource is same as 'external' login.
- return doExternalLogin(request, response);
- }
-
- @Override
- public String getUserId(HttpServletRequest request) throws PortalAPIException {
- // Check ONAP Portal cookie
- if (!isLoginCookieExist(request))
- return null;
-
- String userid = null;
- try {
- userid = getUserIdFromCookie(request);
- } catch (Exception e) {
- LOGGER.error("Exception Occured" + e);
- }
- return userid;
- }
-
- private static String getUserIdFromCookie(HttpServletRequest request) throws PortalAPIException {
- String userId = "";
- Cookie userIdCookie = getCookie(request, USER_ID);
- if (userIdCookie != null) {
- final String cookieValue = userIdCookie.getValue();
- if (!SystemProperties.containsProperty(SystemProperties.Decryption_Key))
- throw new IllegalStateException("Failed to find property " + SystemProperties.Decryption_Key);
- final String decryptionKey = SystemProperties.getProperty(SystemProperties.Decryption_Key);
- try {
- userId = CipherUtil.decrypt(cookieValue, decryptionKey);
- LOGGER.debug("getUserIdFromCookie: decrypted as {}" +userId);
- } catch (Exception e) {
- LOGGER.error("Exception Occured in getUserIdFromCookie" + e);
- }
- }
- return userId;
- }
-
- private static boolean isLoginCookieExist(HttpServletRequest request) {
- Cookie ep = getCookie(request, EP_SERVICE);
- return (ep != null);
- }
-
- private static Cookie getCookie(HttpServletRequest request, String cookieName) {
- Cookie[] cookies = request.getCookies();
- if (cookies != null)
- for (Cookie cookie : cookies)
- if (cookie.getName().equals(cookieName))
- return cookie;
-
- return null;
- }
-
-}
diff --git a/ONAP-SDK-APP/src/main/resources/key.properties b/ONAP-SDK-APP/src/main/resources/key.properties
new file mode 100644
index 000000000..134227d20
--- /dev/null
+++ b/ONAP-SDK-APP/src/main/resources/key.properties
@@ -0,0 +1,23 @@
+###
+# ================================================================================
+# onap Portal SDK
+# ================================================================================
+# Copyright (C) 2017 AT&T Intellectual Property
+# ================================================================================
+# 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.
+# ================================================================================
+###
+
+# Properties read by the ONAP Framework library (epsdk-fw)
+
+cipher.enc.key = AGLDdG4D04BKm2IxIWEr8o==! \ No newline at end of file
diff --git a/ONAP-SDK-APP/src/main/resources/logback.xml b/ONAP-SDK-APP/src/main/resources/logback.xml
index fe4aac919..42535510b 100644
--- a/ONAP-SDK-APP/src/main/resources/logback.xml
+++ b/ONAP-SDK-APP/src/main/resources/logback.xml
@@ -99,7 +99,7 @@
<encoder>
<pattern>${applicationLoggerPattern}</pattern>
</encoder>
- <filter class="org.openecomp.portalapp.util.CustomLoggingFilter" />
+ <filter class="org.onap.portalapp.util.CustomLoggingFilter" />
</appender>
<appender name="asyncEELF" class="ch.qos.logback.classic.AsyncAppender">
@@ -324,47 +324,30 @@
</appender>
- <!-- ============================================================================ -->
- <!-- EELF loggers -->
- <!-- ============================================================================ -->
- <logger name="org.onap.epsdk.eelf" level="debug" additivity="false">
+
+
+ <logger name="org.onap.eelf" level="info" additivity="false">
<appender-ref ref="asyncEELF" />
</logger>
-
- <!--
- <logger name="org.onap.epsdk.eelf.security" level="info" additivity="false">
- <appender-ref ref="asyncEELFSecurity" />
- </logger>
- <logger name="org.onap.epsdk.eelf.perf" level="info" additivity="false">
- <appender-ref ref="asyncEELFPerformance" />
- </logger>
- <logger name="org.onap.epsdk.eelf.server" level="info" additivity="false">
- <appender-ref ref="asyncEELFServer" />
- </logger>
- <logger name="org.onap.epsdk.eelf.policy" level="info" additivity="false">
- <appender-ref ref="asyncEELFPolicy" />
- </logger>
- -->
-
- <logger name="org.onap.epsdk.eelf.audit" level="info" additivity="false">
+
+ <logger name="org.onap.eelf.audit" level="info" additivity="false">
<appender-ref ref="asyncEELFAudit" />
</logger>
- <logger name="org.onap.epsdk.eelf.metrics" level="info" additivity="false">
- <appender-ref ref="asyncEELFMetrics" />
+ <logger name="org.onap.eelf.debug" level="debug" additivity="false">
+ <appender-ref ref="asyncEELFDebug" />
</logger>
-
- <logger name="org.onap.epsdk.eelf.error" level="info" additivity="false">
- <appender-ref ref="asyncEELFError" />
+
+ <logger name="org.onap.eelf.error" level="info" additivity="false">
+ <appender-ref ref="asyncEELFError" />
</logger>
-
- <logger name="org.onap.epsdk.eelf.debug" level="debug" additivity="false">
- <appender-ref ref="asyncEELFDebug" />
- </logger>
-
+
+ <logger name="org.onap.eelf.metrics" level="info" additivity="false">
+ <appender-ref ref="asyncEELFMetrics" />
+ </logger>
<root level="DEBUG">
<appender-ref ref="asyncEELF" />
</root>
-</configuration> \ No newline at end of file
+</configuration>
diff --git a/ONAP-SDK-APP/src/main/resources/portal.properties b/ONAP-SDK-APP/src/main/resources/portal.properties
index 1f2336d7b..04d39c14f 100644
--- a/ONAP-SDK-APP/src/main/resources/portal.properties
+++ b/ONAP-SDK-APP/src/main/resources/portal.properties
@@ -17,7 +17,7 @@
# limitations under the License.
# ================================================================================
###
-# Properties read by ONAP Framework library, onapFW.jar
+# Properties read by ONAP Framework library, ecompFW.jar
##########################################################################
# The following properties should NOT be changed by partner applications.
@@ -35,30 +35,18 @@ use_rest_for_functional_menu=true
##########################################################################
# Name of java class that implements the OnBoardingApiService interface.
-portal.api.impl.class = org.openecomp.portalapp.service.OnBoardingApiServiceImpl
+portal.api.impl.class = org.onap.portalapp.service.OnBoardingApiServiceImpl
-# CSP Global Log On for single sign on
-ecomp_redirect_url = todo_csp_global_logon
+# URL of the Portal where this app is onboarded
+ecomp_redirect_url = https://portal.onap.org/onapportal/process_csp
# URL of the ONAP Portal REST API
-ecomp_rest_url = todo_Onap_rest_url
+ecomp_rest_url = http://portal.onap.org:50580/onapportal/auxapi
-# Applications do not need to run a UEB listener in 1610.
+# Applications do not need to run a UEB listener after 1607.
ueb_listeners_enable = false
# UEB Configuration
-# In release 1607, all 6 entries below were required.
-# In release 1610, if key ueb_listeners_enable is set to false,
+# If key ueb_listeners_enable is set to false,
# then only the ueb_app_key is required.
-# UEB servers
-ueb_url_list = todo_ueb_list
-# ONAP Portal listens on this UEB topic
-ecomp_portal_inbox_name = ONAP-PORTAL-INBOX-TEST-DEMETER
-# Replace these 3 default values with the ones for your specific App,
-# as shown on the on-boarding page on the ONAP Portal web application.
-ueb_app_key = ZOicEniw7BWDL1pM
-ueb_app_secret = PJIsBErHfo2RGKzuu03CZKgV
-ueb_app_mailbox_name = ONAP-PORTAL-OUTBOX-TEST-32756
-# Consumer group name for UEB topic.
-# Use the special tag '{UUID}' to generate a unique one for each sdk-app server.
-ueb_app_consumer_group_name = {UUID}
+ueb_app_key = REPLACE-ME-UEB-APP-KEY-EPSDK-APP-OS
diff --git a/ONAP-SDK-APP/src/main/webapp/WEB-INF/conf/system.properties b/ONAP-SDK-APP/src/main/webapp/WEB-INF/conf/system.properties
index aa8ee1476..64f9f65c6 100644
--- a/ONAP-SDK-APP/src/main/webapp/WEB-INF/conf/system.properties
+++ b/ONAP-SDK-APP/src/main/webapp/WEB-INF/conf/system.properties
@@ -1,4 +1,4 @@
-# Properties read by ONAP Core library, onapSDK-core.jar
+# Properties read by ONAP Core library, epsdk-core.jar
##########################################################################
# The following properties should NOT be changed by partner applications.
@@ -20,53 +20,53 @@ user_name = fullName
decryption_key = AGLDdG4D04BKm2IxIWEr8o==
##########################################################################
-# The following properties MAY require changes by partner applications.
+# The following properties REQUIRE changes by partner applications.
##########################################################################
+
+
#Mysql
-db.driver = org.mariadb.jdbc.Driver
+db.driver = org.mariadb.jdbc.Driver
db.connectionURL = jdbc:mariadb://localhost:3306/onap_sdk
db.userName = policy_user
db.password = policy_user
+db.encrypt_flag = false
db.hib.dialect = org.hibernate.dialect.MySQLDialect
db.min_pool_size = 5
db.max_pool_size = 10
+#db.test_connection_on_checkout = false
+#db.preferred_test_query = SELECT 1 from FN_USER
+
hb.dialect = org.hibernate.dialect.MySQLDialect
# SQL statements are logged to stdout
hb.show_sql = true
hb.idle_connection_test_period = 3600
-app_display_name = EP SDK App
+app_display_name = ONAP Policy
+# license file area
files_path = /tmp
#element map files
-element_map_file_path = /tmp
+element_map_file_path = app/fusionapp/files/
element_map_icon_path = app/fusionapp/icons/
#Cron Schedules have 6 required fields and 1 optional field:
# Seconds Minutes Hours Day-of-Month Month Day-of-Week Year
log_cron = 0 0/1 * * * ?;
-mylogins_feed_cron = 0 0/60 * * * ?;
#sessiontimeout_feed_cron = 0 * * * * ? *
-my_login_feed_output_dir = /tmp/MyLogins
-
-# ONAP Portal Shared Context REST API URL
-ecomp_shared_context_rest_url= todo_shared_context_url
# Link shown in Help menu
-contact_us_link = todo_Contact_link
+contact_us_link = https://wiki.onap.org/display/DW/Portal
-# Camunda cockpit link
-camunda_cockpit_link = todo_camunda_link
# An Unique 128-bit value defined to identify a specific version
# of an application deployed on a specific virtual machine.
# This value must be generated and updated by the application
# which is using the ONAP SDK at the time of its deployment.
# Online Unique UUID generator - https://www.uuidgenerator.net/
-instance_uuid=8da691c9-987d-43ed-a358-00ac2f35685d
-
-# R Cloud feature
-guard_notebook_url=todo_guard_url
+instance_uuid=8a3a3721-bca6-4140-92a3-5b1ad1b0df83
# Application base URL has the host and app context only; a proper prefix of the on-boarded URL.
-# Only required for applications using WebJunction or FE/BE separation. For example:
-# app_base_url = todo_App_base_url
+# Only required for applications using FE/BE separation. For example:
+# app_base_url = https://www.onap.org/app_context/
+
+#authenticate user server
+authenticate_user_server=http://todo_enter_auth_server_hostname:8383/openid-connect-server-webapp/allUsers \ No newline at end of file
diff --git a/ONAP-SDK-APP/src/main/webapp/WEB-INF/defs/definitions.xml b/ONAP-SDK-APP/src/main/webapp/WEB-INF/defs/definitions.xml
index b2391b562..2f4a91408 100644
--- a/ONAP-SDK-APP/src/main/webapp/WEB-INF/defs/definitions.xml
+++ b/ONAP-SDK-APP/src/main/webapp/WEB-INF/defs/definitions.xml
@@ -3,12 +3,16 @@
"-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN"
"http://tiles.apache.org/dtds/tiles-config_3_0.dtd">
-<!-- This tiles definitions file is defs/definitions.xml. It maps
- tokens used by example SDK-app controllers to JSP file paths.
- Applications that use JSP pages should modify this file. -->
+<!--
+ This tiles definitions file is defs/definitions.xml.
+ It maps tokens used by app controllers to JSP file paths.
+ Applications that use JSP pages should modify this file.
+ Configured by ExternalAppConfig#addTileDefinitions().
+-->
<tiles-definitions>
<definition name="tileKey" template="/path/to/page_template.html"/>
<definition name="policy_Editor" template="/app/policyApp/main/policyEditor.html"/>
+
</tiles-definitions>
diff --git a/ONAP-SDK-APP/src/main/webapp/WEB-INF/fusion/conf/fusion.properties b/ONAP-SDK-APP/src/main/webapp/WEB-INF/fusion/conf/fusion.properties
index 7140d35fb..8ce8cc95a 100644
--- a/ONAP-SDK-APP/src/main/webapp/WEB-INF/fusion/conf/fusion.properties
+++ b/ONAP-SDK-APP/src/main/webapp/WEB-INF/fusion/conf/fusion.properties
@@ -1,7 +1,11 @@
# login settings
login_method_backdoor = backdoor
login_method_attribute_name = login_method
-login_method_csp = csp
+
+# These properties will be removed after SingleSignOnController is cleaned
+authentication_mechanism = BOTH
+login_method_csp = csp
+login_method_web_junction = web_junction
#login message
login.error.hrid.empty = Login failed, please contact system administrator.
@@ -11,9 +15,8 @@ login.error.user.inactive = Account is disabled, please contact system administr
# User Session settings
user_attribute_name = user
roles_attribute_name = roles
-role_functions_attribute_name = role_functions
-authentication_mechanism = BOTH
role_function_list = role_function_list
+role_functions_attribute_name = role_functions
# Import-user LDAP settings
post_initial_context_factory = com.sun.jndi.ldap.LdapCtxFactory
diff --git a/ONAP-SDK-APP/src/main/webapp/WEB-INF/fusion/jsp/ds2/left-menu.jsp b/ONAP-SDK-APP/src/main/webapp/WEB-INF/fusion/jsp/ds2/left-menu.jsp
index edb040504..0d62c7865 100644
--- a/ONAP-SDK-APP/src/main/webapp/WEB-INF/fusion/jsp/ds2/left-menu.jsp
+++ b/ONAP-SDK-APP/src/main/webapp/WEB-INF/fusion/jsp/ds2/left-menu.jsp
@@ -20,35 +20,15 @@
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ page isELIgnored="false"%>
-<%@ page import="org.openecomp.portalsdk.core.util.SystemProperties"%>
-<%@ page import="org.openecomp.portalsdk.core.onboarding.util.PortalApiProperties"%>
-<%@ page import="org.openecomp.portalsdk.core.onboarding.util.PortalApiConstants"%>
-<%@ page import="org.openecomp.portalsdk.core.domain.MenuData"%>
+<%@ page import="org.onap.portalsdk.core.util.SystemProperties"%>
+<%@ page import="org.onap.portalsdk.core.onboarding.util.PortalApiProperties"%>
+<%@ page import="org.onap.portalsdk.core.onboarding.util.PortalApiConstants"%>
+<%@ page import="org.onap.portalsdk.core.domain.MenuData"%>
<link rel="stylesheet" type="text/css" href="app/fusion/external/ebz/ebz_header/header.css">
<link rel="stylesheet" type="text/css" href="app/fusion/external/ebz/ebz_header/portal_ebz_header.css">
<link rel="stylesheet" type="text/css" href="app/fusion/external/ebz/sandbox/styles/style.css" >
-<!-- <script src= "app/fusion/external/ebz/angular_js/angular.js"></script>
-<script src= "app/fusion/external/ebz/angular_js/angular-route.min.js"></script>
-<script src= "app/fusion/external/ebz/angular_js/angular-sanitize.js"></script>
-<script src= "app/fusion/external/ebz/angular_js/angular-cookies.js"></script>
-<script src= "app/fusion/external/ebz/angular_js/app.js"></script>
-<script src= "app/fusion/external/ebz/angular_js/gestures.js"></script>
-<script src="static/js/jquery-1.10.2.js"></script>
-<script src="app/fusion/scripts/modalService.js"></script>
-<script src="static/js/jquery.mask.min.js" type="text/javascript"></script>
-<script src="static/js/jquery-ui.js" type="text/javascript"></script>
-<script src="app/fusion/external/ebz/sandbox/att-abs-tpls.js" type="text/javascript"></script>
-<script src="static/fusion/js/att_angular_gridster/ui-gridster-tpls.js"></script>
-<script src="static/fusion/js/att_angular_gridster/angular-gridster.js"></script>
-<script src= "app/fusion/external/ebz/angular_js/checklist-model.js"></script>
-<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/lodash.js/0.10.0/lodash.min.js"></script>
-<script src="app/fusion/external/angular-ui/ui-bootstrap-tpls-1.1.2.min.js"></script>
-<script src="app/fusion/scripts/services/userInfoService.js"></script>
-<script src="app/fusion/scripts/services/leftMenuService.js"></script> -->
-
-
<jsp:include page="/WEB-INF/fusion/jsp/ebz/loginSnippet.html" ></jsp:include>
@@ -57,7 +37,7 @@
<%
String contactUsLink = SystemProperties.getProperty(SystemProperties.CONTACT_US_LINK);
- String redirectUrl = PortalApiProperties.getProperty(PortalApiConstants.ONAP_REDIRECT_URL);
+ String redirectUrl = PortalApiProperties.getProperty(PortalApiConstants.ECOMP_REDIRECT_URL);
String portalUrl = redirectUrl.substring(0, redirectUrl.lastIndexOf('/')) + "/process_csp";
String getAccessLink = redirectUrl.substring(0, redirectUrl.lastIndexOf('/')) + "/get_access";
%>
@@ -83,8 +63,7 @@
<div parentmenu-tabs mega-menu="true" menu-items="megaMenuDataObject" style="height:55px;">
<div style="float:left">
<li class="megamenu__item" style="line-height:55px;" onclick="returnToPortal()">
- <img src="app/fusion/external/ebz/images/att_logo.png" class="ATTLogo" ></span>
- <strong style="font-weight: 400 !important; font-family: "Omnes-ONAP-W02", Arial !important; font-size: 18px;" id='returnPortal' >ONAP Portal</strong>
+ <div ng-include src="'app/fusion/scripts/DS2-view-models/header-logo.html'"></div>
</li>
<div menu-tabs mega-menu="true" tab-name="item.text" menu-item="item" active-menu="activeClickMenu.x"
ng-repeat="item in megaMenuDataObject" style="font-size: 18px;" ng-mousedown="loadFavorites()" >
diff --git a/ONAP-SDK-APP/src/main/webapp/WEB-INF/fusion/orm/RNoteBookIntegration.hbm.xml b/ONAP-SDK-APP/src/main/webapp/WEB-INF/fusion/orm/RNoteBookIntegration.hbm.xml
index 984e2369b..3d9a5e455 100644
--- a/ONAP-SDK-APP/src/main/webapp/WEB-INF/fusion/orm/RNoteBookIntegration.hbm.xml
+++ b/ONAP-SDK-APP/src/main/webapp/WEB-INF/fusion/orm/RNoteBookIntegration.hbm.xml
@@ -23,7 +23,7 @@
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
-<hibernate-mapping package="org.openecomp.portalsdk.rnotebookintegration.domain">
+<hibernate-mapping package="org.onap.portalsdk.rnotebookintegration.domain">
<!-- RNotebookIntegration mapping details -->
diff --git a/ONAP-SDK-APP/src/main/webapp/WEB-INF/jsp/login.jsp b/ONAP-SDK-APP/src/main/webapp/WEB-INF/jsp/login.jsp
index 2d6c95115..0ecb69609 100644
--- a/ONAP-SDK-APP/src/main/webapp/WEB-INF/jsp/login.jsp
+++ b/ONAP-SDK-APP/src/main/webapp/WEB-INF/jsp/login.jsp
@@ -17,7 +17,7 @@
limitations under the License.
================================================================================
--%>
-<%@ page import="org.openecomp.portalsdk.core.util.SystemProperties"%>
+<%@ page import="org.onap.portalsdk.core.util.SystemProperties"%>
<!DOCTYPE html>
<%
// Name is defined by app; do not throw if missing
diff --git a/ONAP-SDK-APP/src/main/webapp/WEB-INF/jsp/login_external.jsp b/ONAP-SDK-APP/src/main/webapp/WEB-INF/jsp/login_external.jsp
index cb980c625..3671d2969 100644
--- a/ONAP-SDK-APP/src/main/webapp/WEB-INF/jsp/login_external.jsp
+++ b/ONAP-SDK-APP/src/main/webapp/WEB-INF/jsp/login_external.jsp
@@ -17,7 +17,7 @@
limitations under the License.
================================================================================
--%>
-<%@ page import="org.openecomp.portalsdk.core.util.SystemProperties"%>
+<%@ page import="org.onap.portalsdk.core.util.SystemProperties"%>
<!DOCTYPE html>
<%
// Name is defined by app; do not throw if missing
diff --git a/ONAP-SDK-APP/src/main/webapp/WEB-INF/web.xml b/ONAP-SDK-APP/src/main/webapp/WEB-INF/web.xml
index 31b096049..a576f61f5 100644
--- a/ONAP-SDK-APP/src/main/webapp/WEB-INF/web.xml
+++ b/ONAP-SDK-APP/src/main/webapp/WEB-INF/web.xml
@@ -10,8 +10,16 @@
<distributable />
<session-config>
- <session-timeout>7</session-timeout>
+ <session-timeout>30</session-timeout>
<tracking-mode>COOKIE</tracking-mode>
</session-config>
+ <filter>
+ <filter-name>SecurityXssFilter</filter-name>
+ <filter-class>org.onap.portalapp.filter.SecurityXssFilter</filter-class>
+ </filter>
+ <filter-mapping>
+ <filter-name>SecurityXssFilter</filter-name>
+ <url-pattern>/*</url-pattern>
+ </filter-mapping>
</web-app> \ No newline at end of file
diff --git a/ONAP-SDK-APP/src/main/webapp/app/fusion/external/ds2/css/digital-ng-library/ecomp-ionicons.css b/ONAP-SDK-APP/src/main/webapp/app/fusion/external/ds2/css/digital-ng-library/ecomp-ionicons.css
new file mode 100644
index 000000000..597b466d5
--- /dev/null
+++ b/ONAP-SDK-APP/src/main/webapp/app/fusion/external/ds2/css/digital-ng-library/ecomp-ionicons.css
@@ -0,0 +1,193 @@
+@charset "UTF-8";
+
+@font-face { font-family: "Ionicons"; src: url("../fonts/ionicons.eot?v=2.0.0"); src: url("../fonts/ionicons.eot?v=2.0.0#iefix") format("embedded-opentype"), url("../fonts/ionicons.ttf?v=2.0.0") format("truetype"), url("../fonts/ionicons.woff?v=2.0.0") format("woff"), url("../fonts/ionicons.svg?v=2.0.0#Ionicons") format("svg"); font-weight: normal; font-style: normal; }
+.ionicons,
+.icon-controls-upPRIMARY,
+.icon-arrows-download:before,
+.icon-securityalerts-alertL:before,
+.icon-controls-add-maximize:before,
+.icon-controls-add-maximize-circle:before,
+.icon-misc-time:before,
+.icoSecurityalerts:before,
+.icon-apps-marketplace:before,
+.icon-content-grid:before,
+.icon-documents-archive:before,
+.icon-arrows-vertical-arrow-down:before,
+.icoArrows-download:before,
+.icoArrows-incoming-call:before,
+.icon-arrows-outgoing-call:before,
+.icon-arrows-upload:before,
+.icon-arrows-straight-arrow:before,
+.icoArrows-vertical-arrow:before,
+.icon-people-userbookmark:before,
+.icon-controls-check:before,
+.icon-chevron-down:before,
+.icon-controls-down:before,
+.icon-controls-left:before,
+.icon-controls-right:before,
+.icon-chevron-up:before,
+.icoDocuments-report:before,
+.icon-edit:before,
+.icon-controls-up:before,
+.icon-overview:before,
+.icon-settings:before,
+.icon-building-home:before,
+.icon-documents-book:before,
+.icoDocuments-book-outline:before,
+.icoDocuments-bookmarks:before,
+.icoDocuments-bookmarks-outline:before,
+.icon-add-widget:before,
+.icon-documents-copy:before,
+.icon-content-flag:before,
+.icon-primary-accordion-minus:before,
+.icon-misc-piechart:before,
+.icon-misc-piechart-outline:before,
+.icon-primary-accordion-plus:before,
+.icon-star:before,
+.icon-building-door:before,
+.icon-content-gridguide:before,
+.icon-user:before,
+.icon-people-oneperson:before,
+.icon-people-oneperson-add:before,
+.icon-people-oneperson-stalker:before,
+.icon-controls-pointer:before,
+.icon-arrows-replay-restart:before,
+.icon-content-star:before,
+.icon-misc-trash:before,
+.icon-misc-pen:before,
+.ion-navicon:before,
+.icon-primary-close:before, .close:before, .reset-field:before,
+.icon-datanetwork-softwareasaservice:before,
+.icon-datanetwork-messaging2:before,
+.icon-controls-settingsconnectedactivity:before,
+.icon-arrows-upload:before {
+ display: inline-block;
+ font-family: "Ionicons";
+ speak: none;
+ font-style: normal;
+ font-weight: normal;
+ font-variant: normal;
+ text-transform: none;
+ text-rendering: auto;
+ line-height: 1;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ }
+
+
+
+.icoSecurityalerts-alert:before { content: "\f100"; }
+
+.icon-arrows-download:before { content: "\f41f"; }
+
+.icon-controls-add-maximize:before { content: "\f2c7"; }
+
+.icon-controls-add-maximize-circle:before { content: "\f359"; }
+
+.icon-misc-time:before { content: "\f35a"; }
+
+.icoSecurityalerts:before { content: "\f35b"; }
+
+.icon-content-grid:before { content: "\f35c"; }
+
+.icon-documents-archive:before { content: "\f2c9"; }
+
+.icon-arrows-vertical-arrow-down:before { content: "\f35d"; }
+
+.icon-arrows-download:before { content: "\f35e"; }
+
+.icon-arrows-incoming-call:before { content: "\f360"; }
+
+.icoArrows-outgoing-call:before { content: "\f362"; }
+
+.icoArrows-upload:before { content: "\f364"; }
+
+.icoArrows-straight-arrow:before { content: "\f30f"; }
+
+.icon-arrows-vertical-arrow:before { content: "\f366"; }
+
+.icon-people-userbookmark:before { content: "\f39f"; }
+
+.icon-controls-check:before { content: "\f121"; }
+
+.icon-chevron-down:before { content: "\f123"; }
+
+.icon-controls-left:before { content: "\f124"; }
+
+.icon-controls-right:before { content: "\f125"; }
+
+.icon-chevron-up:before { content: "\f126"; }
+
+.icoDocuments-report:before { content: "\f274"; }
+
+.icon-overview:before { content: "\f133"; }
+
+.icon-controls-down:before { content: "\f3d0"; }
+
+.icon-controls-up:before { content: "\f3d8"; }
+
+.icon-documents-book:before { content: "\f3e8"; }
+
+.icoDocuments-book-outline:before { content: "\f3e7"; }
+
+.icoDocuments-bookmarks:before { content: "\f3ea"; }
+
+.icoDocuments-bookmarks-outline:before { content: "\f3e9"; }
+
+.icon-documents-copy:before { content: "\f41c"; }
+
+.icon-content-flag:before { content: "\f42d"; }
+
+.icon-primary-accordion-minus:before { content: "\f463"; }
+
+.icon-misc-piechart:before { content: "\f484"; }
+
+.icon-misc-piechart-outline:before { content: "\f483"; }
+
+.icon-primary-accordion-plus:before { content: "\f48a"; }
+
+.icon-building-door:before { content: "\f29f"; }
+
+.icon-content-gridguide:before { content: "\f20d"; }
+
+.icon-people-oneperson:before { content: "\f213"; }
+
+.icon-people-oneperson-add:before { content: "\f211"; }
+
+.icon-people-oneperson-stalker:before { content: "\f212"; }
+
+.icon-arrows-replay-restart:before { content: "\f21c"; }
+
+.icon-misc-trash:before { content: "\f252"; }
+
+.icon-arrows-upload:before { content: "\f255"; }
+
+.icon-user:before { content: "\f213"; }
+
+.icon-star:before { content: "\f4b3"; }
+
+.icon-edit:before { content: "\f2bf"; }
+
+.icon-settings:before { content: "\f13d"; }
+
+.icon-apps-marketplace:before { content: "\f35c"; }
+
+.icon-add-widget:before { content: "\f3f0"; }
+
+.icon-controls-upPRIMARY:before { content: "\f3d8"; }
+
+.icon-misc-pen:before { content: "\f2bf"; }
+
+.ion-navicon:before { content: "\f20e"; }
+
+.icon-building-home:before { content: "\f144"; }
+
+.icon-content-star:before { content: "\f24e"; }
+
+.icon-primary-close:before, .close:before, .reset-field:before { content: "\f129"; }
+
+.icon-datanetwork-softwareasaservice:before { content: "\f40c"; }
+
+.icon-datanetwork-messaging2:before { content: "\f132"; }
+
+.icon-controls-settingsconnectedactivity:before { content: "\f411"; } \ No newline at end of file
diff --git a/ONAP-SDK-APP/src/main/webapp/app/fusion/external/ds2/css/digital-ng-library/ionicons.css b/ONAP-SDK-APP/src/main/webapp/app/fusion/external/ds2/css/digital-ng-library/ionicons.css
index 3f7fef611..885aa6bd7 100644
--- a/ONAP-SDK-APP/src/main/webapp/app/fusion/external/ds2/css/digital-ng-library/ionicons.css
+++ b/ONAP-SDK-APP/src/main/webapp/app/fusion/external/ds2/css/digital-ng-library/ionicons.css
@@ -11,47 +11,47 @@
Modified icons to fit ionicon’s grid from original.
*/
@font-face { font-family: "Ionicons"; src: url("../fonts/ionicons.eot?v=2.0.0"); src: url("../fonts/ionicons.eot?v=2.0.0#iefix") format("embedded-opentype"), url("../fonts/ionicons.ttf?v=2.0.0") format("truetype"), url("../fonts/ionicons.woff?v=2.0.0") format("woff"), url("../fonts/ionicons.svg?v=2.0.0#Ionicons") format("svg"); font-weight: normal; font-style: normal; }
-.ion, .ionicons, .ion-alert:before, .icon-securityalerts-alertL:before, .icon-controls-add-maximize:before, .icon-controls-add-maximize-circle:before, .icon-misc-time:before, .icoSecurityalerts:before,.icon-apps-marketplace:before ,.icon-content-grid:before, .icon-documents-archive:before, .ion-android-arrow-back:before, .icon-arrows-vertical-arrow-down:before, .ion-android-arrow-dropdown:before, .icoArrows-download:before, .ion-android-arrow-dropleft:before, .icoArrows-incoming-call:before, .ion-android-arrow-dropright:before, .icon-arrows-outgoing-call:before, .ion-android-arrow-dropup:before, .icon-arrows-upload:before, .icon-arrows-straight-arrow:before, .icoArrows-vertical-arrow:before, .ion-android-attach:before, .ion-android-bar:before, .ion-android-bicycle:before, .ion-android-boat:before, .ion-android-bookmark:before, .ion-android-bulb:before, .ion-android-bus:before, .ion-android-calendar:before, .ion-android-call:before, .ion-android-camera:before, .ion-android-cancel:before, .ion-android-car:before, .ion-android-cart:before, .ion-android-chat:before, .ion-android-checkbox:before, .ion-android-checkbox-blank:before, .ion-android-checkbox-outline:before, .ion-android-checkbox-outline-blank:before, .ion-android-checkmark-circle:before, .ion-android-clipboard:before, .ion-android-close:before, .ion-android-cloud:before, .ion-android-cloud-circle:before, .ion-android-cloud-done:before, .ion-android-cloud-outline:before, .ion-android-color-palette:before, .ion-android-compass:before, .ion-android-contact:before, .ion-android-contacts:before, .ion-android-contract:before, .ion-android-create:before, .ion-android-delete:before, .ion-android-desktop:before, .ion-android-document:before, .ion-android-done:before, .ion-android-done-all:before, .ion-android-download:before, .ion-android-drafts:before, .ion-android-exit:before, .ion-android-expand:before, .ion-android-favorite:before, .ion-android-favorite-outline:before, .ion-android-film:before, .ion-android-folder:before, .ion-android-folder-open:before, .ion-android-funnel:before, .ion-android-globe:before, .ion-android-hand:before, .ion-android-hangout:before, .ion-android-happy:before, .ion-android-home:before, .ion-android-image:before, .ion-android-laptop:before, .ion-android-list:before, .ion-android-locate:before, .ion-android-lock:before, .ion-android-mail:before, .ion-android-map:before, .ion-android-menu:before, .ion-android-microphone:before, .ion-android-microphone-off:before, .ion-android-more-horizontal:before, .ion-android-more-vertical:before, .ion-android-navigate:before, .ion-android-notifications:before, .ion-android-notifications-none:before, .ion-android-notifications-off:before, .ion-android-open:before, .ion-android-options:before, .ion-android-people:before, .ion-android-person:before, .icon-people-userbookmark:before, .ion-android-phone-landscape:before, .ion-android-phone-portrait:before, .ion-android-pin:before, .ion-android-plane:before, .ion-android-playstore:before, .ion-android-print:before, .ion-android-radio-button-off:before, .ion-android-radio-button-on:before, .ion-android-refresh:before, .ion-android-remove:before, .ion-android-remove-circle:before, .ion-android-restaurant:before, .ion-android-sad:before, .ion-android-search:before, .ion-android-send:before, .ion-android-settings:before, .ion-android-share:before, .ion-android-share-alt:before, .ion-android-star:before, .ion-android-star-half:before, .ion-android-star-outline:before, .ion-android-stopwatch:before, .ion-android-subway:before, .ion-android-sunny:before, .ion-android-sync:before, .ion-android-textsms:before, .ion-android-time:before, .ion-android-train:before, .ion-android-unlock:before, .ion-android-upload:before, .ion-android-volume-down:before, .ion-android-volume-mute:before, .ion-android-volume-off:before, .ion-android-volume-up:before, .ion-android-walk:before, .ion-android-warning:before, .ion-android-watch:before, .ion-android-wifi:before, .ion-aperture:before, .ion-archive:before, .ion-arrow-down-a:before, .ion-arrow-down-b:before, .ion-arrow-down-c:before, .ion-arrow-expand:before, .ion-arrow-graph-down-left:before, .ion-arrow-graph-down-right:before, .ion-arrow-graph-up-left:before, .ion-arrow-graph-up-right:before, .ion-arrow-left-a:before, .ion-arrow-left-b:before, .ion-arrow-left-c:before, .ion-arrow-move:before, .ion-arrow-resize:before, .ion-arrow-return-left:before, .ion-arrow-return-right:before, .ion-arrow-right-a:before, .ion-arrow-right-b:before, .ion-arrow-right-c:before, .ion-arrow-shrink:before, .ion-arrow-swap:before, .ion-arrow-up-a:before, .ion-arrow-up-b:before, .ion-arrow-up-c:before, .ion-asterisk:before, .ion-at:before, .ion-backspace:before, .ion-backspace-outline:before, .ion-bag:before, .ion-battery-charging:before, .ion-battery-empty:before, .ion-battery-full:before, .ion-battery-half:before, .ion-battery-low:before, .ion-beaker:before, .ion-beer:before, .ion-bluetooth:before, .ion-bonfire:before, .ion-bookmark:before, .ion-bowtie:before, .ion-briefcase:before, .ion-bug:before, .ion-calculator:before, .ion-calendar:before, .ion-camera:before, .ion-card:before, .ion-cash:before, .ion-chatbox:before, .ion-chatbox-working:before, .ion-chatboxes:before, .ion-chatbubble:before, .ion-chatbubble-working:before, .ion-chatbubbles:before, .ion-checkmark:before, .ion-checkmark-circled:before, .ion-checkmark-round:before, .icon-chevron-down:before, .icon-controls-left:before, .icon-controls-right:before, .icon-chevron-up:before, .ion-clipboard:before, .ion-clock:before, .ion-close:before, .ion-close-circled:before, .ion-close-round:before, .ion-closed-captioning:before, .ion-cloud:before, .ion-code:before, .ion-code-download:before, .ion-code-working:before, .ion-coffee:before, .ion-compass:before, .ion-compose:before, .icoDocuments-report:before, .ion-contrast:before, .ion-crop:before, .ion-cube:before, .ion-disc:before, .ion-document:before, .ion-document-text:before, .ion-drag:before, .ion-earth:before, .ion-easel:before, .icon-edit:before,.icon-misc-pen:before, .ion-egg:before, .ion-eject:before, .ion-email:before, .ion-email-unread:before, .ion-erlenmeyer-flask:before, .ion-erlenmeyer-flask-bubbles:before, .icon-overview:before, .ion-eye-disabled:before, .ion-female:before, .ion-filing:before, .ion-film-marker:before, .ion-fireball:before, .ion-flag:before, .ion-flame:before, .ion-flash:before, .ion-flash-off:before, .ion-folder:before, .ion-fork:before, .ion-fork-repo:before, .ion-forward:before, .ion-funnel:before, .icon-settings:before,.ion-gear-a:before, .ion-gear-b:before, .ion-grid:before, .ion-hammer:before, .ion-happy:before, .ion-happy-outline:before, .ion-headphone:before, .ion-heart:before, .ion-heart-broken:before, .ion-help:before, .ion-help-buoy:before, .ion-help-circled:before, .icon-building-home:before, .ion-icecream:before, .ion-image:before, .ion-images:before, .ion-information:before, .ion-information-circled:before, .ion-ionic:before, .ion-ios-alarm:before, .ion-ios-alarm-outline:before, .ion-ios-albums:before, .ion-ios-albums-outline:before, .ion-ios-americanfootball:before, .ion-ios-americanfootball-outline:before, .ion-ios-analytics:before, .ion-ios-analytics-outline:before, .ion-ios-arrow-back:before, .icon-controls-down:before, .ion-ios-arrow-forward:before, .ion-ios-arrow-left:before, .ion-ios-arrow-right:before, .ion-ios-arrow-thin-down:before, .ion-ios-arrow-thin-left:before, .ion-ios-arrow-thin-right:before, .ion-ios-arrow-thin-up:before, .icon-controls-up:before, .ion-ios-at:before, .ion-ios-at-outline:before, .ion-ios-barcode:before, .ion-ios-barcode-outline:before, .ion-ios-baseball:before, .ion-ios-baseball-outline:before, .ion-ios-basketball:before, .ion-ios-basketball-outline:before, .ion-ios-bell:before, .ion-ios-bell-outline:before, .ion-ios-body:before, .ion-ios-body-outline:before, .ion-ios-bolt:before, .ion-ios-bolt-outline:before, .icon-documents-book:before, .icoDocuments-book-outline:before, .icoDocuments-bookmarks:before, .icoDocuments-bookmarks-outline:before, .ion-ios-box:before, .ion-ios-box-outline:before, .ion-ios-briefcase:before, .ion-ios-briefcase-outline:before,.icon-add-widget:before , .ion-ios-browsers:before, .ion-ios-browsers-outline:before, .ion-ios-calculator:before, .ion-ios-calculator-outline:before, .ion-ios-calendar:before, .ion-ios-calendar-outline:before, .ion-ios-camera:before, .ion-ios-camera-outline:before, .ion-ios-cart:before, .ion-ios-cart-outline:before, .ion-ios-chatboxes:before, .ion-ios-chatboxes-outline:before, .ion-ios-chatbubble:before, .ion-ios-chatbubble-outline:before, .ion-ios-checkmark:before, .ion-ios-checkmark-empty:before, .ion-ios-checkmark-outline:before, .ion-ios-circle-filled:before, .ion-ios-circle-outline:before, .ion-ios-clock:before, .ion-ios-clock-outline:before, .ion-ios-close:before, .ion-ios-close-empty:before, .ion-ios-close-outline:before, .ion-ios-cloud:before, .ion-ios-cloud-download:before, .ion-ios-cloud-download-outline:before, .ion-ios-cloud-outline:before, .ion-ios-cloud-upload:before, .ion-ios-cloud-upload-outline:before, .ion-ios-cloudy:before, .ion-ios-cloudy-night:before, .ion-ios-cloudy-night-outline:before, .ion-ios-cloudy-outline:before, .ion-ios-cog:before, .ion-ios-cog-outline:before, .ion-ios-color-filter:before, .ion-ios-color-filter-outline:before, .ion-ios-color-wand:before, .ion-ios-color-wand-outline:before, .ion-ios-compose:before, .ion-ios-compose-outline:before, .ion-ios-contact:before, .ion-ios-contact-outline:before, .icon-documents-copy:before, .ion-ios-copy-outline:before, .ion-ios-crop:before, .ion-ios-crop-strong:before, .ion-ios-download:before, .ion-ios-download-outline:before, .ion-ios-drag:before, .ion-ios-email:before, .ion-ios-email-outline:before, .ion-ios-eye:before, .ion-ios-eye-outline:before, .ion-ios-fastforward:before, .ion-ios-fastforward-outline:before, .ion-ios-filing:before, .ion-ios-filing-outline:before, .ion-ios-film:before, .ion-ios-film-outline:before, .icon-content-flag:before, .ion-ios-flag-outline:before, .ion-ios-flame:before, .ion-ios-flame-outline:before, .ion-ios-flask:before, .ion-ios-flask-outline:before, .ion-ios-flower:before, .ion-ios-flower-outline:before, .ion-ios-folder:before, .ion-ios-folder-outline:before, .ion-ios-football:before, .ion-ios-football-outline:before, .ion-ios-game-controller-a:before, .ion-ios-game-controller-a-outline:before, .ion-ios-game-controller-b:before, .ion-ios-game-controller-b-outline:before, .ion-ios-gear:before, .ion-ios-gear-outline:before, .ion-ios-glasses:before, .ion-ios-glasses-outline:before, .ion-ios-grid-view:before, .ion-ios-grid-view-outline:before, .ion-ios-heart:before, .ion-ios-heart-outline:before, .ion-ios-help:before, .ion-ios-help-empty:before, .ion-ios-help-outline:before, .ion-ios-home:before, .ion-ios-home-outline:before, .ion-ios-infinite:before, .ion-ios-infinite-outline:before, .ion-ios-information:before, .ion-ios-information-empty:before, .ion-ios-information-outline:before, .ion-ios-ionic-outline:before, .ion-ios-keypad:before, .ion-ios-keypad-outline:before, .ion-ios-lightbulb:before, .ion-ios-lightbulb-outline:before, .ion-ios-list:before, .ion-ios-list-outline:before, .ion-ios-location:before, .ion-ios-location-outline:before, .ion-ios-locked:before, .ion-ios-locked-outline:before, .ion-ios-loop:before, .ion-ios-loop-strong:before, .ion-ios-medical:before, .ion-ios-medical-outline:before, .ion-ios-medkit:before, .ion-ios-medkit-outline:before, .ion-ios-mic:before, .ion-ios-mic-off:before, .ion-ios-mic-outline:before, .ion-ios-minus:before, .ion-ios-minus-empty:before, .icon-primary-accordion-minus:before, .ion-ios-monitor:before, .ion-ios-monitor-outline:before, .ion-ios-moon:before, .ion-ios-moon-outline:before, .ion-ios-more:before, .ion-ios-more-outline:before, .ion-ios-musical-note:before, .ion-ios-musical-notes:before, .ion-ios-navigate:before, .ion-ios-navigate-outline:before, .ion-ios-nutrition:before, .ion-ios-nutrition-outline:before, .ion-ios-paper:before, .ion-ios-paper-outline:before, .ion-ios-paperplane:before, .ion-ios-paperplane-outline:before, .ion-ios-partlysunny:before, .ion-ios-partlysunny-outline:before, .ion-ios-pause:before, .ion-ios-pause-outline:before, .ion-ios-paw:before, .ion-ios-paw-outline:before, .ion-ios-people:before, .ion-ios-people-outline:before, .ion-ios-person:before, .ion-ios-person-outline:before, .ion-ios-personadd:before, .ion-ios-personadd-outline:before, .ion-ios-photos:before, .ion-ios-photos-outline:before, .icon-misc-piechart:before, .icon-misc-piechart-outline:before, .ion-ios-pint:before, .ion-ios-pint-outline:before, .ion-ios-play:before, .ion-ios-play-outline:before, .ion-ios-plus:before, .ion-ios-plus-empty:before, .icon-primary-accordion-plus:before, .ion-ios-pricetag:before, .ion-ios-pricetag-outline:before, .ion-ios-pricetags:before, .ion-ios-pricetags-outline:before, .ion-ios-printer:before, .ion-ios-printer-outline:before, .ion-ios-pulse:before, .ion-ios-pulse-strong:before, .ion-ios-rainy:before, .ion-ios-rainy-outline:before, .ion-ios-recording:before, .ion-ios-recording-outline:before, .ion-ios-redo:before, .ion-ios-redo-outline:before, .ion-ios-refresh:before, .ion-ios-refresh-empty:before, .ion-ios-refresh-outline:before, .ion-ios-reload:before, .ion-ios-reverse-camera:before, .ion-ios-reverse-camera-outline:before, .ion-ios-rewind:before, .ion-ios-rewind-outline:before, .ion-ios-rose:before, .ion-ios-rose-outline:before, .ion-ios-search:before, .ion-ios-search-strong:before, .ion-ios-settings:before, .ion-ios-settings-strong:before, .ion-ios-shuffle:before, .ion-ios-shuffle-strong:before, .ion-ios-skipbackward:before, .ion-ios-skipbackward-outline:before, .ion-ios-skipforward:before, .ion-ios-skipforward-outline:before, .ion-ios-snowy:before, .ion-ios-speedometer:before, .ion-ios-speedometer-outline:before, .icon-star:before,.ion-ios-star:before, .ion-ios-star-half:before, .ion-ios-star-outline:before, .ion-ios-stopwatch:before, .ion-ios-stopwatch-outline:before, .ion-ios-sunny:before, .ion-ios-sunny-outline:before, .ion-ios-telephone:before, .ion-ios-telephone-outline:before, .ion-ios-tennisball:before, .ion-ios-tennisball-outline:before, .ion-ios-thunderstorm:before, .ion-ios-thunderstorm-outline:before, .ion-ios-time:before, .ion-ios-time-outline:before, .ion-ios-timer:before, .ion-ios-timer-outline:before, .ion-ios-toggle:before, .ion-ios-toggle-outline:before, .ion-ios-trash:before, .ion-ios-trash-outline:before, .ion-ios-undo:before, .ion-ios-undo-outline:before, .ion-ios-unlocked:before, .ion-ios-unlocked-outline:before, .ion-ios-upload:before, .ion-ios-upload-outline:before, .ion-ios-videocam:before, .ion-ios-videocam-outline:before, .ion-ios-volume-high:before, .ion-ios-volume-low:before, .ion-ios-wineglass:before, .ion-ios-wineglass-outline:before, .ion-ios-world:before, .ion-ios-world-outline:before, .ion-ipad:before, .ion-iphone:before, .ion-ipod:before, .ion-jet:before, .ion-key:before, .ion-knife:before, .ion-laptop:before, .ion-leaf:before, .ion-levels:before, .ion-lightbulb:before, .ion-link:before, .ion-load-a:before, .ion-load-b:before, .ion-load-c:before, .ion-load-d:before, .ion-location:before, .ion-lock-combination:before, .ion-locked:before, .ion-log-in:before, .icon-building-door:before, .ion-loop:before, .ion-magnet:before, .ion-male:before, .ion-man:before, .ion-map:before, .ion-medkit:before, .ion-merge:before, .ion-mic-a:before, .ion-mic-b:before, .ion-mic-c:before, .ion-minus:before, .ion-minus-circled:before, .ion-minus-round:before, .ion-model-s:before, .ion-monitor:before, .ion-more:before, .ion-mouse:before, .ion-music-note:before, .ion-navicon:before, .icon-content-gridguide:before, .ion-navigate:before, .ion-network:before, .ion-no-smoking:before, .ion-nuclear:before, .ion-outlet:before, .ion-paintbrush:before, .ion-paintbucket:before, .ion-paper-airplane:before, .ion-paperclip:before, .ion-pause:before, .icon-user:before, .icon-people-oneperson:before, .icon-people-oneperson-add:before, .icon-people-oneperson-stalker:before, .ion-pie-graph:before, .ion-pin:before, .ion-pinpoint:before, .ion-pizza:before, .ion-plane:before, .ion-planet:before, .icon-controls-pointer:before, .ion-playstation:before, .ion-plus:before, .ion-plus-circled:before, .ion-plus-round:before, .ion-podium:before, .ion-pound:before, .ion-power:before, .ion-pricetag:before, .ion-pricetags:before, .ion-printer:before, .ion-pull-request:before, .ion-qr-scanner:before, .ion-quote:before, .ion-radio-waves:before, .ion-record:before, .icon-arrows-replay-restart:before, .ion-reply:before, .ion-reply-all:before, .ion-ribbon-a:before, .ion-ribbon-b:before, .ion-sad:before, .ion-sad-outline:before, .ion-scissors:before, .ion-search:before, .ion-settings:before, .ion-share:before, .ion-shuffle:before, .ion-skip-backward:before, .ion-skip-forward:before, .ion-social-android:before, .ion-social-android-outline:before, .ion-social-angular:before, .ion-social-angular-outline:before, .ion-social-apple:before, .ion-social-apple-outline:before, .ion-social-bitcoin:before, .ion-social-bitcoin-outline:before, .ion-social-buffer:before, .ion-social-buffer-outline:before, .ion-social-chrome:before, .ion-social-chrome-outline:before, .ion-social-codepen:before, .ion-social-codepen-outline:before, .ion-social-css3:before, .ion-social-css3-outline:before, .ion-social-designernews:before, .ion-social-designernews-outline:before, .ion-social-dribbble:before, .ion-social-dribbble-outline:before, .ion-social-dropbox:before, .ion-social-dropbox-outline:before, .ion-social-euro:before, .ion-social-euro-outline:before, .ion-social-facebook:before, .ion-social-facebook-outline:before, .ion-social-foursquare:before, .ion-social-foursquare-outline:before, .ion-social-freebsd-devil:before, .ion-social-github:before, .ion-social-github-outline:before, .ion-social-google:before, .ion-social-google-outline:before, .ion-social-googleplus:before, .ion-social-googleplus-outline:before, .ion-social-hackernews:before, .ion-social-hackernews-outline:before, .ion-social-html5:before, .ion-social-html5-outline:before, .ion-social-instagram:before, .ion-social-instagram-outline:before, .ion-social-javascript:before, .ion-social-javascript-outline:before, .ion-social-linkedin:before, .ion-social-linkedin-outline:before, .ion-social-markdown:before, .ion-social-nodejs:before, .ion-social-octocat:before, .ion-social-pinterest:before, .ion-social-pinterest-outline:before, .ion-social-python:before, .ion-social-reddit:before, .ion-social-reddit-outline:before, .ion-social-rss:before, .ion-social-rss-outline:before, .ion-social-sass:before, .ion-social-skype:before, .ion-social-skype-outline:before, .ion-social-snapchat:before, .ion-social-snapchat-outline:before, .ion-social-tumblr:before, .ion-social-tumblr-outline:before, .ion-social-tux:before, .ion-social-twitch:before, .ion-social-twitch-outline:before, .ion-social-twitter:before, .ion-social-twitter-outline:before, .ion-social-usd:before, .ion-social-usd-outline:before, .ion-social-vimeo:before, .ion-social-vimeo-outline:before, .ion-social-whatsapp:before, .ion-social-whatsapp-outline:before, .ion-social-windows:before, .ion-social-windows-outline:before, .ion-social-wordpress:before, .ion-social-wordpress-outline:before, .ion-social-yahoo:before, .ion-social-yahoo-outline:before, .ion-social-yen:before, .ion-social-yen-outline:before, .ion-social-youtube:before, .ion-social-youtube-outline:before, .ion-soup-can:before, .ion-soup-can-outline:before, .ion-speakerphone:before, .ion-speedometer:before, .ion-spoon:before, .icon-content-star:before, .ion-stats-bars:before, .ion-steam:before, .ion-stop:before, .ion-thermometer:before, .ion-thumbsdown:before, .ion-thumbsup:before, .ion-toggle:before, .ion-toggle-filled:before, .ion-transgender:before, .icon-misc-trash:before, .ion-trash-b:before, .ion-trophy:before, .ion-tshirt:before, .ion-tshirt-outline:before, .ion-umbrella:before, .ion-university:before, .ion-unlocked:before, .icon-arrows-upload:before, .ion-usb:before, .ion-videocamera:before, .ion-volume-high:before, .ion-volume-low:before, .ion-volume-medium:before, .ion-volume-mute:before, .ion-wand:before, .ion-waterdrop:before, .ion-wifi:before, .ion-wineglass:before, .ion-woman:before, .ion-wrench:before, .ion-xbox:before { display: inline-block; font-family: "Ionicons"; speak: none; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; text-rendering: auto; line-height: 1; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
+.ion, .ionicons, .ion-alert:before, .ion-alert-circled:before, .ion-android-add:before, .ion-android-add-circle:before, .ion-android-alarm-clock:before, .ion-android-alert:before, .ion-android-apps:before, .ion-android-archive:before, .ion-android-arrow-back:before, .ion-android-arrow-down:before, .ion-android-arrow-dropdown:before, .ion-android-arrow-dropdown-circle:before, .ion-android-arrow-dropleft:before, .ion-android-arrow-dropleft-circle:before, .ion-android-arrow-dropright:before, .ion-android-arrow-dropright-circle:before, .ion-android-arrow-dropup:before, .ion-android-arrow-dropup-circle:before, .ion-android-arrow-forward:before, .ion-android-arrow-up:before, .ion-android-attach:before, .ion-android-bar:before, .ion-android-bicycle:before, .ion-android-boat:before, .ion-android-bookmark:before, .ion-android-bulb:before, .ion-android-bus:before, .ion-android-calendar:before, .ion-android-call:before, .ion-android-camera:before, .ion-android-cancel:before, .ion-android-car:before, .ion-android-cart:before, .ion-android-chat:before, .ion-android-checkbox:before, .ion-android-checkbox-blank:before, .ion-android-checkbox-outline:before, .ion-android-checkbox-outline-blank:before, .ion-android-checkmark-circle:before, .ion-android-clipboard:before, .ion-android-close:before, .ion-android-cloud:before, .ion-android-cloud-circle:before, .ion-android-cloud-done:before, .ion-android-cloud-outline:before, .ion-android-color-palette:before, .ion-android-compass:before, .ion-android-contact:before, .ion-android-contacts:before, .ion-android-contract:before, .ion-android-create:before, .ion-android-delete:before, .ion-android-desktop:before, .ion-android-document:before, .ion-android-done:before, .ion-android-done-all:before, .ion-android-download:before, .ion-android-drafts:before, .ion-android-exit:before, .ion-android-expand:before, .ion-android-favorite:before, .ion-android-favorite-outline:before, .ion-android-film:before, .ion-android-folder:before, .ion-android-folder-open:before, .ion-android-funnel:before, .ion-android-globe:before, .ion-android-hand:before, .ion-android-hangout:before, .ion-android-happy:before, .ion-android-home:before, .ion-android-image:before, .ion-android-laptop:before, .ion-android-list:before, .ion-android-locate:before, .ion-android-lock:before, .ion-android-mail:before, .ion-android-map:before, .ion-android-menu:before, .ion-android-microphone:before, .ion-android-microphone-off:before, .ion-android-more-horizontal:before, .ion-android-more-vertical:before, .ion-android-navigate:before, .ion-android-notifications:before, .ion-android-notifications-none:before, .ion-android-notifications-off:before, .ion-android-open:before, .ion-android-options:before, .ion-android-people:before, .ion-android-person:before, .ion-android-person-add:before, .ion-android-phone-landscape:before, .ion-android-phone-portrait:before, .ion-android-pin:before, .ion-android-plane:before, .ion-android-playstore:before, .ion-android-print:before, .ion-android-radio-button-off:before, .ion-android-radio-button-on:before, .ion-android-refresh:before, .ion-android-remove:before, .ion-android-remove-circle:before, .ion-android-restaurant:before, .ion-android-sad:before, .ion-android-search:before, .ion-android-send:before, .ion-android-settings:before, .ion-android-share:before, .ion-android-share-alt:before, .ion-android-star:before, .ion-android-star-half:before, .ion-android-star-outline:before, .ion-android-stopwatch:before, .ion-android-subway:before, .ion-android-sunny:before, .ion-android-sync:before, .ion-android-textsms:before, .ion-android-time:before, .ion-android-train:before, .ion-android-unlock:before, .ion-android-upload:before, .ion-android-volume-down:before, .ion-android-volume-mute:before, .ion-android-volume-off:before, .ion-android-volume-up:before, .ion-android-walk:before, .ion-android-warning:before, .ion-android-watch:before, .ion-android-wifi:before, .ion-aperture:before, .ion-archive:before, .ion-arrow-down-a:before, .ion-arrow-down-b:before, .ion-arrow-down-c:before, .ion-arrow-expand:before, .ion-arrow-graph-down-left:before, .ion-arrow-graph-down-right:before, .ion-arrow-graph-up-left:before, .ion-arrow-graph-up-right:before, .ion-arrow-left-a:before, .ion-arrow-left-b:before, .ion-arrow-left-c:before, .ion-arrow-move:before, .ion-arrow-resize:before, .ion-arrow-return-left:before, .ion-arrow-return-right:before, .ion-arrow-right-a:before, .ion-arrow-right-b:before, .ion-arrow-right-c:before, .ion-arrow-shrink:before, .ion-arrow-swap:before, .ion-arrow-up-a:before, .ion-arrow-up-b:before, .ion-arrow-up-c:before, .ion-asterisk:before, .ion-at:before, .ion-backspace:before, .ion-backspace-outline:before, .ion-bag:before, .ion-battery-charging:before, .ion-battery-empty:before, .ion-battery-full:before, .ion-battery-half:before, .ion-battery-low:before, .ion-beaker:before, .ion-beer:before, .ion-bluetooth:before, .ion-bonfire:before, .ion-bookmark:before, .ion-bowtie:before, .ion-briefcase:before, .ion-bug:before, .ion-calculator:before, .ion-calendar:before, .ion-camera:before, .ion-card:before, .ion-cash:before, .ion-chatbox:before, .ion-chatbox-working:before, .ion-chatboxes:before, .ion-chatbubble:before, .ion-chatbubble-working:before, .ion-chatbubbles:before, .ion-checkmark:before, .ion-checkmark-circled:before, .ion-checkmark-round:before, .ion-chevron-down:before, .ion-chevron-left:before, .ion-chevron-right:before, .ion-chevron-up:before, .ion-clipboard:before, .ion-clock:before, .ion-close:before, .ion-close-circled:before, .ion-close-round:before, .ion-closed-captioning:before, .ion-cloud:before, .ion-code:before, .ion-code-download:before, .ion-code-working:before, .ion-coffee:before, .ion-compass:before, .ion-compose:before, .ion-connection-bars:before, .ion-contrast:before, .ion-crop:before, .ion-cube:before, .ion-disc:before, .ion-document:before, .ion-document-text:before, .ion-drag:before, .ion-earth:before, .ion-easel:before, .ion-edit:before, .ion-egg:before, .ion-eject:before, .ion-email:before, .ion-email-unread:before, .ion-erlenmeyer-flask:before, .ion-erlenmeyer-flask-bubbles:before, .ion-eye:before, .ion-eye-disabled:before, .ion-female:before, .ion-filing:before, .ion-film-marker:before, .ion-fireball:before, .ion-flag:before, .ion-flame:before, .ion-flash:before, .ion-flash-off:before, .ion-folder:before, .ion-fork:before, .ion-fork-repo:before, .ion-forward:before, .ion-funnel:before, .ion-gear-a:before, .ion-gear-b:before, .ion-grid:before, .ion-hammer:before, .ion-happy:before, .ion-happy-outline:before, .ion-headphone:before, .ion-heart:before, .ion-heart-broken:before, .ion-help:before, .ion-help-buoy:before, .ion-help-circled:before, .ion-home:before, .ion-icecream:before, .ion-image:before, .ion-images:before, .ion-information:before, .ion-information-circled:before, .ion-ionic:before, .ion-ios-alarm:before, .ion-ios-alarm-outline:before, .ion-ios-albums:before, .ion-ios-albums-outline:before, .ion-ios-americanfootball:before, .ion-ios-americanfootball-outline:before, .ion-ios-analytics:before, .ion-ios-analytics-outline:before, .ion-ios-arrow-back:before, .ion-ios-arrow-down:before, .ion-ios-arrow-forward:before, .ion-ios-arrow-left:before, .ion-ios-arrow-right:before, .ion-ios-arrow-thin-down:before, .ion-ios-arrow-thin-left:before, .ion-ios-arrow-thin-right:before, .ion-ios-arrow-thin-up:before, .ion-ios-arrow-up:before, .ion-ios-at:before, .ion-ios-at-outline:before, .ion-ios-barcode:before, .ion-ios-barcode-outline:before, .ion-ios-baseball:before, .ion-ios-baseball-outline:before, .ion-ios-basketball:before, .ion-ios-basketball-outline:before, .ion-ios-bell:before, .ion-ios-bell-outline:before, .ion-ios-body:before, .ion-ios-body-outline:before, .ion-ios-bolt:before, .ion-ios-bolt-outline:before, .ion-ios-book:before, .ion-ios-book-outline:before, .ion-ios-bookmarks:before, .ion-ios-bookmarks-outline:before, .ion-ios-box:before, .ion-ios-box-outline:before, .ion-ios-briefcase:before, .ion-ios-briefcase-outline:before, .ion-ios-browsers:before, .ion-ios-browsers-outline:before, .ion-ios-calculator:before, .ion-ios-calculator-outline:before, .ion-ios-calendar:before, .ion-ios-calendar-outline:before, .ion-ios-camera:before, .ion-ios-camera-outline:before, .ion-ios-cart:before, .ion-ios-cart-outline:before, .ion-ios-chatboxes:before, .ion-ios-chatboxes-outline:before, .ion-ios-chatbubble:before, .ion-ios-chatbubble-outline:before, .ion-ios-checkmark:before, .ion-ios-checkmark-empty:before, .ion-ios-checkmark-outline:before, .ion-ios-circle-filled:before, .ion-ios-circle-outline:before, .ion-ios-clock:before, .ion-ios-clock-outline:before, .ion-ios-close:before, .ion-ios-close-empty:before, .ion-ios-close-outline:before, .ion-ios-cloud:before, .ion-ios-cloud-download:before, .ion-ios-cloud-download-outline:before, .ion-ios-cloud-outline:before, .ion-ios-cloud-upload:before, .ion-ios-cloud-upload-outline:before, .ion-ios-cloudy:before, .ion-ios-cloudy-night:before, .ion-ios-cloudy-night-outline:before, .ion-ios-cloudy-outline:before, .ion-ios-cog:before, .ion-ios-cog-outline:before, .ion-ios-color-filter:before, .ion-ios-color-filter-outline:before, .ion-ios-color-wand:before, .ion-ios-color-wand-outline:before, .ion-ios-compose:before, .ion-ios-compose-outline:before, .ion-ios-contact:before, .ion-ios-contact-outline:before, .ion-ios-copy:before, .ion-ios-copy-outline:before, .ion-ios-crop:before, .ion-ios-crop-strong:before, .ion-ios-download:before, .ion-ios-download-outline:before, .ion-ios-drag:before, .ion-ios-email:before, .ion-ios-email-outline:before, .ion-ios-eye:before, .ion-ios-eye-outline:before, .ion-ios-fastforward:before, .ion-ios-fastforward-outline:before, .ion-ios-filing:before, .ion-ios-filing-outline:before, .ion-ios-film:before, .ion-ios-film-outline:before, .ion-ios-flag:before, .ion-ios-flag-outline:before, .ion-ios-flame:before, .ion-ios-flame-outline:before, .ion-ios-flask:before, .ion-ios-flask-outline:before, .ion-ios-flower:before, .ion-ios-flower-outline:before, .ion-ios-folder:before, .ion-ios-folder-outline:before, .ion-ios-football:before, .ion-ios-football-outline:before, .ion-ios-game-controller-a:before, .ion-ios-game-controller-a-outline:before, .ion-ios-game-controller-b:before, .ion-ios-game-controller-b-outline:before, .ion-ios-gear:before, .ion-ios-gear-outline:before, .ion-ios-glasses:before, .ion-ios-glasses-outline:before, .ion-ios-grid-view:before, .ion-ios-grid-view-outline:before, .ion-ios-heart:before, .ion-ios-heart-outline:before, .ion-ios-help:before, .ion-ios-help-empty:before, .ion-ios-help-outline:before, .ion-ios-home:before, .ion-ios-home-outline:before, .ion-ios-infinite:before, .ion-ios-infinite-outline:before, .ion-ios-information:before, .ion-ios-information-empty:before, .ion-ios-information-outline:before, .ion-ios-ionic-outline:before, .ion-ios-keypad:before, .ion-ios-keypad-outline:before, .ion-ios-lightbulb:before, .ion-ios-lightbulb-outline:before, .ion-ios-list:before, .ion-ios-list-outline:before, .ion-ios-location:before, .ion-ios-location-outline:before, .ion-ios-locked:before, .ion-ios-locked-outline:before, .ion-ios-loop:before, .ion-ios-loop-strong:before, .ion-ios-medical:before, .ion-ios-medical-outline:before, .ion-ios-medkit:before, .ion-ios-medkit-outline:before, .ion-ios-mic:before, .ion-ios-mic-off:before, .ion-ios-mic-outline:before, .ion-ios-minus:before, .ion-ios-minus-empty:before, .ion-ios-minus-outline:before, .ion-ios-monitor:before, .ion-ios-monitor-outline:before, .ion-ios-moon:before, .ion-ios-moon-outline:before, .ion-ios-more:before, .ion-ios-more-outline:before, .ion-ios-musical-note:before, .ion-ios-musical-notes:before, .ion-ios-navigate:before, .ion-ios-navigate-outline:before, .ion-ios-nutrition:before, .ion-ios-nutrition-outline:before, .ion-ios-paper:before, .ion-ios-paper-outline:before, .ion-ios-paperplane:before, .ion-ios-paperplane-outline:before, .ion-ios-partlysunny:before, .ion-ios-partlysunny-outline:before, .ion-ios-pause:before, .ion-ios-pause-outline:before, .ion-ios-paw:before, .ion-ios-paw-outline:before, .ion-ios-people:before, .ion-ios-people-outline:before, .ion-ios-person:before, .ion-ios-person-outline:before, .ion-ios-personadd:before, .ion-ios-personadd-outline:before, .ion-ios-photos:before, .ion-ios-photos-outline:before, .ion-ios-pie:before, .ion-ios-pie-outline:before, .ion-ios-pint:before, .ion-ios-pint-outline:before, .ion-ios-play:before, .ion-ios-play-outline:before, .ion-ios-plus:before, .ion-ios-plus-empty:before, .ion-ios-plus-outline:before, .ion-ios-pricetag:before, .ion-ios-pricetag-outline:before, .ion-ios-pricetags:before, .ion-ios-pricetags-outline:before, .ion-ios-printer:before, .ion-ios-printer-outline:before, .ion-ios-pulse:before, .ion-ios-pulse-strong:before, .ion-ios-rainy:before, .ion-ios-rainy-outline:before, .ion-ios-recording:before, .ion-ios-recording-outline:before, .ion-ios-redo:before, .ion-ios-redo-outline:before, .ion-ios-refresh:before, .ion-ios-refresh-empty:before, .ion-ios-refresh-outline:before, .ion-ios-reload:before, .ion-ios-reverse-camera:before, .ion-ios-reverse-camera-outline:before, .ion-ios-rewind:before, .ion-ios-rewind-outline:before, .ion-ios-rose:before, .ion-ios-rose-outline:before, .ion-ios-search:before, .ion-ios-search-strong:before, .ion-ios-settings:before, .ion-ios-settings-strong:before, .ion-ios-shuffle:before, .ion-ios-shuffle-strong:before, .ion-ios-skipbackward:before, .ion-ios-skipbackward-outline:before, .ion-ios-skipforward:before, .ion-ios-skipforward-outline:before, .ion-ios-snowy:before, .ion-ios-speedometer:before, .ion-ios-speedometer-outline:before, .ion-ios-star:before, .ion-ios-star-half:before, .ion-ios-star-outline:before, .ion-ios-stopwatch:before, .ion-ios-stopwatch-outline:before, .ion-ios-sunny:before, .ion-ios-sunny-outline:before, .ion-ios-telephone:before, .ion-ios-telephone-outline:before, .ion-ios-tennisball:before, .ion-ios-tennisball-outline:before, .ion-ios-thunderstorm:before, .ion-ios-thunderstorm-outline:before, .ion-ios-time:before, .ion-ios-time-outline:before, .ion-ios-timer:before, .ion-ios-timer-outline:before, .ion-ios-toggle:before, .ion-ios-toggle-outline:before, .ion-ios-trash:before, .ion-ios-trash-outline:before, .ion-ios-undo:before, .ion-ios-undo-outline:before, .ion-ios-unlocked:before, .ion-ios-unlocked-outline:before, .ion-ios-upload:before, .ion-ios-upload-outline:before, .ion-ios-videocam:before, .ion-ios-videocam-outline:before, .ion-ios-volume-high:before, .ion-ios-volume-low:before, .ion-ios-wineglass:before, .ion-ios-wineglass-outline:before, .ion-ios-world:before, .ion-ios-world-outline:before, .ion-ipad:before, .ion-iphone:before, .ion-ipod:before, .ion-jet:before, .ion-key:before, .ion-knife:before, .ion-laptop:before, .ion-leaf:before, .ion-levels:before, .ion-lightbulb:before, .ion-link:before, .ion-load-a:before, .ion-load-b:before, .ion-load-c:before, .ion-load-d:before, .ion-location:before, .ion-lock-combination:before, .ion-locked:before, .ion-log-in:before, .ion-log-out:before, .ion-loop:before, .ion-magnet:before, .ion-male:before, .ion-man:before, .ion-map:before, .ion-medkit:before, .ion-merge:before, .ion-mic-a:before, .ion-mic-b:before, .ion-mic-c:before, .ion-minus:before, .ion-minus-circled:before, .ion-minus-round:before, .ion-model-s:before, .ion-monitor:before, .ion-more:before, .ion-mouse:before, .ion-music-note:before, .ion-navicon:before, .ion-navicon-round:before, .ion-navigate:before, .ion-network:before, .ion-no-smoking:before, .ion-nuclear:before, .ion-outlet:before, .ion-paintbrush:before, .ion-paintbucket:before, .ion-paper-airplane:before, .ion-paperclip:before, .ion-pause:before, .ion-person:before, .ion-person-add:before, .ion-person-stalker:before, .ion-pie-graph:before, .ion-pin:before, .ion-pinpoint:before, .ion-pizza:before, .ion-plane:before, .ion-planet:before, .ion-play:before, .ion-playstation:before, .ion-plus:before, .ion-plus-circled:before, .ion-plus-round:before, .ion-podium:before, .ion-pound:before, .ion-power:before, .ion-pricetag:before, .ion-pricetags:before, .ion-printer:before, .ion-pull-request:before, .ion-qr-scanner:before, .ion-quote:before, .ion-radio-waves:before, .ion-record:before, .ion-refresh:before, .ion-reply:before, .ion-reply-all:before, .ion-ribbon-a:before, .ion-ribbon-b:before, .ion-sad:before, .ion-sad-outline:before, .ion-scissors:before, .ion-search:before, .ion-settings:before, .ion-share:before, .ion-shuffle:before, .ion-skip-backward:before, .ion-skip-forward:before, .ion-social-android:before, .ion-social-android-outline:before, .ion-social-angular:before, .ion-social-angular-outline:before, .ion-social-apple:before, .ion-social-apple-outline:before, .ion-social-bitcoin:before, .ion-social-bitcoin-outline:before, .ion-social-buffer:before, .ion-social-buffer-outline:before, .ion-social-chrome:before, .ion-social-chrome-outline:before, .ion-social-codepen:before, .ion-social-codepen-outline:before, .ion-social-css3:before, .ion-social-css3-outline:before, .ion-social-designernews:before, .ion-social-designernews-outline:before, .ion-social-dribbble:before, .ion-social-dribbble-outline:before, .ion-social-dropbox:before, .ion-social-dropbox-outline:before, .ion-social-euro:before, .ion-social-euro-outline:before, .ion-social-facebook:before, .ion-social-facebook-outline:before, .ion-social-foursquare:before, .ion-social-foursquare-outline:before, .ion-social-freebsd-devil:before, .ion-social-github:before, .ion-social-github-outline:before, .ion-social-google:before, .ion-social-google-outline:before, .ion-social-googleplus:before, .ion-social-googleplus-outline:before, .ion-social-hackernews:before, .ion-social-hackernews-outline:before, .ion-social-html5:before, .ion-social-html5-outline:before, .ion-social-instagram:before, .ion-social-instagram-outline:before, .ion-social-javascript:before, .ion-social-javascript-outline:before, .ion-social-linkedin:before, .ion-social-linkedin-outline:before, .ion-social-markdown:before, .ion-social-nodejs:before, .ion-social-octocat:before, .ion-social-pinterest:before, .ion-social-pinterest-outline:before, .ion-social-python:before, .ion-social-reddit:before, .ion-social-reddit-outline:before, .ion-social-rss:before, .ion-social-rss-outline:before, .ion-social-sass:before, .ion-social-skype:before, .ion-social-skype-outline:before, .ion-social-snapchat:before, .ion-social-snapchat-outline:before, .ion-social-tumblr:before, .ion-social-tumblr-outline:before, .ion-social-tux:before, .ion-social-twitch:before, .ion-social-twitch-outline:before, .ion-social-twitter:before, .ion-social-twitter-outline:before, .ion-social-usd:before, .ion-social-usd-outline:before, .ion-social-vimeo:before, .ion-social-vimeo-outline:before, .ion-social-whatsapp:before, .ion-social-whatsapp-outline:before, .ion-social-windows:before, .ion-social-windows-outline:before, .ion-social-wordpress:before, .ion-social-wordpress-outline:before, .ion-social-yahoo:before, .ion-social-yahoo-outline:before, .ion-social-yen:before, .ion-social-yen-outline:before, .ion-social-youtube:before, .ion-social-youtube-outline:before, .ion-soup-can:before, .ion-soup-can-outline:before, .ion-speakerphone:before, .ion-speedometer:before, .ion-spoon:before, .ion-star:before, .ion-stats-bars:before, .ion-steam:before, .ion-stop:before, .ion-thermometer:before, .ion-thumbsdown:before, .ion-thumbsup:before, .ion-toggle:before, .ion-toggle-filled:before, .ion-transgender:before, .ion-trash-a:before, .ion-trash-b:before, .ion-trophy:before, .ion-tshirt:before, .ion-tshirt-outline:before, .ion-umbrella:before, .ion-university:before, .ion-unlocked:before, .ion-upload:before, .ion-usb:before, .ion-videocamera:before, .ion-volume-high:before, .ion-volume-low:before, .ion-volume-medium:before, .ion-volume-mute:before, .ion-wand:before, .ion-waterdrop:before, .ion-wifi:before, .ion-wineglass:before, .ion-woman:before, .ion-wrench:before, .ion-xbox:before { display: inline-block; font-family: "Ionicons"; speak: none; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; text-rendering: auto; line-height: 1; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
.ion-alert:before { content: "\f101"; }
-.icoSecurityalerts-alert:before { content: "\f100"; }
+.ion-alert-circled:before { content: "\f100"; }
-.icon-controls-add-maximize:before { content: "\f2c7"; }
+.ion-android-add:before { content: "\f2c7"; }
-.icon-controls-add-maximize-circle:before { content: "\f359"; }
+.ion-android-add-circle:before { content: "\f359"; }
-.icon-misc-time:before { content: "\f35a"; }
+.ion-android-alarm-clock:before { content: "\f35a"; }
-.icoSecurityalerts:before { content: "\f35b"; }
+.ion-android-alert:before { content: "\f35b"; }
-.icon-content-grid:before { content: "\f35c"; }
+.ion-android-apps:before { content: "\f35c"; }
-.icon-documents-archive:before { content: "\f2c9"; }
+.ion-android-archive:before { content: "\f2c9"; }
.ion-android-arrow-back:before { content: "\f2ca"; }
-.icon-arrows-vertical-arrow-down:before { content: "\f35d"; }
+.ion-android-arrow-down:before { content: "\f35d"; }
.ion-android-arrow-dropdown:before { content: "\f35f"; }
-.icon-arrows-download:before { content: "\f35e"; }
+.ion-android-arrow-dropdown-circle:before { content: "\f35e"; }
.ion-android-arrow-dropleft:before { content: "\f361"; }
-.icon-arrows-incoming-call:before { content: "\f360"; }
+.ion-android-arrow-dropleft-circle:before { content: "\f360"; }
.ion-android-arrow-dropright:before { content: "\f363"; }
-.icoArrows-outgoing-call:before { content: "\f362"; }
+.ion-android-arrow-dropright-circle:before { content: "\f362"; }
.ion-android-arrow-dropup:before { content: "\f365"; }
-.icoArrows-upload:before { content: "\f364"; }
+.ion-android-arrow-dropup-circle:before { content: "\f364"; }
-.icoArrows-straight-arrow:before { content: "\f30f"; }
+.ion-android-arrow-forward:before { content: "\f30f"; }
-.icon-arrows-vertical-arrow:before { content: "\f366"; }
+.ion-android-arrow-up:before { content: "\f366"; }
.ion-android-attach:before { content: "\f367"; }
@@ -195,7 +195,7 @@
.ion-android-person:before { content: "\f3a0"; }
-.icon-people-userbookmark:before { content: "\f39f"; }
+.ion-android-person-add:before { content: "\f39f"; }
.ion-android-phone-landscape:before { content: "\f3a1"; }
@@ -387,14 +387,13 @@
.ion-checkmark-round:before { content: "\f121"; }
-.icon-chevron-down:before { content: "\f123"; }
+.ion-chevron-down:before { content: "\f123"; }
+.ion-chevron-left:before { content: "\f124"; }
-.icon-controls-left:before { content: "\f124"; }
+.ion-chevron-right:before { content: "\f125"; }
-.icon-controls-right:before { content: "\f125"; }
-
-.icon-chevron-up:before { content: "\f126"; }
+.ion-chevron-up:before { content: "\f126"; }
.ion-clipboard:before { content: "\f127"; }
@@ -422,7 +421,7 @@
.ion-compose:before { content: "\f12c"; }
-.icoDocuments-report:before { content: "\f274"; }
+.ion-connection-bars:before { content: "\f274"; }
.ion-contrast:before { content: "\f275"; }
@@ -442,7 +441,7 @@
.ion-easel:before { content: "\f3c2"; }
-.icon-misc-pen:before { content: "\f2bf"; }
+.ion-edit:before { content: "\f2bf"; }
.ion-egg:before { content: "\f277"; }
@@ -456,7 +455,7 @@
.ion-erlenmeyer-flask-bubbles:before { content: "\f3c4"; }
-.icon-overview:before { content: "\f133"; }
+.ion-eye:before { content: "\f133"; }
.ion-eye-disabled:before { content: "\f306"; }
@@ -510,7 +509,7 @@
.ion-help-circled:before { content: "\f142"; }
-.icon-building-home:before { content: "\f144"; }
+.ion-home:before { content: "\f144"; }
.ion-icecream:before { content: "\f27d"; }
@@ -542,7 +541,7 @@
.ion-ios-arrow-back:before { content: "\f3cf"; }
-.icon-controls-down:before { content: "\f3d0"; }
+.ion-ios-arrow-down:before { content: "\f3d0"; }
.ion-ios-arrow-forward:before { content: "\f3d1"; }
@@ -558,7 +557,7 @@
.ion-ios-arrow-thin-up:before { content: "\f3d7"; }
-.icon-controls-up:before { content: "\f3d8"; }
+.ion-ios-arrow-up:before { content: "\f3d8"; }
.ion-ios-at:before { content: "\f3da"; }
@@ -588,13 +587,13 @@
.ion-ios-bolt-outline:before { content: "\f3e5"; }
-.icon-documents-book:before { content: "\f3e8"; }
+.ion-ios-book:before { content: "\f3e8"; }
-.icoDocuments-book-outline:before { content: "\f3e7"; }
+.ion-ios-book-outline:before { content: "\f3e7"; }
-.icoDocuments-bookmarks:before { content: "\f3ea"; }
+.ion-ios-bookmarks:before { content: "\f3ea"; }
-.icoDocuments-bookmarks-outline:before { content: "\f3e9"; }
+.ion-ios-bookmarks-outline:before { content: "\f3e9"; }
.ion-ios-box:before { content: "\f3ec"; }
@@ -692,7 +691,7 @@
.ion-ios-contact-outline:before { content: "\f419"; }
-.icon-documents-copy:before { content: "\f41c"; }
+.ion-ios-copy:before { content: "\f41c"; }
.ion-ios-copy-outline:before { content: "\f41b"; }
@@ -726,7 +725,7 @@
.ion-ios-film-outline:before { content: "\f42a"; }
-.icon-content-flag:before { content: "\f42d"; }
+.ion-ios-flag:before { content: "\f42d"; }
.ion-ios-flag-outline:before { content: "\f42c"; }
@@ -838,7 +837,7 @@
.ion-ios-minus-empty:before { content: "\f462"; }
-.icon-primary-accordion-minus:before { content: "\f463"; }
+.ion-ios-minus-outline:before { content: "\f463"; }
.ion-ios-monitor:before { content: "\f466"; }
@@ -900,9 +899,9 @@
.ion-ios-photos-outline:before { content: "\f481"; }
-.icon-misc-piechart:before { content: "\f484"; }
+.ion-ios-pie:before { content: "\f484"; }
-.icon-misc-piechart-outline:before { content: "\f483"; }
+.ion-ios-pie-outline:before { content: "\f483"; }
.ion-ios-pint:before { content: "\f486"; }
@@ -916,7 +915,7 @@
.ion-ios-plus-empty:before { content: "\f489"; }
-.icon-primary-accordion-plus:before { content: "\f48a"; }
+.ion-ios-plus-outline:before { content: "\f48a"; }
.ion-ios-pricetag:before { content: "\f48d"; }
@@ -1100,7 +1099,7 @@
.ion-log-in:before { content: "\f29e"; }
-.icon-building-door:before { content: "\f29f"; }
+.ion-log-out:before { content: "\f29f"; }
.ion-loop:before { content: "\f201"; }
@@ -1140,7 +1139,7 @@
.ion-navicon:before { content: "\f20e"; }
-.icon-content-gridguide:before { content: "\f20d"; }
+.ion-navicon-round:before { content: "\f20d"; }
.ion-navigate:before { content: "\f2a3"; }
@@ -1162,11 +1161,11 @@
.ion-pause:before { content: "\f210"; }
-.icon-people-oneperson:before { content: "\f213"; }
+.ion-person:before { content: "\f213"; }
-.icon-people-oneperson-add:before { content: "\f211"; }
+.ion-person-add:before { content: "\f211"; }
-.icon-people-oneperson-stalker:before { content: "\f212"; }
+.ion-person-stalker:before { content: "\f212"; }
.ion-pie-graph:before { content: "\f2a5"; }
@@ -1180,7 +1179,7 @@
.ion-planet:before { content: "\f343"; }
-.icon-controls-pointer:before { content: "\f215"; }
+.ion-play:before { content: "\f215"; }
.ion-playstation:before { content: "\f30a"; }
@@ -1212,7 +1211,7 @@
.ion-record:before { content: "\f21b"; }
-.icon-arrows-replay-restart:before { content: "\f21c"; }
+.ion-refresh:before { content: "\f21c"; }
.ion-reply:before { content: "\f21e"; }
@@ -1416,7 +1415,7 @@
.ion-spoon:before { content: "\f2b4"; }
-.icon-content-star:before { content: "\f24e"; }
+.ion-star:before { content: "\f24e"; }
.ion-stats-bars:before { content: "\f2b5"; }
@@ -1436,7 +1435,7 @@
.ion-transgender:before { content: "\f4f5"; }
-.icon-misc-trash:before { content: "\f252"; }
+.ion-trash-a:before { content: "\f252"; }
.ion-trash-b:before { content: "\f253"; }
@@ -1452,7 +1451,7 @@
.ion-unlocked:before { content: "\f254"; }
-.icon-arrows-upload:before { content: "\f255"; }
+.ion-upload:before { content: "\f255"; }
.ion-usb:before { content: "\f2b8"; }
@@ -1479,15 +1478,3 @@
.ion-wrench:before { content: "\f2ba"; }
.ion-xbox:before { content: "\f30c"; }
-
-.icon-user:before { content: "\f213"; }
-
-.icon-star:before { content: "\f4b3"; }
-
-.icon-edit:before { content: "\f2bf"; }
-
-.icon-settings:before { content: "\f13d"; }
-
-.icon-apps-marketplace:before { content: "\f35c"; }
-
-.icon-add-widget:before { content: "\f3f0"; } \ No newline at end of file
diff --git a/ONAP-SDK-APP/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-profile/profile_searchDS2.html b/ONAP-SDK-APP/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-profile/profile_searchDS2.html
index 36b8c2a42..25c081a9c 100644
--- a/ONAP-SDK-APP/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-profile/profile_searchDS2.html
+++ b/ONAP-SDK-APP/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-profile/profile_searchDS2.html
@@ -17,7 +17,7 @@
<th>User ID</th>
<th>Manager User ID</th>
<th>Edit</th>
- <th>Active?</th>
+ <th ng-show="(isAppCentralized=='false')">Active?</th>
</tr>
</thead>
<tbody type="body" ng-repeat="rowData in tableData">
@@ -31,11 +31,12 @@
<!-- Include an edit image with respective redirection -->
<td><a href="#/profile/{{rowData.id}}" class="icon-misc-pen"
style="color: #888; font-size: 20px;"></a></td>
- <td>
+ <td ng-show="(isAppCentralized=='false')">
<div class="form-row">
<label class="btn-switch-label" tabindex="0" role="option">
- <input type="checkbox" b2b-switches ng-model="rowData.active"
- ng-disabled="allDisabled" aria-disabled="{{allDisabled}}">
+ <input type="checkbox" b2b-switches
+ ng-model="rowData.active" ng-click="toggleProfileActive(rowData)"
+ ng-disabled="allDisabled" aria-disabled="{{allDisabled}}" />
<div class="sr-text hidden-spoken" ng-if="!allDisabled">Double
tap to turn</div>
</label>
diff --git a/ONAP-SDK-APP/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-profile/self_profile.html b/ONAP-SDK-APP/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-profile/self_profile.html
index 3b5ef525a..ca317616f 100644
--- a/ONAP-SDK-APP/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-profile/self_profile.html
+++ b/ONAP-SDK-APP/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-profile/self_profile.html
@@ -4,14 +4,15 @@
<div ng-show="showLoader" class="span loader-container">
<i class="icon-primary-spinner" role="img" aria-label="Please wait while we load your content"></i>
</div>
- <div ng-hide="showLoader" >
- <h3 class="heading-small">Please edit the profile details below:</h3>
+ <div ng-hide="showLoader" >
+ <h3 class="heading-small" ng-show="isAppCentralized=='true'" style="color:red;">Please use Portal for access management</h3>
+ <h3 class="heading-small" ng-show="isAppCentralized=='false'">Please edit the profile details below:</h3>
<div class="row-nowrap">
<div class="span12">
<div class="form-row">
<label for="textinputID-2a">*First Name</label>
<div class="field-group">
- <input id="textinputID-2a" b2b-reset="" class="span12" type="text" data-ng-model="profile.lastName">
+ <input id="textinputID-2a" b2b-reset="" class="span12" type="text" data-ng-model="profile.firstName" ng-disabled="(isAppCentralized == 'true')">
</div>
</div>
</div>
@@ -19,7 +20,7 @@
<div class="form-row">
<label for="textinputID-3a">*Last Name</label>
<div class="field-group">
- <input id="textinputID-3a" b2b-reset="" class="span12" type="text" data-ng-model="profile.firstName">
+ <input id="textinputID-3a" b2b-reset="" class="span12" type="text" data-ng-model="profile.lastName" ng-disabled="(isAppCentralized == 'true')">
</div>
</div>
</div>
@@ -62,7 +63,7 @@
<div class="form-row">
<label for="textinputID-3a">*Phone</label>
<div class="field-group">
- <input id="textinputID-3a" b2b-reset="" class="span12" type="text" data-ng-model="profile.phone">
+ <input id="textinputID-3a" b2b-reset="" class="span12" type="text" data-ng-model="profile.phone" ng-disabled="(isAppCentralized == 'true')">
</div>
</div>
</div>
@@ -70,7 +71,7 @@
<div class="form-row">
<label for="textinputID-3a">Fax</label>
<div class="field-group">
- <input id="textinputID-3a" b2b-reset="" class="span12" type="text" data-ng-model="profile.fax">
+ <input id="textinputID-3a" b2b-reset="" class="span12" type="text" data-ng-model="profile.fax" ng-disabled="(isAppCentralized == 'true')">
</div>
</div>
</div>
@@ -81,7 +82,7 @@
<div class="form-row">
<label for="textinputID-2a">Cellular</label>
<div class="field-group">
- <input id="textinputID-2a" b2b-reset="" class="span12" type="text" data-ng-model="profile.cellular">
+ <input id="textinputID-2a" b2b-reset="" class="span12" type="text" data-ng-model="profile.cellular" ng-disabled="(isAppCentralized == 'true')">
</div>
</div>
</div>
@@ -89,7 +90,7 @@
<div class="form-row">
<label for="textinputID-3a">*Email</label>
<div class="field-group">
- <input id="textinputID-3a" b2b-reset="" class="span12" type="text" data-ng-model="profile.email">
+ <input id="textinputID-3a" b2b-reset="" class="span12" type="text" data-ng-model="profile.email" ng-disabled="(isAppCentralized == 'true')">
</div>
</div>
</div>
@@ -97,7 +98,7 @@
<div class="form-row">
<label for="textinputID-3a">Address 1</label>
<div class="field-group">
- <input id="textinputID-3a" b2b-reset="" class="span12" type="text" data-ng-model="profile.address1">
+ <input id="textinputID-3a" b2b-reset="" class="span12" type="text" data-ng-model="profile.address1" ng-disabled="(isAppCentralized == 'true')">
</div>
</div>
</div>
@@ -105,7 +106,7 @@
<div class="form-row">
<label for="textinputID-3a">Address 2</label>
<div class="field-group">
- <input id="textinputID-3a" b2b-reset="" class="span12" type="text" data-ng-model="profile.address2">
+ <input id="textinputID-3a" b2b-reset="" class="span12" type="text" data-ng-model="profile.address2" ng-disabled="(isAppCentralized == 'true')">
</div>
</div>
</div>
@@ -116,14 +117,14 @@
<div class="form-row">
<label for="textinputID-2a">City</label>
<div class="field-group">
- <input id="textinputID-2a" b2b-reset="" class="span12" type="text" data-ng-model="profile.city">
+ <input id="textinputID-2a" b2b-reset="" class="span12" type="text" data-ng-model="profile.city" ng-disabled="(isAppCentralized == 'true')">
</div>
</div>
</div>
<div class="span12">
<div class="form-row">
<label for="textinputID-3a">State</label>
- <select name="dropdown1" b2b-dropdown ng-model="stateList.selected.value">
+ <select name="dropdown1" b2b-dropdown ng-model="stateList.selected.value" ng-disabled="(isAppCentralized == 'true')">
<option b2b-dropdown-list option-repeat="d in stateList.options" value="{{d.value}}" init-value="{{stateList.selected.title}}">{{d.title}}</option>
</select>
</div>
@@ -132,14 +133,14 @@
<div class="form-row">
<label for="textinputID-3a">Zip Code</label>
<div class="field-group">
- <input id="textinputID-3a" b2b-reset="" class="span12" type="text" data-ng-model="profile.zipCode">
+ <input id="textinputID-3a" b2b-reset="" class="span12" type="text" data-ng-model="profile.zipCode" ng-disabled="(isAppCentralized == 'true')">
</div>
</div>
</div>
<div class="span12">
<div class="form-row">
<label for="textinputID-3a">Country</label>
- <select name="dropdown1" b2b-dropdown ng-model="selectedCountry.value">
+ <select name="dropdown1" b2b-dropdown ng-model="selectedCountry.value" ng-disabled="(isAppCentralized == 'true')">
<option b2b-dropdown-list option-repeat="d in countries" value="{{d.value}}" init-value="{{selectedCountry.title}}">{{d.title}}</option>
</select>
</div>
@@ -148,17 +149,17 @@
<div class="span3">
<div class="form-row">
<label for="textinputID-3a">Time Zone</label>
- <select name="dropdown1" b2b-dropdown ng-model="selectedTimeZone.value">
+ <select name="dropdown1" b2b-dropdown ng-model="selectedTimeZone.value" ng-disabled="(isAppCentralized == 'true')">
<option b2b-dropdown-list option-repeat="d in timeZones" value="{{d.value}}" init-value="{{selectedTimeZone.title}}">{{d.title}}</option>
</select>
</div>
</div>
- <div>
- <button class="btn btn-alt btn-small" type="button" ng-click="saveProfile()">Save</button>
+ <div class="form-row">
+ <button class="btn btn-alt btn-small" type="button" ng-click="saveProfile()" ng-show="(isAppCentralized=='false')">Save</button>
</div>
<br>
- <div>
+ <div ng-show="(isAppCentralized=='false')">
Role
<a ng-click="addNewRoleFunctionModalPopup(role.roleFunctions,role.name, role);" class="icon-primary-accordion-plus" size="small"></a>
</div>
@@ -168,14 +169,14 @@
<thead>
<tr>
<th>Name</th>
- <th>Delete</th>
+ <th ng-show="(isAppCentralized=='false')">Delete</th>
</tr>
</thead>
<tbody type="body" ng-repeat="rowData in profile.roles">
<tr>
<td ng-bind="rowData['name']"></td>
- <td>
+ <td ng-show="(isAppCentralized=='false')">
<div style="font-size: 20px;">
<a href="javascript:void(0)" ng-click="removeRole(rowData);" class="icon-misc-trash"></a>
</div>
diff --git a/ONAP-SDK-APP/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-samplePages/samplePage.html b/ONAP-SDK-APP/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-samplePages/samplePage.html
deleted file mode 100644
index 523bfe71e..000000000
--- a/ONAP-SDK-APP/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-samplePages/samplePage.html
+++ /dev/null
@@ -1,62 +0,0 @@
-<!DOCTYPE html>
-<!-- Single-page application for EPSDK-App demonstration pages using DS2 look and feel -->
-<html>
-<head>
- <meta charset="ISO-8859-1">
- <meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1" />
- <title>Sample Page</title>
-
- <!-- B2b Library -->
- <link rel="stylesheet" type="text/css" href="app/fusion/external/b2b/css/b2b-angular/b2b-angular.css">
-
- <!-- icons in open source -->
- <link rel="stylesheet" type="text/css" href="app/fusion/external/ds2/css/digital-ng-library/ionicons.css">
- <link rel="stylesheet" type="text/css" href="app/fusion/styles/onap.css">
-
- <!-- Common scripts -->
-
- <script src="app/fusion/external/angular-1.4.8/angular.min.js"></script>
- <script src="app/fusion/external/angular-1.4.8/angular-messages.js"></script>
- <script src="app/fusion/external/angular-1.4.8/angular-touch.js"></script>
- <script src="app/fusion/external/angular-1.4.8/angular-sanitize.js"></script>
- <script src="app/fusion/external/angular-1.4.8/angular-route.min.js"></script>
- <script src="app/fusion/external/angular-1.4.8/angular-cookies.min.js"></script>
- <script src="app/fusion/external/b2b/js/b2b-angular/b2b-library.min.js"></script>
- <script src="app/fusion/external/jquery/dist/jquery.min.js"></script>
- <script src="app/fusion/external/javascript-detect-element-resize/jquery.resize.js"></script>
- <script src="app/fusion/external/angular-bootstrap/ui-bootstrap-tpls.min.js"></script>
- <script src="app/fusion/external/angular-gridster/dist/angular-gridster.min.js"></script>
- <script src="app/fusion/scripts/DS2-services/ds2-modal/modalService.js"></script>
- <script src="app/fusion/external/ds2/js/appDS2.js"></script>
-
- <script src="app/fusion/scripts/DS2-services/userInfoServiceDS2.js"></script>
- <script src="app/fusion/scripts/DS2-services/headerServiceDS2.js"></script>
- <script src="app/fusion/scripts/DS2-services/leftMenuServiceDS2.js"></script>
- <script src="app/fusion/scripts/DS2-services/manifestService.js"></script>
- <script src="app/fusion/scripts/DS2-directives/footer.js"></script>
- <script src="app/fusion/scripts/DS2-directives/ds2Header.js"></script>
- <script src="app/fusion/scripts/DS2-directives/ds2LeftMenu.js"></script>
- <script src="app/fusion/scripts/DS2-directives/b2b-leftnav-ext.js"></script>
- <script src="app/fusion/external/utils/js/browserCheck.js"></script>
-
- <!-- Page-specific items -->
- <script src="app/fusion/scripts/DS2-services/adminService.js"></script>
- <script src="app/fusion/scripts/DS2-services/adminMenuService.js"></script>
-
- <script src="app/fusion/scripts/DS2-controllers/samplePage-route.js"></script>
- <script src="app/fusion/scripts/DS2-controllers/collaborateList-route.js"></script>
- <script src="app/fusion/scripts/DS2-controllers/collaborate-list-controller.js"></script>
- <script src="app/fusion/scripts/DS2-services/ds2-sample-page/droolsService.js"></script>
- <script src="app/fusion/scripts/DS2-controllers/ds2-sample/drools-controller.js"></script>
- <script src="app/fusion/scripts/DS2-controllers/ds2-sample/notebook-controller.js"></script>
- <script src="app/fusion/scripts/DS2-controllers/ds2-sample/notebookFrameController.js"></script>
- <script src="app/fusion/scripts/DS2-controllers/ds2-sample/nbook-framecontroller.js"></script>
-
-</head>
- <body class="appBody" ng-app="abs">
- <div ds2-Header class="header-container" ></div>
- <div ds2-menu id="menuContainer" class="menu-container" ></div>
- <div ng-view id="rightContentProfile" class="content-container"></div>
- <div ds2-Footer class="footer-container"></div>
- </body>
-</html>
diff --git a/ONAP-SDK-APP/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2Header.html b/ONAP-SDK-APP/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2Header.html
deleted file mode 100644
index 444514939..000000000
--- a/ONAP-SDK-APP/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2Header.html
+++ /dev/null
@@ -1,68 +0,0 @@
-<div class="header-main-div" >
- <header class="b2b-header-tabs" b2b-header-responsive ng-show="{{showHeader}}">
- <ul class="header__items" role="navigation">
- <li class="header__item icon__item" tabindex="0" ng-click="returnToPortal()">
- <span class="globe-text">ONAP Portal</span>
- </li>
- <li b2b-header-menu class="header__item b2b-headermenu" ng-repeat="item in menuItems" role="presentation">
- <a href="javascript:void(0);" class="menu__item" role="menuitem" ng-bind="item.text"></a>
- <div class="header-secondary-wrapper">
- <ul class="header-secondary" role="menu">
- <li class="header-subitem" b2b-header-submenu
- ng-repeat="secondLevMenu in item.children" role="presentation">
- <a href="{{secondLevMenu.action}}" ng-if="secondLevMenu.childMenus.length==0" class="menu__item" role="menuitem" ng-bind="secondLevMenu.label"></a>
- <a href="javascript:void(0);" ng-if="secondLevMenu.childMenus.length!=0" class="menu__item" role="menuitem" ng-bind="secondLevMenu.label" ></a>
- <div class="header-tertiary-wrapper">
- <ul class="header-tertiary" role="menu">
- <li b2b-header-tertiarymenu ng-repeat="thirdLevMenu in secondLevMenu.childMenus"role="presentation">
- <a href="{{thirdLevMenu.action}}"role="menuitem" aria-haspopup="true" ng-bind="thirdLevMenu.label"></a>
- </li>
- </ul>
- </div>
- </li>
- </ul>
- </div></li>
- <li class="header__item profile">
- <b2b-flyout>
- <div b2b-flyout-toggler class="header-profile" >
- <div class="icon-people-oneperson" id="header-user-icon" tabindex="0" b2b-accessibility-click="13,32" aria-label="notifications" aria-haspopup="true" aria-expanded="{{flyoutOpened}}" role="button"></div>
- <div id="login-snippet-text" class="login-snippet-text">{{userFirstName}}</div>
- </div>
- <b2b-flyout-content horizontal-placement="center" vertical-placement="below">
- <div>
- <div id="reg-header-snippet">
- <div tabindex="0" class="reg-profileDetails" id="reg-profiledetails-id">
- <ul class="reg-Details-table">
- <li>
- <div class="reg-userName-table">
- <div id="reg-userName-table-row">
- <div id="reg-userName-table-cell">
- <h3 ng-bind="userName">&nbsp;</h3>
- <span>&nbsp;</span>
- </div>
- </div>
- </div>
- </li>
- <li><div class="reg-userEmail-label"><span class="reg-userEmail-label-spn" style=font-weight:bold>Email<span class="visuallyhidden">:
- </span></span></div></li>
- <li><div class="reg-userEmail-value"><span class="reg-userEmail-value-spn">
- {{userEmail}}</span></div></li>
- <li>&nbsp;</li>
- <li><div class="reg-userRole-label"><span class="reg-userRole-label-spn" style=font-weight:bold>
- User Id<span class="visuallyhidden">:</span></span></div></li>
- <li><div class="reg-userRole-value"><span class="reg-userRole-value-spn">
- {{userId}}<span class="visuallyhidden"></span></span></div></li>
- </ul>
- <div id="reg-logout-div" style="padding-top: 8px">
- <a href="logout.htm" id="allLogout" class="btn btn-alt btn-small">
- Log out
- </a>
- </div>
- </div>
- </div>
- </div>
- </b2b-flyout-content>
- </b2b-flyout>
- </ul>
- </header>
-</div>
diff --git a/ONAP-SDK-APP/src/main/webapp/app/fusion/scripts/DS2-view-models/header-logo.html b/ONAP-SDK-APP/src/main/webapp/app/fusion/scripts/DS2-view-models/header-logo.html
new file mode 100644
index 000000000..2eec0cfbb
--- /dev/null
+++ b/ONAP-SDK-APP/src/main/webapp/app/fusion/scripts/DS2-view-models/header-logo.html
@@ -0,0 +1,2 @@
+<img src="app/fusionapp/icons/logo_onap_transbg.png" class="header-image">
+<span class="globe-text">ONAP Portal</span> \ No newline at end of file
diff --git a/ONAP-SDK-APP/src/main/webapp/app/fusion/scripts/utils/page-resource-ds2.js b/ONAP-SDK-APP/src/main/webapp/app/fusion/scripts/utils/page-resource-ds2.js
deleted file mode 100644
index 21b6b0dc1..000000000
--- a/ONAP-SDK-APP/src/main/webapp/app/fusion/scripts/utils/page-resource-ds2.js
+++ /dev/null
@@ -1,97 +0,0 @@
-function loadjscssfile(filename, filetype){
- if (filetype=="js"){ //if filename is a external JavaScript file
- var done = false;
- var script = document.createElement('script');
- script.src = filename;
- script.async = false;
- document.head.appendChild(script);
- }else if (filetype=="css"){ //if filename is an external CSS file
- var fileref=document.createElement("link")
- fileref.setAttribute("rel", "stylesheet")
- fileref.setAttribute("type", "text/css")
- fileref.setAttribute("async", false)
- fileref.setAttribute("href", filename)
- document.head.appendChild(fileref);
- }
-}
-
-function loadResource(){
- /*********************AngularJs***************************/
- loadjscssfile("./app/fusion/external/angular-1.5/angular.min.js", "js");
- loadjscssfile("./app/fusion/external/angular-1.5/angular-messages.js", "js");
- loadjscssfile("./app/fusion/external/angular-1.5/angular-touch.js", "js");
- loadjscssfile("./app/fusion/external/angular-1.5/angular-sanitize.min.js", "js");
- loadjscssfile("./app/fusion/external/angular-1.5/angular-route.min.js", "js");
- loadjscssfile("./app/fusion/external/angular-1.5/angular-cookies.min.js", "js");
-
- loadjscssfile("./app/fusion/external/ds2/js/b2b-angular/b2b-library.min.js", "js");
-/* loadjscssfile("./app/fusion/external/ds2/js/digital-ng-library/digital.ng.library.min.js", "js");
-*/
- loadjscssfile("./app/fusion/external/jquery/dist/jquery.min.js", "js");
-
- /*********************Angular Gridster***************************/
- loadjscssfile("./app/fusion/external/angular-gridster/dist/angular-gridster.min.css", "css");
- loadjscssfile("./app/fusion/external/angular-bootstrap/ui-bootstrap-csp.css", "css");
- loadjscssfile("./app/fusion/external/javascript-detect-element-resize/jquery.resize.js", "js");
- loadjscssfile("./app/fusion/external/angular-bootstrap/ui-bootstrap-tpls.min.js", "js");
- loadjscssfile("./app/fusion/external/angular-gridster/dist/angular-gridster.min.js", "js");
-
- /*********************Angular UI grid***************************/
- loadjscssfile("./app/fusion/external/angular-ui-grid/ui-grid.js", "js");
- loadjscssfile("./app/fusion/external/angular-ui-grid/ui-grid.css", "css");
-
- loadjscssfile("./app/fusion/external/ds2/js/appDS2.js", "js");
-
- loadjscssfile("./app/fusion/scripts/DS2-services/headerServiceDS2.js", "js");
- loadjscssfile("./app/fusion/scripts/DS2-services/leftMenuServiceDS2.js", "js");
- loadjscssfile("./app/fusion/scripts/DS2-services/manifestService.js", "js");
- loadjscssfile("./app/fusion/scripts/DS2-directives/footer.js", "js");
- loadjscssfile("./app/fusion/scripts/DS2-directives/ds2Header.js", "js");
- loadjscssfile("./app/fusion/scripts/DS2-directives/ds2LeftMenu.js", "js");
- loadjscssfile("./app/fusion/external/ds2/js/digital-ng-library/digital-design-library.js", "js");
-
- /*******DS2 styles*******/
- loadjscssfile("./app/fusion/external/ds2/css/b2b-angular/b2b-angular.css", "css");
- loadjscssfile("./app/fusion/external/ds2/css/digital-ng-library/extras/ds2-accordion.css", "css");
- loadjscssfile("./app/fusion/external/ds2/css/digital-ng-library/extras/ds2-bootstrap-datepicker.css", "css");
- loadjscssfile("./app/fusion/external/ds2/css/digital-ng-library/extras/ds2-cc-input-field.css", "css");
- loadjscssfile("./app/fusion/external/ds2/css/digital-ng-library/extras/ds2-tooltip.css", "css");
- loadjscssfile("./app/fusion/external/ds2/css/digital-ng-library/extras/x-tabs-pills.css", "css");
-
- loadjscssfile("./app/fusion/external/ds2/css/digital-ng-library/ds2-accordion.css", "css");
- loadjscssfile("./app/fusion/external/ds2/css/digital-ng-library/ds2-bootstrap-datepicker.css", "css");
- loadjscssfile("./app/fusion/external/ds2/css/digital-ng-library/ds2-c2c.css", "css");
- loadjscssfile("./app/fusion/external/ds2/css/digital-ng-library/ds2-cc-input-field.css", "css");
- loadjscssfile("./app/fusion/external/ds2/css/digital-ng-library/ds2-filmstrip.css", "css");
- loadjscssfile("./app/fusion/external/ds2/css/digital-ng-library/ds2-filters.css", "css");
- loadjscssfile("./app/fusion/external/ds2/css/digital-ng-library/ds2-legacynav-fix.css", "css");
- loadjscssfile("./app/fusion/external/ds2/css/digital-ng-library/ds2-marquee.css", "css");
- loadjscssfile("./app/fusion/external/ds2/css/digital-ng-library/ds2-pagination.css", "css");
- loadjscssfile("./app/fusion/external/ds2/css/digital-ng-library/ds2-popover.css", "css");
- loadjscssfile("./app/fusion/external/ds2/css/digital-ng-library/ds2-progressbar.css", "css");
- loadjscssfile("./app/fusion/external/ds2/css/digital-ng-library/ds2-tooltip.css", "css");
- loadjscssfile("./app/fusion/external/ds2/css/digital-ng-library/global.css", "css");
-
- loadjscssfile("./app/fusion/external/ds2/css/digital-ng-library/digital-design-library.css", "css");
- /*******DS2 ICONS*******/
-
- loadjscssfile("./app/fusion/external/ds2/css/digital-ng-library/ionicons.css", "css");
- loadjscssfile("./app/fusion/styles/onap.css", "css");
- loadjscssfile("./app/fusion/external/angular-gridster/dist/angular-gridster.min.css", "css");
-
-}
-
-window.onload = loadResource();
-/*window.onload = function(){
- var appLoadingInterval = setInterval(function(){ loadApp() }, 10000);
- var count=0;
- function loadApp(){
- count++
- if(typeof angular !== 'undefined') {
- angular.bootstrap(document, ['abs']);
- clearInterval(appLoadingInterval);
- }else if(count>10){
- clearInterval(appLoadingInterval);
- }
- }
-}*/ \ No newline at end of file
diff --git a/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/html/data/worddata.csv b/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/html/data/worddata.csv
index f9a8669ba..3a1a42fe6 100644
--- a/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/html/data/worddata.csv
+++ b/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/html/data/worddata.csv
@@ -1 +1 @@
-text,frequency service,98 portal,70 management,70 virtual,56 design,56 VNF,56 studio,42 operations,42 inventory,42 POLO,42 D2.0,42 ASDC,42 router,28 restart,28 process,28 platform,28 manage,28 loop,28 licensing,28 license,28 integrated,28 flow-through,28 enable,28 data,28 controller,28 control,28 configure,28 component,28 common,28 asset,28 application,28 ONAP,28 workflow,14 waterfall,14 visual,14 view,14 vCTS,14 utilization,14 user,14 usage,14 troubleshoot,14 transformation,14 track,14 topolgies,14 topics,14 time,14 tickets,14 thresholds,14 templates,14 structures,14 standards-based,14 software,14 reuse,14 repository,14 reports,14 release,14 recipes,14 real-time,14 provisioning,14 properties,14 project-based,14 processes,14 physical,14 oversight,14 openl-loop,14 network,14 monitor,14 modeling,14 model-driven,14 model,14 message,14 maximize,14 manually,14 machine,14 layer,14 interact,14 instances,14 initiate,14 increase,14 imported,14 impacts,14 host,14 function,14 feeds,14 features,14 faults,14 extended,14 engines,14 engine,14 dynamic,14 document-driven,14 determine,14 dashboard,14 current,14 creation,14 created,14 create,14 configuration,14 composer,14 components,14 collective,14 certification,14 bus,14 basis,14 available,14 automation,14 automated,14 associated,14 assignment,14 appropriate,14 against,14 aervice,14 adminstrators,14 activation,14 action,14 VMs,14 VM,14 VLAN,14 SDN,14 SDK,14 SBG,14 SAM,14 RUBY,14 Policy,14 PODS,14 Ops,14 GFP,14 F5FW,14 DMaaP,14 DCAE,14 DBC,14 CPADS,14 AT&T,14 APP-C,14 AOTS-TM,14 ALTS,14 A&AI,14
+text,frequency service,98 portal,70 management,70 virtual,56 design,56 VNF,56 studio,42 operations,42 inventory,42 POLO,42 D2.0,42 ASDC,42 router,28 restart,28 process,28 platform,28 manage,28 loop,28 licensing,28 license,28 integrated,28 flow-through,28 enable,28 data,28 controller,28 control,28 configure,28 component,28 common,28 asset,28 application,28 ONAP,28 workflow,14 waterfall,14 visual,14 view,14 vCTS,14 utilization,14 user,14 usage,14 troubleshoot,14 transformation,14 track,14 topolgies,14 topics,14 time,14 tickets,14 thresholds,14 templates,14 structures,14 standards-based,14 software,14 reuse,14 repository,14 reports,14 release,14 recipes,14 real-time,14 provisioning,14 properties,14 project-based,14 processes,14 physical,14 oversight,14 openl-loop,14 network,14 monitor,14 modeling,14 model-driven,14 model,14 message,14 maximize,14 manually,14 machine,14 layer,14 interact,14 instances,14 initiate,14 increase,14 imported,14 impacts,14 host,14 function,14 feeds,14 features,14 faults,14 extended,14 engines,14 engine,14 dynamic,14 document-driven,14 determine,14 dashboard,14 current,14 creation,14 created,14 create,14 configuration,14 composer,14 components,14 collective,14 certification,14 bus,14 basis,14 available,14 automation,14 automated,14 associated,14 assignment,14 appropriate,14 against,14 aervice,14 adminstrators,14 activation,14 action,14 VMs,14 VM,14 VLAN,14 SDN,14 SDK,14 SBG,14 SAM,14 RUBY,14 Policy,14 PODS,14 Ops,14 GFP,14 F5FW,14 DMaaP,14 DCAE,14 DBC,14 CPADS,14 AT&T,14 APP-C,14 AOTS-TM,14 ALTS,14 A&AI,14
diff --git a/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/images/Calendar-16x16.png b/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/images/Calendar-16x16.png
deleted file mode 100644
index ac970bda5..000000000
--- a/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/images/Calendar-16x16.png
+++ /dev/null
Binary files differ
diff --git a/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/images/arrow-next.png b/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/images/arrow-next.png
deleted file mode 100644
index 1a4f72c68..000000000
--- a/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/images/arrow-next.png
+++ /dev/null
Binary files differ
diff --git a/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/images/arrow-prev.png b/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/images/arrow-prev.png
deleted file mode 100644
index 8211eba1d..000000000
--- a/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/images/arrow-prev.png
+++ /dev/null
Binary files differ
diff --git a/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/images/copyicon.png b/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/images/copyicon.png
deleted file mode 100644
index 6c1c3c155..000000000
--- a/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/images/copyicon.png
+++ /dev/null
Binary files differ
diff --git a/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/images/deleteicon.gif b/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/images/deleteicon.gif
deleted file mode 100644
index 4b07af826..000000000
--- a/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/images/deleteicon.gif
+++ /dev/null
Binary files differ
diff --git a/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/images/example-frame.png b/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/images/example-frame.png
deleted file mode 100644
index 31f2fe1cc..000000000
--- a/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/images/example-frame.png
+++ /dev/null
Binary files differ
diff --git a/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/images/loading.gif b/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/images/loading.gif
deleted file mode 100644
index cccb0fc9f..000000000
--- a/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/images/loading.gif
+++ /dev/null
Binary files differ
diff --git a/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/js/slides.min.jquery.js b/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/js/slides.min.jquery.js
deleted file mode 100644
index 1a1fcdd8d..000000000
--- a/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/js/slides.min.jquery.js
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
-* Slides, A Slideshow Plugin for jQuery
-* Intructions: http://slidesjs.com
-* By: Nathan Searles, http://nathansearles.com
-* Version: 1.1.9
-* Updated: September 5th, 2011
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-(function(a){a.fn.slides=function(b){return b=a.extend({},a.fn.slides.option,b),this.each(function(){function w(g,h,i){if(!p&&o){p=!0,b.animationStart(n+1);switch(g){case"next":l=n,k=n+1,k=e===k?0:k,r=f*2,g=-f*2,n=k;break;case"prev":l=n,k=n-1,k=k===-1?e-1:k,r=0,g=0,n=k;break;case"pagination":k=parseInt(i,10),l=a("."+b.paginationClass+" li."+b.currentClass+" a",c).attr("href").match("[^#/]+$"),k>l?(r=f*2,g=-f*2):(r=0,g=0),n=k}h==="fade"?b.crossfade?d.children(":eq("+k+")",c).css({zIndex:10}).fadeIn(b.fadeSpeed,b.fadeEasing,function(){b.autoHeight?d.animate({height:d.children(":eq("+k+")",c).outerHeight()},b.autoHeightSpeed,function(){d.children(":eq("+l+")",c).css({display:"none",zIndex:0}),d.children(":eq("+k+")",c).css({zIndex:0}),b.animationComplete(k+1),p=!1}):(d.children(":eq("+l+")",c).css({display:"none",zIndex:0}),d.children(":eq("+k+")",c).css({zIndex:0}),b.animationComplete(k+1),p=!1)}):d.children(":eq("+l+")",c).fadeOut(b.fadeSpeed,b.fadeEasing,function(){b.autoHeight?d.animate({height:d.children(":eq("+k+")",c).outerHeight()},b.autoHeightSpeed,function(){d.children(":eq("+k+")",c).fadeIn(b.fadeSpeed,b.fadeEasing)}):d.children(":eq("+k+")",c).fadeIn(b.fadeSpeed,b.fadeEasing,function(){a.browser.msie&&a(this).get(0).style.removeAttribute("filter")}),b.animationComplete(k+1),p=!1}):(d.children(":eq("+k+")").css({left:r,display:"block"}),b.autoHeight?d.animate({left:g,height:d.children(":eq("+k+")").outerHeight()},b.slideSpeed,b.slideEasing,function(){d.css({left:-f}),d.children(":eq("+k+")").css({left:f,zIndex:5}),d.children(":eq("+l+")").css({left:f,display:"none",zIndex:0}),b.animationComplete(k+1),p=!1}):d.animate({left:g},b.slideSpeed,b.slideEasing,function(){d.css({left:-f}),d.children(":eq("+k+")").css({left:f,zIndex:5}),d.children(":eq("+l+")").css({left:f,display:"none",zIndex:0}),b.animationComplete(k+1),p=!1})),b.pagination&&(a("."+b.paginationClass+" li."+b.currentClass,c).removeClass(b.currentClass),a("."+b.paginationClass+" li:eq("+k+")",c).addClass(b.currentClass))}}function x(){clearInterval(c.data("interval"))}function y(){b.pause?(clearTimeout(c.data("pause")),clearInterval(c.data("interval")),u=setTimeout(function(){clearTimeout(c.data("pause")),v=setInterval(function(){w("next",i)},b.play),c.data("interval",v)},b.pause),c.data("pause",u)):x()}a("."+b.container,a(this)).children().wrapAll('<div class="slides_control"/>');var c=a(this),d=a(".slides_control",c),e=d.children().size(),f=d.children().outerWidth(),g=d.children().outerHeight(),h=b.start-1,i=b.effect.indexOf(",")<0?b.effect:b.effect.replace(" ","").split(",")[0],j=b.effect.indexOf(",")<0?i:b.effect.replace(" ","").split(",")[1],k=0,l=0,m=0,n=0,o,p,q,r,s,t,u,v;if(e<2)return a("."+b.container,a(this)).fadeIn(b.fadeSpeed,b.fadeEasing,function(){o=!0,b.slidesLoaded()}),a("."+b.next+", ."+b.prev).fadeOut(0),!1;if(e<2)return;h<0&&(h=0),h>e&&(h=e-1),b.start&&(n=h),b.randomize&&d.randomize(),a("."+b.container,c).css({overflow:"hidden",position:"relative"}),d.children().css({position:"absolute",top:0,left:d.children().outerWidth(),zIndex:0,display:"none"}),d.css({position:"relative",width:f*3,height:g,left:-f}),a("."+b.container,c).css({display:"block"}),b.autoHeight&&(d.children().css({height:"auto"}),d.animate({height:d.children(":eq("+h+")").outerHeight()},b.autoHeightSpeed));if(b.preload&&d.find("img:eq("+h+")").length){a("."+b.container,c).css({background:"url("+b.preloadImage+") no-repeat 50% 50%"});var z=d.find("img:eq("+h+")").attr("src")+"?"+(new Date).getTime();a("img",c).parent().attr("class")!="slides_control"?t=d.children(":eq(0)")[0].tagName.toLowerCase():t=d.find("img:eq("+h+")"),d.find("img:eq("+h+")").attr("src",z).load(function(){d.find(t+":eq("+h+")").fadeIn(b.fadeSpeed,b.fadeEasing,function(){a(this).css({zIndex:5}),a("."+b.container,c).css({background:""}),o=!0,b.slidesLoaded()})})}else d.children(":eq("+h+")").fadeIn(b.fadeSpeed,b.fadeEasing,function(){o=!0,b.slidesLoaded()});b.bigTarget&&(d.children().css({cursor:"pointer"}),d.children().click(function(){return w("next",i),!1})),b.hoverPause&&b.play&&(d.bind("mouseover",function(){x()}),d.bind("mouseleave",function(){y()})),b.generateNextPrev&&(a("."+b.container,c).after('<a href="#" class="'+b.prev+'">Prev</a>'),a("."+b.prev,c).after('<a href="#" class="'+b.next+'">Next</a>')),a("."+b.next,c).click(function(a){a.preventDefault(),b.play&&y(),w("next",i)}),a("."+b.prev,c).click(function(a){a.preventDefault(),b.play&&y(),w("prev",i)}),b.generatePagination?(b.prependPagination?c.prepend("<ul class="+b.paginationClass+"></ul>"):c.append("<ul class="+b.paginationClass+"></ul>"),d.children().each(function(){a("."+b.paginationClass,c).append('<li><a href="#'+m+'">'+(m+1)+"</a></li>"),m++})):a("."+b.paginationClass+" li a",c).each(function(){a(this).attr("href","#"+m),m++}),a("."+b.paginationClass+" li:eq("+h+")",c).addClass(b.currentClass),a("."+b.paginationClass+" li a",c).click(function(){return b.play&&y(),q=a(this).attr("href").match("[^#/]+$"),n!=q&&w("pagination",j,q),!1}),a("a.link",c).click(function(){return b.play&&y(),q=a(this).attr("href").match("[^#/]+$")-1,n!=q&&w("pagination",j,q),!1}),b.play&&(v=setInterval(function(){w("next",i)},b.play),c.data("interval",v))})},a.fn.slides.option={preload:!1,preloadImage:"/img/loading.gif",container:"slides_container",generateNextPrev:!1,next:"next",prev:"prev",pagination:!0,generatePagination:!0,prependPagination:!1,paginationClass:"pagination",currentClass:"current",fadeSpeed:350,fadeEasing:"",slideSpeed:350,slideEasing:"",start:1,effect:"slide",crossfade:!1,randomize:!1,play:0,pause:0,hoverPause:!1,autoHeight:!1,autoHeightSpeed:350,bigTarget:!1,animationStart:function(){},animationComplete:function(){},slidesLoaded:function(){}},a.fn.randomize=function(b){function c(){return Math.round(Math.random())-.5}return a(this).each(function(){var d=a(this),e=d.children(),f=e.length;if(f>1){e.hide();var g=[];for(i=0;i<f;i++)g[g.length]=i;g=g.sort(c),a.each(g,function(a,c){var f=e.eq(c),g=f.clone(!0);g.show().appendTo(d),b!==undefined&&b(f,g),f.remove()})}})}})(jQuery) \ No newline at end of file
diff --git a/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/js/spacegallery.js b/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/js/spacegallery.js
deleted file mode 100644
index 69ab2cccb..000000000
--- a/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/js/spacegallery.js
+++ /dev/null
@@ -1,235 +0,0 @@
-/**
- *
- * Spacegallery
- * Author: Stefan Petre www.eyecon.ro
- *
- */
-
-(function($){
- EYE.extend({
-
- spacegallery: {
-
- //default options (many options are controled via CSS)
- defaults: {
- border: 6, // border arround the image
- perspective: 140, // perpective height
- minScale: 0.2, // minimum scale for the image in the back
- duration: 800, // aimation duration
- loadingClass: null, // CSS class applied to the element while looading images
- before: function(){return false},
- after: function(){return false}
- },
-
- animated: false,
-
- //position images
- positionImages: function(el) {
- var top = 0;
- EYE.spacegallery.animated = false;
- $(el)
- .find('a')
- .removeClass(el.spacegalleryCfg.loadingClass)
- .end()
- .find('img')
- .removeAttr('height')
- .each(function(nr){
- var newWidth = this.spacegallery.origWidth - (this.spacegallery.origWidth - this.spacegallery.origWidth * el.spacegalleryCfg.minScale) * el.spacegalleryCfg.asins[nr];
- $(this)
- .css({
- top: el.spacegalleryCfg.tops[nr] + 'px',
- marginLeft: - parseInt((newWidth + el.spacegalleryCfg.border)/2, 10) + 'px',
- opacity: 1 - el.spacegalleryCfg.asins[nr]
- })
- .attr('width', parseInt(newWidth));
- this.spacegallery.next = el.spacegalleryCfg.asins[nr+1];
- this.spacegallery.nextTop = el.spacegalleryCfg.tops[nr+1] - el.spacegalleryCfg.tops[nr];
- this.spacegallery.origTop = el.spacegalleryCfg.tops[nr];
- this.spacegallery.opacity = 1 - el.spacegalleryCfg.asins[nr];
- this.spacegallery.increment = el.spacegalleryCfg.asins[nr] - this.spacegallery.next;
- this.spacegallery.current = el.spacegalleryCfg.asins[nr];
- this.spacegallery.width = newWidth;
- })
- },
-
- //animate to nex image
- next: function(e) {
- if (EYE.spacegallery.animated === false) {
- EYE.spacegallery.animated = true;
- var el = this.parentNode;
- el.spacegalleryCfg.before.apply(el);
- $(el)
- .css('spacegallery', 0)
- .animate({
- spacegallery: 100
- },{
- easing: 'easeOut',
- duration: el.spacegalleryCfg.duration,
- complete: function() {
- $(el)
- .find('img:last')
- .prependTo(el);
- EYE.spacegallery.positionImages(el);
- el.spacegalleryCfg.after.apply(el);
- },
- step: function(now) {
- $('img', this)
- .each(function(nr){
- var newWidth, top, next;
- if (nr + 1 == el.spacegalleryCfg.images) {
- top = this.spacegallery.origTop + this.spacegallery.nextTop * 4 * now /100;
- newWidth = this.spacegallery.width * top / this.spacegallery.origTop;
- $(this)
- .css({
- top: top + 'px',
- opacity: 0.7 - now/100,
- marginLeft: - parseInt((newWidth + el.spacegalleryCfg.border)/2, 10) + 'px'
- })
- .attr('width', newWidth);
- } else {
- next = this.spacegallery.current - this.spacegallery.increment * now /100;
- newWidth = this.spacegallery.origWidth - (this.spacegallery.origWidth - this.spacegallery.origWidth * el.spacegalleryCfg.minScale) * next;
- $(this).css({
- top: this.spacegallery.origTop + this.spacegallery.nextTop * now /100 + 'px',
- opacity: 1 - next,
- marginLeft: - parseInt((newWidth + el.spacegalleryCfg.border)/2, 10) + 'px'
- })
- .attr('width', newWidth);
- }
- });
- }
- });
- }
-
- this.blur();
- return false;
- },
-
- autoNext: function(el) {
-
- if (EYE.spacegallery.animated === false) {
- EYE.spacegallery.animated = true;
- el.spacegalleryCfg.before.apply(el); // run the "before" function
- $(el)
- .css('spacegallery', 0)
- .animate({
- spacegallery: 100
- },{
- easing: 'easeOut',
- duration: el.spacegalleryCfg.duration,
- complete: function() { // after animation is complete, move the front image to the back
- $(el)
- .find('img:last') // find the last image in this div
- .prependTo(el); // and stick it at the beginning
- EYE.spacegallery.positionImages(el); // run "position images"
- el.spacegalleryCfg.after.apply(el); //run the "after" function
- },
- step: function(now) {
- $('img', this)
- .each(function(nr){
- var newWidth, top, next;
- if (nr + 1 == el.spacegalleryCfg.images) {
- top = this.spacegallery.origTop + this.spacegallery.nextTop * 4 * now /100;
- newWidth = this.spacegallery.width * top / this.spacegallery.origTop;
- $(this)
- .css({
- top: top + 'px',
- opacity: 0.7 - now/100,
- marginLeft: - parseInt((newWidth + el.spacegalleryCfg.border)/2, 10) + 'px'
- })
- .attr('width', newWidth);
- } else {
- next = this.spacegallery.current - this.spacegallery.increment * now /100;
- newWidth = this.spacegallery.origWidth - (this.spacegallery.origWidth - this.spacegallery.origWidth * el.spacegalleryCfg.minScale) * next;
- $(this).css({
- top: this.spacegallery.origTop + this.spacegallery.nextTop * now /100 + 'px',
- opacity: 1 - next,
- marginLeft: - parseInt((newWidth + el.spacegalleryCfg.border)/2, 10) + 'px'
- })
- .attr('width', newWidth);
- }
- });
- }
- });
- }
-
- return false;
- },
-
- //constructor
- init: function(opt) {
- opt = $.extend({}, EYE.spacegallery.defaults, opt||{});
- return this.each(function(){
- var el = this;
- if ($(el).is('.spacegallery')) {
- $('<a href="#"></a>')
- .appendTo(this)
- .addClass(opt.loadingClass)
- .bind('click', EYE.spacegallery.next);
- el.spacegalleryCfg = opt;
- el.spacegalleryCfg.images = el.getElementsByTagName('img').length;
- el.spacegalleryCfg.loaded = 0;
- el.spacegalleryCfg.asin = Math.asin(1);
- el.spacegalleryCfg.asins = {};
- el.spacegalleryCfg.tops = {};
- el.spacegalleryCfg.increment = parseInt(el.spacegalleryCfg.perspective/el.spacegalleryCfg.images, 10);
- var top = 0;
- $('img', el)
- .each(function(nr){
- var imgEl = new Image();
- var elImg = this;
- el.spacegalleryCfg.asins[nr] = 1 - Math.asin((nr+1)/el.spacegalleryCfg.images)/el.spacegalleryCfg.asin;
- top += el.spacegalleryCfg.increment - el.spacegalleryCfg.increment * el.spacegalleryCfg.asins[nr];
- el.spacegalleryCfg.tops[nr] = top;
- elImg.spacegallery = {};
- imgEl.src = this.src;
- if (imgEl.complete) {
- el.spacegalleryCfg.loaded ++;
- elImg.spacegallery.origWidth = imgEl.width;
- elImg.spacegallery.origHeight = imgEl.height
- } else {
- imgEl.onload = function() {
- el.spacegalleryCfg.loaded ++;
- elImg.spacegallery.origWidth = imgEl.width;
- elImg.spacegallery.origHeight = imgEl.height
- if (el.spacegalleryCfg.loaded == el.spacegalleryCfg.images) {
-
- EYE.spacegallery.positionImages(el);
- }
- };
- }
- });
- el.spacegalleryCfg.asins[el.spacegalleryCfg.images] = el.spacegalleryCfg.asins[el.spacegalleryCfg.images - 1] * 1.3;
- el.spacegalleryCfg.tops[el.spacegalleryCfg.images] = el.spacegalleryCfg.tops[el.spacegalleryCfg.images - 1] * 1.3;
- if (el.spacegalleryCfg.loaded == el.spacegalleryCfg.images) {
- EYE.spacegallery.positionImages(el);
- setInterval(function() { EYE.spacegallery.autoNext(el); }, 4000);
- }
- }
- });
- }
- }
- });
-
- $.fn.extend({
-
- /**
- * Create a space gallery
- * @name spacegallery
- * @description create a space gallery
- * @option int border Images' border. Default: 6
- * @option int perspective Perpective height. Default: 140
- * @option float minScale Minimum scale for the image in the back. Default: 0.2
- * @option int duration Animation duration. Default: 800
- * @option string loadingClass CSS class applied to the element while looading images. Default: null
- * @option function before Callback function triggered before going to the next image
- * @option function after Callback function triggered after going to the next image
- */
- spacegallery: EYE.spacegallery.init
- });
- $.extend($.easing,{
- easeOut:function (x, t, b, c, d) {
- return -c *(t/=d)*(t-2) + b;
- }
- });
-})(jQuery); \ No newline at end of file
diff --git a/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/org_chart/css/jquery.jOrgChart.css b/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/org_chart/css/jquery.jOrgChart.css
deleted file mode 100644
index ffabe2740..000000000
--- a/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/org_chart/css/jquery.jOrgChart.css
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Basic styling */
-/* Draw the lines */
-.jOrgChart .line {
- height : 20px;
- width : 4px;
-}
-
-.jOrgChart .down {
- background-color : black;
- margin : 0px auto;
-}
-
-.jOrgChart .top {
- border-top : 3px solid black;
-}
-
-.jOrgChart .left {
- border-right : 2px solid black;
-}
-
-.jOrgChart .right {
- border-left : 2px solid black;
-}
-
-/* node cell */
-.jOrgChart td {
- text-align : center;
- vertical-align : top;
- padding : 0;
-}
-
-/* The node */
-.jOrgChart .node {
- background-color : #35363B;
- display : inline-block;
- width : 120px;
- height : 60px;
- z-index : 10;
- margin : 0 2px;
-}
-
-/* jQuery drag 'n drop */
-
-.drag-active {
- border-style : dashed !important;
-}
-
-.drop-hover {
- border-style : solid !important;
- border-color : #E05E00 !important;
-}
diff --git a/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/org_chart/example.html b/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/org_chart/example.html
deleted file mode 100644
index 543b0f924..000000000
--- a/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/org_chart/example.html
+++ /dev/null
@@ -1,85 +0,0 @@
-<!DOCTYPE html>
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
- <title>jOrgChart - A jQuery OrgChart Plugin</title>
- <link rel="stylesheet" href="css/bootstrap.min.css"/>
- <link rel="stylesheet" href="css/jquery.jOrgChart.css"/>
- <link rel="stylesheet" href="css/custom.css"/>
- <link href="css/prettify.css" type="text/css" rel="stylesheet" />
-
- <script type="text/javascript" src="prettify.js"></script>
-
- <!-- jQuery includes -->
- <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
- <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js"></script>
-
- <script src="jquery.jOrgChart.js"></script>
-
- <script>
- jQuery(document).ready(function() {
- $("#org").jOrgChart({
- chartElement : '#chart',
- dragAndDrop : true
- });
- });
- </script>
- </head>
-
- <body onload="prettyPrint();">
- <ul id="org" style="display:none">
- <li>Product 1<br/>
- <ul>
- <li>Service 1<br/>
- <ul>
- <li>Resource 1<br/></li>
- <li>Resource 2<br/></li>
- <li>Resource 3<br/></li>
- <li>Resource 4<br/></li>
- <li>Resource 5<br/></li>
- </ul>
- </li>
- <li>Service 6<br/></li>
- <li>Service 7<br/>
- <ul>
- <li>Resource 8<br/></li>
- <li>Resource 9<br/></li>
- <li>Resource 10<br/></li>
- <li>Resource 11<br/></li>
- </ul>
- </li>
- </ul>
- </li>
- </ul>
-
- <div id="chart" class="orgChart"></div>
-
- <script>
- jQuery(document).ready(function() {
-
- /* Custom jQuery for the example */
- $("#show-list").click(function(e){
- e.preventDefault();
-
- $('#list-html').toggle('fast', function(){
- if($(this).is(':visible')){
- $('#show-list').text('Hide underlying list.');
- $(".topbar").fadeTo('fast',0.9);
- }else{
- $('#show-list').text('Show underlying list.');
- $(".topbar").fadeTo('fast',1);
- }
- });
- });
-
- $('#list-html').text($('#org').html());
-
- $("#org").bind("DOMSubtreeModified", function() {
- $('#list-html').text('');
-
- $('#list-html').text($('#org').html());
-
- prettyPrint();
- });
- });
- </script>
-</body>
-</html> \ No newline at end of file
diff --git a/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/org_chart/example_vsp.html b/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/org_chart/example_vsp.html
deleted file mode 100644
index a2e3703d2..000000000
--- a/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/org_chart/example_vsp.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE html>
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
- <title>jOrgChart - A jQuery OrgChart Plugin</title>
- <link rel="stylesheet" href="css/bootstrap.min.css"/>
- <link rel="stylesheet" href="css/jquery.jOrgChart.css"/>
- <link rel="stylesheet" href="css/custom.css"/>
- <link href="css/prettify.css" type="text/css" rel="stylesheet" />
-
- <script type="text/javascript" src="prettify.js"></script>
-
- <!-- jQuery includes -->
- <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
- <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js"></script>
-
- <script src="jquery.jOrgChart.js"></script>
-
- <script>
- jQuery(document).ready(function() {
- $("#org").jOrgChart({
- chartElement : '#chart',
- dragAndDrop : true
- });
- });
- </script>
- </head>
-
- <body onload="prettyPrint();">
- <ul id="org" style="display:none">
- <li>Trinity<br/>
- <ul>
- <li>Call Forwarding<br/>
- <ul>
- <li>Call Forwarding Busy<br/></li>
- <li>Call Forwarding Always<br/></li>
- <li>Call Forwarding Not Reachable<br/></li>
- </ul>
- </li>
- <li>Dial Restrictions<br/>
- <ul>
- <li>Outgoing Calls<br/></li>
- <li>Redirecting Calls<br/></li>
- <li>Incoming Calls<br/></li>
- </ul>
- </li>
- <li>Messaging<br/>
- <ul>
- <li>Voice Management<br/></li>
- <li>Greetings<br/></li>
- <li>Fax Messaging<br/></li>
- </ul>
- </li>
- </ul>
- </li>
- </ul>
-
- <div id="chart" class="orgChart"></div>
-
- <script>
- jQuery(document).ready(function() {
-
- /* Custom jQuery for the example */
- $("#show-list").click(function(e){
- e.preventDefault();
-
- $('#list-html').toggle('fast', function(){
- if($(this).is(':visible')){
- $('#show-list').text('Hide underlying list.');
- $(".topbar").fadeTo('fast',0.9);
- }else{
- $('#show-list').text('Show underlying list.');
- $(".topbar").fadeTo('fast',1);
- }
- });
- });
-
- $('#list-html').text($('#org').html());
-
- $("#org").bind("DOMSubtreeModified", function() {
- $('#list-html').text('');
-
- $('#list-html').text($('#org').html());
-
- prettyPrint();
- });
- });
- </script>
- </body>
-</html> \ No newline at end of file
diff --git a/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/org_chart/images/bkgd.png b/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/org_chart/images/bkgd.png
deleted file mode 100644
index 3bbaf5eee..000000000
--- a/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/org_chart/images/bkgd.png
+++ /dev/null
Binary files differ
diff --git a/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/org_chart/images/raspberry.jpg b/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/org_chart/images/raspberry.jpg
deleted file mode 100644
index e79a0515d..000000000
--- a/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/org_chart/images/raspberry.jpg
+++ /dev/null
Binary files differ
diff --git a/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/org_chart/jquery.jOrgChart.js b/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/org_chart/jquery.jOrgChart.js
deleted file mode 100644
index 89411b290..000000000
--- a/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/org_chart/jquery.jOrgChart.js
+++ /dev/null
@@ -1,267 +0,0 @@
-/**
- * jQuery org-chart/tree plugin.
- *
- * Author: Wes Nolte
- * http://twitter.com/wesnolte
- *
- * Based on the work of Mark Lee
- * http://www.capricasoftware.co.uk
- *
- * Copyright (c) 2011 Wesley Nolte
- * Dual licensed under the MIT and GPL licenses.
- *
- */
-(function($) {
-
- $.fn.jOrgChart = function(options) {
- var opts = $.extend({}, $.fn.jOrgChart.defaults, options);
- var $appendTo = $(opts.chartElement);
-
- // build the tree
- $this = $(this);
- var $container = $("<div class='" + opts.chartClass + "'/>");
- if($this.is("ul")) {
- buildNode($this.find("li:first"), $container, 0, opts);
- }
- else if($this.is("li")) {
- buildNode($this, $container, 0, opts);
- }
- $appendTo.append($container);
-
- // add drag and drop if enabled
- if(opts.dragAndDrop){
- $('div.node').draggable({
- cursor : 'move',
- distance : 40,
- helper : 'clone',
- opacity : 0.8,
- revert : true,
- revertDuration : 100,
- snap : 'div.node.expanded',
- snapMode : 'inner',
- stack : 'div.node'
- });
-
- $('div.node').droppable({
- accept : '.node',
- activeClass : 'drag-active',
- hoverClass : 'drop-hover'
- });
-
- // Drag start event handler for nodes
- $('div.node').bind("dragstart", function handleDragStart( event, ui ){
-
- var sourceNode = $(this);
- sourceNode.parentsUntil('.node-container')
- .find('*')
- .filter('.node')
- .droppable('disable');
- });
-
- // Drag stop event handler for nodes
- $('div.node').bind("dragstop", function handleDragStop( event, ui ){
-
- /* reload the plugin */
- $(opts.chartElement).children().remove();
- $this.jOrgChart(opts);
- });
-
- // Drop event handler for nodes
- $('div.node').bind("drop", function handleDropEvent( event, ui ) {
- var sourceNode = ui.draggable;
- var targetNode = $(this);
-
- // finding nodes based on plaintext and html
- // content is hard!
- var targetLi = $('li').filter(function(){
-
- li = $(this).clone()
- .children("ul,li")
- .remove()
- .end();
- var attr = li.attr('id');
- if (typeof attr !== 'undefined' && attr !== false) {
- return li.attr("id") == targetNode.attr("id");
- }
- else {
- return li.html() == targetNode.html();
- }
-
- });
-
- var sourceLi = $('li').filter(function(){
-
- li = $(this).clone()
- .children("ul,li")
- .remove()
- .end();
- var attr = li.attr('id');
- if (typeof attr !== 'undefined' && attr !== false) {
- return li.attr("id") == sourceNode.attr("id");
- }
- else {
- return li.html() == sourceNode.html();
- }
-
- });
-
- var sourceliClone = sourceLi.clone();
- var sourceUl = sourceLi.parent('ul');
-
- if(sourceUl.children('li').size() > 1){
- sourceLi.remove();
- }else{
- sourceUl.remove();
- }
-
- var id = sourceLi.attr("id");
-
- if(targetLi.children('ul').size() >0){
- if (typeof id !== 'undefined' && id !== false) {
- targetLi.children('ul').append('<li id="'+id+'">'+sourceliClone.html()+'</li>');
- }else{
- targetLi.children('ul').append('<li>'+sourceliClone.html()+'</li>');
- }
- }else{
- if (typeof id !== 'undefined' && id !== false) {
- targetLi.append('<ul><li id="'+id+'">'+sourceliClone.html()+'</li></ul>');
- }else{
- targetLi.append('<ul><li>'+sourceliClone.html()+'</li></ul>');
- }
- }
-
- }); // handleDropEvent
-
- } // Drag and drop
- };
-
- // Option defaults
- $.fn.jOrgChart.defaults = {
- chartElement : 'body',
- depth : -1,
- chartClass : "jOrgChart",
- dragAndDrop: false
- };
-
- // Method that recursively builds the tree
- function buildNode($node, $appendTo, level, opts) {
- var $table = $("<table cellpadding='0' cellspacing='0' border='0'/>");
- var $tbody = $("<tbody/>");
-
- // Construct the node container(s)
- var $nodeRow = $("<tr/>").addClass("node-cells");
- var $nodeCell = $("<td/>").addClass("node-cell").attr("colspan", 2);
- var $childNodes = $node.children("ul:first").children("li");
- var $nodeDiv;
-
- if($childNodes.length > 1) {
- $nodeCell.attr("colspan", $childNodes.length * 2);
- }
- // Draw the node
- // Get the contents - any markup except li and ul allowed
- var $nodeContent = $node.clone()
- .children("ul,li")
- .remove()
- .end()
- .html();
-
- var new_node_id = $node.attr("id");
- if (typeof new_node_id !== 'undefined' && new_node_id !== false) {
- $nodeDiv = $("<div>").addClass("node").attr("id", $node.attr("id")).append($nodeContent);
- }else{
- $nodeDiv = $("<div>").addClass("node").append($nodeContent);
- }
-
- // Expand and contract nodes
- if ($childNodes.length > 0) {
- $nodeDiv.click(function() {
- var $this = $(this);
- var $tr = $this.closest("tr");
-
- if($tr.hasClass('contracted')){
- $this.css('cursor','n-resize');
- $tr.removeClass('contracted').addClass('expanded');
- $tr.nextAll("tr").css('visibility', '');
- }else{
- $this.css('cursor','s-resize');
- $tr.removeClass('expanded').addClass('contracted');
- $tr.nextAll("tr").css('visibility', 'hidden');
- }
- });
- }
-
- $nodeCell.append($nodeDiv);
- $nodeRow.append($nodeCell);
- $tbody.append($nodeRow);
-
- if($childNodes.length > 0) {
- // if it can be expanded then change the cursor
- $nodeDiv.css('cursor','n-resize').addClass('expanded');
-
- // recurse until leaves found (-1) or to the level specified
- if(opts.depth == -1 || (level+1 < opts.depth)) {
- var $downLineRow = $("<tr/>");
- var $downLineCell = $("<td/>").attr("colspan", $childNodes.length*2);
- $downLineRow.append($downLineCell);
-
- // draw the connecting line from the parent node to the horizontal line
- $downLine = $("<div></div>").addClass("line down");
- $downLineCell.append($downLine);
- $tbody.append($downLineRow);
-
- // Draw the horizontal lines
- var $linesRow = $("<tr/>");
- $childNodes.each(function() {
- var $left = $("<td>&nbsp;</td>").addClass("line left top");
- var $right = $("<td>&nbsp;</td>").addClass("line right top");
- $linesRow.append($left).append($right);
- });
-
- // horizontal line shouldn't extend beyond the first and last child branches
- $linesRow.find("td:first")
- .removeClass("top")
- .end()
- .find("td:last")
- .removeClass("top");
-
- $tbody.append($linesRow);
- var $childNodesRow = $("<tr/>");
- $childNodes.each(function() {
- var $td = $("<td class='node-container'/>");
- $td.attr("colspan", 2);
- // recurse through children lists and items
- buildNode($(this), $td, level+1, opts);
- $childNodesRow.append($td);
- });
-
- }
- $tbody.append($childNodesRow);
- }
-
- // any classes on the LI element get copied to the relevant node in the tree
- // apart from the special 'collapsed' class, which collapses the sub-tree at this point
- if ($node.attr('class') != undefined) {
- var classList = $node.attr('class').split(/\s+/);
- $.each(classList, function(index,item) {
- if (item == 'collapsed') {
- $nodeRow.nextAll('tr').css('display', 'none');
- $nodeRow.removeClass('expanded');
- $nodeRow.addClass('contracted');
- $nodeDiv.css('cursor','s-resize');
- } else {
- $nodeDiv.addClass(item);
- }
- });
- }
-
- $table.append($tbody);
- $appendTo.append($table);
-
- /* Prevent trees collapsing if a link inside a node is clicked */
- $nodeDiv.children('a').click(function(e){
- console.log(e);
- e.stopPropagation();
- });
- };
-
-})(jQuery);