mirror of https://github.com/apache/nifi.git
NIFI-13017: Replace JoltTransformJSON custom UI (#9117)
* NIFI-13017: - Remove old JoltTransformJSON custom UI. - Update build to use new JoltTransformJSON custom UI. - Fix revision query parameter. * NIFI-13017: - Excluding jolt transform json ui in workflow ci. * NIFI-13017: - Excluding jolt nar in workflow ci. * NIFI-13017: - Excluding jolt ui war from code coverage. * NIFI-13017: - Incorporating nifi-web-servlet-shared. - Moving QueryStringToFragmentFilter to nifi-web-servlet-shared. This closes #9117
This commit is contained in:
parent
05c92e45d8
commit
da6c9c4791
|
@ -52,6 +52,8 @@ env:
|
|||
-pl -:nifi-py4j-integration-tests
|
||||
-pl -:nifi-server-nar
|
||||
-pl -:nifi-ui
|
||||
-pl -:nifi-jolt-nar
|
||||
-pl -:nifi-jolt-transform-json-ui
|
||||
MAVEN_VERIFY_COMMAND: >-
|
||||
verify
|
||||
--show-version
|
||||
|
|
|
@ -2866,4 +2866,7 @@ The binary distribution of this product bundles 'Py4J' under a BSD license.
|
|||
OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
For the binary distribution of nifi-ui see its 3rdpartylicenses.txt
|
||||
for additional license and notice information.
|
||||
|
||||
For the binary distribution of nifi-jolt-transform-json-ui see its 3rdpartylicenses.txt
|
||||
for additional license and notice information.
|
|
@ -2574,4 +2574,7 @@ The following binary components are provided under the SIL Open Font License 1.1
|
|||
(SIL OFL 1.1) FontAwesome (4.7.0 - https://fontawesome.com/license/free)
|
||||
|
||||
For the binary distribution of nifi-ui see its 3rdpartylicenses.txt
|
||||
for additional license and notice information.
|
||||
|
||||
For the binary distribution of nifi-jolt-transform-json-ui see its 3rdpartylicenses.txt
|
||||
for additional license and notice information.
|
|
@ -1288,12 +1288,6 @@
|
|||
<artifactId>nifi-sql-reporting-tasks</artifactId>
|
||||
<version>2.0.0-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.nifi</groupId>
|
||||
<artifactId>nifi-jolt-transform-json-ui</artifactId>
|
||||
<version>2.0.0-SNAPSHOT</version>
|
||||
<type>war</type>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.nifi</groupId>
|
||||
<artifactId>nifi-standard-content-viewer</artifactId>
|
||||
|
|
|
@ -0,0 +1,52 @@
|
|||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You 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.apache.nifi.web.servlet.filter;
|
||||
|
||||
import jakarta.servlet.Filter;
|
||||
import jakarta.servlet.FilterChain;
|
||||
import jakarta.servlet.ServletException;
|
||||
import jakarta.servlet.ServletRequest;
|
||||
import jakarta.servlet.ServletResponse;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import org.apache.nifi.web.servlet.shared.RequestUriBuilder;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URI;
|
||||
|
||||
public class QueryStringToFragmentFilter implements Filter {
|
||||
|
||||
@Override
|
||||
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
|
||||
final HttpServletRequest httpServletRequest = (HttpServletRequest) request;
|
||||
final String queryString = httpServletRequest.getQueryString();
|
||||
|
||||
if (queryString != null) {
|
||||
// Some NiFi front ends use hash based routing, so they don't need to know the baseHref. With hash based
|
||||
// routing query parameters are implemented within the URL fragment. Because of this any query parameters on the
|
||||
// original URL are not considered. This filter captures those and adds them to the fragment.
|
||||
final RequestUriBuilder requestUriBuilder = RequestUriBuilder.fromHttpServletRequest(httpServletRequest).path(httpServletRequest.getContextPath()).fragment("/?" + queryString);
|
||||
final URI redirectUri = requestUriBuilder.build();
|
||||
|
||||
final HttpServletResponse httpServletResponse = (HttpServletResponse) response;
|
||||
httpServletResponse.sendRedirect(redirectUri.toString());
|
||||
} else {
|
||||
filterChain.doFilter(request, response);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -21,13 +21,10 @@ language governing permissions and limitations under the License. -->
|
|||
|
||||
<packaging>war</packaging>
|
||||
<properties>
|
||||
<frontend.dependency.configs>${basedir}/src/main/frontend</frontend.dependency.configs>
|
||||
<frontend.working.dir>${project.build.directory}/frontend-working-directory</frontend.working.dir>
|
||||
<frontend.assets>${project.build.directory}/${project.build.finalName}/assets</frontend.assets>
|
||||
<nifi.jolt.ui.working.dir>${project.build.directory}/nifi-jolt-transform-json-ui-working-directory</nifi.jolt.ui.working.dir>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.nifi</groupId>
|
||||
<artifactId>nifi-framework-api</artifactId>
|
||||
|
@ -51,10 +48,6 @@ language governing permissions and limitations under the License. -->
|
|||
<artifactId>nifi-jolt-utils</artifactId>
|
||||
<version>2.0.0-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>jakarta.servlet</groupId>
|
||||
<artifactId>jakarta.servlet-api</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>jakarta.ws.rs</groupId>
|
||||
<artifactId>jakarta.ws.rs-api</artifactId>
|
||||
|
@ -71,18 +64,6 @@ language governing permissions and limitations under the License. -->
|
|||
<groupId>org.glassfish.jersey.inject</groupId>
|
||||
<artifactId>jersey-hk2</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-lang3</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-core</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-annotations</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.glassfish.jersey.test-framework.providers</groupId>
|
||||
<artifactId>jersey-test-framework-provider-inmemory</artifactId>
|
||||
|
@ -94,93 +75,54 @@ language governing permissions and limitations under the License. -->
|
|||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.nifi</groupId>
|
||||
<artifactId>nifi-web-servlet-shared</artifactId>
|
||||
<version>2.0.0-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.nifi</groupId>
|
||||
<artifactId>nifi-frontend</artifactId>
|
||||
<version>2.0.0-SNAPSHOT</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<build>
|
||||
<plugins>
|
||||
<!--
|
||||
Unpack the built nifi front end application
|
||||
-->
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-resources-plugin</artifactId>
|
||||
<artifactId>maven-dependency-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>copy-client-side-deps</id>
|
||||
<phase>prepare-package</phase>
|
||||
<goals>
|
||||
<goal>copy-resources</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<outputDirectory>${frontend.assets}</outputDirectory>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>${frontend.working.dir}/node_modules</directory>
|
||||
<filtering>false</filtering>
|
||||
<includes>
|
||||
<include>**/*.js</include>
|
||||
<include>**/*.css</include>
|
||||
<!-- font awesome -->
|
||||
<include>font-awesome/fonts/**/*</include>
|
||||
<include>font-awesome/README.md</include>
|
||||
</includes>
|
||||
</resource>
|
||||
</resources>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>copy-package-json</id>
|
||||
<phase>generate-sources</phase>
|
||||
<goals>
|
||||
<goal>copy-resources</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<outputDirectory>${frontend.working.dir}</outputDirectory>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>${frontend.dependency.configs}</directory>
|
||||
<filtering>false</filtering>
|
||||
<includes>
|
||||
<include>package.json</include>
|
||||
<include>package-lock.json</include>
|
||||
</includes>
|
||||
</resource>
|
||||
</resources>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>com.github.eirslett</groupId>
|
||||
<artifactId>frontend-maven-plugin</artifactId>
|
||||
<version>${frontend.mvn.plugin.version}</version>
|
||||
<configuration>
|
||||
<installDirectory>${frontend.working.dir}</installDirectory>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>install-node-and-npm</id>
|
||||
<goals>
|
||||
<goal>install-node-and-npm</goal>
|
||||
</goals>
|
||||
<id>unpack-nifi-jolt-transform-json-ui</id>
|
||||
<phase>generate-resources</phase>
|
||||
<configuration>
|
||||
<nodeVersion>${node.version}</nodeVersion>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>npm install</id>
|
||||
<goals>
|
||||
<goal>npm</goal>
|
||||
<goal>unpack-dependencies</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<arguments>--cache-min Infinity install</arguments>
|
||||
<workingDirectory>${frontend.working.dir}</workingDirectory>
|
||||
<includeGroupIds>org.apache.nifi</includeGroupIds>
|
||||
<includeArtifactIds>nifi-frontend</includeArtifactIds>
|
||||
<excludeTransitive>true</excludeTransitive>
|
||||
<silent>false</silent>
|
||||
<outputDirectory>${nifi.jolt.ui.working.dir}</outputDirectory>
|
||||
<includes>nifi-jolt-transform-ui/**/*</includes>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<!--
|
||||
Include the NiFi UI and exclude the JAR dependency
|
||||
-->
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-war-plugin</artifactId>
|
||||
<configuration>
|
||||
<webResources>
|
||||
<resource>
|
||||
<directory>${nifi.jolt.ui.working.dir}/nifi-jolt-transform-ui</directory>
|
||||
<includes>**/*</includes>
|
||||
</resource>
|
||||
<resource>
|
||||
<directory>src/main/webapp/META-INF</directory>
|
||||
<targetPath>META-INF</targetPath>
|
||||
|
@ -190,21 +132,7 @@ language governing permissions and limitations under the License. -->
|
|||
<filtering>true</filtering>
|
||||
</resource>
|
||||
</webResources>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.rat</groupId>
|
||||
<artifactId>apache-rat-plugin</artifactId>
|
||||
<configuration>
|
||||
<excludes combine.children="append">
|
||||
<exclude>nbactions.xml</exclude>
|
||||
<exclude>src/main/frontend/package.json</exclude>
|
||||
<exclude>src/main/frontend/package-lock.json</exclude>
|
||||
<exclude>src/main/webapp/js/codemirror/</exclude>
|
||||
<exclude>src/main/webapp/css/main.css</exclude>
|
||||
<exclude>src/main/webapp/js/js-beautify/*</exclude>
|
||||
<exclude>src/main/webapp/fonts/**/*</exclude>
|
||||
</excludes>
|
||||
<packagingExcludes>WEB-INF/lib/nifi-frontend*.jar</packagingExcludes>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
|
|
|
@ -1,158 +0,0 @@
|
|||
{
|
||||
"name": "nifi-jolt-transform-json-ui",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"//": "limitations under the License.",
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "nifi-jolt-transform-json-ui",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"angular": "1.8.3",
|
||||
"angular-animate": "1.8.3",
|
||||
"angular-aria": "1.8.3",
|
||||
"angular-material": "1.1.26",
|
||||
"angular-messages": "1.8.3",
|
||||
"angular-ui-codemirror": "^0.3.0",
|
||||
"angular-ui-router": "^0.2.18",
|
||||
"font-awesome": "4.7.0",
|
||||
"jsonlint": "1.6.3"
|
||||
}
|
||||
},
|
||||
"node_modules/angular": {
|
||||
"version": "1.8.3",
|
||||
"resolved": "https://registry.npmjs.org/angular/-/angular-1.8.3.tgz",
|
||||
"integrity": "sha512-5qjkWIQQVsHj4Sb5TcEs4WZWpFeVFHXwxEBHUhrny41D8UrBAd6T/6nPPAsLngJCReIOqi95W3mxdveveutpZw==",
|
||||
"deprecated": "For the actively supported Angular, see https://www.npmjs.com/package/@angular/core. AngularJS support has officially ended. For extended AngularJS support options, see https://goo.gle/angularjs-path-forward."
|
||||
},
|
||||
"node_modules/angular-animate": {
|
||||
"version": "1.8.3",
|
||||
"resolved": "https://registry.npmjs.org/angular-animate/-/angular-animate-1.8.3.tgz",
|
||||
"integrity": "sha512-/LtTKvy5sD6MZbV0v+nHgOIpnFF0mrUp+j5WIxVprVhcrJriYpuCZf4S7Owj1o76De/J0eRzANUozNJ6hVepnQ==",
|
||||
"deprecated": "For the actively supported Angular, see https://www.npmjs.com/package/@angular/core. AngularJS support has officially ended. For extended AngularJS support options, see https://goo.gle/angularjs-path-forward."
|
||||
},
|
||||
"node_modules/angular-aria": {
|
||||
"version": "1.8.3",
|
||||
"resolved": "https://registry.npmjs.org/angular-aria/-/angular-aria-1.8.3.tgz",
|
||||
"integrity": "sha512-qTXclmTW/KGw5JNKKQPcCKKq6hCBZ39jYINmLgMsjUHBAoxULaMRRTaRj/L2VTOjKvK5f9enkx+EUqRqzXDSFQ==",
|
||||
"deprecated": "For the actively supported Angular, see https://www.npmjs.com/package/@angular/core. AngularJS support has officially ended. For extended AngularJS support options, see https://goo.gle/angularjs-path-forward."
|
||||
},
|
||||
"node_modules/angular-material": {
|
||||
"version": "1.1.26",
|
||||
"resolved": "https://registry.npmjs.org/angular-material/-/angular-material-1.1.26.tgz",
|
||||
"integrity": "sha512-DBLsoOP1D1E14EQsECZYabt3Jh1PpvsG8k1aZgaP/Ml57n4stpClzLhCsuTNbtB/pqq9CL8XtpCfB6fhVRWqIQ==",
|
||||
"deprecated": "For the actively supported Angular Material, see https://www.npmjs.com/package/@angular/material. AngularJS support has officially ended. For extended AngularJS support options, see https://goo.gle/angularjs-path-forward.",
|
||||
"peerDependencies": {
|
||||
"angular": "^1.7.2",
|
||||
"angular-animate": "^1.7.2",
|
||||
"angular-aria": "^1.7.2",
|
||||
"angular-messages": "^1.7.2"
|
||||
}
|
||||
},
|
||||
"node_modules/angular-messages": {
|
||||
"version": "1.8.3",
|
||||
"resolved": "https://registry.npmjs.org/angular-messages/-/angular-messages-1.8.3.tgz",
|
||||
"integrity": "sha512-f/ywtg32lqzX8FnXkBJOyn13lbCbo333/xy/5TTFcsH/gZdXoiuERj+dLTOs8xHCkOeFQhFx0VD0DgtMgSag7A=="
|
||||
},
|
||||
"node_modules/angular-ui-codemirror": {
|
||||
"version": "0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/angular-ui-codemirror/-/angular-ui-codemirror-0.3.0.tgz",
|
||||
"integrity": "sha1-5ChvxQ85PypuaXwb8xcEJOEsu2A="
|
||||
},
|
||||
"node_modules/angular-ui-router": {
|
||||
"version": "0.2.18",
|
||||
"resolved": "https://registry.npmjs.org/angular-ui-router/-/angular-ui-router-0.2.18.tgz",
|
||||
"integrity": "sha1-Ha1wQVxz1wRv0uEw3wPWL7dGQ2A=",
|
||||
"deprecated": "This npm package 'angular-ui-router' has been renamed to '@uirouter/angularjs'. Please update your package.json. See https://ui-router.github.io/blog/uirouter-scoped-packages/",
|
||||
"dependencies": {
|
||||
"angular": "^1.0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/ansi-styles": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz",
|
||||
"integrity": "sha512-3iF4FIKdxaVYT3JqQuY3Wat/T2t7TRbbQ94Fu50ZUCbLy4TFbTzr90NOHQodQkNqmeEGCw8WbeP78WNi6SKYUA==",
|
||||
"engines": {
|
||||
"node": ">=0.8.0"
|
||||
}
|
||||
},
|
||||
"node_modules/chalk": {
|
||||
"version": "0.4.0",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz",
|
||||
"integrity": "sha512-sQfYDlfv2DGVtjdoQqxS0cEZDroyG8h6TamA6rvxwlrU5BaSLDx9xhatBYl2pxZ7gmpNaPFVwBtdGdu5rQ+tYQ==",
|
||||
"dependencies": {
|
||||
"ansi-styles": "~1.0.0",
|
||||
"has-color": "~0.1.0",
|
||||
"strip-ansi": "~0.1.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.8.0"
|
||||
}
|
||||
},
|
||||
"node_modules/font-awesome": {
|
||||
"version": "4.7.0",
|
||||
"resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz",
|
||||
"integrity": "sha512-U6kGnykA/6bFmg1M/oT9EkFeIYv7JlX3bozwQJWiiLz6L0w3F5vBVPxHlwyX/vtNq1ckcpRKOB9f2Qal/VtFpg==",
|
||||
"engines": {
|
||||
"node": ">=0.10.3"
|
||||
}
|
||||
},
|
||||
"node_modules/has-color": {
|
||||
"version": "0.1.7",
|
||||
"resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz",
|
||||
"integrity": "sha512-kaNz5OTAYYmt646Hkqw50/qyxP2vFnTVu5AQ1Zmk22Kk5+4Qx6BpO8+u7IKsML5fOsFk0ZT0AcCJNYwcvaLBvw==",
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/jsonlint": {
|
||||
"version": "1.6.3",
|
||||
"resolved": "https://registry.npmjs.org/jsonlint/-/jsonlint-1.6.3.tgz",
|
||||
"integrity": "sha512-jMVTMzP+7gU/IyC6hvKyWpUU8tmTkK5b3BPNuMI9U8Sit+YAWLlZwB6Y6YrdCxfg2kNz05p3XY3Bmm4m26Nv3A==",
|
||||
"dependencies": {
|
||||
"JSV": "^4.0.x",
|
||||
"nomnom": "^1.5.x"
|
||||
},
|
||||
"bin": {
|
||||
"jsonlint": "lib/cli.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/JSV": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/JSV/-/JSV-4.0.2.tgz",
|
||||
"integrity": "sha512-ZJ6wx9xaKJ3yFUhq5/sk82PJMuUyLk277I8mQeyDgCTjGdjWJIvPfaU5LIXaMuaN2UO1X3kZH4+lgphublZUHw==",
|
||||
"engines": {
|
||||
"node": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/nomnom": {
|
||||
"version": "1.8.1",
|
||||
"resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.8.1.tgz",
|
||||
"integrity": "sha512-5s0JxqhDx9/rksG2BTMVN1enjWSvPidpoSgViZU4ZXULyTe+7jxcCRLB6f42Z0l1xYJpleCBtSyY6Lwg3uu5CQ==",
|
||||
"deprecated": "Package no longer supported. Contact support@npmjs.com for more info.",
|
||||
"dependencies": {
|
||||
"chalk": "~0.4.0",
|
||||
"underscore": "~1.6.0"
|
||||
}
|
||||
},
|
||||
"node_modules/strip-ansi": {
|
||||
"version": "0.1.1",
|
||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz",
|
||||
"integrity": "sha512-behete+3uqxecWlDAm5lmskaSaISA+ThQ4oNNBDTBJt0x2ppR6IPqfZNuj6BLaLJ/Sji4TPZlcRyOis8wXQTLg==",
|
||||
"bin": {
|
||||
"strip-ansi": "cli.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.8.0"
|
||||
}
|
||||
},
|
||||
"node_modules/underscore": {
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz",
|
||||
"integrity": "sha512-z4o1fvKUojIWh9XuaVLUDdf86RQiq13AC1dmHbTpoyuu+bquHms76v16CjycCbec87J7z0k//SiQVk0sMdFmpQ=="
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,34 +0,0 @@
|
|||
{
|
||||
"//": "Licensed to the Apache Software Foundation (ASF) under one or more",
|
||||
"//": "contributor license agreements. See the NOTICE file distributed with",
|
||||
"//": "this work for additional information regarding copyright ownership.",
|
||||
"//": "The ASF licenses this file to You 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.",
|
||||
"name": "nifi-jolt-transform-json-ui",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"angular-ui-codemirror": "^0.3.0",
|
||||
"angular-ui-router": "^0.3.2",
|
||||
"font-awesome": "4.7.0",
|
||||
"jsonlint": "1.6.3",
|
||||
"angular": "1.8.3",
|
||||
"angular-animate": "1.8.3",
|
||||
"angular-aria": "1.8.3",
|
||||
"angular-material": "1.1.26",
|
||||
"angular-messages": "1.8.3"
|
||||
},
|
||||
"description": "Apache NiFi Jolt Transform JSON UI 3rd party client side resources.",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/apache/nifi"
|
||||
}
|
||||
}
|
|
@ -237,72 +237,6 @@ licenses.
|
|||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
||||
THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
This product bundles 'AngularUI Codemirror' which is available under an MIT license.
|
||||
|
||||
Copyright (c) 2012 the AngularUI Team, http://angular-ui.github.com
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
This product bundles 'AngularUI Router' which is available under an MIT license.
|
||||
|
||||
Copyright (c) 2013-2015 The AngularUI Team, Karsten Sperling
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
This product bundles 'js-beautify' which is available under an MIT license.
|
||||
|
||||
Copyright (c) 2007-2013 Einar Lielmanis and contributors.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
The binary distribution of this product bundles 'Bouncy Castle JDK 1.5'
|
||||
under an MIT style license.
|
||||
|
||||
|
@ -326,153 +260,5 @@ This product bundles 'js-beautify' which is available under an MIT license.
|
|||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
This product bundles 'Fontello' which is available under an MIT license.
|
||||
|
||||
Copyright (C) 2011 by Vitaly Puzrin
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
This product bundles 'jsonlint' which is available under an MIT license.
|
||||
|
||||
Copyright (C) 2012 Zachary Carter
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
This product bundles 'Angular' which is available under an MIT license.
|
||||
|
||||
Copyright (c) 2010-2016 Google, Inc. http://angularjs.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
This product bundles 'Angular Material' which is available under an MIT license.
|
||||
|
||||
Copyright (c) 2014-2016 Google, Inc. http://angularjs.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
This product bundles 'Angular Aria' which is available under an MIT license.
|
||||
|
||||
Copyright (c) 2010-2016 Google, Inc. http://angularjs.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
|
||||
This product bundles 'Angular Animate' which is available under an MIT license.
|
||||
|
||||
Copyright (c) 2010-2016 Google, Inc. http://angularjs.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
|
||||
This product bundles 'Angular Messages' which is available under an MIT license.
|
||||
|
||||
Copyright (c) 2010-2016 Google, Inc. http://angularjs.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
For the binary distribution of nifi-jolt-transform-json-ui see its 3rdpartylicenses.txt
|
||||
for additional license and notice information.
|
|
@ -63,5 +63,6 @@ SIL OFL 1.1
|
|||
The following binary components are provided under the SIL Open Font License 1.1
|
||||
(SIL OFL 1.1) FontAwesome (4.7.0 - https://fontawesome.com/license/free)
|
||||
|
||||
|
||||
For the binary distribution of nifi-jolt-transform-json-ui see its 3rdpartylicenses.txt
|
||||
for additional license and notice information.
|
||||
|
||||
|
|
|
@ -1,72 +0,0 @@
|
|||
<%--
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You 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.
|
||||
--%>
|
||||
<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %>
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<link rel="stylesheet" type="text/css" href="js/codemirror/lib/codemirror.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="js/codemirror/addon/lint/lint.css">
|
||||
<link rel="stylesheet" type="text/css" href="assets/angular-material/angular-material.min.css">
|
||||
<link rel="stylesheet" type="text/css" href="fonts/flowfont/flowfont.css" />
|
||||
<link rel="stylesheet" type="text/css" href="assets/font-awesome/css/font-awesome.min.css" />
|
||||
<link rel="stylesheet" type="text/css" href="css/common-ui.css" />
|
||||
<link rel="stylesheet" type="text/css" href="css/main.css">
|
||||
</head>
|
||||
|
||||
<body ng-app="standardUI" ng-cloak>
|
||||
|
||||
<!--Parent Libraries-->
|
||||
<script type="text/javascript" src="assets/jsonlint/lib/jsonlint.js"></script>
|
||||
<script type="text/javascript" src="js/codemirror/lib/codemirror-compressed.js"></script>
|
||||
<script type="text/javascript" src="js/codemirror/addon/lint/lint.js"></script>
|
||||
<script type="text/javascript" src="js/codemirror/addon/lint/json-lint.js"></script>
|
||||
<script type="text/javascript" src="js/nf/nf-namespace.js"></script>
|
||||
<script type="text/javascript" src="js/nf/nf-authorization-storage.js"></script>
|
||||
<script type="text/javascript" src="js/nf/nf-storage.js"></script>
|
||||
<script type="text/javascript" src="assets/angular/angular.min.js"></script>
|
||||
<script type="text/javascript" src="assets/angular-animate/angular-animate.min.js"></script>
|
||||
<script type="text/javascript" src="assets/angular-aria/angular-aria.min.js"></script>
|
||||
<script type="text/javascript" src="assets/angular-messages/angular-messages.min.js"></script>
|
||||
<script type="text/javascript" src="assets/angular-material/angular-material.min.js"></script>
|
||||
|
||||
<script type="text/javascript" src="assets/angular-ui-codemirror/src/ui-codemirror.js"></script>
|
||||
<script type="text/javascript" src="assets/angular-ui-router/release/angular-ui-router.min.js"></script>
|
||||
|
||||
<!--Local Libraries-->
|
||||
<script type="text/javascript" src="js/js-beautify/beautify.js"></script>
|
||||
|
||||
<!--Custom UI App-->
|
||||
<script type="text/javascript" src="app/app.js"></script>
|
||||
|
||||
<!--Custom Global Components-->
|
||||
<script type="text/javascript" src="app/components/error/error.state.js"></script>
|
||||
<script type="text/javascript" src="app/components/processor/processor.service.js"></script>
|
||||
|
||||
<!--Custom View Components-->
|
||||
<script type="text/javascript" src="app/main/main.state.js"></script>
|
||||
<script type="text/javascript" src="app/main/main.controller.js"></script>
|
||||
<script type="text/javascript" src="app/transformjson/transformjson.state.js"></script>
|
||||
<script type="text/javascript" src="app/transformjson/transformjson.controller.js"></script>
|
||||
<script type="text/javascript" src="app/transformjson/transformjson.service.js"></script>
|
||||
|
||||
|
||||
<div ui-view id="mainView">
|
||||
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -35,19 +35,19 @@
|
|||
<url-pattern>/api/*</url-pattern>
|
||||
</servlet-mapping>
|
||||
|
||||
<servlet>
|
||||
<servlet-name>index</servlet-name>
|
||||
<jsp-file>/WEB-INF/jsp/index.jsp</jsp-file>
|
||||
</servlet>
|
||||
<!-- login filter -->
|
||||
<filter>
|
||||
<filter-name>FragmentFilter</filter-name>
|
||||
<filter-class>org.apache.nifi.web.servlet.filter.QueryStringToFragmentFilter</filter-class>
|
||||
</filter>
|
||||
<filter-mapping>
|
||||
<filter-name>FragmentFilter</filter-name>
|
||||
<url-pattern></url-pattern>
|
||||
</filter-mapping>
|
||||
|
||||
<servlet-mapping>
|
||||
<servlet-name>index</servlet-name>
|
||||
<url-pattern>/configure</url-pattern>
|
||||
<servlet-name>default</servlet-name>
|
||||
<url-pattern></url-pattern>
|
||||
</servlet-mapping>
|
||||
|
||||
<welcome-file-list>
|
||||
<welcome-file>configure</welcome-file>
|
||||
</welcome-file-list>
|
||||
|
||||
</web-app>
|
||||
|
||||
|
|
|
@ -1,120 +0,0 @@
|
|||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You 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.
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
var AppRun = function($rootScope,$state,$http){
|
||||
|
||||
// Set CSRF Cookie and Header names to match Spring Security configuration in StandardCookieCsrfTokenRepository
|
||||
$http.defaults.xsrfCookieName = '__Secure-Request-Token';
|
||||
$http.defaults.xsrfHeaderName = 'Request-Token';
|
||||
|
||||
$rootScope.$on('$stateChangeError', function(event, toState, toParams, fromState, fromParams, error){
|
||||
event.preventDefault();
|
||||
$state.go('error');
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
var AppConfig = function ($urlRouterProvider,$mdThemingProvider) {
|
||||
|
||||
$urlRouterProvider.otherwise(function($injector,$location){
|
||||
var urlComponents = $location.absUrl().split("?");
|
||||
return '/main?' + urlComponents[1];
|
||||
});
|
||||
|
||||
//Define app palettes
|
||||
$mdThemingProvider.definePalette('basePalette', {
|
||||
'50': '728E9B',
|
||||
'100': '728E9B',
|
||||
'200': '004849', /* link-color */
|
||||
'300': '775351', /* value-color */
|
||||
'400': '728E9B',
|
||||
'500': '728E9B', /* base-color */
|
||||
'600': '728E9B',
|
||||
'700': '728E9B',
|
||||
'800': '728E9B',
|
||||
'900': 'rgba(249,250,251,0.97)', /* tint base-color 96% */
|
||||
'A100': '728E9B',
|
||||
'A200': '728E9B',
|
||||
'A400': '728E9B',
|
||||
'A700': '728E9B',
|
||||
'contrastDefaultColor': 'light',
|
||||
'contrastDarkColors': ['A100'],
|
||||
'contrastLightColors': undefined
|
||||
});
|
||||
$mdThemingProvider.definePalette('tintPalette', {
|
||||
'50': '728E9B',
|
||||
'100': '728E9B',
|
||||
'200': 'CCDADB', /* tint link-color 20% */
|
||||
'300': '728E9B',
|
||||
'400': 'AABBC3', /* tint base-color 40% */
|
||||
'500': '728E9B',
|
||||
'600': 'C7D2D7', /* tint base-color 60% */
|
||||
'700': '728E9B',
|
||||
'800': 'E3E8EB', /* tint base-color 80% */
|
||||
'900': '728E9B',
|
||||
'A100': '728E9B',
|
||||
'A200': '728E9B',
|
||||
'A400': '728E9B',
|
||||
'A700': '728E9B',
|
||||
'contrastDefaultColor': 'light',
|
||||
'contrastDarkColors': ['A100'],
|
||||
'contrastLightColors': undefined
|
||||
});
|
||||
$mdThemingProvider.definePalette('warnPalette', {
|
||||
'50': 'BA554A',
|
||||
'100': 'BA554A',
|
||||
'200': 'BA554A',
|
||||
'300': 'BA554A',
|
||||
'400': 'BA554A',
|
||||
'500': 'BA554A', /* warn-color */
|
||||
'600': 'BA554A',
|
||||
'700': 'BA554A',
|
||||
'800': 'BA554A',
|
||||
'900': 'BA554A',
|
||||
'A100': 'BA554A',
|
||||
'A200': 'BA554A',
|
||||
'A400': 'BA554A',
|
||||
'A700': 'BA554A',
|
||||
'contrastDefaultColor': 'light',
|
||||
'contrastDarkColors': ['A100'],
|
||||
'contrastLightColors': undefined
|
||||
});
|
||||
$mdThemingProvider.theme("default").primaryPalette("basePalette", {
|
||||
"default": "500",
|
||||
"hue-1": "200",
|
||||
"hue-2": "300",
|
||||
"hue-3": "900"
|
||||
}).accentPalette("tintPalette", {
|
||||
"default": "200",
|
||||
"hue-1": "400",
|
||||
"hue-2": "600",
|
||||
"hue-3": "800"
|
||||
}).warnPalette("warnPalette", {
|
||||
"default": "500"
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
AppRun.$inject = ['$rootScope','$state','$http'];
|
||||
|
||||
AppConfig.$inject = ['$urlRouterProvider','$mdThemingProvider'];
|
||||
|
||||
angular.module('standardUI', ['ui.codemirror','ui.router','ngMaterial'])
|
||||
.run(AppRun)
|
||||
.config(AppConfig);
|
|
@ -1,30 +0,0 @@
|
|||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You 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.
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
var ErrorState = function($stateProvider) {
|
||||
|
||||
$stateProvider
|
||||
.state('error', {
|
||||
url: "/error",
|
||||
templateUrl: "app/components/error/error.view.html"
|
||||
})
|
||||
};
|
||||
|
||||
ErrorState.$inject = ['$stateProvider'];
|
||||
angular.module('standardUI').config(ErrorState);
|
|
@ -1,15 +0,0 @@
|
|||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You 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.
|
||||
-->
|
||||
<h2> An error has occurred loading the editor.</h2>
|
|
@ -1,53 +0,0 @@
|
|||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You 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.
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
var ProcessorService = function ProcessorService($http) {
|
||||
|
||||
return {
|
||||
'setProperties': setProperties,
|
||||
'getType': getType,
|
||||
'getDetails' : getDetails
|
||||
};
|
||||
|
||||
function setProperties(processorId,revisionId,clientId,disconnectedNodeAcknowledged,properties){
|
||||
var urlParams = 'processorId='+processorId+'&revisionId='+revisionId+'&clientId='+clientId+'&disconnectedNodeAcknowledged='+disconnectedNodeAcknowledged;
|
||||
return $http({url: 'api/standard/processor/properties?'+urlParams,method:'PUT',data:properties});
|
||||
}
|
||||
|
||||
function getType(id) {
|
||||
return $http({
|
||||
url: 'api/standard/processor/details?processorId=' + id,
|
||||
method: 'GET',
|
||||
transformResponse: [function (data) {
|
||||
var obj = JSON.parse(data)
|
||||
var type = obj['type'];
|
||||
return type;
|
||||
}]
|
||||
});
|
||||
}
|
||||
|
||||
function getDetails(id) {
|
||||
return $http({ url: 'api/standard/processor/details?processorId=' + id, method: 'GET'});
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
ProcessorService.$inject = ['$http'];
|
||||
|
||||
angular.module('standardUI').factory('ProcessorService', ProcessorService);
|
|
@ -1,35 +0,0 @@
|
|||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You 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.
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
var MainController = function ($scope, $state, ProcessorService) {
|
||||
|
||||
ProcessorService.getType($state.params.id).then(function(response){
|
||||
var type = response.data
|
||||
var stateName = type.substring(type.lastIndexOf(".") + 1, type.length).toLowerCase();
|
||||
var result = $state.go(stateName,$state.params);
|
||||
|
||||
}).catch(function(response) {
|
||||
$state.go('error');
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
MainController.$inject = ['$scope','$state','ProcessorService'];
|
||||
|
||||
angular.module('standardUI').controller('MainController', MainController);
|
|
@ -1,31 +0,0 @@
|
|||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You 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.
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
var MainState = function($stateProvider) {
|
||||
|
||||
$stateProvider
|
||||
.state('main', {
|
||||
url: "/main?id&revision&clientId&editable&disconnectedNodeAcknowledged",
|
||||
controller: 'MainController'
|
||||
})
|
||||
};
|
||||
|
||||
MainState.$inject = ['$stateProvider'];
|
||||
|
||||
angular.module('standardUI').config(MainState);
|
|
@ -1,433 +0,0 @@
|
|||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You 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.
|
||||
*/
|
||||
'use strict';
|
||||
|
||||
var TransformJsonController = function ($scope, $state, $q, $mdDialog, $timeout, TransformJsonService, ProcessorService, details) {
|
||||
|
||||
$scope.processorId = '';
|
||||
$scope.clientId = '';
|
||||
$scope.revisionId = '';
|
||||
$scope.editable = false;
|
||||
$scope.disconnectedNodeAcknowledged = false;
|
||||
$scope.specEditor = {};
|
||||
$scope.inputEditor = {};
|
||||
$scope.jsonInput = '';
|
||||
$scope.jsonOutput = '';
|
||||
$scope.sortOutput = false;
|
||||
$scope.validObj = {};
|
||||
$scope.error = '';
|
||||
$scope.disableCSS = '';
|
||||
$scope.saveStatus = '';
|
||||
$scope.specUpdated = false;
|
||||
$scope.variables = {};
|
||||
$scope.joltVariables = {};
|
||||
|
||||
$scope.convertToArray= function (map){
|
||||
var labelValueArray = [];
|
||||
angular.forEach(map, function(value, key){
|
||||
labelValueArray.push({'label' : value, 'value' : key});
|
||||
});
|
||||
return labelValueArray;
|
||||
};
|
||||
|
||||
$scope.getJsonSpec = function(details){
|
||||
if(details['properties']['Jolt Specification'] != null && details['properties']['Jolt Specification'] != "") {
|
||||
return details['properties']['Jolt Specification'];
|
||||
}
|
||||
else return '';
|
||||
};
|
||||
|
||||
$scope.getTransform = function(details){
|
||||
return details['properties']['Jolt Transform'] ? details['properties']['Jolt Transform'] :
|
||||
details['descriptors']['Jolt Transform']['defaultValue'] ;
|
||||
};
|
||||
|
||||
$scope.getCustomClass = function(details){
|
||||
if(details['properties']['Custom Transformation Class Name'] != null && details['properties']['Custom Transformation Class Name'] != "") {
|
||||
return details['properties']['Custom Transformation Class Name'];
|
||||
}
|
||||
else return '';
|
||||
};
|
||||
|
||||
$scope.getCustomModules = function(details){
|
||||
if(details['properties']['Custom Module Directory'] != null && details['properties']['Custom Module Directory'] != "") {
|
||||
return details['properties']['Custom Module Directory'];
|
||||
}
|
||||
else return '';
|
||||
};
|
||||
|
||||
$scope.getTransformOptions = function(details){
|
||||
return $scope.convertToArray(details['descriptors']['Jolt Transform']['allowableValues']);
|
||||
};
|
||||
|
||||
$scope.populateScopeWithDetails = function(details){
|
||||
$scope.jsonSpec = $scope.getJsonSpec(details);
|
||||
$scope.transform = $scope.getTransform(details);
|
||||
$scope.transformOptions = $scope.getTransformOptions(details);
|
||||
$scope.customClass = $scope.getCustomClass(details);
|
||||
$scope.modules = $scope.getCustomModules(details);
|
||||
};
|
||||
|
||||
$scope.populateScopeWithDetails(details.data);
|
||||
|
||||
$scope.clearValidation = function(){
|
||||
$scope.validObj = {};
|
||||
};
|
||||
|
||||
$scope.clearError = function(){
|
||||
$scope.error = '';
|
||||
};
|
||||
|
||||
$scope.clearSave = function(){
|
||||
if($scope.saveStatus != ''){
|
||||
$scope.saveStatus = '';
|
||||
}
|
||||
};
|
||||
|
||||
$scope.clearMessages = function(){
|
||||
$scope.clearSave();
|
||||
$scope.clearError();
|
||||
$scope.clearValidation();
|
||||
};
|
||||
|
||||
$scope.showError = function(message,detail){
|
||||
$scope.error = message;
|
||||
console.log('Error received:', detail);
|
||||
};
|
||||
|
||||
$scope.initEditors = function(_editor) {
|
||||
|
||||
_editor.setOption('extraKeys',{
|
||||
|
||||
// We're not enabling search, so repurpose Shift-Ctrl-F for auto-format / beautify
|
||||
'Shift-Ctrl-F': function(cm){
|
||||
var jsonValue = js_beautify(cm.getDoc().getValue(), {
|
||||
'indent_size': 1,
|
||||
'indent_char': '\t'
|
||||
});
|
||||
cm.getDoc().setValue(jsonValue)
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
$scope.initSpecEditor = function(_editor){
|
||||
$scope.initEditors(_editor);
|
||||
$scope.specEditor = _editor;
|
||||
_editor.on('update',function(cm){
|
||||
if($scope.transform == 'jolt-transform-sort'){
|
||||
$scope.toggleEditorErrors(_editor,'hide');
|
||||
}
|
||||
});
|
||||
|
||||
_editor.on('change',function(cm,changeObj){
|
||||
|
||||
if(!($scope.transform == 'jolt-transform-sort' && changeObj.text.toString() == "")){
|
||||
$scope.clearMessages();
|
||||
if(changeObj.text.toString() != changeObj.removed.toString()){
|
||||
$scope.specUpdated = true;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
$scope.initInputEditor = function(_editor){
|
||||
$scope.initEditors(_editor);
|
||||
$scope.inputEditor = _editor;
|
||||
|
||||
_editor.on('change',function(cm,changeObj){
|
||||
$scope.clearMessages();
|
||||
});
|
||||
|
||||
_editor.clearGutter('CodeMirror-lint-markers');
|
||||
};
|
||||
|
||||
$scope.editorProperties = {
|
||||
lineNumbers: true,
|
||||
gutters: ['CodeMirror-lint-markers'],
|
||||
mode: 'application/json',
|
||||
lint: true,
|
||||
value: $scope.jsonSpec,
|
||||
onLoad: $scope.initSpecEditor
|
||||
};
|
||||
|
||||
$scope.inputProperties = {
|
||||
lineNumbers: true,
|
||||
gutters: ['CodeMirror-lint-markers'],
|
||||
mode: 'application/json',
|
||||
lint: true,
|
||||
value: "",
|
||||
onLoad: $scope.initInputEditor
|
||||
};
|
||||
|
||||
$scope.outputProperties = {
|
||||
lineNumbers: true,
|
||||
gutters: ['CodeMirror-lint-markers'],
|
||||
mode: 'application/json',
|
||||
lint: false,
|
||||
readOnly: true
|
||||
};
|
||||
|
||||
$scope.formatEditor = function(editor){
|
||||
|
||||
var jsonValue = js_beautify(editor.getDoc().getValue(), {
|
||||
'indent_size': 1,
|
||||
'indent_char': '\t'
|
||||
});
|
||||
editor.getDoc().setValue(jsonValue);
|
||||
|
||||
};
|
||||
|
||||
$scope.hasJsonErrors = function(input, transform){
|
||||
try{
|
||||
jsonlint.parse(input);
|
||||
}catch(e){
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
$scope.toggleEditorErrors = function(editor,toggle){
|
||||
var display = editor.display.wrapper;
|
||||
var errors = display.getElementsByClassName("CodeMirror-lint-marker-error");
|
||||
|
||||
if(toggle == 'hide'){
|
||||
|
||||
angular.forEach(errors,function(error){
|
||||
var element = angular.element(error);
|
||||
element.addClass('hide');
|
||||
});
|
||||
|
||||
var markErrors = display.getElementsByClassName("CodeMirror-lint-mark-error");
|
||||
angular.forEach(markErrors,function(error){
|
||||
var element = angular.element(error);
|
||||
element.addClass('CodeMirror-lint-mark-error-hide');
|
||||
element.removeClass('CodeMirror-lint-mark-error');
|
||||
});
|
||||
|
||||
}else{
|
||||
|
||||
angular.forEach(errors,function(error){
|
||||
var element = angular.element(error);
|
||||
element.removeClass('hide');
|
||||
});
|
||||
|
||||
var markErrors = display.getElementsByClassName("CodeMirror-lint-mark-error-hide");
|
||||
angular.forEach(markErrors,function(error){
|
||||
var element = angular.element(error);
|
||||
element.addClass('CodeMirror-lint-mark-error');
|
||||
element.removeClass('CodeMirror-lint-mark-error-hide');
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
$scope.toggleEditor = function(editor,transform,specUpdated){
|
||||
|
||||
if(transform == 'jolt-transform-sort'){
|
||||
editor.setOption("readOnly","nocursor");
|
||||
$scope.disableCSS = "trans";
|
||||
$scope.toggleEditorErrors(editor,'hide');
|
||||
}
|
||||
else{
|
||||
editor.setOption("readOnly",false);
|
||||
$scope.disableCSS = "";
|
||||
$scope.toggleEditorErrors(editor,'show');
|
||||
}
|
||||
|
||||
$scope.specUpdated = specUpdated;
|
||||
|
||||
$scope.clearMessages();
|
||||
|
||||
}
|
||||
|
||||
$scope.getJoltSpec = function(transform,jsonSpec,jsonInput){
|
||||
|
||||
return {
|
||||
"transform": transform,
|
||||
"specification" : jsonSpec,
|
||||
"input" : jsonInput,
|
||||
"customClass" : $scope.customClass,
|
||||
"modules": $scope.modules,
|
||||
"expressionLanguageAttributes":$scope.joltVariables
|
||||
};
|
||||
};
|
||||
|
||||
$scope.getProperties = function(transform,jsonSpec){
|
||||
|
||||
return {
|
||||
"Jolt Transform" : transform != "" ? transform : null,
|
||||
"Jolt Specification": jsonSpec != "" ? jsonSpec : null
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
$scope.getSpec = function(transform,jsonSpec){
|
||||
if(transform != 'jolt-transform-sort'){
|
||||
return jsonSpec;
|
||||
}else{
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
$scope.validateJson = function(jsonInput,jsonSpec,transform){
|
||||
|
||||
var deferred = $q.defer();
|
||||
|
||||
$scope.clearError();
|
||||
|
||||
if( transform == 'jolt-transform-sort' ||!$scope.hasJsonErrors(jsonSpec,transform) ){
|
||||
var joltSpec = $scope.getJoltSpec(transform,jsonSpec,jsonInput);
|
||||
|
||||
TransformJsonService.validate(joltSpec).then(function(response){
|
||||
$scope.validObj = response.data;
|
||||
deferred.resolve($scope.validObj);
|
||||
}).catch(function(response) {
|
||||
$scope.showError("Error occurred during validation",response.statusText)
|
||||
deferred.reject($scope.error);
|
||||
});
|
||||
|
||||
}else{
|
||||
$scope.validObj = {"valid":false,"message":"JSON Spec provided is not valid JSON format"};
|
||||
deferred.resolve($scope.validObj);
|
||||
}
|
||||
|
||||
return deferred.promise;
|
||||
|
||||
};
|
||||
|
||||
$scope.transformJson = function(jsonInput,jsonSpec,transform){
|
||||
|
||||
|
||||
if( !$scope.hasJsonErrors(jsonInput,transform) ){
|
||||
|
||||
$scope.validateJson(jsonInput,jsonSpec,transform).then(function(response){
|
||||
|
||||
var validObj = response;
|
||||
|
||||
if(validObj.valid == true){
|
||||
|
||||
var joltSpec = $scope.getJoltSpec(transform,jsonSpec,jsonInput);
|
||||
|
||||
TransformJsonService.execute(joltSpec).then(function(response){
|
||||
|
||||
$scope.jsonOutput = js_beautify(response.data, {
|
||||
'indent_size': 1,
|
||||
'indent_char': '\t'
|
||||
});
|
||||
|
||||
})
|
||||
.catch(function(response) {
|
||||
$scope.showError("Error occurred during transformation",response.statusText)
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
}else{
|
||||
$scope.validObj = {"valid":false,"message":"JSON Input provided is not valid JSON format"};
|
||||
}
|
||||
};
|
||||
|
||||
$scope.saveSpec = function(jsonInput,jsonSpec,transform,processorId,clientId,disconnectedNodeAcknowledged,revisionId){
|
||||
|
||||
$scope.clearError();
|
||||
|
||||
var properties = $scope.getProperties(transform,jsonSpec);
|
||||
|
||||
ProcessorService.setProperties(processorId,revisionId,clientId,disconnectedNodeAcknowledged,properties)
|
||||
.then(function(response) {
|
||||
var details = response.data;
|
||||
$scope.populateScopeWithDetails(details);
|
||||
$scope.saveStatus = "Changes saved successfully";
|
||||
$scope.specUpdated = false;
|
||||
})
|
||||
.catch(function(response) {
|
||||
$scope.showError("Error occurred during save properties",response.statusText);
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
$scope.addVariable = function(variables,key,value){
|
||||
if(key != '' && value != ''){
|
||||
variables[key] = value;
|
||||
}
|
||||
|
||||
$timeout(function() {
|
||||
var scroller = document.getElementById("variableList");
|
||||
scroller.scrollTop = scroller.scrollHeight;
|
||||
}, 0, false);
|
||||
}
|
||||
|
||||
$scope.deleteVariable = function(variables,key){
|
||||
delete variables[key];
|
||||
}
|
||||
|
||||
$scope.saveVariables = function(variables){
|
||||
angular.copy($scope.variables,$scope.joltVariables);
|
||||
$scope.cancelDialog();
|
||||
}
|
||||
|
||||
$scope.cancelDialog = function(){
|
||||
$mdDialog.cancel();
|
||||
}
|
||||
|
||||
$scope.showVariableDialog = function(ev) {
|
||||
angular.copy($scope.joltVariables, $scope.variables);
|
||||
$mdDialog.show({
|
||||
locals: {parent: $scope},
|
||||
controller: angular.noop,
|
||||
controllerAs: 'dialogCtl',
|
||||
bindToController: true,
|
||||
templateUrl: 'app/transformjson/variable-dialog-template.html',
|
||||
targetEvent: ev,
|
||||
clickOutsideToClose: false
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
$scope.initController = function(params){
|
||||
$scope.processorId = params.id;
|
||||
$scope.clientId = params.clientId;
|
||||
$scope.revisionId = params.revision;
|
||||
$scope.disconnectedNodeAcknowledged = params.disconnectedNodeAcknowledged === 'true';
|
||||
$scope.editable = params.editable === 'true';
|
||||
|
||||
var jsonSpec = $scope.getSpec($scope.transform,$scope.jsonSpec);
|
||||
if(jsonSpec != null && jsonSpec != ""){
|
||||
setTimeout(function(){
|
||||
$scope.$apply(function(){
|
||||
$scope.validateJson($scope.jsonInput,jsonSpec,$scope.transform);
|
||||
});
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
$scope.$watch("specEditor", function (newValue, oldValue ) {
|
||||
$scope.toggleEditor(newValue,$scope.transform,false);
|
||||
});
|
||||
|
||||
$scope.initController($state.params);
|
||||
|
||||
};
|
||||
|
||||
TransformJsonController.$inject = ['$scope', '$state', '$q','$mdDialog','$timeout','TransformJsonService', 'ProcessorService','details'];
|
||||
angular.module('standardUI').controller('TransformJsonController', TransformJsonController);
|
|
@ -1,41 +0,0 @@
|
|||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You 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.
|
||||
*/
|
||||
'use strict';
|
||||
|
||||
var TransformJsonService = function TransformJsonService($http) {
|
||||
|
||||
return {
|
||||
'validate': validate,
|
||||
'execute' : execute
|
||||
};
|
||||
|
||||
|
||||
function validate(spec){
|
||||
return $http({ url:'api/standard/transformjson/validate',method:'POST', data:spec });
|
||||
}
|
||||
|
||||
function execute(spec){
|
||||
return $http({ url:'api/standard/transformjson/execute',method:'POST', data:spec,
|
||||
transformResponse: [function (data) {
|
||||
return data;
|
||||
}]});
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
TransformJsonService.$inject = ['$http'];
|
||||
angular.module('standardUI').factory('TransformJsonService', TransformJsonService);
|
|
@ -1,39 +0,0 @@
|
|||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You 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.
|
||||
*/
|
||||
'use strict';
|
||||
|
||||
var TransformJsonState = function($stateProvider) {
|
||||
|
||||
$stateProvider
|
||||
.state('jolttransformjson', {
|
||||
url: "/transformjson?id&revision&clientId&editable&disconnectedNodeAcknowledged",
|
||||
templateUrl: "app/transformjson/transformjson.view.html",
|
||||
controller: 'TransformJsonController',
|
||||
resolve: {
|
||||
details: ['ProcessorService','$stateParams',
|
||||
function (ProcessorService,$stateParams) {
|
||||
return ProcessorService.getDetails($stateParams.id);
|
||||
}
|
||||
]
|
||||
}
|
||||
})
|
||||
|
||||
};
|
||||
|
||||
TransformJsonState.$inject = ['$stateProvider'];
|
||||
|
||||
angular.module('standardUI').config(TransformJsonState);
|
|
@ -1,124 +0,0 @@
|
|||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You 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.
|
||||
-->
|
||||
<div layout="column">
|
||||
<div layout="column" layout>
|
||||
|
||||
<div class="md-toolbar-tools large-label">
|
||||
<span>Jolt Transformation DSL</span>
|
||||
<span flex></span>
|
||||
<span ng-show="(jsonSpec || transform == 'jolt-transform-sort') && !validObj.valid && !error">{{validObj.message}}</span>
|
||||
<span ng-show="jsonSpec && validObj.valid && !error">Specification is Valid</span>
|
||||
<span ng-show="error">{{error}}</span>
|
||||
<span>
|
||||
|
||||
<button class="primary-button" ng-click="validateJson(jsonInput,getSpec(transform,jsonSpec),transform)" ng-disabled="!(jsonSpec)">
|
||||
Validate
|
||||
</button>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="md-toolbar-tools large-label">
|
||||
<md-select flex="30" ng-model="transform" ng-change="toggleEditor(specEditor,transform,true)" class="md-no-underline">
|
||||
<md-option ng-repeat="option in transformOptions | orderBy: 'label'" ng-value="option.value">{{option.label}}</md-option>
|
||||
</md-select>
|
||||
<span flex></span>
|
||||
</div>
|
||||
|
||||
<div class="md-toolbar-tools large-label">
|
||||
<span>
|
||||
Jolt Specification
|
||||
</span>
|
||||
<span flex></span>
|
||||
<span class="info">
|
||||
|
||||
<button class="small-button" ng-click="formatEditor(specEditor)" ng-disabled="!jsonSpec || transform == 'jolt-transform-sort'">
|
||||
<i class="fa fa-align-left" aria-hidden="true" title="Format"></i>
|
||||
</button>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div id="specEditor" ui-refresh="true" ng-model="jsonSpec" ui-codemirror="editorProperties" class="code-mirror-editor {{disableCSS}}" >
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div layout="column">
|
||||
<div layout="row">
|
||||
<div flex></div>
|
||||
<div>
|
||||
<br/>
|
||||
<span ng-show="error" class="info">{{error}}</span>
|
||||
<span ng-show="saveStatus && !error" class="info">{{saveStatus}}</span>
|
||||
<span>
|
||||
<button class="primary-button" ng-click="showVariableDialog()">
|
||||
Attributes
|
||||
</button>
|
||||
</span>
|
||||
<span>
|
||||
<button class="primary-button" ng-click="saveSpec(jsonInput,getSpec(transform,jsonSpec),transform,processorId,clientId,disconnectedNodeAcknowledged,revisionId)"
|
||||
ng-disabled="(!jsonSpec && transform != 'jolt-transform-sort') || !editable || !specUpdated">
|
||||
Save
|
||||
</button>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div layout="column">
|
||||
|
||||
<div layout="row">
|
||||
<div flex="45">
|
||||
|
||||
<div class="md-toolbar-tools large-label">
|
||||
<span>
|
||||
JSON Input
|
||||
</span>
|
||||
<span flex></span>
|
||||
<span class="info">
|
||||
|
||||
<button class="small-button" ng-click="formatEditor(inputEditor)" ng-disabled="!(jsonInput) || (!jsonSpec && transform != 'jolt-transform-sort')">
|
||||
<i class="fa fa-align-left" aria-hidden="true" title="Format"></i>
|
||||
</button>
|
||||
|
||||
</span>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="inputJson" ng-model="jsonInput" ui-refresh="true" ui-codemirror="inputProperties" class="code-mirror-editor"></div>
|
||||
</div>
|
||||
|
||||
<div flex="10" layout="column" layout-align="center center">
|
||||
|
||||
<div class="large-label">
|
||||
<button class="primary-button" ng-click="transformJson(jsonInput,getSpec(transform,jsonSpec),transform)" ng-disabled="!(jsonInput) || (!jsonSpec && transform != 'jolt-transform-sort')">
|
||||
Transform
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div flex="45">
|
||||
|
||||
<div class="md-toolbar-tools large-label">
|
||||
JSON Output
|
||||
</div>
|
||||
|
||||
<div id="outputJson" ng-model="jsonOutput" ui-refresh="true" ui-codemirror="outputProperties" class="code-mirror-editor"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
|
@ -1,83 +0,0 @@
|
|||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You 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.
|
||||
-->
|
||||
<md-dialog flex="40" aria-label="Attributes">
|
||||
<md-toolbar>
|
||||
<div class="md-toolbar-tools">
|
||||
<div class="modal-header-label">Attributes</div>
|
||||
<span flex></span>
|
||||
</div>
|
||||
</md-toolbar>
|
||||
<md-dialog-content>
|
||||
<div class="md-dialog-content">
|
||||
<p class="modal-label">
|
||||
Enter attributes and values to reference within your specification for testing input. These attribute values will only be available for testing and not when executing the actual flow:
|
||||
</p>
|
||||
|
||||
<md-content>
|
||||
<div layout-gt-sm="row" layout-align="center">
|
||||
|
||||
<md-input-container flex="45">
|
||||
<label>Attribute</label>
|
||||
<input ng-model="key"/>
|
||||
</md-input-container>
|
||||
|
||||
<md-input-container flex="45">
|
||||
<label>Value</label>
|
||||
<input ng-model="value"/>
|
||||
</md-input-container>
|
||||
|
||||
<span flex="5"> </span>
|
||||
|
||||
<md-input-container flex="5">
|
||||
<button class="modal-button" id="addButton" ng-click="dialogCtl.parent.addVariable(dialogCtl.parent.variables,key,value)">
|
||||
<i class="fa fa-plus" aria-hidden="true"></i>
|
||||
</button>
|
||||
</md-input-container>
|
||||
|
||||
</div>
|
||||
</md-content>
|
||||
|
||||
<md-content>
|
||||
<md-list>
|
||||
<md-subheader class="md-no-sticky modal-label">Attribute - Values:</md-subheader>
|
||||
<div id="variableList" class="scrollable">
|
||||
<md-list-item class="md-2-line" ng-repeat="(key,value) in dialogCtl.parent.variables">
|
||||
<div class="md-list-item-text" layout="row" layout-align="center center">
|
||||
<div flex="45">{{key}}</div>
|
||||
<div flex="45">{{value}}</div>
|
||||
<span flex="5"> </span>
|
||||
<div flex="5">
|
||||
<button class="modal-button" ng-click="dialogCtl.parent.deleteVariable(dialogCtl.parent.variables,key)">
|
||||
<i class="fa fa-trash-o" aria-hidden="true"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</md-list-item>
|
||||
</div>
|
||||
</md-list>
|
||||
</md-content>
|
||||
</div>
|
||||
</md-dialog-content>
|
||||
<md-dialog-actions layout="row">
|
||||
<span flex></span>
|
||||
<button class="secondary-button" ng-click="dialogCtl.parent.cancelDialog()">
|
||||
Cancel
|
||||
</button>
|
||||
<button class="primary-button" ng-click="dialogCtl.parent.saveVariables(dialogCtl.parent.variables)">
|
||||
Save
|
||||
</button>
|
||||
</md-dialog-actions>
|
||||
|
||||
</md-dialog>
|
|
@ -1,734 +0,0 @@
|
|||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You 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.
|
||||
*/
|
||||
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
src: local('Roboto Light'),
|
||||
local('Roboto-Light'),
|
||||
url('../fonts/Roboto/Roboto-Light.ttf') format('truetype');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: italic;
|
||||
font-weight: 300;
|
||||
src: local('Roboto LightItalic'),
|
||||
local('Roboto-LightItalic'),
|
||||
url('../fonts/Roboto/Roboto-LightItalic.ttf') format('truetype');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
src: local('Roboto Regular'),
|
||||
local('Roboto-Regular'),
|
||||
url('../fonts/Roboto/Roboto-Regular.ttf') format('truetype');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 500;
|
||||
src: local('Roboto Medium'),
|
||||
local('Roboto-Medium'),
|
||||
url('../fonts/Roboto/Roboto-Medium.ttf') format('truetype');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: bold;
|
||||
src: local('Roboto Bold'),
|
||||
local('Roboto-Bold'),
|
||||
url('../fonts/Roboto/Roboto-Bold.ttf') format('truetype');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: italic;
|
||||
font-weight: normal;
|
||||
src: local('Roboto Italic'),
|
||||
local('Roboto-Italic'),
|
||||
url('../fonts/Roboto/Roboto-Italic.ttf') format('truetype');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Roboto Slab';
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
src: local('RobotoSlab Regular'),
|
||||
local('RobotoSlab-Regular'),
|
||||
url('../fonts/Roboto_Slab/RobotoSlab-Regular.ttf') format('truetype');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Roboto Slab';
|
||||
font-style: normal;
|
||||
font-weight: bold;
|
||||
src: local('RobotoSlab Bold'),
|
||||
local('RobotoSlab-Bold'),
|
||||
url('../fonts/Roboto_Slab/RobotoSlab-Bold.ttf') format('truetype');
|
||||
}
|
||||
|
||||
/*remove margin from font awesome*/
|
||||
i[class^="fa-"]:before, i[class*=" fa-"]:before {
|
||||
margin: -1px;
|
||||
}
|
||||
|
||||
/*remove margin from flowfont*/
|
||||
i[class^="icon-"]:before, i[class*=" icon-"]:before {
|
||||
margin: -2px;
|
||||
}
|
||||
|
||||
/*shift rotated font awesome icons*/
|
||||
.fa-rotate-90 {
|
||||
left: -2px !important;
|
||||
}
|
||||
|
||||
body {
|
||||
display: block;
|
||||
font-family: Roboto, sans-serif;
|
||||
overflow: hidden;
|
||||
color: #262626;
|
||||
}
|
||||
|
||||
body.md-default-theme, body, html.md-default-theme, html {
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
button {
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.value-color {
|
||||
color: #775351;
|
||||
}
|
||||
|
||||
ul.links li {
|
||||
float: left;
|
||||
display: block;
|
||||
margin-left: 10px;
|
||||
padding: 4px;
|
||||
text-align: center;
|
||||
font-size: 11px;
|
||||
font-weight: normal;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
ul.links span.header-link-over {
|
||||
color: #264c58;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
/*
|
||||
General Styles
|
||||
*/
|
||||
|
||||
.unselectable {
|
||||
-webkit-touch-callout: none;
|
||||
-webkit-user-select: none;
|
||||
-khtml-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.clear {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.pointer {
|
||||
cursor: pointer !important;
|
||||
}
|
||||
|
||||
.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.blank, .unset, .sensitive {
|
||||
font-weight: normal !important;
|
||||
color: #a8a8a8 !important;
|
||||
}
|
||||
|
||||
.required {
|
||||
font-weight: bold !important;
|
||||
}
|
||||
|
||||
.ellipsis {
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.ellipsis.multiline {
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
.table-cell {
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
line-height: normal;
|
||||
float: left;
|
||||
margin-top: 4px;
|
||||
}
|
||||
|
||||
label {
|
||||
font-family: 'Roboto Slab', serif;
|
||||
font-size: 12px;
|
||||
color: #262626; /*base-font-color*/
|
||||
letter-spacing: 0.05rem;
|
||||
display: block;
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
|
||||
/* placeholder styles */
|
||||
|
||||
*::placeholder {
|
||||
color: #728e9b;
|
||||
}
|
||||
*::-webkit-input-placeholder {
|
||||
color: #728e9b;
|
||||
}
|
||||
*:-moz-placeholder {
|
||||
color: #728e9b;
|
||||
}
|
||||
*::-moz-placeholder {
|
||||
color: #728e9b;
|
||||
}
|
||||
*:-ms-input-placeholder {
|
||||
color: #728e9b;
|
||||
}
|
||||
|
||||
input[type=text], input[type=password] {
|
||||
background-color: #eaeef0;
|
||||
border: 1px solid #eaeef0;
|
||||
font-family: Roboto, sans-serif;
|
||||
font-size: 13px;
|
||||
padding: 0px 10px 0px 10px;
|
||||
resize: none;
|
||||
height: 32px;
|
||||
width: 100%;
|
||||
-webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */
|
||||
-moz-box-sizing: border-box; /* Firefox, other Gecko */
|
||||
box-sizing: border-box;
|
||||
color: #262626;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
input:focus, textarea:focus {
|
||||
background-color: #fff;
|
||||
border: 1px solid #004849; /*link-color*/
|
||||
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.4);
|
||||
outline: none;
|
||||
}
|
||||
|
||||
textarea {
|
||||
background-color: #eaeef0;
|
||||
border: 1px solid #eaeef0;
|
||||
font-family: Roboto, sans-serif;
|
||||
font-size: 13px !important;
|
||||
padding: 10px 10px;
|
||||
resize: vertical;
|
||||
height: 32px;
|
||||
width: 100%;
|
||||
-webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */
|
||||
-moz-box-sizing: border-box; /* Firefox, other Gecko */
|
||||
box-sizing: border-box;
|
||||
color: #262626;
|
||||
white-space: pre-wrap;
|
||||
overflow-y: auto;
|
||||
overflow-x: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
textarea[disabled] {
|
||||
background: #b2b8c1;
|
||||
color: #dbdee2;
|
||||
border: 1px solid #b2b8c1;
|
||||
}
|
||||
|
||||
ul.property-info {
|
||||
list-style-type: disc;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
ul.property-info li {
|
||||
padding: 0px 0px;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
div.nf-checkbox {
|
||||
cursor: pointer;
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
float: left;
|
||||
margin-right: 4px;
|
||||
}
|
||||
|
||||
.nf-checkbox-label {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
div.nf-checkbox.disabled {
|
||||
opacity: .5;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
|
||||
div.checkbox-unchecked {
|
||||
background: transparent url(../images/inputCheckbox.png) no-repeat scroll top left;
|
||||
}
|
||||
|
||||
div.checkbox-checked {
|
||||
background: transparent url(../images/inputCheckbox.png) no-repeat scroll top right;
|
||||
}
|
||||
|
||||
div.ajax-loading {
|
||||
background-image: url(../images/iconLoading.gif);
|
||||
}
|
||||
|
||||
div.ajax-complete:before {
|
||||
font-family: FontAwesome;
|
||||
content: "\f00c";
|
||||
font-size: 16px;
|
||||
color: #70B59A;
|
||||
}
|
||||
|
||||
div.ajax-error:before {
|
||||
font-family: FontAwesome;
|
||||
content: "\f00d";
|
||||
font-size: 16px;
|
||||
color: #D18686;
|
||||
}
|
||||
|
||||
.refresh-button {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.ui-draggable .dialog-header {
|
||||
cursor: move;
|
||||
}
|
||||
|
||||
span.link:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
span.link {
|
||||
cursor: pointer;
|
||||
color: #004849; /*link-color*/
|
||||
font-weight: normal;
|
||||
display: inline-block;
|
||||
border-bottom: 1px solid #CCDADB;
|
||||
font-size: 13px;
|
||||
font-family: Roboto;
|
||||
}
|
||||
|
||||
span.link-over {
|
||||
border-bottom: 1px solid #004849;
|
||||
}
|
||||
|
||||
span.link-bold {
|
||||
font-weight: bold;
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
button {
|
||||
height: 28px;
|
||||
width: 28px;
|
||||
border: 1px solid #CCDADB; /*tint link-color 80%*/
|
||||
background-color: rgba(249, 250, 251, 0.97);
|
||||
color: #004849;
|
||||
}
|
||||
|
||||
button.refresh-button {
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
button:hover {
|
||||
border: 1px solid #004849; /*link-color*/
|
||||
}
|
||||
|
||||
button:disabled {
|
||||
color: #CCDADB !important; /*tint link-color 80%*/
|
||||
cursor: not-allowed;
|
||||
border: 1px solid #CCDADB; /*tint link-color 80%*/
|
||||
}
|
||||
|
||||
/* angular material override */
|
||||
|
||||
button:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
div:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
input:focus {
|
||||
background-color: #fff;
|
||||
border: 1px solid #004849; /*link-color*/
|
||||
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.4);
|
||||
outline: none;
|
||||
}
|
||||
|
||||
/* filter controls */
|
||||
|
||||
.filter-controls {
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
}
|
||||
|
||||
.filter-container {
|
||||
height: 32px;
|
||||
width: 100%;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.filter {
|
||||
margin-right: 3px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
input.filter {
|
||||
width: 173px;
|
||||
}
|
||||
|
||||
.filter-type,
|
||||
.filter-status-dropdown {
|
||||
float: left;
|
||||
width: 148px;
|
||||
}
|
||||
|
||||
.filter-status {
|
||||
margin-top: 10px;
|
||||
color: #775351;
|
||||
font-family: Roboto;
|
||||
font-size: 13px;
|
||||
font-weight: 500;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.setting-field.summary-filter-primary-node-container {
|
||||
display: inline-block;
|
||||
margin-left: 10px;
|
||||
margin-top: 8px;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
/* overlay icon styles */
|
||||
|
||||
.stop-configure-icon.fa-stop {
|
||||
display : inline-block;
|
||||
font-size: 15px;
|
||||
position : relative;
|
||||
top : -1px;
|
||||
}
|
||||
|
||||
.stop-configure-icon::after {
|
||||
content : "\f013";
|
||||
font-size: 14px;
|
||||
position : relative;
|
||||
top : 0px;
|
||||
left : -8px;
|
||||
color : #ffffff;
|
||||
-webkit-text-stroke-width : 1px;
|
||||
-webkit-text-stroke-color : #004849;
|
||||
|
||||
}
|
||||
|
||||
*.stop-configure-icon + span {
|
||||
display : inline-block;
|
||||
padding : 0px 0px 0px 0px;
|
||||
margin-left : -10px;
|
||||
}
|
||||
|
||||
/* buttons */
|
||||
|
||||
button.fa {
|
||||
color: #004849;
|
||||
font-size: 16px;
|
||||
cursor: pointer;
|
||||
line-height: 25px;
|
||||
}
|
||||
|
||||
button.icon {
|
||||
color: #004849;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
div.button-icon span {
|
||||
padding-left: 5px;
|
||||
vertical-align: middle;
|
||||
font-style: normal;
|
||||
font-family: Roboto;
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
div.button-icon {
|
||||
float: left !important;
|
||||
margin-left: 0;
|
||||
font-size: 18px !important;
|
||||
}
|
||||
|
||||
div.button.auto-width,
|
||||
div.button-icon.auto-width {
|
||||
width : auto !important;
|
||||
}
|
||||
|
||||
div.button {
|
||||
height: 32px;
|
||||
width: 90px;
|
||||
padding: 0 8px;
|
||||
text-transform: uppercase;
|
||||
font-weight: 500;
|
||||
font-size: 11px;
|
||||
line-height: 33px;
|
||||
text-align: center;
|
||||
border: 0px;
|
||||
float: right;
|
||||
position: relative;
|
||||
background: #728E9B;
|
||||
color: #fff;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
div.button.disabled-button {
|
||||
color: #a8a8a8 !important;
|
||||
cursor: not-allowed;
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
div.button:hover:not(.disabled-button) {
|
||||
background-color: #004849;
|
||||
}
|
||||
|
||||
div.secondary-button {
|
||||
height: 32px;
|
||||
width: 90px;
|
||||
padding: 0 8px;
|
||||
text-transform: uppercase;
|
||||
font-weight: 500;
|
||||
font-size: 11px;
|
||||
line-height: 33px;
|
||||
text-align: center;
|
||||
border: 0px;
|
||||
float: right;
|
||||
position: relative;
|
||||
background: #E3E8EB;
|
||||
color: #004849;
|
||||
cursor:pointer
|
||||
}
|
||||
|
||||
div.secondary-button:hover {
|
||||
background-color: #C7D2D7;
|
||||
}
|
||||
|
||||
/* tooltips */
|
||||
|
||||
.qtip-nifi {
|
||||
border: 0px !important;
|
||||
border-radius: 2px;
|
||||
background-color: rgba(0, 0, 0, 0.54) !important;
|
||||
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.25);
|
||||
font-family: Roboto;
|
||||
font-weight: 500;
|
||||
font-size: 13px;
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
div.nifi-tooltip {
|
||||
border: 0px !important;
|
||||
border-radius: 2px;
|
||||
background-color: rgba(0, 0, 0, 0.80) !important;
|
||||
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.25);
|
||||
font-family: Roboto;
|
||||
font-weight: 500;
|
||||
font-size: 13px;
|
||||
color: #fff !important;
|
||||
max-width: 500px;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
.scrollable {
|
||||
border-bottom: 1px solid #d0dbe0;
|
||||
}
|
||||
|
||||
/*context menu */
|
||||
|
||||
.context-menu {
|
||||
display: none;
|
||||
position: absolute;
|
||||
z-index: 10006;
|
||||
font-size: 13px;
|
||||
padding:3px 0;
|
||||
background-color:rgba(249,250,251,0.97); /*tint base-color 96%*/
|
||||
border:1px solid #004849; /*link-color*/
|
||||
box-shadow: 0 3px 6px rgba(0,0,0,0.3);
|
||||
width: 215px;
|
||||
max-height: inherit;
|
||||
color:#004849
|
||||
}
|
||||
|
||||
div.context-menu-item {
|
||||
cursor: pointer;
|
||||
height: 20px;
|
||||
padding-top: 4px;
|
||||
padding-left: 4px;
|
||||
}
|
||||
|
||||
div.context-menu-item.hover {
|
||||
background-color:#C7D2D7; /*tint base-color 60%*/
|
||||
box-shadow:0 1px 1px rgba(0,0,0,0.15);
|
||||
}
|
||||
|
||||
.context-menu-item-img {
|
||||
float: left;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
background-size: cover;
|
||||
}
|
||||
|
||||
.context-menu-item-img.fa {
|
||||
position: relative;
|
||||
top: 2px;
|
||||
left: 2px;
|
||||
}
|
||||
|
||||
.context-menu-item-img.icon {
|
||||
position: relative;
|
||||
top: 1px;
|
||||
left: 3px;
|
||||
}
|
||||
|
||||
div.context-menu-item-text {
|
||||
margin-left: 4px;
|
||||
line-height: 16px;
|
||||
float: left;
|
||||
color: #262626;
|
||||
}
|
||||
|
||||
div.context-menu-group-item-img {
|
||||
float: right;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
background-size: cover;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
div.context-menu-item-separator {
|
||||
height: 1px;
|
||||
background-color: #C7D2D7;
|
||||
margin-top: 3px;
|
||||
margin-bottom: 3px;
|
||||
}
|
||||
|
||||
/* search */
|
||||
|
||||
li.search-no-matches {
|
||||
padding: 4px;
|
||||
font-weight: bold;
|
||||
color: #aaa;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
/* progress bars */
|
||||
|
||||
md-progress-linear > div {
|
||||
background-color: #eaeef0 !important;
|
||||
}
|
||||
|
||||
.setting {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
.setting-name {
|
||||
font-size: 12px;
|
||||
font-weight: 500;
|
||||
font-family: Roboto Slab;
|
||||
text-transform: capitalize;
|
||||
padding-bottom: 4px;
|
||||
color: #262626;
|
||||
}
|
||||
|
||||
.setting-name .fa {
|
||||
color: #004849;
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
.setting-field .fa {
|
||||
color: #004849;
|
||||
margin-left: 5px;
|
||||
line-height: 22px;
|
||||
}
|
||||
|
||||
.setting-field {
|
||||
line-height: normal;
|
||||
width: 100%;
|
||||
color: #775351;
|
||||
font-size: 13px;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.setting-header {
|
||||
color: #728e9b;
|
||||
font-size: 12pt;
|
||||
font-family: 'Roboto Slab';
|
||||
font-style: normal;
|
||||
font-weight: bold;
|
||||
padding-bottom: 20px;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.CodeMirror {
|
||||
border: 1px solid #aaa;
|
||||
font-family: monospace;
|
||||
background-color: #fff;
|
||||
cursor: default;
|
||||
line-height: normal;
|
||||
}
|
||||
|
||||
/* jquery ui autocomplete override */
|
||||
|
||||
.ui-autocomplete {
|
||||
overflow: auto !important;
|
||||
border: 1px solid #aaaaaa !important;
|
||||
font-size: 12px !important;
|
||||
font-family: Roboto !important;
|
||||
}
|
||||
|
||||
.ui-menu .ui-menu-item a {
|
||||
display: block;
|
||||
border: 1px solid transparent;
|
||||
line-height: 1.5;
|
||||
margin: 0 !important;
|
||||
color: #333 !important;
|
||||
}
|
||||
|
||||
.ui-menu .ui-menu-item a.ui-state-active {
|
||||
background: #D4E0E5 !important;
|
||||
border: 1px solid #999999;
|
||||
}
|
||||
|
||||
/* jquery ui slider override */
|
||||
|
||||
.ui-slider-handle.ui-state-active {
|
||||
background: #fff !important;
|
||||
}
|
|
@ -1,187 +0,0 @@
|
|||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You 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.
|
||||
*/
|
||||
|
||||
body {
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
|
||||
|
||||
div.code-mirror-editor.trans {
|
||||
opacity: 0.4;
|
||||
filter: alpha(opacity=40); /* For IE8 and earlier */
|
||||
}
|
||||
|
||||
.large-label {
|
||||
color: #728e9b;
|
||||
font-size: 12pt;
|
||||
font-family: 'Roboto Slab';
|
||||
font-style: normal;
|
||||
font-weight: bold;
|
||||
padding-bottom: 10px;
|
||||
text-overflow: ellipsis;
|
||||
float: left;
|
||||
}
|
||||
|
||||
|
||||
.CodeMirror {
|
||||
border: 1px solid #eee;
|
||||
height: 30vh;
|
||||
}
|
||||
|
||||
.info {
|
||||
font-style: italic;
|
||||
font-size: 75%;
|
||||
}
|
||||
|
||||
|
||||
div.scrollable{
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
height: 200px;
|
||||
border-color: rgba(0,0,0,0.12);
|
||||
border-style: solid;
|
||||
border-width: 1px 0 1px 0;
|
||||
}
|
||||
|
||||
#mainView{
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
padding: 22px;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
#addButton {
|
||||
font-size: 60%;
|
||||
}
|
||||
|
||||
#variableList {
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
.primary-button , .secondary-button {
|
||||
height: 32px;
|
||||
width: 90px;
|
||||
padding: 0 8px;
|
||||
text-transform: uppercase;
|
||||
font-weight: 500;
|
||||
font-size: 11px;
|
||||
line-height: 33px;
|
||||
text-align: center;
|
||||
border: 0;
|
||||
position: relative;
|
||||
color: #fff;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.primary-button{
|
||||
background: #728e9b;
|
||||
}
|
||||
|
||||
.primary-button:hover:not(.disabled-button){
|
||||
background: rgb(0,72,73);
|
||||
}
|
||||
|
||||
.secondary-button{
|
||||
background: rgb(227, 232, 235); color: rgb(0, 72, 73);
|
||||
|
||||
}
|
||||
|
||||
.secondary-button:hover:not(.disabled-button){
|
||||
background: rgb(199, 210, 215);
|
||||
border-color: rgb(199, 210, 215);
|
||||
color: rgb(0, 72, 73);
|
||||
}
|
||||
|
||||
button.small-button {
|
||||
height: 100%;
|
||||
width: 28px;
|
||||
}
|
||||
|
||||
div.md-toolbar-tools{
|
||||
height: 35px;
|
||||
padding: 0 0px;
|
||||
}
|
||||
|
||||
.md-subheader .md-subheader-inner{
|
||||
padding: 0px 0px 16px 0px;
|
||||
}
|
||||
|
||||
md-toolbar {
|
||||
min-height: 30px;
|
||||
}
|
||||
|
||||
md-list-item.md-2-line{
|
||||
padding: 0px 0px 16px 0px;
|
||||
margin-top: 10px;
|
||||
margin-bottom: 10px;
|
||||
min-height: 30px;
|
||||
}
|
||||
|
||||
button.modal-button {
|
||||
width: 28px;
|
||||
}
|
||||
|
||||
.modal-header-label {
|
||||
color: #fff;
|
||||
font-size: 18px;
|
||||
font-family: Roboto Slab;
|
||||
font-style: normal;
|
||||
font-weight: bold;
|
||||
line-height: 56px;
|
||||
padding-left: 20px;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.modal-label {
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
font-family: Roboto Slab;
|
||||
text-transform: capitalize;
|
||||
padding-bottom: 4px;
|
||||
color: #262626;
|
||||
}
|
||||
|
||||
md-dialog .md-actions, md-dialog md-dialog-actions {
|
||||
padding-right: 0px;
|
||||
min-height: 0px;
|
||||
}
|
||||
|
||||
md-option {
|
||||
height: 32px;
|
||||
padding: 0px 10px 0px 10px;
|
||||
background-color:rgb(255, 255, 255);
|
||||
border-color: rgb(234, 238, 240)
|
||||
}
|
||||
|
||||
md-select .md-select-value {
|
||||
font-size: 9pt;
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
background-color:rgb(234, 238, 240);
|
||||
border-bottom-color: rgb(234, 238, 240);
|
||||
}
|
||||
|
||||
md-option .md-text{
|
||||
font-size: 9pt;
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
color: rgb(38, 38, 38);
|
||||
}
|
|
@ -1,202 +0,0 @@
|
|||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,202 +0,0 @@
|
|||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
Binary file not shown.
Binary file not shown.
|
@ -1,87 +0,0 @@
|
|||
@font-face {
|
||||
font-family: 'flowfont';
|
||||
src: url('./flowfont.eot?8516181');
|
||||
src: url('./flowfont.eot?8516181#iefix') format('embedded-opentype'),
|
||||
url('./flowfont.woff2?8516181') format('woff2'),
|
||||
url('./flowfont.woff?8516181') format('woff'),
|
||||
url('./flowfont.ttf?8516181') format('truetype'),
|
||||
url('./flowfont.svg?8516181#flowfont') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
/* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */
|
||||
/* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */
|
||||
/*
|
||||
@media screen and (-webkit-min-device-pixel-ratio:0) {
|
||||
@font-face {
|
||||
font-family: 'flowfont';
|
||||
src: url('../font/flowfont.svg?8516181#flowfont') format('svg');
|
||||
}
|
||||
}
|
||||
*/
|
||||
[class^="icon-"]:before, [class*=" icon-"]:before {
|
||||
font-family: "flowfont";
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
speak: never;
|
||||
|
||||
display: inline-block;
|
||||
text-decoration: inherit;
|
||||
width: 1em;
|
||||
margin-right: .2em;
|
||||
text-align: center;
|
||||
/* opacity: .8; */
|
||||
|
||||
/* For safety - reset parent styles, that can break glyph codes*/
|
||||
font-variant: normal;
|
||||
text-transform: none;
|
||||
|
||||
/* fix buttons height, for twitter bootstrap */
|
||||
line-height: 1em;
|
||||
|
||||
/* Animation center compensation - margins should be symmetric */
|
||||
/* remove if not needed */
|
||||
margin-left: .2em;
|
||||
|
||||
/* you can be more comfortable with increased icons size */
|
||||
/* font-size: 120%; */
|
||||
|
||||
/* Font smoothing. That was taken from TWBS */
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
|
||||
/* Uncomment for 3D effect */
|
||||
/* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */
|
||||
}
|
||||
|
||||
.icon-funnel-add:before { content: '\e800'; } /* '' */
|
||||
.icon-counter:before { content: '\e801'; } /* '' */
|
||||
.icon-enable-false:before { content: '\e802'; } /* '' */
|
||||
.icon-funnel:before { content: '\e803'; } /* '' */
|
||||
.icon-group:before { content: '\e804'; } /* '' */
|
||||
.icon-group-remote:before { content: '\e805'; } /* '' */
|
||||
.icon-label:before { content: '\e806'; } /* '' */
|
||||
.icon-processor:before { content: '\e807'; } /* '' */
|
||||
.icon-provenance:before { content: '\e808'; } /* '' */
|
||||
.icon-template:before { content: '\e809'; } /* '' */
|
||||
.icon-transmit-false:before { content: '\e80a'; } /* '' */
|
||||
.icon-zoom-actual:before { content: '\e80b'; } /* '' */
|
||||
.icon-zoom-fit:before { content: '\e80c'; } /* '' */
|
||||
.icon-label-add:before { content: '\e80d'; } /* '' */
|
||||
.icon-template-add:before { content: '\e80e'; } /* '' */
|
||||
.icon-group-add:before { content: '\e80f'; } /* '' */
|
||||
.icon-template-import:before { content: '\e810'; } /* '' */
|
||||
.icon-template-save:before { content: '\e811'; } /* '' */
|
||||
.icon-group-remote-add:before { content: '\e812'; } /* '' */
|
||||
.icon-port-out-add:before { content: '\e813'; } /* '' */
|
||||
.icon-port-in-add:before { content: '\e814'; } /* '' */
|
||||
.icon-processor-add:before { content: '\e815'; } /* '' */
|
||||
.icon-lineage:before { content: '\e816'; } /* '' */
|
||||
.icon-import-from-registry-add:before { content: '\e81d'; } /* '' */
|
||||
.icon-import-from-registry:before { content: '\e81e'; } /* '' */
|
||||
.icon-port-in:before { content: '\e832'; } /* '' */
|
||||
.icon-port-out:before { content: '\e833'; } /* '' */
|
||||
.icon-connect:before { content: '\e834'; } /* '' */
|
||||
.icon-connect-add:before { content: '\e835'; } /* '' */
|
||||
.icon-threads:before { content: '\e83f'; } /* '' */
|
||||
.icon-drop:before { content: '\e888'; } /* '' */
|
Binary file not shown.
|
@ -1,72 +0,0 @@
|
|||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg xmlns="http://www.w3.org/2000/svg">
|
||||
<metadata>Copyright (C) 2023 by original authors @ fontello.com</metadata>
|
||||
<defs>
|
||||
<font id="flowfont" horiz-adv-x="1000" >
|
||||
<font-face font-family="flowfont" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" />
|
||||
<missing-glyph horiz-adv-x="1000" />
|
||||
<glyph glyph-name="funnel-add" unicode="" d="M948 786h-114a52 52 0 0 1-53-52v-147l-183-77a305 305 0 0 1-35 11l78 110h51a52 52 0 0 1 52 52v115a52 52 0 0 1-52 52h-114a52 52 0 0 1-52-52v-114a52 52 0 0 1 52-53h29l-74-108c-9 0-18-2-28-2s-19 4-28 3l-73 107h18a52 52 0 0 1 52 52v115a52 52 0 0 1-52 52h-114a52 52 0 0 1-51-52v-114a52 52 0 0 1 51-53h61l75-111a379 379 0 0 1-38-8l-187 75v147a52 52 0 0 1-53 52h-114a52 52 0 0 1-52-52v-114a52 52 0 0 1 52-51h156l159-68a39 39 0 0 1-28-29c0-28 74-51 166-51s167 22 167 50a40 40 0 0 1-29 31l159 67h146a52 52 0 0 1 52 51v114a52 52 0 0 1-52 52z m-365-128a31 31 0 0 0-32 31v104a31 31 0 0 0 32 31h105a31 31 0 0 0 31-31v-104a31 31 0 0 0-31-31h-105z m-270 0a31 31 0 0 0-32 31v104a31 31 0 0 0 32 31h104a31 31 0 0 0 31-31v-104a31 31 0 0 0-31-31h-104z m-121-33a31 31 0 0 0-31-32h-104a31 31 0 0 0-31 32v104a31 31 0 0 0 31 31h104a31 31 0 0 0 31-31v-104z m781 0a31 31 0 0 0-31-32h-103a31 31 0 0 0-31 32v104a31 31 0 0 0 31 31h104a31 31 0 0 0 31-31v-104z m-689-257a234 234 0 1 1 234-234 234 234 0 0 1-234 234z m140-268a9 9 0 0 0-9-9h-81a9 9 0 0 1-9-9v-81a9 9 0 0 0-9-9h-66a9 9 0 0 0-9 9v81a9 9 0 0 1-9 9h-80a9 9 0 0 0-9 9v66a9 9 0 0 0 9 9h81a9 9 0 0 1 10 9v82a9 9 0 0 0 7 8h65a9 9 0 0 0 9-9v-81a9 9 0 0 1 9-9h81a9 9 0 0 0 9-9v-66z m153 252v-164a18 18 0 0 1 19-19h60c12 0 14-7 7-15l-115-122a281 281 0 0 1-164 366 514 514 0 0 1 121-14c20 0 194 2 202 80h12v-2a31 31 0 0 0 0-5c0-69-78-95-142-104z m51-301v-150a52 52 0 0 0-52-51h-138a52 52 0 0 0-43 22 281 281 0 0 1 43 23 31 31 0 0 1 18-6h104a31 31 0 0 1 31 31v96z" horiz-adv-x="1000" />
|
||||
|
||||
<glyph glyph-name="counter" unicode="" d="M878-17h-756c-67 0-122 54-122 121v492c0 67 55 121 122 121h756c68 0 122-54 122-121v-492c0-67-54-121-122-121z m-756 670c-32 0-58-26-58-57v-492c0-31 26-57 58-57h756c32 0 58 26 58 57v492c0 31-26 57-58 57h-756z m358-535h-314v62l148 158c20 22 35 42 45 58 10 17 15 33 15 47 0 21-5 37-15 48-11 12-25 18-45 18-20 0-36-7-48-21-12-15-18-33-18-56h-91c0 28 7 53 20 76 13 23 32 41 56 54 25 13 52 20 83 20 47 0 84-11 110-34s39-55 39-96c0-22-6-45-18-69-11-23-31-51-60-82l-104-110h197v-73z m344 457c8-17 12-36 12-57 0-21-7-41-19-58-13-18-30-31-51-41 26-9 45-23 58-41 13-19 19-40 19-66 0-40-15-73-44-97s-69-37-118-37c-46 0-83 12-112 36-29 24-44 56-44 96h91c0-18 7-32 20-42 12-11 28-17 47-17 22 0 39 6 51 17 12 12 18 27 18 46 0 45-25 68-75 68h-48v71h48c23 0 40 6 51 17 12 12 17 27 17 46 0 19-5 33-16 43-11 11-26 16-45 16l140 0z m-141 0c-18 0-32-5-44-15-11-9-17-21-17-37h-91c0 19 4 36 12 52h140z m0-457l25 39h92v-39h-117z" horiz-adv-x="1000" />
|
||||
|
||||
<glyph glyph-name="enable-false" unicode="" d="M912-123l-297 296-144-308c-5-9-14-15-25-15-3 0-6 1-9 1-13 4-21 17-18 30l96 392-71 70-150-37c-3-1-5-1-7-1-7 0-14 2-19 7-7 5-10 14-8 23l38 154-251 250 41 42 865-862-41-42z m-117 683c5 9 3 20-4 27-5 5-12 9-20 9-3 0-5-1-7-1l-238-59 102 278c2 4 3 7 3 11 0 14-12 25-27 25h-197c-12 0-23-8-26-19l-42-172 343-342 113 243z" horiz-adv-x="1000" />
|
||||
|
||||
<glyph glyph-name="funnel" unicode="" d="M782 734v-147l-183-77c-11 2-21 9-35 11l77 111h51c28 0 52 23 52 52v114c0 29-24 52-52 52h-114c-29 0-52-23-52-52v-114c0-29 23-52 52-52h29l-74-108c-9 0-18-2-28-2-9 0-19 3-28 3l-73 107h18c29 0 52 23 52 52v114c0 29-23 52-52 52h-113c-29 0-53-23-53-52v-114c0-29 24-52 53-52h60l75-111c-13-2-27-6-38-9l-188 75v147c0 29-23 52-52 52h-114c-29 0-52-23-52-52v-114c0-29 23-52 52-52h157l158-68c-18-8-28-19-28-29 0-27 74-50 166-50 92 0 166 22 166 49 0 10-10 22-28 30l159 68h146c29 0 52 23 52 52v114c0 29-23 52-52 52h-114c-29 0-52-23-52-52z m-231-45v104c0 17 14 31 32 31h104c17 0 31-14 31-31v-104c0-17-14-31-31-31h-104c-18 0-32 14-32 31z m-269 0v104c0 17 14 31 31 31h105c17 0 31-14 31-31v-104c0-17-14-31-31-31h-105c-17 0-31 14-31 31z m-121-95h-104c-17 0-31 14-31 31v104c0 17 14 31 31 31h104c17 0 31-14 31-31v-104c0-17-14-31-31-31z m782 0h-104c-17 0-31 14-31 31v104c0 17 14 31 31 31h104c17 0 31-14 31-31v-104c0-17-14-31-31-31z m-452-592c8-9 20-9 28 0l144 153c8 8 5 16-6 16h-61c-11 0-19 7-19 18v164c64 9 142 35 142 104 0 2-1 3-1 5l-1 2-10 0c-8-78-182-80-202-80-20 0-194 2-202 80l-10 0 0-2c0-2 0-3 0-5 0-69 79-95 143-104v-164c0-11-11-18-22-18h-60c-11 0-14-8-7-16l144-153z m137 50v-150c0-29-23-52-52-52h-139c-29 0-52 23-52 52v150l38-36v-96c0-18 14-32 31-32h105c17 0 31 14 31 32v96l38 36z" horiz-adv-x="1000" />
|
||||
|
||||
<glyph glyph-name="group" unicode="" d="M82 842c-45 0-82-36-82-82v-110h192v192h-110z m53-134h-77v36c0 22 18 41 41 41h36v-77z m783 134h-110v-192h192v110c0 46-37 82-82 82z m24-134h-77v77h36c23 0 41-19 41-41v-36z m-942-658v-110c0-46 37-82 82-82h110v192h-192z m135-135h-36c-23 0-41 19-41 41v36h77v-77z m673 135v-192h110c45 0 82 36 82 82v110h-192z m134-94c0-22-18-41-41-41h-36v77h77v-36z m-883 126v536h75v-536h-75z m807 0v536h75v-536h-75z m-634 627v75h536v-75h-536z m0-793v75h536v-75h-536z m454 530h-92v71c0 46-37 82-82 82h-179c-45 0-82-36-82-82v-178c0-46 37-82 82-82h92v-72c0-45 37-82 82-82h179c45 0 82 37 82 82v179c0 45-37 82-82 82z m-261-82v-67h-84c-27 0-49 22-49 49v164c0 27 22 49 49 49h163c27 0 49-22 49-49v-64h-46c-45 0-82-37-82-82z m302-172c0-27-22-49-49-49h-164c-27 0-49 22-49 49v164c0 27 22 49 49 49h164c27 0 49-22 49-49v-163z" horiz-adv-x="1000" />
|
||||
|
||||
<glyph glyph-name="group-remote" unicode="" d="M82 842c-45 0-82-36-82-82v-110h192v192h-110z m53-134h-77v36c0 22 18 41 41 41h36v-77z m783 134h-110v-192h192v110c0 46-37 82-82 82z m24-134h-77v77h36c23 0 41-19 41-41v-36z m-942-658v-110c0-46 37-82 82-82h110v192h-192z m135-135h-36c-23 0-41 19-41 41v36h77v-77z m673 135v-192h110c45 0 82 36 82 82v110h-192z m134-94c0-22-18-41-41-41h-36v77h77v-36z m-211 433c-5 78-69 138-147 138-42 0-82-18-110-49-16 17-38 26-61 26-48 0-87-39-87-86l0-2c-4 1-7 1-11 1-67 0-122-55-122-122 0-67 55-122 122-122h384c60 0 110 50 110 111 0 49-32 91-78 105z m-32-158h-384c-86 0-75 143 11 127l68-13-10 68c-4 28 34 43 51 22l39-50 40 50c49 62 157 27 159-54l1-38 37-9c57-13 46-103-12-103z m-640-149v536h75v-536h-75z m882 0h-75v536h75v-536z m-709 627v75h536v-75h-536z m0-793v75h536v-75h-536z" horiz-adv-x="1000" />
|
||||
|
||||
<glyph glyph-name="label" unicode="" d="M670 157c2 4 5 7 8 11l322 321v-43l-303-303c-3-3-7-6-11-8l-36-18 20 40z m-225-271l315 93c7 2 13 6 18 11l222 222v83l-207-207c-3-3-5-5-6-8l-40-65c-5-8-12-14-21-17l-167-61-5 10c-15 33-41 59-74 75l-10 5 60 166c3 9 10 17 18 21l62 38c3 2 6 4 8 6l382 382v83l-475-473c-5-5-8-11-10-18l-96-320c-5-16 10-31 26-26z m160 712c40 0 70 18 70 41s-30 40-70 40h-535c-40 0-70-17-70-40s30-41 70-41h535z m-59-136c40 0 70 18 70 41s-30 41-70 41h-476c-40 0-70-18-70-41s30-41 70-41h476z m-228-135c40 0 70 17 70 40 0 24-30 41-70 41h-248c-40 0-70-17-70-40 0-24 30-41 70-41h248z m178 407c40 0 70 17 70 40s-30 41-70 41h-426c-40 0-70-17-70-41s30-40 70-40h426z" horiz-adv-x="1000" />
|
||||
|
||||
<glyph glyph-name="processor" unicode="" d="M101 832l-50-50-39-88 39 39v-120l-39-88 39 39v-120l-39-87 39 39v-121l-39-87 39 39v-121l-39-87 39 39v-121l-39-87 63 63h121l-15-63 63 63h121l-15-63 63 63h120l-14-63 63 63h120l-14-63 63 63h120l-15-63 114 113c11 12 18 28 18 44v760c0 46-37 83-83 83h-760c-16 0-32-7-44-18z m798-850h-738c-23 0-41 18-41 41v738c0 23 18 42 41 42h738c23 0 42-19 42-42v-738c0-23-19-41-42-41z m-119 564c-2 9-4 19-11 27-57 75-144 119-239 119-65 0-128-21-180-60-127-96-156-278-66-409 1-3 2-6 4-8 57-76 144-120 239-120 66 0 128 21 180 61 68 51 111 123 122 202 9 66-8 133-49 188z m-54-322c-39-30-87-45-137-45-80 0-157 40-208 106-11 15-28 24-46 24-13 0-25-4-36-12-12-10-20-23-23-39 0-4 1-7 1-11-60 110-39 246 55 317 39 29 86 45 136 45 80 0 158-40 208-107 11-15 28-23 47-23 13 0 25 4 35 11 16 13 23 32 22 51 63-110 42-245-54-317z" horiz-adv-x="1000" />
|
||||
|
||||
<glyph glyph-name="provenance" unicode="" d="M827 160v-258c0-29-23-52-51-52h-724c-29 0-52 23-52 52v724c0 28 23 51 52 51h258v-465c0-29 23-52 52-52h465z m-193 293c-17 0-31 14-31 31v271h-150c-17 0-31-13-31-30v-422c0-17 14-30 31-30h422c17 0 30 13 30 30v150h-271z m366 145v193c0 33-26 59-59 59h-193c-32 0-58-26-58-59v-193c0-32 26-58 58-58h193c33 0 59 26 59 58z m-241 183h172v-172h-172v172z" horiz-adv-x="1000" />
|
||||
|
||||
<glyph glyph-name="template" unicode="" d="M995 413v-157a31 31 0 0 0-31-31h-231l-195-156h153a31 31 0 0 0 32-31v-157a31 31 0 0 0-32-31h-434a31 31 0 0 0-31 31v157a31 31 0 0 0 31 31h231l196 156h-153a31 31 0 0 0-31 31v157a31 31 0 0 0 31 31h122l-373 187h-244a31 31 0 0 0-31 32v156a31 31 0 0 0 31 31h433a31 31 0 0 0 31-31v-156a31 31 0 0 0-31-32h-122l373-187h244a31 31 0 0 0 31-31z" horiz-adv-x="1000" />
|
||||
|
||||
<glyph glyph-name="transmit-false" unicode="" d="M44 835l-44-44 163-163c-52-74-83-165-83-262 0-255 206-461 460-461 98 0 189 32 264 85l125-125 44 44-929 926z m287-374l60-60c-2-11-4-23-4-36 0-84 68-153 153-153 12 0 24 2 36 5l60-60c-29-14-62-22-96-22-127 0-230 103-230 230 0 35 8 67 21 96z m209-479c-212 0-383 172-383 383 0 77 23 148 62 208l55-55c-26-45-41-97-41-153 0-169 138-306 307-306 56 0 108 15 153 41l56-55c-60-40-132-63-209-63z m0 767c212 0 383-172 383-383 0-75-21-145-58-204l55-55v0c50 73 80 163 80 258 0 255-206 460-460 460-96 0-186-29-260-80l56-55c59 37 129 59 204 59z m269-531c24 44 38 94 38 148 0 169-138 306-307 306-54 0-104-14-148-38l57-57c28 12 59 18 91 18 127 0 230-102 230-230 0-32-7-62-18-90l57-57z m-299 298l180-180c2 10 3 19 3 30 0 84-68 153-153 153-10 0-20-1-30-3z" horiz-adv-x="1000" />
|
||||
|
||||
<glyph glyph-name="zoom-actual" unicode="" d="M42-150c-23 0-42 19-42 42v916c0 23 19 42 42 42h83c23 0 42-19 42-42v-916c0-23-19-42-42-42h-83z m416 233c-22 0-41 19-41 42v108c0 23 19 42 41 42h84c23 0 41-19 41-42v-108c0-23-18-42-41-42h-84z m0 343c-22 0-41 18-41 41v108c0 23 19 42 41 42h84c23 0 41-19 41-42v-108c0-23-18-41-41-41h-84z m417-576c-23 0-42 19-42 42v916c0 23 19 42 42 42h83c23 0 42-19 42-42v-916c0-23-19-42-42-42h-83z" horiz-adv-x="1000" />
|
||||
|
||||
<glyph glyph-name="zoom-fit" unicode="" d="M637 779c-12 12-15 30-9 45 7 16 22 26 39 26h291c23 0 42-19 42-42v-291c0-17-10-32-25-39-6-2-11-3-17-3-11 0-21 5-29 12l-292 292z m-566-292c-8-7-18-12-29-12-6 0-11 1-16 3-16 7-26 22-26 39v291c0 23 19 42 42 42h291c17 0 32-10 39-26 6-15 3-33-9-45l-292-292z m292-566c12-12 15-30 9-45-7-16-22-26-39-26h-291c-23 0-42 19-42 42v291c0 17 10 32 26 39 15 6 33 3 45-9l292-292z m566 292c12 12 30 15 46 9 15-7 25-22 25-39v-291c0-23-19-42-42-42h-291c-17 0-32 10-39 26-6 15-3 33 9 45l292 292z" horiz-adv-x="1000" />
|
||||
|
||||
<glyph glyph-name="label-add" unicode="" d="M670 157a42 42 0 0 0 8 11l322 321v-43l-303-303a42 42 0 0 0-11-8l-36-17z m-65 441c40 0 70 18 70 41s-31 40-70 40h-535c-39 0-70-16-70-40s31-41 70-41h535z m-58-135c40 0 70 17 70 40s-32 41-70 41h-477c-39 0-70-18-70-41s31-40 70-40h477z m-51 271c40 0 70 17 70 40s-31 41-70 41h-426c-39 0-70-17-70-41s31-40 70-40h426z m-426-406h6a283 283 0 0 0 137 81h-143c-39-1-70-18-70-41s31-41 70-41z m214 40a234 234 0 1 1 234-234 234 234 0 0 1-234 234z m140-268a9 9 0 0 0-9-9h-81a9 9 0 0 1-9-9v-81a9 9 0 0 0-9-9h-66a9 9 0 0 0-9 9v81a9 9 0 0 1-9 9h-80a9 9 0 0 0-9 9v66a9 9 0 0 0 9 9h81a9 9 0 0 1 10 9v82a9 9 0 0 0 7 8h65a9 9 0 0 0 9-9v-81a9 9 0 0 1 9-9h81a9 9 0 0 0 9-9v-66z m363-22l-40-64a42 42 0 0 0-21-18l-167-60-4 10a156 156 0 0 1-28 40 285 285 0 0 0-100-99 20 20 0 0 1 18-3l315 94a42 42 0 0 1 18 11l222 223v82l-207-206a42 42 0 0 1-6-8z m-250 182a281 281 0 0 0 17-43l56 34a42 42 0 0 1 8 6l382 383v83z" horiz-adv-x="1000" />
|
||||
|
||||
<glyph glyph-name="template-add" unicode="" d="M723 38v-157a31 31 0 0 0-32-31h-406a283 283 0 0 1 276 219h132a31 31 0 0 0 30-31z m241 406h-244l-372 187h121a31 31 0 0 1 31 32v156a31 31 0 0 1-31 31h-433a31 31 0 0 1-31-31v-156a31 31 0 0 1 31-32h244l372-187h-121a31 31 0 0 1-31-31v-94a283 283 0 0 0 53-94h132l-117-94a284 284 0 0 0-5-43l170 137h231a31 31 0 0 1 31 31v157a31 31 0 0 1-31 31z m-446-310a234 234 0 1 0-234 234 234 234 0 0 0 234-234z m-94 32a9 9 0 0 1-9 9h-81a9 9 0 0 0-9 9v81a9 9 0 0 1-9 9h-66a9 9 0 0 1-9-9v-81a9 9 0 0 0-9-9h-80a9 9 0 0 1-9-9v-66a9 9 0 0 1 9-9h81a9 9 0 0 0 10-9v-81a9 9 0 0 1 9-9h65a9 9 0 0 1 9 9v81a9 9 0 0 0 9 9h81a9 9 0 0 1 8 9v66z" horiz-adv-x="1000" />
|
||||
|
||||
<glyph glyph-name="group-add" unicode="" d="M82 842a82 82 0 0 1-82-82v-110h192v192h-110z m53-134h-77v35a41 41 0 0 0 41 41h36v-76z m783 134h-110v-192h192v110a82 82 0 0 1-82 82z m24-134h-77v76h36a41 41 0 0 0 41-41v-35z m-134-657v-192h110a82 82 0 0 1 82 81v110h-192z m134-94a41 41 0 0 0-41-40h-36v76h77v-36z m-76 126v535h75v-536h-75z m-634 626v74h536v-75h-536z m536-719v-75h-302a285 285 0 0 1 62 75h240z m-485 375a234 234 0 1 1 235-234 234 234 0 0 1-234 237z m141-265a9 9 0 0 0-9-9h-81a9 9 0 0 1-9-9v-81a9 9 0 0 0-9-9h-66a9 9 0 0 0-9 9v81a9 9 0 0 1-9 9h-80a9 9 0 0 0-9 9v66a9 9 0 0 0 9 9h81a9 9 0 0 1 10 9v82a9 9 0 0 0 7 8h65a9 9 0 0 0 9-9v-81a9 9 0 0 1 9-9h81a9 9 0 0 0 9-9v-66z m-365 206v312h75v-243a285 285 0 0 1-75-69z m709 58v-179a82 82 0 0 0-82-82h-120a286 286 0 0 1 1 31v10h111a49 49 0 0 1 49 50v162a49 49 0 0 1-49 49h-164a49 49 0 0 1-49-49v-6a284 284 0 0 1-38 27 82 82 0 0 0 80 67h46v66a49 49 0 0 1-49 49h-163a49 49 0 0 1-49-49v-94h-8a286 286 0 0 1-31-2v103a82 82 0 0 0 80 83h179a82 82 0 0 0 82-83v-72h92a82 82 0 0 0 82-81z" horiz-adv-x="1000" />
|
||||
|
||||
<glyph glyph-name="template-import" unicode="" d="M990 432v-153a31 31 0 0 0-31-31h-430a31 31 0 0 0-31 31v153a31 31 0 0 0 31 31h116l-361 172h-243a31 31 0 0 0-31 31v153a31 31 0 0 0 31 31h430a31 31 0 0 0 31-31v-153a31 31 0 0 0-31-32h-115l360-171h243a31 31 0 0 0 31-31z m-656-558h-113a63 63 0 0 0-57 38h-154v-31a31 31 0 0 1 31-31h474a31 31 0 0 1 31 31v31h-154a63 63 0 0 0-57-39z m-115 31h115a31 31 0 0 1 31 31v151a13 13 0 0 0 14 13h159c8 0 10 4 5 9l-256 259a13 13 0 0 1-19 0l-255-258c-5-5-3-10 4-10h159a13 13 0 0 0 14-13v-152a31 31 0 0 1 31-31z" horiz-adv-x="1000" />
|
||||
|
||||
<glyph glyph-name="template-save" unicode="" d="M990 432v-153a31 31 0 0 0-31-31h-430a31 31 0 0 0-31 31v153a31 31 0 0 0 31 31h116l-361 172h-243a31 31 0 0 0-31 31v153a31 31 0 0 0 31 31h430a31 31 0 0 0 31-31v-153a31 31 0 0 0-31-32h-115l360-171h243a31 31 0 0 0 31-31z m-508-560a22 22 0 0 0-22-22h-438a22 22 0 0 0-22 22v437a22 22 0 0 0 22 22h312a47 47 0 0 0 29-12l106-106a47 47 0 0 0 12-28v-313z m-40 18v286a25 25 0 0 1-7 15l-91 92a44 44 0 0 1-23 9v-139a22 22 0 0 0-22-22h-197a22 22 0 0 0-22 22v139h-40v-402h40v139a22 22 0 0 0 22 22h278a22 22 0 0 0 22-22v-139h40z m-81 0v121h-240v-121h241z m-80 402h-93v-121h71a22 22 0 0 1 22 23v98z" horiz-adv-x="1000" />
|
||||
|
||||
<glyph glyph-name="group-remote-add" unicode="" d="M82 842a82 82 0 0 1-82-82v-110h192v192h-110z m53-134h-77v35a41 41 0 0 0 41 41h36v-76z m783 134h-110v-192h192v110a82 82 0 0 1-82 82z m24-134h-77v76h36a41 41 0 0 0 41-41v-35z m-134-657v-192h110a82 82 0 0 1 82 81v110h-192z m134-94a41 41 0 0 0-41-40h-36v76h77v-36z m0 126h-75v535h75v-536z m-710 626v74h536v-75h-536z m536-719v-75h-302a285 285 0 0 1 62 75h240z m-485 375a234 234 0 1 1 235-234 234 234 0 0 1-234 237z m141-265a9 9 0 0 0-9-9h-81a9 9 0 0 1-9-9v-81a9 9 0 0 0-9-9h-66a9 9 0 0 0-9 9v81a9 9 0 0 1-9 9h-80a9 9 0 0 0-9 9v66a9 9 0 0 0 9 9h81a9 9 0 0 1 10 9v82a9 9 0 0 0 7 8h65a9 9 0 0 0 9-9v-81a9 9 0 0 1 9-9h81a9 9 0 0 0 9-9v-66z m-365 206v312h75v-243a285 285 0 0 1-75-69z m750-22a111 111 0 0 0-111-111h-134a281 281 0 0 1-14 59h148a53 53 0 0 1 13 103l-37 9v38a91 91 0 0 1-160 53l-39-50-39 50a29 29 0 0 1-52-22l3-16a281 281 0 0 1-61 16v3a87 87 0 0 0 148 61 148 148 0 0 0 257-89 110 110 0 0 0 78-104z" horiz-adv-x="1000" />
|
||||
|
||||
<glyph glyph-name="port-out-add" unicode="" d="M284 368a234 234 0 1 1 234-234 234 234 0 0 1-234 234z m140-268a9 9 0 0 0-9-9h-81a9 9 0 0 1-9-9v-81a9 9 0 0 0-9-9h-66a9 9 0 0 0-9 9v81a9 9 0 0 1-9 9h-80a9 9 0 0 0-9 9v66a9 9 0 0 0 9 9h81a9 9 0 0 1 10 9v82a9 9 0 0 0 7 8h65a9 9 0 0 0 9-9v-81a9 9 0 0 1 9-9h81a9 9 0 0 0 9-9v-66z m365 594v-102l-39 39v63a38 38 0 0 1-39 37h-615a38 38 0 0 1-38-37v-390a281 281 0 0 1-58-170v579l41 41a58 58 0 0 0 41 17h630a77 77 0 0 0 77-77z m205-421l-341-339c-9-8-16-6-16 7v192a22 22 0 0 1-22 22h-49a281 281 0 0 1-11 63h133a11 11 0 0 0 10-11v-132c0-6 4-7 8-3l212 209a11 11 0 0 1 0 15l-212 210c-4 5-8 3-8-3v-130a11 11 0 0 0-10-11h-208a11 11 0 0 1-11-12 283 283 0 0 1-63 40v10a22 22 0 0 0 22 22h188a22 22 0 0 1 22 21v194c0 11 6 15 15 6l341-339a22 22 0 0 0 0-31z" horiz-adv-x="1000" />
|
||||
|
||||
<glyph glyph-name="port-in-add" unicode="" d="M786 148h-54v276h54v-276z m-179 154l-353 351c-9 10-16 6-16-6v-200a23 23 0 0 0-22-23h-193a23 23 0 0 1-23-22v-231a22 22 0 0 1 2-8 281 281 0 0 0 62 149v38a11 11 0 0 0 11 11h39a281 281 0 0 0 170 57h18v88c0 7 3 8 8 4l218-217a11 11 0 0 0 0-15 281 281 0 0 0 27-60l53 52a23 23 0 0 1-1 32z m-323 66a234 234 0 1 1 234-234 234 234 0 0 1-234 234z m140-268a9 9 0 0 0-9-9h-81a9 9 0 0 1-9-9v-81a9 9 0 0 0-9-9h-66a9 9 0 0 0-9 9v81a9 9 0 0 1-9 9h-80a9 9 0 0 0-9 9v66a9 9 0 0 0 9 9h81a9 9 0 0 1 10 9v82a9 9 0 0 0 7 8h65a9 9 0 0 0 9-9v-81a9 9 0 0 1 9-9h81a9 9 0 0 0 9-9v-66z m534 668a60 60 0 0 1-42 18h-671a63 63 0 0 1-62-63l41-40v22a40 40 0 0 0 40 40h637a40 40 0 0 0 39-40v-636a40 40 0 0 0-39-40h-354a281 281 0 0 0-31-60h463l21 21v735z" horiz-adv-x="1000" />
|
||||
|
||||
<glyph glyph-name="processor-add" unicode="" d="M988 767v-761a63 63 0 0 0-19-43l-113-113 15 62h-121l-62-62 14 62h-120l-63-62 15 62h-73a285 285 0 0 1 62 69h375a42 42 0 0 1 42 42v738a42 42 0 0 1-42 42h-737a42 42 0 0 1-42-42v-396a285 285 0 0 1-68-69v99l-39-38 39 87v120l-39-39 39 88v120l-39-39 39 88 50 50a63 63 0 0 0 44 18h760a83 83 0 0 0 83-83z m-469-634a234 234 0 1 0-234 235 234 234 0 0 0 233-234z m-94 32a9 9 0 0 1-9 9h-81a9 9 0 0 0-9 9v81a9 9 0 0 1-9 9h-67a9 9 0 0 1-9-9v-81a9 9 0 0 0-9-9h-80a9 9 0 0 1-9-9v-65a9 9 0 0 1 9-9h81a9 9 0 0 0 10-9v-81a9 9 0 0 1 9-9h65a9 9 0 0 1 9 9v81a9 9 0 0 0 9 9h81a9 9 0 0 1 8 9v66z m356 381a57 57 0 0 1-10 27 299 299 0 0 1-539-160l14 2a221 221 0 0 0 223 194 263 263 0 0 0 208-107 58 58 0 0 1 104 39 242 242 0 0 0-55-316 225 225 0 0 0-137-45 242 242 0 0 0-26 0 256 256 0 0 0 0-82 297 297 0 0 1 142 58 304 304 0 0 1 122 202 256 256 0 0 1-46 188z" horiz-adv-x="1000" />
|
||||
|
||||
<glyph glyph-name="lineage" unicode="" d="M785 405a214 214 0 0 1-83-17l-58 87a215 215 0 1 1-266-18l-82-184a215 215 0 1 1 72-31l82 185a210 210 0 0 1 127 8l59-90a215 215 0 1 1 149 60z m-539-438a98 98 0 1 0 98 98 98 98 0 0 0-98-98z m157 668a98 98 0 1 0 97-97 98 98 0 0 0-97 97z m382-543a98 98 0 1 0 98 98 98 98 0 0 0-98-98z" horiz-adv-x="1000" />
|
||||
|
||||
<glyph glyph-name="import-from-registry-add" unicode="" d="M890 579c7 37 2 91-47 125-52 37-106 21-135 7-24 43-92 131-251 125-84-3-149-29-190-78-45-51-53-114-54-145-48-8-161-42-160-195 0-58 29-99 65-127 9 12 17 22 27 32-28 20-50 50-50 95-1 151 134 155 140 155h23l-3 22c0 0-7 77 43 134 34 39 88 61 160 64 177 7 219-115 220-120l10-27 23 17c0 0 57 40 108 5 49-35 27-98 25-100l-9-25 27-3c6 0 146-17 136-157-7-109-143-107-148-108h-121v-42h124c63 0 180 30 187 147 8 129-84 183-150 198v1z m-40-375h-179c-5 0-10 2-14 6-4 4-7 8-7 14v173c0 5-2 10-6 14-4 4-8 7-14 7h-207c-5 0-10-2-15-6-2-3-3-7-4-10 34-8 67-22 95-41h84c0 0 5-1 8-3 2-1 2-4 2-7v-101c15-32 25-67 27-103h103c6 0 8-3 4-8l-141-142c-23-41-56-76-96-101l23-23c4-3 9-5 14-5 5 0 10 2 14 5l314 316c0 0 6 8 4 10-1 3-4 4-10 4l1 1z m-506 164c-42 0-81-10-117-31-36-21-64-49-85-85-21-36-32-75-32-118 0-42 11-81 32-117 21-36 49-65 85-85 36-21 75-32 117-32 43 0 82 11 118 32 36 20 64 49 85 85 21 36 31 75 31 117 0 43-10 82-31 118-21 36-49 64-85 85-36 21-75 31-118 31z m140-268c0 0 0-5-2-7-2-1-4-2-7-2h-81c0 0-5-1-6-3-2-1-3-4-3-6v-81c0 0-1-5-2-7-2-2-5-2-7-2h-66c0 0-5 0-7 2-1 2-2 4-2 7v81c0 0 0 5-3 6-1 2-4 3-6 3h-80c0 0-5 1-7 2-2 2-2 5-2 7v66c0 0 0 5 2 7 2 1 4 2 7 2h81c0 0 5 0 6 3 2 1 4 4 4 6v82c0 5 3 7 6 8h65c0 0 5-1 7-2 2-2 2-4 2-7v-81c0 0 0-5 3-6 2-2 4-3 7-3h80c0 0 5-1 7-2 2-2 3-5 3-7v-66h1z" horiz-adv-x="1083" />
|
||||
|
||||
<glyph glyph-name="import-from-registry" unicode="" d="M913 579c6 37 1 91-47 125-53 37-107 21-136 7-23 43-92 131-251 125-84-3-148-29-190-78-45-51-52-114-53-145-48-8-162-42-160-195 1-142 159-182 242-184h28v42h-28c-10 0-200 7-201 143-1 151 134 154 140 154h22l-2 23c0 0-7 77 42 134 34 39 89 61 161 63 177 8 218-114 220-119l9-27 24 16c0 0 57 41 108 5 49-34 27-97 25-100l-9-25 26-2c6 0 146-16 137-158-7-108-143-106-148-107h-121v-42h123c64 0 180 30 188 147 8 129-84 183-150 198h1z m-246-168c0 0 6-9 6-14v-173c0-5 1-10 6-14 4-4 9-6 14-6h180c5 0 8-1 10-4 0-2 0-6-5-10l-314-316c-4-3-9-5-14-5-5 0-10 2-14 5l-314 316c0 0-5 8-4 10 0 3 4 4 10 4h179c5 0 10 3 14 7 4 4 6 9 6 14v172c0 6 1 11 6 15 4 4 9 6 15 6h206c5 0 10-3 14-7h-1z m-174-50c0 0-5-1-8-3-2-3-2-5-2-8v-192c0 0-1-6-4-8-2-2-5-3-7-3h-121c-6 0-8-3-3-8l194-195c0 0 4-2 6-2 3 0 5 0 7 2l194 195c4 5 3 8-3 8h-119c0 0-6 1-8 3-2 3-3 5-3 8v193c0 0-1 5-3 7-1 3-4 3-7 3h-113z" horiz-adv-x="1083" />
|
||||
|
||||
<glyph glyph-name="port-in" unicode="" d="M1000-10v735l-42 43a60 60 0 0 1-42 18h-671a63 63 0 0 1-62-63l41-40v22a40 40 0 0 0 40 40h637a40 40 0 0 0 39-40v-636a40 40 0 0 0-39-40h-449l-60-60h587z m-1000 412v-231a23 23 0 0 1 23-23h192a23 23 0 0 0 23-22v-200c0-13 7-15 16-7l353 351a23 23 0 0 1 0 32l-353 351c-9 10-16 6-16-6v-200a23 23 0 0 0-22-23h-193a23 23 0 0 1-23-22z m63-52a11 11 0 0 0 11 11h216a11 11 0 0 1 12 12v133c0 7 3 8 8 4l218-217a11 11 0 0 0 0-15l-218-217c-5-4-8-3-8 4v135a11 11 0 0 1-12 12h-215a11 11 0 0 0-12 11v127z m722-201h-53v275h54v-276z" horiz-adv-x="1000" />
|
||||
|
||||
<glyph glyph-name="port-out" unicode="" d="M0 3v710l41 41a58 58 0 0 0 41 17h630a77 77 0 0 0 77-77v-102l-39 39v63a38 38 0 0 1-39 37h-615a38 38 0 0 1-38-37v-616a38 38 0 0 1 38-38h482v-58h-558z m653-69l341 339a22 22 0 0 1 0 31l-341 339c-9 9-16 6-16-6v-193a22 22 0 0 0-22-22h-187a22 22 0 0 1-22-22v-222a22 22 0 0 1 22-22h187a22 22 0 0 0 22-22v-193c0-13 7-16 16-7z m45 141v131a11 11 0 0 1-10 11h-208a11 11 0 0 0-11 11v122a11 11 0 0 0 11 11h208a11 11 0 0 1 10 11v130c0 6 4 7 8 3l212-209a11 11 0 0 0 0-15l-212-209c-4-3-8-3-8 3z m-467 347a127 127 0 0 1-118-134 127 127 0 0 1 118-133 127 127 0 0 1 119 133 127 127 0 0 1-119 134z m0-223a84 84 0 0 0-79 89 84 84 0 0 0 79 89 84 84 0 0 0 79-89 84 84 0 0 0-79-89z" horiz-adv-x="1000" />
|
||||
|
||||
<glyph glyph-name="connect" unicode="" d="M853 703a500 500 0 1 0-753-53 31 31 0 0 0 46 2l279-279a16 16 0 0 0 0-22l-93-94a8 8 0 0 1 3-13l332-74a8 8 0 0 1 9 9l-72 334a8 8 0 0 1-13 3l-94-93a16 16 0 0 0-22 0l-278 280a31 31 0 0 0 4 47 500 500 0 0 0 652-47z" horiz-adv-x="1000" />
|
||||
|
||||
<glyph glyph-name="connect-add" unicode="" d="M853 703a500 500 0 1 0-752-53 31 31 0 0 0 46 2l154-154a16 16 0 0 0 0-22l-94-94a8 8 0 0 1 4-13l333-73a8 8 0 0 1 9 10l-74 331a8 8 0 0 1-13 4l-94-94a16 16 0 0 0-22 0l-152 156a31 31 0 0 0 3 47 500 500 0 0 0 652-47z m-55-523a8 8 0 0 1 8 8v70a8 8 0 0 0 7 8h70a8 8 0 0 1 8 8v56a8 8 0 0 1-8 8h-70a8 8 0 0 0-8 8v70a8 8 0 0 1-8 8h-56a8 8 0 0 1-8-8v-70a8 8 0 0 0-8-8h-69a8 8 0 0 1-8-8v-56a8 8 0 0 1 8-8h71a8 8 0 0 0 7-8v-70a8 8 0 0 1 8-8h56z" horiz-adv-x="1000" />
|
||||
|
||||
<glyph glyph-name="threads" unicode="" d="M308 350a149 149 0 1 0-149 149 149 149 0 0 0 149-149z m10 341a159 159 0 1 1-159-158 159 159 0 0 1 159 158z m-66 0a94 94 0 1 0-94 94 94 94 0 0 0 94-94z m248 149a149 149 0 1 1 149-149 149 149 0 0 1-149 149z m-182-831a159 159 0 1 1-159-159 159 159 0 0 1 159 159z m-66 0a94 94 0 1 0-94 94 94 94 0 0 0 94-94z m248 149a149 149 0 1 1 149-149 149 149 0 0 1-149 149z m341 0a149 149 0 1 1 149-149 149 149 0 0 1-149 149z m159 192a159 159 0 1 1-159-159 159 159 0 0 1 159 159z m-66 0a94 94 0 1 0-94 94 94 94 0 0 0 94-94z m66 341a159 159 0 1 1-159-158 159 159 0 0 1 159 158z m-66 0a94 94 0 1 0-94 94 94 94 0 0 0 94-94z m-434-192a149 149 0 1 1 149-149 149 149 0 0 1-149 149z" horiz-adv-x="1000" />
|
||||
|
||||
<glyph glyph-name="drop" unicode="" d="M507-38v104a8 8 0 0 0 8 8h104v-112h-112z m0-111a333 333 0 0 1 112 21v56h-104a8 8 0 0 1-8-8v-70z m237 236v112h-103a8 8 0 0 1-8-8v-103h111z m14-139a23 23 0 0 1 6 17v89h-111v-112h88a23 23 0 0 1 17 7z m-98-98a334 334 0 0 1 83 51h-83v-51z m174 238a332 332 0 0 1 22 111h-78v-111h56z m-28-126a333 333 0 0 1 50 83h-50v-83z m0 0a333 333 0 0 1 50 83h-50v-83z m21 258h-209a8 8 0 0 1-8-8v-117h-117a8 8 0 0 1-8-8v-209a342 342 0 0 0-341 343c0 162 127 318 214 432a1279 1279 0 0 1 125 195 4 4 0 0 0 7 0 1279 1279 0 0 1 125-195c85-114 212-270 212-432z m-489 326l-28 5a1143 1143 0 0 1-80-123 406 406 0 0 1-59-255 320 320 0 0 1 107-192 314 314 0 0 1 39-29 4 4 0 0 1 5 7 344 344 0 0 0-94 156 435 435 0 0 0 31 279 1210 1210 0 0 0 68 136z m72 138l-19-26c-20-28-41-55-62-82l24-3c18 29 36 58 53 86l14 25c3 7-6 6-10 0z" horiz-adv-x="1000" />
|
||||
</font>
|
||||
</defs>
|
||||
</svg>
|
Before Width: | Height: | Size: 24 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 2.4 KiB |
Binary file not shown.
Before Width: | Height: | Size: 224 B |
|
@ -1,19 +0,0 @@
|
|||
Copyright (C) 2014 by Marijn Haverbeke <marijnh@gmail.com> and others
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
|
@ -1,31 +0,0 @@
|
|||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: http://codemirror.net/LICENSE
|
||||
|
||||
// Depends on jsonlint.js from https://github.com/zaach/jsonlint
|
||||
|
||||
// declare global: jsonlint
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
mod(require("../../lib/codemirror"));
|
||||
else if (typeof define == "function" && define.amd) // AMD
|
||||
define(["../../lib/codemirror"], mod);
|
||||
else // Plain browser env
|
||||
mod(CodeMirror);
|
||||
})(function(CodeMirror) {
|
||||
"use strict";
|
||||
|
||||
CodeMirror.registerHelper("lint", "json", function(text) {
|
||||
var found = [];
|
||||
jsonlint.parseError = function(str, hash) {
|
||||
var loc = hash.loc;
|
||||
found.push({from: CodeMirror.Pos(loc.first_line - 1, loc.first_column),
|
||||
to: CodeMirror.Pos(loc.last_line - 1, loc.last_column),
|
||||
message: str});
|
||||
};
|
||||
try { jsonlint.parse(text); }
|
||||
catch(e) {}
|
||||
return found;
|
||||
});
|
||||
|
||||
});
|
|
@ -1,73 +0,0 @@
|
|||
/* The lint marker gutter */
|
||||
.CodeMirror-lint-markers {
|
||||
width: 16px;
|
||||
}
|
||||
|
||||
.CodeMirror-lint-tooltip {
|
||||
background-color: infobackground;
|
||||
border: 1px solid black;
|
||||
border-radius: 4px 4px 4px 4px;
|
||||
color: infotext;
|
||||
font-family: monospace;
|
||||
font-size: 10pt;
|
||||
overflow: hidden;
|
||||
padding: 2px 5px;
|
||||
position: fixed;
|
||||
white-space: pre;
|
||||
white-space: pre-wrap;
|
||||
z-index: 100;
|
||||
max-width: 600px;
|
||||
opacity: 0;
|
||||
transition: opacity .4s;
|
||||
-moz-transition: opacity .4s;
|
||||
-webkit-transition: opacity .4s;
|
||||
-o-transition: opacity .4s;
|
||||
-ms-transition: opacity .4s;
|
||||
}
|
||||
|
||||
.CodeMirror-lint-mark-error, .CodeMirror-lint-mark-warning {
|
||||
background-position: left bottom;
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
|
||||
.CodeMirror-lint-mark-error {
|
||||
background-image:
|
||||
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJDw4cOCW1/KIAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAHElEQVQI12NggIL/DAz/GdA5/xkY/qPKMDAwAADLZwf5rvm+LQAAAABJRU5ErkJggg==")
|
||||
;
|
||||
}
|
||||
|
||||
.CodeMirror-lint-mark-warning {
|
||||
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJFhQXEbhTg7YAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAMklEQVQI12NkgIIvJ3QXMjAwdDN+OaEbysDA4MPAwNDNwMCwiOHLCd1zX07o6kBVGQEAKBANtobskNMAAAAASUVORK5CYII=");
|
||||
}
|
||||
|
||||
.CodeMirror-lint-marker-error, .CodeMirror-lint-marker-warning {
|
||||
background-position: center center;
|
||||
background-repeat: no-repeat;
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
vertical-align: middle;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.CodeMirror-lint-message-error, .CodeMirror-lint-message-warning {
|
||||
padding-left: 18px;
|
||||
background-position: top left;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
.CodeMirror-lint-marker-error, .CodeMirror-lint-message-error {
|
||||
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAHlBMVEW7AAC7AACxAAC7AAC7AAAAAAC4AAC5AAD///+7AAAUdclpAAAABnRSTlMXnORSiwCK0ZKSAAAATUlEQVR42mWPOQ7AQAgDuQLx/z8csYRmPRIFIwRGnosRrpamvkKi0FTIiMASR3hhKW+hAN6/tIWhu9PDWiTGNEkTtIOucA5Oyr9ckPgAWm0GPBog6v4AAAAASUVORK5CYII=");
|
||||
}
|
||||
|
||||
.CodeMirror-lint-marker-warning, .CodeMirror-lint-message-warning {
|
||||
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAANlBMVEX/uwDvrwD/uwD/uwD/uwD/uwD/uwD/uwD/uwD6twD/uwAAAADurwD2tQD7uAD+ugAAAAD/uwDhmeTRAAAADHRSTlMJ8mN1EYcbmiixgACm7WbuAAAAVklEQVR42n3PUQqAIBBFUU1LLc3u/jdbOJoW1P08DA9Gba8+YWJ6gNJoNYIBzAA2chBth5kLmG9YUoG0NHAUwFXwO9LuBQL1giCQb8gC9Oro2vp5rncCIY8L8uEx5ZkAAAAASUVORK5CYII=");
|
||||
}
|
||||
|
||||
.CodeMirror-lint-marker-multiple {
|
||||
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAMAAADzjKfhAAAACVBMVEUAAAAAAAC/v7914kyHAAAAAXRSTlMAQObYZgAAACNJREFUeNo1ioEJAAAIwmz/H90iFFSGJgFMe3gaLZ0od+9/AQZ0ADosbYraAAAAAElFTkSuQmCC");
|
||||
background-repeat: no-repeat;
|
||||
background-position: right bottom;
|
||||
width: 100%; height: 100%;
|
||||
}
|
|
@ -1,239 +0,0 @@
|
|||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: http://codemirror.net/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
mod(require("../../lib/codemirror"));
|
||||
else if (typeof define == "function" && define.amd) // AMD
|
||||
define(["../../lib/codemirror"], mod);
|
||||
else // Plain browser env
|
||||
mod(CodeMirror);
|
||||
})(function(CodeMirror) {
|
||||
"use strict";
|
||||
var GUTTER_ID = "CodeMirror-lint-markers";
|
||||
|
||||
function showTooltip(e, content) {
|
||||
var tt = document.createElement("div");
|
||||
tt.className = "CodeMirror-lint-tooltip";
|
||||
tt.appendChild(content.cloneNode(true));
|
||||
document.body.appendChild(tt);
|
||||
|
||||
function position(e) {
|
||||
if (!tt.parentNode) return CodeMirror.off(document, "mousemove", position);
|
||||
tt.style.top = Math.max(0, e.clientY - tt.offsetHeight - 5) + "px";
|
||||
tt.style.left = (e.clientX + 5) + "px";
|
||||
}
|
||||
CodeMirror.on(document, "mousemove", position);
|
||||
position(e);
|
||||
if (tt.style.opacity != null) tt.style.opacity = 1;
|
||||
return tt;
|
||||
}
|
||||
function rm(elt) {
|
||||
if (elt.parentNode) elt.parentNode.removeChild(elt);
|
||||
}
|
||||
function hideTooltip(tt) {
|
||||
if (!tt.parentNode) return;
|
||||
if (tt.style.opacity == null) rm(tt);
|
||||
tt.style.opacity = 0;
|
||||
setTimeout(function() { rm(tt); }, 600);
|
||||
}
|
||||
|
||||
function showTooltipFor(e, content, node) {
|
||||
var tooltip = showTooltip(e, content);
|
||||
function hide() {
|
||||
CodeMirror.off(node, "mouseout", hide);
|
||||
if (tooltip) { hideTooltip(tooltip); tooltip = null; }
|
||||
}
|
||||
var poll = setInterval(function() {
|
||||
if (tooltip) for (var n = node;; n = n.parentNode) {
|
||||
if (n && n.nodeType == 11) n = n.host;
|
||||
if (n == document.body) return;
|
||||
if (!n) { hide(); break; }
|
||||
}
|
||||
if (!tooltip) return clearInterval(poll);
|
||||
}, 400);
|
||||
CodeMirror.on(node, "mouseout", hide);
|
||||
}
|
||||
|
||||
function LintState(cm, options, hasGutter) {
|
||||
this.marked = [];
|
||||
this.options = options;
|
||||
this.timeout = null;
|
||||
this.hasGutter = hasGutter;
|
||||
this.onMouseOver = function(e) { onMouseOver(cm, e); };
|
||||
this.waitingFor = 0
|
||||
}
|
||||
|
||||
function parseOptions(_cm, options) {
|
||||
if (options instanceof Function) return {getAnnotations: options};
|
||||
if (!options || options === true) options = {};
|
||||
return options;
|
||||
}
|
||||
|
||||
function clearMarks(cm) {
|
||||
var state = cm.state.lint;
|
||||
if (state.hasGutter) cm.clearGutter(GUTTER_ID);
|
||||
for (var i = 0; i < state.marked.length; ++i)
|
||||
state.marked[i].clear();
|
||||
state.marked.length = 0;
|
||||
}
|
||||
|
||||
function makeMarker(labels, severity, multiple, tooltips) {
|
||||
var marker = document.createElement("div"), inner = marker;
|
||||
marker.className = "CodeMirror-lint-marker-" + severity;
|
||||
if (multiple) {
|
||||
inner = marker.appendChild(document.createElement("div"));
|
||||
inner.className = "CodeMirror-lint-marker-multiple";
|
||||
}
|
||||
|
||||
if (tooltips != false) CodeMirror.on(inner, "mouseover", function(e) {
|
||||
showTooltipFor(e, labels, inner);
|
||||
});
|
||||
|
||||
return marker;
|
||||
}
|
||||
|
||||
function getMaxSeverity(a, b) {
|
||||
if (a == "error") return a;
|
||||
else return b;
|
||||
}
|
||||
|
||||
function groupByLine(annotations) {
|
||||
var lines = [];
|
||||
for (var i = 0; i < annotations.length; ++i) {
|
||||
var ann = annotations[i], line = ann.from.line;
|
||||
(lines[line] || (lines[line] = [])).push(ann);
|
||||
}
|
||||
return lines;
|
||||
}
|
||||
|
||||
function annotationTooltip(ann) {
|
||||
var severity = ann.severity;
|
||||
if (!severity) severity = "error";
|
||||
var tip = document.createElement("div");
|
||||
tip.className = "CodeMirror-lint-message-" + severity;
|
||||
tip.appendChild(document.createTextNode(ann.message));
|
||||
return tip;
|
||||
}
|
||||
|
||||
function lintAsync(cm, getAnnotations, passOptions) {
|
||||
var state = cm.state.lint
|
||||
var id = ++state.waitingFor
|
||||
function abort() {
|
||||
id = -1
|
||||
cm.off("change", abort)
|
||||
}
|
||||
cm.on("change", abort)
|
||||
getAnnotations(cm.getValue(), function(annotations, arg2) {
|
||||
cm.off("change", abort)
|
||||
if (state.waitingFor != id) return
|
||||
if (arg2 && annotations instanceof CodeMirror) annotations = arg2
|
||||
updateLinting(cm, annotations)
|
||||
}, passOptions, cm);
|
||||
}
|
||||
|
||||
function startLinting(cm) {
|
||||
var state = cm.state.lint, options = state.options;
|
||||
var passOptions = options.options || options; // Support deprecated passing of `options` property in options
|
||||
var getAnnotations = options.getAnnotations || cm.getHelper(CodeMirror.Pos(0, 0), "lint");
|
||||
if (!getAnnotations) return;
|
||||
if (options.async || getAnnotations.async) {
|
||||
lintAsync(cm, getAnnotations, passOptions)
|
||||
} else {
|
||||
updateLinting(cm, getAnnotations(cm.getValue(), passOptions, cm));
|
||||
}
|
||||
}
|
||||
|
||||
function updateLinting(cm, annotationsNotSorted) {
|
||||
clearMarks(cm);
|
||||
var state = cm.state.lint, options = state.options;
|
||||
|
||||
var annotations = groupByLine(annotationsNotSorted);
|
||||
|
||||
for (var line = 0; line < annotations.length; ++line) {
|
||||
var anns = annotations[line];
|
||||
if (!anns) continue;
|
||||
|
||||
var maxSeverity = null;
|
||||
var tipLabel = state.hasGutter && document.createDocumentFragment();
|
||||
|
||||
for (var i = 0; i < anns.length; ++i) {
|
||||
var ann = anns[i];
|
||||
var severity = ann.severity;
|
||||
if (!severity) severity = "error";
|
||||
maxSeverity = getMaxSeverity(maxSeverity, severity);
|
||||
|
||||
if (options.formatAnnotation) ann = options.formatAnnotation(ann);
|
||||
if (state.hasGutter) tipLabel.appendChild(annotationTooltip(ann));
|
||||
|
||||
if (ann.to) state.marked.push(cm.markText(ann.from, ann.to, {
|
||||
className: "CodeMirror-lint-mark-" + severity,
|
||||
__annotation: ann
|
||||
}));
|
||||
}
|
||||
|
||||
if (state.hasGutter)
|
||||
cm.setGutterMarker(line, GUTTER_ID, makeMarker(tipLabel, maxSeverity, anns.length > 1,
|
||||
state.options.tooltips));
|
||||
}
|
||||
if (options.onUpdateLinting) options.onUpdateLinting(annotationsNotSorted, annotations, cm);
|
||||
}
|
||||
|
||||
function onChange(cm) {
|
||||
var state = cm.state.lint;
|
||||
if (!state) return;
|
||||
clearTimeout(state.timeout);
|
||||
state.timeout = setTimeout(function(){startLinting(cm);}, state.options.delay || 500);
|
||||
}
|
||||
|
||||
function popupTooltips(annotations, e) {
|
||||
var target = e.target || e.srcElement;
|
||||
var tooltip = document.createDocumentFragment();
|
||||
for (var i = 0; i < annotations.length; i++) {
|
||||
var ann = annotations[i];
|
||||
tooltip.appendChild(annotationTooltip(ann));
|
||||
}
|
||||
showTooltipFor(e, tooltip, target);
|
||||
}
|
||||
|
||||
function onMouseOver(cm, e) {
|
||||
var target = e.target || e.srcElement;
|
||||
if (!/\bCodeMirror-lint-mark-/.test(target.className)) return;
|
||||
var box = target.getBoundingClientRect(), x = (box.left + box.right) / 2, y = (box.top + box.bottom) / 2;
|
||||
var spans = cm.findMarksAt(cm.coordsChar({left: x, top: y}, "client"));
|
||||
|
||||
var annotations = [];
|
||||
for (var i = 0; i < spans.length; ++i) {
|
||||
var ann = spans[i].__annotation;
|
||||
if (ann) annotations.push(ann);
|
||||
}
|
||||
if (annotations.length) popupTooltips(annotations, e);
|
||||
}
|
||||
|
||||
CodeMirror.defineOption("lint", false, function(cm, val, old) {
|
||||
if (old && old != CodeMirror.Init) {
|
||||
clearMarks(cm);
|
||||
if (cm.state.lint.options.lintOnChange !== false)
|
||||
cm.off("change", onChange);
|
||||
CodeMirror.off(cm.getWrapperElement(), "mouseover", cm.state.lint.onMouseOver);
|
||||
clearTimeout(cm.state.lint.timeout);
|
||||
delete cm.state.lint;
|
||||
}
|
||||
|
||||
if (val) {
|
||||
var gutters = cm.getOption("gutters"), hasLintGutter = false;
|
||||
for (var i = 0; i < gutters.length; ++i) if (gutters[i] == GUTTER_ID) hasLintGutter = true;
|
||||
var state = cm.state.lint = new LintState(cm, parseOptions(cm, val), hasLintGutter);
|
||||
if (state.options.lintOnChange !== false)
|
||||
cm.on("change", onChange);
|
||||
if (state.options.tooltips != false)
|
||||
CodeMirror.on(cm.getWrapperElement(), "mouseover", state.onMouseOver);
|
||||
|
||||
startLinting(cm);
|
||||
}
|
||||
});
|
||||
|
||||
CodeMirror.defineExtension("performLint", function() {
|
||||
if (this.state.lint) startLinting(this);
|
||||
});
|
||||
});
|
File diff suppressed because one or more lines are too long
|
@ -1,318 +0,0 @@
|
|||
/* BASICS */
|
||||
|
||||
.CodeMirror {
|
||||
/* Set height, width, borders, and global font properties here */
|
||||
font-family: monospace;
|
||||
height: 300px;
|
||||
}
|
||||
.CodeMirror-scroll {
|
||||
/* Set scrolling behaviour here */
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
/* PADDING */
|
||||
|
||||
.CodeMirror-lines {
|
||||
padding: 4px 0; /* Vertical padding around content */
|
||||
}
|
||||
.CodeMirror pre {
|
||||
padding: 0 4px; /* Horizontal padding of content */
|
||||
}
|
||||
|
||||
.CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {
|
||||
background-color: white; /* The little square between H and V scrollbars */
|
||||
}
|
||||
|
||||
/* GUTTER */
|
||||
|
||||
.CodeMirror-gutters {
|
||||
border-right: 1px solid #ddd;
|
||||
background-color: #f7f7f7;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.CodeMirror-linenumbers {}
|
||||
.CodeMirror-linenumber {
|
||||
padding: 0 3px 0 5px;
|
||||
min-width: 20px;
|
||||
text-align: right;
|
||||
color: #999;
|
||||
-moz-box-sizing: content-box;
|
||||
box-sizing: content-box;
|
||||
}
|
||||
|
||||
.CodeMirror-guttermarker { color: black; }
|
||||
.CodeMirror-guttermarker-subtle { color: #999; }
|
||||
|
||||
/* CURSOR */
|
||||
|
||||
.CodeMirror div.CodeMirror-cursor {
|
||||
border-left: 1px solid black;
|
||||
}
|
||||
/* Shown when moving in bi-directional text */
|
||||
.CodeMirror div.CodeMirror-secondarycursor {
|
||||
border-left: 1px solid silver;
|
||||
}
|
||||
.CodeMirror.cm-fat-cursor div.CodeMirror-cursor {
|
||||
width: auto;
|
||||
border: 0;
|
||||
background: #7e7;
|
||||
}
|
||||
.CodeMirror.cm-fat-cursor div.CodeMirror-cursors {
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.cm-animate-fat-cursor {
|
||||
width: auto;
|
||||
border: 0;
|
||||
-webkit-animation: blink 1.06s steps(1) infinite;
|
||||
-moz-animation: blink 1.06s steps(1) infinite;
|
||||
animation: blink 1.06s steps(1) infinite;
|
||||
}
|
||||
@-moz-keyframes blink {
|
||||
0% { background: #7e7; }
|
||||
50% { background: none; }
|
||||
100% { background: #7e7; }
|
||||
}
|
||||
@-webkit-keyframes blink {
|
||||
0% { background: #7e7; }
|
||||
50% { background: none; }
|
||||
100% { background: #7e7; }
|
||||
}
|
||||
@keyframes blink {
|
||||
0% { background: #7e7; }
|
||||
50% { background: none; }
|
||||
100% { background: #7e7; }
|
||||
}
|
||||
|
||||
/* Can style cursor different in overwrite (non-insert) mode */
|
||||
div.CodeMirror-overwrite div.CodeMirror-cursor {}
|
||||
|
||||
.cm-tab { display: inline-block; text-decoration: inherit; }
|
||||
|
||||
.CodeMirror-ruler {
|
||||
border-left: 1px solid #ccc;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
/* DEFAULT THEME */
|
||||
|
||||
.cm-s-default .cm-keyword {color: #708;}
|
||||
.cm-s-default .cm-atom {color: #219;}
|
||||
.cm-s-default .cm-number {color: #164;}
|
||||
.cm-s-default .cm-def {color: #00f;}
|
||||
.cm-s-default .cm-variable,
|
||||
.cm-s-default .cm-punctuation,
|
||||
.cm-s-default .cm-property,
|
||||
.cm-s-default .cm-operator {}
|
||||
.cm-s-default .cm-variable-2 {color: #05a;}
|
||||
.cm-s-default .cm-variable-3 {color: #085;}
|
||||
.cm-s-default .cm-comment {color: #a50;}
|
||||
.cm-s-default .cm-string {color: #a11;}
|
||||
.cm-s-default .cm-string-2 {color: #f50;}
|
||||
.cm-s-default .cm-meta {color: #555;}
|
||||
.cm-s-default .cm-qualifier {color: #555;}
|
||||
.cm-s-default .cm-builtin {color: #30a;}
|
||||
.cm-s-default .cm-bracket {color: #997;}
|
||||
.cm-s-default .cm-tag {color: #170;}
|
||||
.cm-s-default .cm-attribute {color: #00c;}
|
||||
.cm-s-default .cm-header {color: blue;}
|
||||
.cm-s-default .cm-quote {color: #090;}
|
||||
.cm-s-default .cm-hr {color: #999;}
|
||||
.cm-s-default .cm-link {color: #00c;}
|
||||
|
||||
.cm-negative {color: #d44;}
|
||||
.cm-positive {color: #292;}
|
||||
.cm-header, .cm-strong {font-weight: bold;}
|
||||
.cm-em {font-style: italic;}
|
||||
.cm-link {text-decoration: underline;}
|
||||
.cm-strikethrough {text-decoration: line-through;}
|
||||
|
||||
.cm-s-default .cm-error {color: #f00;}
|
||||
.cm-invalidchar {color: #f00;}
|
||||
|
||||
/* Default styles for common addons */
|
||||
|
||||
div.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;}
|
||||
div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;}
|
||||
.CodeMirror-matchingtag { background: rgba(255, 150, 0, .3); }
|
||||
.CodeMirror-activeline-background {background: #e8f2ff;}
|
||||
|
||||
/* STOP */
|
||||
|
||||
/* The rest of this file contains styles related to the mechanics of
|
||||
the editor. You probably shouldn't touch them. */
|
||||
|
||||
.CodeMirror {
|
||||
line-height: 1;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
background: white;
|
||||
color: black;
|
||||
}
|
||||
|
||||
.CodeMirror-scroll {
|
||||
/* 30px is the magic margin used to hide the element's real scrollbars */
|
||||
/* See overflow: hidden in .CodeMirror */
|
||||
margin-bottom: -30px; margin-right: -30px;
|
||||
padding-bottom: 30px;
|
||||
height: 100%;
|
||||
outline: none; /* Prevent dragging from highlighting the element */
|
||||
position: relative;
|
||||
-moz-box-sizing: content-box;
|
||||
box-sizing: content-box;
|
||||
}
|
||||
.CodeMirror-sizer {
|
||||
position: relative;
|
||||
border-right: 30px solid transparent;
|
||||
-moz-box-sizing: content-box;
|
||||
box-sizing: content-box;
|
||||
}
|
||||
|
||||
/* The fake, visible scrollbars. Used to force redraw during scrolling
|
||||
before actuall scrolling happens, thus preventing shaking and
|
||||
flickering artifacts. */
|
||||
.CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {
|
||||
position: absolute;
|
||||
z-index: 6;
|
||||
display: none;
|
||||
}
|
||||
.CodeMirror-vscrollbar {
|
||||
right: 0; top: 0;
|
||||
overflow-x: hidden;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
.CodeMirror-hscrollbar {
|
||||
bottom: 0; left: 0;
|
||||
overflow-y: hidden;
|
||||
overflow-x: scroll;
|
||||
}
|
||||
.CodeMirror-scrollbar-filler {
|
||||
right: 0; bottom: 0;
|
||||
}
|
||||
.CodeMirror-gutter-filler {
|
||||
left: 0; bottom: 0;
|
||||
}
|
||||
|
||||
.CodeMirror-gutters {
|
||||
position: absolute; left: 0; top: 0;
|
||||
padding-bottom: 30px;
|
||||
z-index: 3;
|
||||
}
|
||||
.CodeMirror-gutter {
|
||||
white-space: normal;
|
||||
height: 100%;
|
||||
-moz-box-sizing: content-box;
|
||||
box-sizing: content-box;
|
||||
padding-bottom: 30px;
|
||||
margin-bottom: -32px;
|
||||
display: inline-block;
|
||||
/* Hack to make IE7 behave */
|
||||
*zoom:1;
|
||||
*display:inline;
|
||||
}
|
||||
.CodeMirror-gutter-wrapper {
|
||||
position: absolute;
|
||||
z-index: 4;
|
||||
height: 100%;
|
||||
}
|
||||
.CodeMirror-gutter-elt {
|
||||
position: absolute;
|
||||
cursor: default;
|
||||
z-index: 4;
|
||||
}
|
||||
|
||||
.CodeMirror-lines {
|
||||
cursor: text;
|
||||
min-height: 1px; /* prevents collapsing before first draw */
|
||||
}
|
||||
.CodeMirror pre {
|
||||
/* Reset some styles that the rest of the page might have set */
|
||||
-moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0;
|
||||
border-width: 0;
|
||||
background: transparent;
|
||||
font-family: inherit;
|
||||
font-size: inherit;
|
||||
margin: 0;
|
||||
white-space: pre;
|
||||
word-wrap: normal;
|
||||
line-height: inherit;
|
||||
color: inherit;
|
||||
z-index: 2;
|
||||
position: relative;
|
||||
overflow: visible;
|
||||
}
|
||||
.CodeMirror-wrap pre {
|
||||
word-wrap: break-word;
|
||||
white-space: pre-wrap;
|
||||
word-break: normal;
|
||||
}
|
||||
|
||||
.CodeMirror-linebackground {
|
||||
position: absolute;
|
||||
left: 0; right: 0; top: 0; bottom: 0;
|
||||
z-index: 0;
|
||||
}
|
||||
|
||||
.CodeMirror-linewidget {
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.CodeMirror-widget {}
|
||||
|
||||
.CodeMirror-wrap .CodeMirror-scroll {
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
.CodeMirror-measure {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 0;
|
||||
overflow: hidden;
|
||||
visibility: hidden;
|
||||
}
|
||||
.CodeMirror-measure pre { position: static; }
|
||||
|
||||
.CodeMirror div.CodeMirror-cursor {
|
||||
position: absolute;
|
||||
border-right: none;
|
||||
width: 0;
|
||||
}
|
||||
|
||||
div.CodeMirror-cursors {
|
||||
visibility: hidden;
|
||||
position: relative;
|
||||
z-index: 3;
|
||||
}
|
||||
.CodeMirror-focused div.CodeMirror-cursors {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
.CodeMirror-selected { background: #d9d9d9; }
|
||||
.CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; }
|
||||
.CodeMirror-crosshair { cursor: crosshair; }
|
||||
|
||||
.cm-searching {
|
||||
background: #ffa;
|
||||
background: rgba(255, 255, 0, .4);
|
||||
}
|
||||
|
||||
/* IE7 hack to prevent it from returning funny offsetTops on the spans */
|
||||
.CodeMirror span { *vertical-align: text-bottom; }
|
||||
|
||||
/* Used to force a border model for a node */
|
||||
.cm-force-border { padding-right: .1px; }
|
||||
|
||||
@media print {
|
||||
/* Hide the cursor when printing */
|
||||
.CodeMirror div.CodeMirror-cursors {
|
||||
visibility: hidden;
|
||||
}
|
||||
}
|
||||
|
||||
/* See issue #2901 */
|
||||
.cm-tab-wrap-hack:after { content: ''; }
|
||||
|
||||
/* Help users use markselection to safely style text background */
|
||||
span.CodeMirror-selectedtext { background: none; }
|
|
@ -1,21 +0,0 @@
|
|||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2007-2013 Einar Lielmanis and contributors.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
File diff suppressed because it is too large
Load Diff
|
@ -1,86 +0,0 @@
|
|||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You 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.
|
||||
*/
|
||||
|
||||
/* global define, module, require, exports */
|
||||
|
||||
(function (root, factory) {
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
define([], function () {
|
||||
return (nf.AuthorizationStorage = factory());
|
||||
});
|
||||
} else if (typeof exports === 'object' && typeof module === 'object') {
|
||||
module.exports = (nf.AuthorizationStorage = factory());
|
||||
} else {
|
||||
nf.AuthorizationStorage = factory();
|
||||
}
|
||||
}(this, function () {
|
||||
var TOKEN_ITEM_KEY = 'Access-Token-Expiration';
|
||||
|
||||
var REQUEST_TOKEN_PATTERN = new RegExp('Request-Token=([^;]+)');
|
||||
|
||||
return {
|
||||
/**
|
||||
* Get Request Token from document cookies
|
||||
*
|
||||
* @return Request Token string or null when not found
|
||||
*/
|
||||
getRequestToken: function () {
|
||||
var requestToken = null;
|
||||
var requestTokenMatcher = REQUEST_TOKEN_PATTERN.exec(document.cookie);
|
||||
if (requestTokenMatcher) {
|
||||
requestToken = requestTokenMatcher[1];
|
||||
}
|
||||
return requestToken;
|
||||
},
|
||||
|
||||
/**
|
||||
* Get Token from Session Storage
|
||||
*
|
||||
* @return Bearer Token string
|
||||
*/
|
||||
getToken: function () {
|
||||
return sessionStorage.getItem(TOKEN_ITEM_KEY);
|
||||
},
|
||||
|
||||
/**
|
||||
* Has Token returns the status of whether Session Storage contains the Token
|
||||
*
|
||||
* @return Boolean status of whether Session Storage contains the Token
|
||||
*/
|
||||
hasToken: function () {
|
||||
var token = this.getToken();
|
||||
return typeof token === 'string';
|
||||
},
|
||||
|
||||
/**
|
||||
* Remove Token from Session Storage
|
||||
*
|
||||
*/
|
||||
removeToken: function () {
|
||||
sessionStorage.removeItem(TOKEN_ITEM_KEY);
|
||||
},
|
||||
|
||||
/**
|
||||
* Set Token in Session Storage
|
||||
*
|
||||
* @param token Token String
|
||||
*/
|
||||
setToken: function (token) {
|
||||
sessionStorage.setItem(TOKEN_ITEM_KEY, token);
|
||||
}
|
||||
};
|
||||
}));
|
|
@ -1,20 +0,0 @@
|
|||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You 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.
|
||||
*/
|
||||
// register the nf namespace
|
||||
var nf;
|
||||
if (!nf)
|
||||
nf = {};
|
|
@ -1,209 +0,0 @@
|
|||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You 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.
|
||||
*/
|
||||
|
||||
/* global define, module, require, exports */
|
||||
|
||||
(function (root, factory) {
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
define([], function () {
|
||||
return (nf.Storage = factory());
|
||||
});
|
||||
} else if (typeof exports === 'object' && typeof module === 'object') {
|
||||
module.exports = (nf.Storage = factory());
|
||||
} else {
|
||||
nf.Storage = factory();
|
||||
}
|
||||
}(this, function () {
|
||||
|
||||
var disconnectionAcknowledged = false;
|
||||
|
||||
// Store items for two days before being eligible for removal.
|
||||
var MILLIS_PER_DAY = 86400000;
|
||||
var TWO_DAYS = MILLIS_PER_DAY * 2;
|
||||
|
||||
var isUndefined = function (obj) {
|
||||
return typeof obj === 'undefined';
|
||||
};
|
||||
|
||||
var isNull = function (obj) {
|
||||
return obj === null;
|
||||
};
|
||||
|
||||
var isDefinedAndNotNull = function (obj) {
|
||||
return !isUndefined(obj) && !isNull(obj);
|
||||
};
|
||||
|
||||
/**
|
||||
* Checks the expiration for the specified entry.
|
||||
*
|
||||
* @param {object} entry
|
||||
* @returns {boolean}
|
||||
*/
|
||||
var checkExpiration = function (entry) {
|
||||
if (isDefinedAndNotNull(entry.expires)) {
|
||||
// get the expiration
|
||||
var expires = new Date(entry.expires);
|
||||
var now = new Date();
|
||||
|
||||
// return whether the expiration date has passed
|
||||
return expires.valueOf() < now.valueOf();
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Gets an enty for the key. The entry expiration is not checked.
|
||||
*
|
||||
* @param {string} key
|
||||
*/
|
||||
var getEntry = function (key) {
|
||||
try {
|
||||
// parse the entry
|
||||
var entry = JSON.parse(localStorage.getItem(key));
|
||||
|
||||
// ensure the entry and item are present
|
||||
if (isDefinedAndNotNull(entry)) {
|
||||
return entry;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} catch (e) {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
return {
|
||||
/**
|
||||
* Initializes the storage. Items will be persisted for two days. Once the scripts runs
|
||||
* thereafter, all eligible items will be removed. This strategy does not support persistence.
|
||||
*/
|
||||
init: function () {
|
||||
for (var i = 0; i < localStorage.length; i++) {
|
||||
try {
|
||||
// get the next item
|
||||
var key = localStorage.key(i);
|
||||
|
||||
// attempt to get the item which will expire if necessary
|
||||
this.getItem(key);
|
||||
} catch (e) {
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
acknowledgeDisconnection: function () {
|
||||
disconnectionAcknowledged = true;
|
||||
},
|
||||
|
||||
resetDisconnectionAcknowledgement: function () {
|
||||
disconnectionAcknowledged = false;
|
||||
},
|
||||
|
||||
isDisconnectionAcknowledged: function () {
|
||||
return disconnectionAcknowledged;
|
||||
},
|
||||
|
||||
/**
|
||||
* Stores the specified item.
|
||||
*
|
||||
* @param {string} key
|
||||
* @param {object} item
|
||||
* @param {integer} expires
|
||||
*/
|
||||
setItem: function (key, item, expires) {
|
||||
// calculate the expiration
|
||||
expires = isDefinedAndNotNull(expires) ? expires : new Date().valueOf() + TWO_DAYS;
|
||||
|
||||
// create the entry
|
||||
var entry = {
|
||||
expires: expires,
|
||||
item: item
|
||||
};
|
||||
|
||||
// store the item
|
||||
localStorage.setItem(key, JSON.stringify(entry));
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns whether there is an entry for this key. This will not check the expiration. If
|
||||
* the entry is expired, it will return null on a subsequent getItem invocation.
|
||||
*
|
||||
* @param {string} key
|
||||
* @returns {boolean}
|
||||
*/
|
||||
hasItem: function (key) {
|
||||
return getEntry(key) !== null;
|
||||
},
|
||||
|
||||
/**
|
||||
* Gets the item with the specified key. If an item with this key does
|
||||
* not exist, null is returned. If an item exists but cannot be parsed
|
||||
* or is malformed/unrecognized, null is returned.
|
||||
*
|
||||
* @param {type} key
|
||||
*/
|
||||
getItem: function (key) {
|
||||
var entry = getEntry(key);
|
||||
if (entry === null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// if the entry is expired, drop it and return null
|
||||
if (checkExpiration(entry)) {
|
||||
this.removeItem(key);
|
||||
return null;
|
||||
}
|
||||
|
||||
// if the entry has the specified field return its value
|
||||
if (isDefinedAndNotNull(entry['item'])) {
|
||||
return entry['item'];
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Gets the expiration for the specified item. This will not check the expiration. If
|
||||
* the entry is expired, it will return null on a subsequent getItem invocation.
|
||||
*
|
||||
* @param {string} key
|
||||
* @returns {integer}
|
||||
*/
|
||||
getItemExpiration: function (key) {
|
||||
var entry = getEntry(key);
|
||||
if (entry === null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// if the entry has the specified field return its value
|
||||
if (isDefinedAndNotNull(entry['expires'])) {
|
||||
return entry['expires'];
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Removes the item with the specified key.
|
||||
*
|
||||
* @param {type} key
|
||||
*/
|
||||
removeItem: function (key) {
|
||||
localStorage.removeItem(key);
|
||||
}
|
||||
};
|
||||
}));
|
|
@ -40,10 +40,6 @@
|
|||
</servlet>
|
||||
<servlet-mapping>
|
||||
<servlet-name>worksheet</servlet-name>
|
||||
<url-pattern>/configure</url-pattern>
|
||||
<url-pattern></url-pattern>
|
||||
</servlet-mapping>
|
||||
|
||||
<welcome-file-list>
|
||||
<welcome-file>configure</welcome-file>
|
||||
</welcome-file-list>
|
||||
</web-app>
|
||||
|
|
|
@ -156,7 +156,7 @@ public class ControllerServiceResource extends ApplicationResource {
|
|||
final List<UiExtension> uiExtensions = uiExtensionMapping.getUiExtension(controllerService.getType(), bundle.getGroup(), bundle.getArtifact(), bundle.getVersion());
|
||||
for (final UiExtension uiExtension : uiExtensions) {
|
||||
if (UiExtensionType.ControllerServiceConfiguration.equals(uiExtension.getExtensionType())) {
|
||||
controllerService.setCustomUiUrl(generateExternalUiUri(uiExtension.getContextPath(), "configure"));
|
||||
controllerService.setCustomUiUrl(generateExternalUiUri(uiExtension.getContextPath()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -217,7 +217,7 @@ public class ParameterProviderResource extends AbstractParameterResource {
|
|||
final List<UiExtension> uiExtensions = uiExtensionMapping.getUiExtension(parameterProvider.getType(), bundle.getGroup(), bundle.getArtifact(), bundle.getVersion());
|
||||
for (final UiExtension uiExtension : uiExtensions) {
|
||||
if (UiExtensionType.ParameterProviderConfiguration.equals(uiExtension.getExtensionType())) {
|
||||
parameterProvider.setCustomUiUrl(generateExternalUiUri(uiExtension.getContextPath(), "configure"));
|
||||
parameterProvider.setCustomUiUrl(generateExternalUiUri(uiExtension.getContextPath()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -173,7 +173,7 @@ public class ProcessorResource extends ApplicationResource {
|
|||
final List<UiExtension> uiExtensions = uiExtensionMapping.getUiExtension(processor.getType(), bundle.getGroup(), bundle.getArtifact(), bundle.getVersion());
|
||||
for (final UiExtension uiExtension : uiExtensions) {
|
||||
if (UiExtensionType.ProcessorConfiguration.equals(uiExtension.getExtensionType())) {
|
||||
config.setCustomUiUrl(generateExternalUiUri(uiExtension.getContextPath(), "configure"));
|
||||
config.setCustomUiUrl(generateExternalUiUri(uiExtension.getContextPath()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -149,7 +149,7 @@ public class ReportingTaskResource extends ApplicationResource {
|
|||
final List<UiExtension> uiExtensions = uiExtensionMapping.getUiExtension(reportingTask.getType(), bundle.getGroup(), bundle.getArtifact(), bundle.getVersion());
|
||||
for (final UiExtension uiExtension : uiExtensions) {
|
||||
if (UiExtensionType.ReportingTaskConfiguration.equals(uiExtension.getExtensionType())) {
|
||||
reportingTask.setCustomUiUrl(generateExternalUiUri(uiExtension.getContextPath(), "configure"));
|
||||
reportingTask.setCustomUiUrl(generateExternalUiUri(uiExtension.getContextPath()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -152,6 +152,25 @@
|
|||
</resources>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>bundle-built-nifi-jolt-transform-ui-app</id>
|
||||
<phase>prepare-package</phase>
|
||||
<goals>
|
||||
<goal>copy-resources</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<outputDirectory>${project.build.outputDirectory}/nifi-jolt-transform-ui</outputDirectory>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>${project.build.directory}/${project.build.finalName}/nifi-jolt-transform-ui</directory>
|
||||
<filtering>false</filtering>
|
||||
<includes>
|
||||
<include>**/*</include>
|
||||
</includes>
|
||||
</resource>
|
||||
</resources>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
|
|
|
@ -53,7 +53,6 @@ if (disableAnimations !== 'true' && disableAnimations !== 'false') {
|
|||
routerState: RouterState.Minimal,
|
||||
navigationActionTiming: NavigationActionTiming.PostActivation
|
||||
}),
|
||||
|
||||
EffectsModule.forRoot(),
|
||||
StoreDevtoolsModule.instrument({
|
||||
maxAge: 25,
|
||||
|
|
|
@ -34,7 +34,7 @@ export class JoltTransformJsonUiService {
|
|||
saveProperties(request: SavePropertiesRequest): Observable<any> {
|
||||
const params = new HttpParams()
|
||||
.set('processorId', request.processorId)
|
||||
.set('revision', request.revision)
|
||||
.set('revisionId', request.revision)
|
||||
.set('clientId', request.clientId)
|
||||
.set('disconnectedNodeAcknowledged', request.disconnectedNodeAcknowledged);
|
||||
|
||||
|
|
|
@ -254,7 +254,7 @@ describe('CreateConnection', () => {
|
|||
concurrentlySchedulableTaskCount: 1,
|
||||
autoTerminatedRelationships: [],
|
||||
comments: '',
|
||||
customUiUrl: '/nifi-update-attribute-ui-2.0.0-SNAPSHOT/configure',
|
||||
customUiUrl: '/nifi-update-attribute-ui-2.0.0-SNAPSHOT',
|
||||
lossTolerant: false,
|
||||
defaultConcurrentTasks: {
|
||||
TIMER_DRIVEN: '1',
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
<header class="nifi-header">
|
||||
<navigation></navigation>
|
||||
</header>
|
||||
<div class="p-2 flex flex-1 bg-white">
|
||||
<div class="p-2 flex flex-1">
|
||||
@if (frameSource) {
|
||||
<iframe class="flex-1" [src]="frameSource"></iframe>
|
||||
} @else {
|
||||
|
|
Loading…
Reference in New Issue