diff options
Diffstat (limited to 'ONAP-SDK-APP/src/main')
46 files changed, 617 insertions, 1481 deletions
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"> </h3> - <span> </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> </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 Binary files differdeleted file mode 100644 index ac970bda5..000000000 --- a/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/images/Calendar-16x16.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index 1a4f72c68..000000000 --- a/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/images/arrow-next.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index 8211eba1d..000000000 --- a/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/images/arrow-prev.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index 6c1c3c155..000000000 --- a/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/images/copyicon.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index 4b07af826..000000000 --- a/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/images/deleteicon.gif +++ /dev/null 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 Binary files differdeleted file mode 100644 index 31f2fe1cc..000000000 --- a/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/images/example-frame.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index cccb0fc9f..000000000 --- a/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/images/loading.gif +++ /dev/null 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 Binary files differdeleted file mode 100644 index 3bbaf5eee..000000000 --- a/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/org_chart/images/bkgd.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index e79a0515d..000000000 --- a/ONAP-SDK-APP/src/main/webapp/static/fusion/sample/org_chart/images/raspberry.jpg +++ /dev/null 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> </td>").addClass("line left top"); - var $right = $("<td> </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); |