diff options
170 files changed, 44077 insertions, 4 deletions
diff --git a/distribution/pom.xml b/distribution/pom.xml index e3799a0d..8aaaa306 100644 --- a/distribution/pom.xml +++ b/distribution/pom.xml @@ -78,10 +78,10 @@ <outputDirectory>${linux64outputdir}/tomcat/webapps/</outputDirectory> <resources> <resource> - <directory>../usecaseui-common/target/</directory> + <directory>../usecaseui-portal/</directory> <filtering>false</filtering> <includes> - <include>usecase-ui.war</include> + <include>usecase-ui</include> </includes> </resource> </resources> @@ -142,10 +142,10 @@ <outputDirectory>${win64outputdir}/tomcat/webapps/</outputDirectory> <resources> <resource> - <directory>../usecaseui-common/target/</directory> + <directory>../usecaseui-portal/</directory> <filtering>false</filtering> <includes> - <include>usecase-ui.war</include> + <include>usecase-ui</include> </includes> </resource> </resources> @@ -30,9 +30,12 @@ <name>usecase-ui</name> <modules> + <!-- <module>usecaseui-common</module> <module>usecaseui-monitor</module> <module>usecaseui-lcm</module> + --> + <module>usecaseui-portal</module> <module>distribution</module> </modules> diff --git a/usecaseui-portal/.angular-cli.json b/usecaseui-portal/.angular-cli.json new file mode 100644 index 00000000..5535fc3a --- /dev/null +++ b/usecaseui-portal/.angular-cli.json @@ -0,0 +1,63 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "project": { + "name": "usecase-ui" + }, + "apps": [ + { + "root": "src", + "outDir": "usecase-ui", + "assets": [ + "assets", + "favicon.ico" + ], + "index": "index.html", + "main": "main.ts", + "polyfills": "polyfills.ts", + "test": "test.ts", + "tsconfig": "tsconfig.app.json", + "testTsconfig": "tsconfig.spec.json", + "prefix": "app", + "styles": [ + "styles.less", + "my-theme.less" + ], + "scripts": [ + "../node_modules/echarts/dist/echarts.min.js" + ], + "environmentSource": "environments/environment.ts", + "environments": { + "dev": "environments/environment.ts", + "prod": "environments/environment.prod.ts" + } + } + ], + "e2e": { + "protractor": { + "config": "./protractor.conf.js" + } + }, + "lint": [ + { + "project": "src/tsconfig.app.json", + "exclude": "**/node_modules/**" + }, + { + "project": "src/tsconfig.spec.json", + "exclude": "**/node_modules/**" + }, + { + "project": "e2e/tsconfig.e2e.json", + "exclude": "**/node_modules/**" + } + ], + "test": { + "karma": { + "config": "./karma.conf.js" + } + }, + "defaults": { + "styleExt": "less", + "component": {} + } +} diff --git a/usecaseui-portal/e2e/app.e2e-spec.ts b/usecaseui-portal/e2e/app.e2e-spec.ts new file mode 100644 index 00000000..2bd5c05c --- /dev/null +++ b/usecaseui-portal/e2e/app.e2e-spec.ts @@ -0,0 +1,14 @@ +import { AppPage } from './app.po'; + +describe('uui2 App', () => { + let page: AppPage; + + beforeEach(() => { + page = new AppPage(); + }); + + it('should display welcome message', () => { + page.navigateTo(); + expect(page.getParagraphText()).toEqual('Welcome to app!'); + }); +}); diff --git a/usecaseui-portal/e2e/app.po.ts b/usecaseui-portal/e2e/app.po.ts new file mode 100644 index 00000000..82ea75ba --- /dev/null +++ b/usecaseui-portal/e2e/app.po.ts @@ -0,0 +1,11 @@ +import { browser, by, element } from 'protractor'; + +export class AppPage { + navigateTo() { + return browser.get('/'); + } + + getParagraphText() { + return element(by.css('app-root h1')).getText(); + } +} diff --git a/usecaseui-portal/e2e/tsconfig.e2e.json b/usecaseui-portal/e2e/tsconfig.e2e.json new file mode 100644 index 00000000..1d9e5edf --- /dev/null +++ b/usecaseui-portal/e2e/tsconfig.e2e.json @@ -0,0 +1,14 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/e2e", + "baseUrl": "./", + "module": "commonjs", + "target": "es5", + "types": [ + "jasmine", + "jasminewd2", + "node" + ] + } +} diff --git a/usecaseui-portal/package-lock.json b/usecaseui-portal/package-lock.json new file mode 100644 index 00000000..582533e9 --- /dev/null +++ b/usecaseui-portal/package-lock.json @@ -0,0 +1,12678 @@ +{ + "name": "usecase-ui", + "version": "0.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@angular-devkit/build-optimizer": { + "version": "0.3.2", + "resolved": "http://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.3.2.tgz", + "integrity": "sha512-U0BCZtThq5rUfY08shHXpxe8ZhSsiYB/cJjUvAWRTs/ORrs8pbngS6xwseQws8d/vHoVrtqGD9GU9h8AmFRERQ==", + "dev": true, + "requires": { + "loader-utils": "1.1.0", + "source-map": "0.5.7", + "typescript": "2.6.2", + "webpack-sources": "1.3.0" + }, + "dependencies": { + "typescript": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.6.2.tgz", + "integrity": "sha1-PFtv1/beCRQmkCfwPAlGdY92c6Q=", + "dev": true + } + } + }, + "@angular-devkit/core": { + "version": "0.3.2", + "resolved": "http://registry.npmjs.org/@angular-devkit/core/-/core-0.3.2.tgz", + "integrity": "sha512-zABk/iP7YX5SVbmK4e+IX7j2d0D37MQJQiKgWdV3JzfvVJhNJzddiirtT980pIafoq+KyvTgVwXtc+vnux0oeQ==", + "dev": true, + "requires": { + "ajv": "5.5.2", + "chokidar": "1.7.0", + "rxjs": "5.5.12", + "source-map": "0.5.7" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + } + } + }, + "@angular-devkit/schematics": { + "version": "0.3.2", + "resolved": "http://registry.npmjs.org/@angular-devkit/schematics/-/schematics-0.3.2.tgz", + "integrity": "sha512-B6zZoqvHaTJy+vVdA6EtlxnCdGMa5elCa4j9lQLC3JI8DLvMXUWkCIPVbPzJ/GSRR9nsKWpvYMYaJyfBDUqfhw==", + "dev": true, + "requires": { + "@ngtools/json-schema": "1.2.0", + "rxjs": "5.5.12" + } + }, + "@angular/animations": { + "version": "5.2.11", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-5.2.11.tgz", + "integrity": "sha512-J7wKHkFn3wV28/Y1Qm4yjGXVCwXzj1JR5DRjGDTFnxTRacUFx7Nj0ApGhN0b2+V0NOvgxQOvEW415Y22kGoblw==", + "requires": { + "tslib": "1.9.3" + } + }, + "@angular/cdk": { + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-5.2.5.tgz", + "integrity": "sha512-GN8m1d+VcCE9+Bgwv06Y8YJKyZ0i9ZIq2ZPBcJYt+KVgnVVRg4JkyUNxud07LNsvzOX22DquHqmIZiC4hAG7Ag==", + "requires": { + "tslib": "1.9.3" + } + }, + "@angular/cli": { + "version": "1.7.4", + "resolved": "http://registry.npmjs.org/@angular/cli/-/cli-1.7.4.tgz", + "integrity": "sha512-URdb1QtnQf+Ievy93wjq7gE81s25BkWUwJFPey+YkphBA3G1lbCAQPiEh2pntBwaIKavgEuCw+Sf2YZdgTVhDA==", + "dev": true, + "requires": { + "@angular-devkit/build-optimizer": "0.3.2", + "@angular-devkit/core": "0.3.2", + "@angular-devkit/schematics": "0.3.2", + "@ngtools/json-schema": "1.2.0", + "@ngtools/webpack": "1.10.2", + "@schematics/angular": "0.3.2", + "@schematics/package-update": "0.3.2", + "ajv": "6.5.4", + "autoprefixer": "7.2.6", + "cache-loader": "1.2.2", + "chalk": "2.2.2", + "circular-dependency-plugin": "4.4.0", + "clean-css": "4.2.1", + "common-tags": "1.8.0", + "copy-webpack-plugin": "4.4.3", + "core-object": "3.1.5", + "denodeify": "1.2.1", + "ember-cli-string-utils": "1.1.0", + "extract-text-webpack-plugin": "3.0.2", + "file-loader": "1.1.11", + "fs-extra": "4.0.3", + "glob": "7.1.3", + "html-webpack-plugin": "2.30.1", + "istanbul-instrumenter-loader": "3.0.1", + "karma-source-map-support": "1.3.0", + "less": "2.7.3", + "less-loader": "4.1.0", + "license-webpack-plugin": "1.5.0", + "loader-utils": "1.1.0", + "lodash": "4.17.11", + "memory-fs": "0.4.1", + "minimatch": "3.0.4", + "node-modules-path": "1.0.2", + "node-sass": "4.9.4", + "nopt": "4.0.1", + "opn": "5.1.0", + "portfinder": "1.0.18", + "postcss": "6.0.23", + "postcss-import": "11.1.0", + "postcss-loader": "2.1.6", + "postcss-url": "7.3.2", + "raw-loader": "0.5.1", + "resolve": "1.8.1", + "rxjs": "5.5.12", + "sass-loader": "6.0.7", + "semver": "5.6.0", + "silent-error": "1.1.1", + "source-map-support": "0.4.18", + "style-loader": "0.19.1", + "stylus": "0.54.5", + "stylus-loader": "3.0.2", + "uglifyjs-webpack-plugin": "1.3.0", + "url-loader": "0.6.2", + "webpack": "3.11.0", + "webpack-dev-middleware": "1.12.2", + "webpack-dev-server": "2.11.3", + "webpack-merge": "4.1.4", + "webpack-sources": "1.3.0", + "webpack-subresource-integrity": "1.2.0" + } + }, + "@angular/common": { + "version": "5.2.11", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-5.2.11.tgz", + "integrity": "sha512-LniJjGAeftUJDJh+2+LEjltcGen08C/VMxQ/eUYmesytKy1sN+MWzh3GbpKfEWtWmyUsYTG9lAAJNo3L3jPwsw==", + "requires": { + "tslib": "1.9.3" + } + }, + "@angular/compiler": { + "version": "5.2.11", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-5.2.11.tgz", + "integrity": "sha512-ICvB1ud1mxaXUYLb8vhJqiLhGBVocAZGxoHTglv6hMkbrRYcnlB3FZJFOzBvtj+krkd1jamoYLI43UAmesqQ6Q==", + "requires": { + "tslib": "1.9.3" + } + }, + "@angular/compiler-cli": { + "version": "5.2.11", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-5.2.11.tgz", + "integrity": "sha512-dwrQ0yxoCM/XzKzlm7pTsyg4/6ECjT9emZufGj8t12bLMO8NDn1IJOsqXJA1+onEgQKhlr0Ziwi+96TvDTb1Cg==", + "dev": true, + "requires": { + "chokidar": "1.7.0", + "minimist": "1.2.0", + "reflect-metadata": "0.1.12", + "tsickle": "0.27.5" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "@angular/core": { + "version": "5.2.11", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-5.2.11.tgz", + "integrity": "sha512-h2vpvXNAdOqKzbVaZcHnHGMT5A8uDnizk6FgGq6SPyw9s3d+/VxZ9LJaPjUk3g2lICA7og1tUel+2YfF971MlQ==", + "requires": { + "tslib": "1.9.3" + } + }, + "@angular/forms": { + "version": "5.2.11", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-5.2.11.tgz", + "integrity": "sha512-wBllFlIubPclAFRXUc84Kc7TMeKOftzrQraVZ7ooTNeFLLa/FZLN2K8HGyRde8X/XDsMu1XAmjNfkz++spwTzA==", + "requires": { + "tslib": "1.9.3" + } + }, + "@angular/http": { + "version": "5.2.11", + "resolved": "https://registry.npmjs.org/@angular/http/-/http-5.2.11.tgz", + "integrity": "sha512-eR7wNXh1+6MpcQNb3sq4bJVX03dx50Wl3kpPG+Q7N1VSL0oPQSobaTrR17ac3oFCEfSJn6kkUCqtUXha6wcNHg==", + "requires": { + "tslib": "1.9.3" + } + }, + "@angular/language-service": { + "version": "5.2.11", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-5.2.11.tgz", + "integrity": "sha512-tgnFAhwBmUs1W0dmcmlBmUlMaOgkoyuSdrcF23lz8W5+nSLb+LnbH5a3blU2NVqA4ESvLKQkPW5dpKa/LuhrPQ==", + "dev": true + }, + "@angular/platform-browser": { + "version": "5.2.11", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-5.2.11.tgz", + "integrity": "sha512-6YZ4IpBFqXx88vEzBZG2WWnaSYXbFWDgG0iT+bZPHAfwsbmqbcMcs7Ogu+XZ4VmK02dTqbrFh7U4P2W+sqrzow==", + "requires": { + "tslib": "1.9.3" + } + }, + "@angular/platform-browser-dynamic": { + "version": "5.2.11", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-5.2.11.tgz", + "integrity": "sha512-5kKPNULcXNwkyBjpHfF+pq+Yxi8Zl866YSOK9t8txoiQ9Ctw97kMkEJcTetk6MJgBp/NP3YyjtoTAm8oXLerug==", + "requires": { + "tslib": "1.9.3" + } + }, + "@angular/router": { + "version": "5.2.11", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-5.2.11.tgz", + "integrity": "sha512-NT8xYl7Vr3qPygisek3PlXqNROEjg48GXOEsDEc7c8lDBo3EB9Tf328fWJD0GbLtXZNhmmNNxwIe+qqPFFhFAA==", + "requires": { + "tslib": "1.9.3" + } + }, + "@ngtools/json-schema": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ngtools/json-schema/-/json-schema-1.2.0.tgz", + "integrity": "sha512-pMh+HDc6mOjUO3agRfB1tInimo7hf67u+0Cska2bfXFe6oU7rSMnr5PLVtiZVgwMoBHpx/6XjBymvcnWPo2Uzg==", + "dev": true + }, + "@ngtools/webpack": { + "version": "1.10.2", + "resolved": "http://registry.npmjs.org/@ngtools/webpack/-/webpack-1.10.2.tgz", + "integrity": "sha512-3u2zg2rarG3qNLSukBClGADWuq/iNn5SQtlSeAbfKzwBeyLGbF0gN1z1tVx1Bcr8YwFzR6NdRePQmJGcoqq1fg==", + "dev": true, + "requires": { + "chalk": "2.2.2", + "enhanced-resolve": "3.4.1", + "loader-utils": "1.1.0", + "magic-string": "0.22.5", + "semver": "5.6.0", + "source-map": "0.5.7", + "tree-kill": "1.2.0", + "webpack-sources": "1.3.0" + } + }, + "@ngx-translate/core": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@ngx-translate/core/-/core-9.1.1.tgz", + "integrity": "sha1-rhA5KINrip4Gn9Li52+iGYzH5ig=" + }, + "@ngx-translate/http-loader": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@ngx-translate/http-loader/-/http-loader-2.0.1.tgz", + "integrity": "sha1-qmd4jmS/qGUmkad7Ais7QDEgkRM=" + }, + "@schematics/angular": { + "version": "0.3.2", + "resolved": "http://registry.npmjs.org/@schematics/angular/-/angular-0.3.2.tgz", + "integrity": "sha512-Elrk0BA951s0ScFZU0AWrpUeJBYVR52DZ1QTIO5R0AhwEd1PW4olI8szPLGQlVW5Sd6H0FA/fyFLIvn2r9v6Rw==", + "dev": true, + "requires": { + "typescript": "2.6.2" + }, + "dependencies": { + "typescript": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.6.2.tgz", + "integrity": "sha1-PFtv1/beCRQmkCfwPAlGdY92c6Q=", + "dev": true + } + } + }, + "@schematics/package-update": { + "version": "0.3.2", + "resolved": "http://registry.npmjs.org/@schematics/package-update/-/package-update-0.3.2.tgz", + "integrity": "sha512-7aVP4994Hu8vRdTTohXkfGWEwLhrdNP3EZnWyBootm5zshWqlQojUGweZe5zwewsKcixeVOiy2YtW+aI4aGSLA==", + "dev": true, + "requires": { + "rxjs": "5.5.12", + "semver": "5.6.0", + "semver-intersect": "1.4.0" + } + }, + "@types/jasmine": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-2.8.9.tgz", + "integrity": "sha512-8dPZwjosElZOGGYw1nwTvOEMof4gjwAWNFS93nBI091BoEfd5drnHOLRMiRF/LOPuMTn5LgEdv0bTUO8QFVuHQ==", + "dev": true + }, + "@types/jasminewd2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/jasminewd2/-/jasminewd2-2.0.5.tgz", + "integrity": "sha512-1awkm/O4pQCR9hI2F80HmIOda/L+ogkSL8Arj1k00eue5VLY5ooewhSOyF/cUJE0S+/34uD5EYY3zmd6fu2OCA==", + "dev": true, + "requires": { + "@types/jasmine": "2.8.9" + } + }, + "@types/node": { + "version": "6.0.118", + "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.118.tgz", + "integrity": "sha512-N33cKXGSqhOYaPiT4xUGsYlPPDwFtQM/6QxJxuMXA/7BcySW+lkn2yigWP7vfs4daiL/7NJNU6DMCqg5N4B+xQ==", + "dev": true + }, + "@types/q": { + "version": "0.0.32", + "resolved": "http://registry.npmjs.org/@types/q/-/q-0.0.32.tgz", + "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=", + "dev": true + }, + "@types/selenium-webdriver": { + "version": "2.53.43", + "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-2.53.43.tgz", + "integrity": "sha512-UBYHWph6P3tutkbXpW6XYg9ZPbTKjw/YC2hGG1/GEvWwTbvezBUv3h+mmUFw79T3RFPnmedpiXdOBbXX+4l0jg==", + "dev": true + }, + "@types/strip-bom": { + "version": "3.0.0", + "resolved": "http://registry.npmjs.org/@types/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-FKjsOVbC6B7bdSB5CuzyHCkK69I=", + "dev": true + }, + "@types/strip-json-comments": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz", + "integrity": "sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "accepts": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", + "dev": true, + "requires": { + "mime-types": "2.1.21", + "negotiator": "0.6.1" + } + }, + "acorn": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "dev": true + }, + "acorn-dynamic-import": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz", + "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=", + "dev": true, + "requires": { + "acorn": "4.0.13" + }, + "dependencies": { + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + } + } + }, + "addressparser": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/addressparser/-/addressparser-1.0.1.tgz", + "integrity": "sha1-R6++GiqSYhkdtoOOT9HTm0CCF0Y=", + "dev": true, + "optional": true + }, + "adm-zip": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.11.tgz", + "integrity": "sha512-L8vcjDTCOIJk7wFvmlEUN7AsSb8T+2JrdP7KINBjzr24TJ5Mwj590sLu3BC7zNZowvJWa/JtPmD8eJCzdtDWjA==", + "dev": true + }, + "after": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", + "dev": true + }, + "agent-base": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", + "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", + "dev": true, + "requires": { + "es6-promisify": "5.0.0" + } + }, + "ajv": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.4.tgz", + "integrity": "sha512-4Wyjt8+t6YszqaXnLDfMmG/8AlO5Zbcsy3ATHncCzjW/NoPzAId8AK6749Ybjmdt+kUY1gP60fCu46oDxPv/mg==", + "dev": true, + "requires": { + "fast-deep-equal": "2.0.1", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.4.1", + "uri-js": "4.2.2" + }, + "dependencies": { + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + } + } + }, + "ajv-keywords": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", + "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", + "dev": true + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "amqplib": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/amqplib/-/amqplib-0.5.2.tgz", + "integrity": "sha512-l9mCs6LbydtHqRniRwYkKdqxVa6XMz3Vw1fh+2gJaaVgTM6Jk3o8RccAKWKtlhT1US5sWrFh+KKxsVUALURSIA==", + "dev": true, + "optional": true, + "requires": { + "bitsyntax": "0.0.4", + "bluebird": "3.5.2", + "buffer-more-ints": "0.0.2", + "readable-stream": "1.1.14", + "safe-buffer": "5.1.2" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true, + "optional": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "optional": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true, + "optional": true + } + } + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "1.9.3" + } + }, + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } + }, + "app-root-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-2.1.0.tgz", + "integrity": "sha1-mL9lmTJ+zqGZMJhm6BQDaP0uZGo=", + "dev": true + }, + "append-transform": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", + "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "dev": true, + "requires": { + "default-require-extensions": "1.0.0" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "dev": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.3.6" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "1.0.3" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-flatten": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.1.tgz", + "integrity": "sha1-Qmu52oQJDBg42BLIFQryCoMx4pY=", + "dev": true + }, + "array-includes": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", + "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", + "dev": true, + "requires": { + "define-properties": "1.1.3", + "es-abstract": "1.12.0" + } + }, + "array-slice": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", + "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "1.0.3" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "arraybuffer.slice": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", + "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true, + "optional": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "2.1.2" + } + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.1" + } + }, + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "dev": true, + "requires": { + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assert-plus": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "dev": true, + "optional": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "ast-types": { + "version": "0.11.6", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.11.6.tgz", + "integrity": "sha512-nHiuV14upVGl7MWwFUYbzJ6YlfwWS084CU9EA8HajfYQjMSli5TQi3UTRygGF58LFWVkXxS1rbgRhROEqlQkXg==", + "dev": true, + "optional": true + }, + "async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", + "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "dev": true, + "requires": { + "lodash": "4.17.11" + } + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, + "async-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", + "dev": true, + "optional": true + }, + "async-limiter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "autoprefixer": { + "version": "7.2.6", + "resolved": "http://registry.npmjs.org/autoprefixer/-/autoprefixer-7.2.6.tgz", + "integrity": "sha512-Iq8TRIB+/9eQ8rbGhcP7ct5cYb/3qjNYAR2SnzLCEcwF6rvVOax8+9+fccgXk4bEhQGjOZd5TLhsksmAdsbGqQ==", + "dev": true, + "requires": { + "browserslist": "2.11.3", + "caniuse-lite": "1.0.30000893", + "normalize-range": "0.1.2", + "num2fraction": "1.2.2", + "postcss": "6.0.23", + "postcss-value-parser": "3.3.1" + } + }, + "aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "dev": true, + "optional": true + }, + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true + }, + "axios": { + "version": "0.15.3", + "resolved": "http://registry.npmjs.org/axios/-/axios-0.15.3.tgz", + "integrity": "sha1-LJ1jiy4ZGgjqHWzJiOrda6W9wFM=", + "dev": true, + "optional": true, + "requires": { + "follow-redirects": "1.0.0" + }, + "dependencies": { + "follow-redirects": { + "version": "1.0.0", + "resolved": "http://registry.npmjs.org/follow-redirects/-/follow-redirects-1.0.0.tgz", + "integrity": "sha1-jjQpjL0uF28lTv/sdaHHjMhJ/Tc=", + "dev": true, + "optional": true, + "requires": { + "debug": "2.6.9" + } + } + } + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "dev": true, + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.11", + "source-map": "0.5.7", + "trim-right": "1.0.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "2.5.7", + "regenerator-runtime": "0.11.1" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.11" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.4", + "lodash": "4.17.11" + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.11", + "to-fast-properties": "1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "1.0.1", + "class-utils": "0.3.6", + "component-emitter": "1.2.1", + "define-property": "1.0.0", + "isobject": "3.0.1", + "mixin-deep": "1.3.1", + "pascalcase": "0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "base64-arraybuffer": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", + "dev": true + }, + "base64-js": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", + "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", + "dev": true + }, + "base64id": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", + "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "better-assert": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", + "dev": true, + "requires": { + "callsite": "1.0.0" + } + }, + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "binary-extensions": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz", + "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==", + "dev": true + }, + "bitsyntax": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/bitsyntax/-/bitsyntax-0.0.4.tgz", + "integrity": "sha1-6xDMb4K4xJDj6FaY8H6D1G4MuoI=", + "dev": true, + "optional": true, + "requires": { + "buffer-more-ints": "0.0.2" + } + }, + "bl": { + "version": "1.1.2", + "resolved": "http://registry.npmjs.org/bl/-/bl-1.1.2.tgz", + "integrity": "sha1-/cqHGplxOqANGeO7ukHER4emU5g=", + "dev": true, + "optional": true, + "requires": { + "readable-stream": "2.0.6" + }, + "dependencies": { + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true, + "optional": true + }, + "readable-stream": { + "version": "2.0.6", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", + "dev": true, + "optional": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "0.10.31", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true, + "optional": true + } + } + }, + "blob": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", + "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=", + "dev": true + }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "dev": true, + "optional": true, + "requires": { + "inherits": "2.0.3" + } + }, + "blocking-proxy": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/blocking-proxy/-/blocking-proxy-0.0.5.tgz", + "integrity": "sha1-RikF4Nz76pcPQao3Ij3anAexkSs=", + "dev": true, + "requires": { + "minimist": "1.2.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "bluebird": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.2.tgz", + "integrity": "sha512-dhHTWMI7kMx5whMQntl7Vr9C6BvV10lFXDAasnqnrMYhXVCzzk6IO9Fo2L75jXHT07WrOngL1WDXOp+yYS91Yg==", + "dev": true + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + }, + "body-parser": { + "version": "1.18.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", + "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=", + "dev": true, + "requires": { + "bytes": "3.0.0", + "content-type": "1.0.4", + "debug": "2.6.9", + "depd": "1.1.2", + "http-errors": "1.6.3", + "iconv-lite": "0.4.23", + "on-finished": "2.3.0", + "qs": "6.5.2", + "raw-body": "2.3.3", + "type-is": "1.6.16" + }, + "dependencies": { + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "requires": { + "array-flatten": "2.1.1", + "deep-equal": "1.0.1", + "dns-equal": "1.0.0", + "dns-txt": "2.0.2", + "multicast-dns": "6.2.3", + "multicast-dns-service-types": "1.1.0" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.3" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "1.0.3", + "cipher-base": "1.0.4", + "create-hash": "1.2.0", + "evp_bytestokey": "1.0.3", + "inherits": "2.0.3", + "safe-buffer": "5.1.2" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "1.2.0", + "browserify-des": "1.0.2", + "evp_bytestokey": "1.0.3" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "1.0.4", + "des.js": "1.0.0", + "inherits": "2.0.3", + "safe-buffer": "5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "randombytes": "2.0.6" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.2.0", + "create-hmac": "1.1.7", + "elliptic": "6.4.1", + "inherits": "2.0.3", + "parse-asn1": "5.1.1" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "1.0.6" + } + }, + "browserslist": { + "version": "2.11.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.11.3.tgz", + "integrity": "sha512-yWu5cXT7Av6mVwzWc8lMsJMHWn4xyjSuGYi4IozbVTLUOEYPSagUB8kiMDUHA1fS3zjr8nkxkn9jdvug4BBRmA==", + "dev": true, + "requires": { + "caniuse-lite": "1.0.30000893", + "electron-to-chromium": "1.3.80" + } + }, + "buffer": { + "version": "4.9.1", + "resolved": "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "dev": true, + "requires": { + "base64-js": "1.3.0", + "ieee754": "1.1.12", + "isarray": "1.0.0" + } + }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, + "requires": { + "buffer-alloc-unsafe": "1.1.0", + "buffer-fill": "1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "dev": true + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "buffer-more-ints": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/buffer-more-ints/-/buffer-more-ints-0.0.2.tgz", + "integrity": "sha1-JrOIXRD6E9t/wBquOquHAZngEkw=", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "buildmail": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/buildmail/-/buildmail-4.0.1.tgz", + "integrity": "sha1-h393OLeHKYccmhBeO4N9K+EaenI=", + "dev": true, + "optional": true, + "requires": { + "addressparser": "1.0.1", + "libbase64": "0.1.0", + "libmime": "3.0.0", + "libqp": "1.1.0", + "nodemailer-fetch": "1.6.0", + "nodemailer-shared": "1.1.0", + "punycode": "1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true, + "optional": true + } + } + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "cacache": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", + "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", + "dev": true, + "requires": { + "bluebird": "3.5.2", + "chownr": "1.1.1", + "glob": "7.1.3", + "graceful-fs": "4.1.11", + "lru-cache": "4.1.3", + "mississippi": "2.0.0", + "mkdirp": "0.5.1", + "move-concurrently": "1.0.1", + "promise-inflight": "1.0.1", + "rimraf": "2.6.2", + "ssri": "5.3.0", + "unique-filename": "1.1.1", + "y18n": "4.0.0" + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "1.0.0", + "component-emitter": "1.2.1", + "get-value": "2.0.6", + "has-value": "1.0.0", + "isobject": "3.0.1", + "set-value": "2.0.0", + "to-object-path": "0.3.0", + "union-value": "1.0.0", + "unset-value": "1.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "cache-loader": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cache-loader/-/cache-loader-1.2.2.tgz", + "integrity": "sha512-rsGh4SIYyB9glU+d0OcHwiXHXBoUgDhHZaQ1KAbiXqfz1CDPxtTboh1gPbJ0q2qdO8a9lfcjgC5CJ2Ms32y5bw==", + "dev": true, + "requires": { + "loader-utils": "1.1.0", + "mkdirp": "0.5.1", + "neo-async": "2.6.0", + "schema-utils": "0.4.7" + } + }, + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", + "dev": true + }, + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "dev": true, + "requires": { + "no-case": "2.3.2", + "upper-case": "1.1.3" + } + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "http://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "2.1.1", + "map-obj": "1.0.1" + } + }, + "caniuse-lite": { + "version": "1.0.30000893", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000893.tgz", + "integrity": "sha512-kOddHcTEef+NgN/fs0zmX2brHTNATVOWMEIhlZHCuwQRtXobjSw9pAECc44Op4bTBcavRjkLaPrGomknH7+Jvg==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } + }, + "chalk": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.2.2.tgz", + "integrity": "sha512-LvixLAQ4MYhbf7hgL4o5PeK32gJKvVzDRiSNIApDofQvyhl8adgG2lJVXn4+ekQoK7HL9RF8lqxwerpe0x2pCw==", + "dev": true, + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true, + "requires": { + "anymatch": "1.3.2", + "async-each": "1.0.1", + "fsevents": "1.2.4", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.2.1" + } + }, + "chownr": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", + "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.2" + } + }, + "circular-dependency-plugin": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-4.4.0.tgz", + "integrity": "sha512-yEFtUNUYT4jBykEX5ZOHw+5goA3glGZr9wAXIQqoyakjz5H5TeUmScnWRc52douAhb9eYzK3s7V6bXfNnjFdzg==", + "dev": true + }, + "circular-json": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.5.8.tgz", + "integrity": "sha512-VjaKMyZuVkL40usJkknJnmqQKpn2PkKS4M3/xdTRtZ0VsWl2Wbc2xdvXFXmEdmN6CKGqkm8XGyLHuFECZYEugw==", + "dev": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "3.1.0", + "define-property": "0.2.5", + "isobject": "3.0.1", + "static-extend": "0.1.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "clean-css": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", + "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", + "dev": true, + "requires": { + "source-map": "0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true + }, + "clone-deep": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-2.0.2.tgz", + "integrity": "sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ==", + "dev": true, + "requires": { + "for-own": "1.0.0", + "is-plain-object": "2.0.4", + "kind-of": "6.0.2", + "shallow-clone": "1.0.0" + }, + "dependencies": { + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "codelyzer": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-4.5.0.tgz", + "integrity": "sha512-oO6vCkjqsVrEsmh58oNlnJkRXuA30hF8cdNAQV9DytEalDwyOFRvHMnlKFzmOStNerOmPGZU9GAHnBo4tGvtiQ==", + "dev": true, + "requires": { + "app-root-path": "2.1.0", + "css-selector-tokenizer": "0.7.0", + "cssauron": "1.4.0", + "semver-dsl": "1.0.1", + "source-map": "0.5.7", + "sprintf-js": "1.1.1" + }, + "dependencies": { + "sprintf-js": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.1.tgz", + "integrity": "sha1-Nr54Mgr+WAH2zqPueLblqrlA6gw=", + "dev": true + } + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "1.0.0", + "object-visit": "1.0.1" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "combine-lists": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/combine-lists/-/combine-lists-1.0.1.tgz", + "integrity": "sha1-RYwH4J4NkA/Ci3Cj/sLazR0st/Y=", + "dev": true, + "requires": { + "lodash": "4.17.11" + } + }, + "combined-stream": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", + "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "dev": true + }, + "common-tags": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", + "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "component-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", + "dev": true + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "component-inherit": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", + "dev": true + }, + "compressible": { + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.15.tgz", + "integrity": "sha512-4aE67DL33dSW9gw4CI2H/yTxqHLNcxp0yS6jB+4h+wr3e43+1z7vm0HU9qXOH8j+qjKuL8+UtkOxYQSMq60Ylw==", + "dev": true, + "requires": { + "mime-db": "1.37.0" + } + }, + "compression": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz", + "integrity": "sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==", + "dev": true, + "requires": { + "accepts": "1.3.5", + "bytes": "3.0.0", + "compressible": "2.0.15", + "debug": "2.6.9", + "on-headers": "1.0.1", + "safe-buffer": "5.1.2", + "vary": "1.1.2" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "1.1.1", + "inherits": "2.0.3", + "readable-stream": "2.3.6", + "typedarray": "0.0.6" + } + }, + "connect": { + "version": "3.6.6", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", + "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.0", + "parseurl": "1.3.2", + "utils-merge": "1.0.1" + }, + "dependencies": { + "finalhandler": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", + "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "statuses": "1.3.1", + "unpipe": "1.0.0" + } + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", + "dev": true + } + } + }, + "connect-history-api-fallback": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", + "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=", + "dev": true + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true, + "requires": { + "date-now": "0.1.4" + } + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", + "dev": true + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "convert-source-map": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", + "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "1.2.0", + "fs-write-stream-atomic": "1.0.10", + "iferr": "0.1.5", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "run-queue": "1.0.3" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "copy-webpack-plugin": { + "version": "4.4.3", + "resolved": "http://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.4.3.tgz", + "integrity": "sha512-v4THQ24Tks2NkyOvZuFDgZVfDD9YaA9rwYLZTrWg2GHIA8lrH5DboEyeoorh5Skki+PUbgSmnsCwhMWqYrQZrA==", + "dev": true, + "requires": { + "cacache": "10.0.4", + "find-cache-dir": "1.0.0", + "globby": "7.1.1", + "is-glob": "4.0.0", + "loader-utils": "1.1.0", + "minimatch": "3.0.4", + "p-limit": "1.3.0", + "serialize-javascript": "1.5.0" + }, + "dependencies": { + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + } + } + }, + "core-js": { + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", + "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==" + }, + "core-object": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/core-object/-/core-object-3.1.5.tgz", + "integrity": "sha512-sA2/4+/PZ/KV6CKgjrVrrUVBKCkdDO02CUlQ0YKTQoYUwPYNOtOAcWlbYhd5v/1JqYaA6oZ4sDlOU4ppVw6Wbg==", + "dev": true, + "requires": { + "chalk": "2.2.2" + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cosmiconfig": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-4.0.0.tgz", + "integrity": "sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ==", + "dev": true, + "requires": { + "is-directory": "0.3.1", + "js-yaml": "3.12.0", + "parse-json": "4.0.0", + "require-from-string": "2.0.2" + }, + "dependencies": { + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "1.3.2", + "json-parse-better-errors": "1.0.2" + } + } + } + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "elliptic": "6.4.1" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "1.0.4", + "inherits": "2.0.3", + "md5.js": "1.3.5", + "ripemd160": "2.0.2", + "sha.js": "2.4.11" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "1.0.4", + "create-hash": "1.2.0", + "inherits": "2.0.3", + "ripemd160": "2.0.2", + "safe-buffer": "5.1.2", + "sha.js": "2.4.11" + } + }, + "cross-spawn": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", + "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", + "dev": true, + "optional": true, + "requires": { + "lru-cache": "4.1.3", + "which": "1.3.1" + } + }, + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "dev": true, + "optional": true, + "requires": { + "boom": "2.10.1" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "1.0.1", + "browserify-sign": "4.0.4", + "create-ecdh": "4.0.3", + "create-hash": "1.2.0", + "create-hmac": "1.1.7", + "diffie-hellman": "5.0.3", + "inherits": "2.0.3", + "pbkdf2": "3.0.17", + "public-encrypt": "4.0.3", + "randombytes": "2.0.6", + "randomfill": "1.0.4" + } + }, + "css-parse": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz", + "integrity": "sha1-Mh9s9zeCpv91ERE5D8BeLGV9jJs=", + "dev": true + }, + "css-select": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dev": true, + "requires": { + "boolbase": "1.0.0", + "css-what": "2.1.2", + "domutils": "1.5.1", + "nth-check": "1.0.2" + } + }, + "css-selector-tokenizer": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz", + "integrity": "sha1-5piEdK6MlTR3v15+/s/OzNnPTIY=", + "dev": true, + "requires": { + "cssesc": "0.1.0", + "fastparse": "1.1.1", + "regexpu-core": "1.0.0" + } + }, + "css-what": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.2.tgz", + "integrity": "sha512-wan8dMWQ0GUeF7DGEPVjhHemVW/vy6xUYmFzRY8RYqgA0JtXC9rJmbScBjqSu6dg9q0lwPQy6ZAmJVr3PPTvqQ==", + "dev": true + }, + "cssauron": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssauron/-/cssauron-1.4.0.tgz", + "integrity": "sha1-pmAt/34EqDBtwNuaVR6S6LVmKtg=", + "dev": true, + "requires": { + "through": "2.3.8" + } + }, + "cssesc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", + "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", + "dev": true + }, + "cuint": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz", + "integrity": "sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs=", + "dev": true + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "1.0.2" + } + }, + "custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", + "dev": true + }, + "cyclist": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", + "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", + "dev": true + }, + "d": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "dev": true, + "requires": { + "es5-ext": "0.10.46" + } + }, + "d3": { + "version": "3.5.17", + "resolved": "https://registry.npmjs.org/d3/-/d3-3.5.17.tgz", + "integrity": "sha1-vEZ0gAQ3iyGjYMn8fPUjF5B2L7g=" + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "data-uri-to-buffer": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz", + "integrity": "sha512-vKQ9DTQPN1FLYiiEEOQ6IBGFqvjCa5rSK3cWMy/Nespm5d/x3dGFT9UBZnkLxCwua/IXBi2TYnwTEpsOvhC4UQ==", + "dev": true, + "optional": true + }, + "date-fns": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.29.0.tgz", + "integrity": "sha512-lbTXWZ6M20cWH8N9S6afb0SBm6tMk+uUg6z3MqHPKE9atmsY3kJkTm8vKe93izJ2B2+q5MV990sM2CHgtAZaOw==" + }, + "date-format": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-1.2.0.tgz", + "integrity": "sha1-YV6CjiM90aubua4JUODOzPpuytg=", + "dev": true + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", + "dev": true + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true, + "optional": true + }, + "default-require-extensions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", + "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", + "dev": true, + "requires": { + "strip-bom": "2.0.0" + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "1.0.2", + "isobject": "3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "degenerator": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-1.0.4.tgz", + "integrity": "sha1-/PSQo37OJmRk2cxDGrmMWBnO0JU=", + "dev": true, + "optional": true, + "requires": { + "ast-types": "0.11.6", + "escodegen": "1.11.0", + "esprima": "3.1.3" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true, + "optional": true + } + } + }, + "del": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", + "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", + "dev": true, + "requires": { + "globby": "6.1.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.1", + "p-map": "1.2.0", + "pify": "3.0.0", + "rimraf": "2.6.2" + }, + "dependencies": { + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "glob": "7.1.3", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "denodeify": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz", + "integrity": "sha1-OjYof1A05pnnV3kBBSwubJQlFjE=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.1" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "detect-node": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", + "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", + "dev": true + }, + "di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", + "dev": true + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "miller-rabin": "4.0.1", + "randombytes": "2.0.6" + } + }, + "dir-glob": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", + "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", + "dev": true, + "requires": { + "arrify": "1.0.1", + "path-type": "3.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "dns-packet": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", + "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "dev": true, + "requires": { + "ip": "1.1.5", + "safe-buffer": "5.1.2" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "requires": { + "buffer-indexof": "1.1.1" + } + }, + "dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "requires": { + "utila": "0.4.0" + } + }, + "dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", + "dev": true, + "requires": { + "custom-event": "1.0.1", + "ent": "2.2.0", + "extend": "3.0.2", + "void-elements": "2.0.1" + } + }, + "dom-serializer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "dev": true, + "requires": { + "domelementtype": "1.1.3", + "entities": "1.1.2" + }, + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", + "dev": true + } + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "domelementtype": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.2.1.tgz", + "integrity": "sha512-SQVCLFS2E7G5CRCMdn6K9bIhRj1bS6QBWZfF0TUPh4V/BbqrQ619IdSS3/izn0FZ+9l+uODzaZjb08fjOfablA==", + "dev": true + }, + "domhandler": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.1.0.tgz", + "integrity": "sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=", + "dev": true, + "requires": { + "domelementtype": "1.2.1" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0.1.0", + "domelementtype": "1.2.1" + } + }, + "double-ended-queue": { + "version": "2.1.0-0", + "resolved": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz", + "integrity": "sha1-ED01J/0xUo9AGIEwyEHv3XgmTlw=", + "dev": true, + "optional": true + }, + "duplexify": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.1.tgz", + "integrity": "sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA==", + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "inherits": "2.0.3", + "readable-stream": "2.3.6", + "stream-shift": "1.0.0" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "0.1.1", + "safer-buffer": "2.1.2" + } + }, + "echarts": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/echarts/-/echarts-4.1.0.tgz", + "integrity": "sha512-gP1e1fNnAj9KJpTDLXV21brklbfJlqeINmpQDJCDta9TX3cPoqyQOiDVcEPzbOVHqgBRgTOwNxC5iGwJ89014A==", + "requires": { + "zrender": "4.0.4" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "ejs": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.6.1.tgz", + "integrity": "sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.80", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.80.tgz", + "integrity": "sha512-WClidEWEUNx7OfwXehB0qaxCuetjbKjev2SmXWgybWPLKAThBiMTF/2Pd8GSUDtoGOavxVzdkKwfFAPRSWlkLw==", + "dev": true + }, + "elliptic": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", + "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0", + "hash.js": "1.1.5", + "hmac-drbg": "1.0.1", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.1", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "ember-cli-string-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ember-cli-string-utils/-/ember-cli-string-utils-1.1.0.tgz", + "integrity": "sha1-ObZ3/CgF9VFzc1N2/O8njqpEUqE=", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "requires": { + "once": "1.4.0" + } + }, + "engine.io": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.1.5.tgz", + "integrity": "sha512-D06ivJkYxyRrcEe0bTpNnBQNgP9d3xog+qZlLbui8EsMr/DouQpf5o9FzJnWYHEYE0YsFHllUv2R1dkgYZXHcA==", + "dev": true, + "requires": { + "accepts": "1.3.5", + "base64id": "1.0.0", + "cookie": "0.3.1", + "debug": "3.1.0", + "engine.io-parser": "2.1.2", + "uws": "9.14.0", + "ws": "3.3.3" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "engine.io-client": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.1.6.tgz", + "integrity": "sha512-hnuHsFluXnsKOndS4Hv6SvUrgdYx1pk2NqfaDMW+GWdgfU3+/V25Cj7I8a0x92idSpa5PIhJRKxPvp9mnoLsfg==", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "component-inherit": "0.0.3", + "debug": "3.1.0", + "engine.io-parser": "2.1.2", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "ws": "3.3.3", + "xmlhttprequest-ssl": "1.5.5", + "yeast": "0.1.2" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "engine.io-parser": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.2.tgz", + "integrity": "sha512-dInLFzr80RijZ1rGpx1+56/uFoH7/7InhH3kZt+Ms6hT8tNx3NGW/WNSA/f8As1WkOfkuyb3tnRyuXGxusclMw==", + "dev": true, + "requires": { + "after": "0.8.2", + "arraybuffer.slice": "0.0.7", + "base64-arraybuffer": "0.1.5", + "blob": "0.0.4", + "has-binary2": "1.0.3" + } + }, + "enhanced-resolve": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz", + "integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "memory-fs": "0.4.1", + "object-assign": "4.1.1", + "tapable": "0.2.8" + } + }, + "ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", + "dev": true + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "requires": { + "prr": "1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } + }, + "es-abstract": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.12.0.tgz", + "integrity": "sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==", + "dev": true, + "requires": { + "es-to-primitive": "1.2.0", + "function-bind": "1.1.1", + "has": "1.0.3", + "is-callable": "1.1.4", + "is-regex": "1.0.4" + } + }, + "es-to-primitive": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", + "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", + "dev": true, + "requires": { + "is-callable": "1.1.4", + "is-date-object": "1.0.1", + "is-symbol": "1.0.2" + } + }, + "es5-ext": { + "version": "0.10.46", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.46.tgz", + "integrity": "sha512-24XxRvJXNFwEMpJb3nOkiRJKRoupmjYmOPVlI65Qy2SrtxwOTB+g6ODjBKOtwEHbYrhWRty9xxOWLNdClT2djw==", + "dev": true, + "requires": { + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1", + "next-tick": "1.0.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.46", + "es6-symbol": "3.1.1" + } + }, + "es6-map": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", + "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.46", + "es6-iterator": "2.0.3", + "es6-set": "0.1.5", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } + }, + "es6-promise": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.5.tgz", + "integrity": "sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg==", + "dev": true + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "http://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "dev": true, + "requires": { + "es6-promise": "4.2.5" + } + }, + "es6-set": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", + "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.46", + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } + }, + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.46" + } + }, + "es6-weak-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", + "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.46", + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escodegen": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.0.tgz", + "integrity": "sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw==", + "dev": true, + "optional": true, + "requires": { + "esprima": "3.1.3", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "optionator": "0.8.2", + "source-map": "0.6.1" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true, + "optional": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "escope": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", + "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", + "dev": true, + "requires": { + "es6-map": "0.1.5", + "es6-weak-map": "2.0.2", + "esrecurse": "4.2.1", + "estraverse": "4.2.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "4.2.0" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.46" + } + }, + "eventemitter3": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz", + "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==", + "dev": true + }, + "events": { + "version": "1.1.1", + "resolved": "http://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", + "dev": true + }, + "eventsource": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz", + "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=", + "dev": true, + "requires": { + "original": "1.0.2" + } + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "1.3.5", + "safe-buffer": "5.1.2" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "4.1.3", + "shebang-command": "1.2.0", + "which": "1.3.1" + } + } + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "expand-braces": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/expand-braces/-/expand-braces-0.1.2.tgz", + "integrity": "sha1-SIsdHSRRyz06axks/AMPRMWFX+o=", + "dev": true, + "requires": { + "array-slice": "0.2.3", + "array-unique": "0.2.1", + "braces": "0.1.5" + }, + "dependencies": { + "braces": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-0.1.5.tgz", + "integrity": "sha1-wIVxEIUpHYt1/ddOqw+FlygHEeY=", + "dev": true, + "requires": { + "expand-range": "0.1.1" + } + }, + "expand-range": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-0.1.1.tgz", + "integrity": "sha1-TLjtoJk8pW+k9B/ELzy7TMrf8EQ=", + "dev": true, + "requires": { + "is-number": "0.1.1", + "repeat-string": "0.2.2" + } + }, + "is-number": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-0.1.1.tgz", + "integrity": "sha1-aaevEWlj1HIG7JvZtIoUIW8eOAY=", + "dev": true + }, + "repeat-string": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-0.2.2.tgz", + "integrity": "sha1-x6jTI2BoNiBZp+RlH8aITosftK4=", + "dev": true + } + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "2.2.4" + } + }, + "express": { + "version": "4.16.4", + "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz", + "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==", + "dev": true, + "requires": { + "accepts": "1.3.5", + "array-flatten": "1.1.1", + "body-parser": "1.18.3", + "content-disposition": "0.5.2", + "content-type": "1.0.4", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "1.1.2", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", + "finalhandler": "1.1.1", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "1.1.2", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "2.0.4", + "qs": "6.5.2", + "range-parser": "1.2.0", + "safe-buffer": "5.1.2", + "send": "0.16.2", + "serve-static": "1.13.2", + "setprototypeof": "1.1.0", + "statuses": "1.4.0", + "type-is": "1.6.16", + "utils-merge": "1.0.1", + "vary": "1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "extract-text-webpack-plugin": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.2.tgz", + "integrity": "sha512-bt/LZ4m5Rqt/Crl2HiKuAl/oqg0psx1tsTLkvWbJen1CtD+fftkZhMaQ9HOtY2gWsl2Wq+sABmMVi9z3DhKWQQ==", + "dev": true, + "requires": { + "async": "2.6.1", + "loader-utils": "1.1.0", + "schema-utils": "0.3.0", + "webpack-sources": "1.3.0" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "schema-utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", + "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", + "dev": true, + "requires": { + "ajv": "5.5.2" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true, + "optional": true + }, + "fastparse": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz", + "integrity": "sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg=", + "dev": true + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": "0.7.0" + } + }, + "file-loader": { + "version": "1.1.11", + "resolved": "http://registry.npmjs.org/file-loader/-/file-loader-1.1.11.tgz", + "integrity": "sha512-TGR4HU7HUsGg6GCOPJnFk06RhWgEWFLAGWiT6rcD+GRC2keU3s9RGJ+b3Z6/U73jwwNb2gKLJ7YCrp+jvU4ALg==", + "dev": true, + "requires": { + "loader-utils": "1.1.0", + "schema-utils": "0.4.7" + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fileset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", + "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", + "dev": true, + "requires": { + "glob": "7.1.3", + "minimatch": "3.0.4" + } + }, + "fill-range": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "3.1.0", + "repeat-element": "1.1.3", + "repeat-string": "1.6.1" + } + }, + "finalhandler": { + "version": "1.1.1", + "resolved": "http://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", + "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "statuses": "1.4.0", + "unpipe": "1.0.0" + } + }, + "find-cache-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "dev": true, + "requires": { + "commondir": "1.0.1", + "make-dir": "1.3.0", + "pkg-dir": "2.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "2.0.0" + } + }, + "flush-write-stream": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", + "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.6" + } + }, + "follow-redirects": { + "version": "1.5.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.9.tgz", + "integrity": "sha512-Bh65EZI/RU8nx0wbYF9shkFZlqLP+6WT/5FnA3cE/djNSuKNHJEinGGZgu/cQEkeeb2GdFOgenAmn8qaqYke2w==", + "dev": true, + "requires": { + "debug": "3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "dev": true, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.7", + "mime-types": "2.1.21" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.6" + } + }, + "fs-access": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz", + "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=", + "dev": true, + "requires": { + "null-check": "1.0.0" + } + }, + "fs-extra": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "4.0.0", + "universalify": "0.1.2" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "iferr": "0.1.5", + "imurmurhash": "0.1.4", + "readable-stream": "2.3.6" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", + "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", + "dev": true, + "optional": true, + "requires": { + "nan": "2.11.1", + "node-pre-gyp": "0.10.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.3.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "2.2.4" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "1.2.0", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.21", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": "2.1.2" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "1.1.11" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "minipass": { + "version": "2.2.4", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "5.1.1", + "yallist": "3.0.2" + } + }, + "minizlib": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "2.2.4" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.2.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "2.6.9", + "iconv-lite": "0.4.21", + "sax": "1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.10.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "1.0.3", + "mkdirp": "0.5.1", + "needle": "2.2.0", + "nopt": "4.0.1", + "npm-packlist": "1.1.10", + "npmlog": "4.1.2", + "rc": "1.2.7", + "rimraf": "2.6.2", + "semver": "5.5.0", + "tar": "4.4.1" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1.1.1", + "osenv": "0.1.5" + } + }, + "npm-bundled": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.1.10", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "3.0.1", + "npm-bundled": "1.0.3" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "0.5.1", + "ini": "1.3.5", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.1", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.1.1", + "bundled": true, + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.5.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "1.0.1", + "fs-minipass": "1.2.5", + "minipass": "2.2.4", + "minizlib": "1.1.0", + "mkdirp": "0.5.1", + "safe-buffer": "5.1.1", + "yallist": "3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "3.0.2", + "bundled": true, + "dev": true + } + } + }, + "fstream": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.2" + } + }, + "ftp": { + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", + "integrity": "sha1-kZfYYa2BQvPmPVqDv+TFn3MwiF0=", + "dev": true, + "optional": true, + "requires": { + "readable-stream": "1.1.14", + "xregexp": "2.0.0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true, + "optional": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "optional": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true, + "optional": true + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "requires": { + "aproba": "1.2.0", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.3" + } + }, + "gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "dev": true, + "optional": true, + "requires": { + "globule": "1.2.1" + } + }, + "generate-function": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", + "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", + "dev": true, + "optional": true, + "requires": { + "is-property": "1.0.2" + } + }, + "generate-object-property": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "dev": true, + "optional": true, + "requires": { + "is-property": "1.0.2" + } + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "get-uri": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-2.0.2.tgz", + "integrity": "sha512-ZD325dMZOgerGqF/rF6vZXyFGTAay62svjQIT+X/oU2PtxYpFxvSkbsdi+oxIrsNxlZVd4y8wUDqkaExWTI/Cw==", + "dev": true, + "optional": true, + "requires": { + "data-uri-to-buffer": "1.2.0", + "debug": "2.6.9", + "extend": "3.0.2", + "file-uri-to-path": "1.0.0", + "ftp": "0.3.10", + "readable-stream": "2.3.6" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "globby": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", + "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "dir-glob": "2.0.0", + "glob": "7.1.3", + "ignore": "3.3.10", + "pify": "3.0.0", + "slash": "1.0.0" + } + }, + "globule": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz", + "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==", + "dev": true, + "optional": true, + "requires": { + "glob": "7.1.3", + "lodash": "4.17.11", + "minimatch": "3.0.4" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "handle-thing": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz", + "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=", + "dev": true + }, + "handlebars": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.12.tgz", + "integrity": "sha512-RhmTekP+FZL+XNhwS1Wf+bTTZpdLougwt5pcgA1tuz6Jcx0fpH/7z0qd71RKnZHBCxIRBHfBOnio4gViPemNzA==", + "dev": true, + "requires": { + "async": "2.6.1", + "optimist": "0.6.1", + "source-map": "0.6.1", + "uglify-js": "3.4.9" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "har-schema": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", + "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", + "dev": true, + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", + "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", + "dev": true, + "optional": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + }, + "dependencies": { + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dev": true, + "optional": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + } + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-binary2": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", + "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", + "dev": true, + "requires": { + "isarray": "2.0.1" + }, + "dependencies": { + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + } + } + }, + "has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", + "dev": true + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "2.0.6", + "has-values": "1.0.0", + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.2" + } + }, + "hash.js": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.5.tgz", + "integrity": "sha512-eWI5HG9Np+eHV1KQhisXWwM+4EPPYe5dFX1UZZH7k/E3JzDEazVH+VGlZi6R94ZqImq+A3D1mCEtrFIfg/E7sA==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.1" + } + }, + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "dev": true, + "optional": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, + "hipchat-notifier": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hipchat-notifier/-/hipchat-notifier-1.1.0.tgz", + "integrity": "sha1-ttJJdVQ3wZEII2d5nTupoPI7Ix4=", + "dev": true, + "optional": true, + "requires": { + "lodash": "4.17.11", + "request": "2.81.0" + } + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "1.1.5", + "minimalistic-assert": "1.0.1", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true + }, + "homedir-polyfill": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", + "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", + "dev": true, + "requires": { + "parse-passwd": "1.0.0" + } + }, + "hosted-git-info": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", + "dev": true + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "obuf": "1.1.2", + "readable-stream": "2.3.6", + "wbuf": "1.7.3" + } + }, + "html-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", + "dev": true + }, + "html-minifier": { + "version": "3.5.20", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.20.tgz", + "integrity": "sha512-ZmgNLaTp54+HFKkONyLFEfs5dd/ZOtlquKaTnqIWFmx3Av5zG6ZPcV2d0o9XM2fXOTxxIf6eDcwzFFotke/5zA==", + "dev": true, + "requires": { + "camel-case": "3.0.0", + "clean-css": "4.2.1", + "commander": "2.17.1", + "he": "1.1.1", + "param-case": "2.1.1", + "relateurl": "0.2.7", + "uglify-js": "3.4.9" + } + }, + "html-webpack-plugin": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-2.30.1.tgz", + "integrity": "sha1-f5xCG36pHsRg9WUn1430hO51N9U=", + "dev": true, + "requires": { + "bluebird": "3.5.2", + "html-minifier": "3.5.20", + "loader-utils": "0.2.17", + "lodash": "4.17.11", + "pretty-error": "2.1.1", + "toposort": "1.0.7" + }, + "dependencies": { + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } + } + } + }, + "htmlparser2": { + "version": "3.3.0", + "resolved": "http://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz", + "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=", + "dev": true, + "requires": { + "domelementtype": "1.2.1", + "domhandler": "2.1.0", + "domutils": "1.1.6", + "readable-stream": "1.0.34" + }, + "dependencies": { + "domutils": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz", + "integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=", + "dev": true, + "requires": { + "domelementtype": "1.2.1" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "http-errors": { + "version": "1.6.3", + "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": "1.4.0" + } + }, + "http-parser-js": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.0.tgz", + "integrity": "sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w==", + "dev": true + }, + "http-proxy": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz", + "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==", + "dev": true, + "requires": { + "eventemitter3": "3.1.0", + "follow-redirects": "1.5.9", + "requires-port": "1.0.0" + } + }, + "http-proxy-agent": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", + "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", + "dev": true, + "requires": { + "agent-base": "4.2.1", + "debug": "3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "http-proxy-middleware": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz", + "integrity": "sha1-ZC6ISIUdZvCdTxJJEoRtuutBuDM=", + "dev": true, + "requires": { + "http-proxy": "1.17.0", + "is-glob": "3.1.0", + "lodash": "4.17.11", + "micromatch": "2.3.11" + }, + "dependencies": { + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + } + } + }, + "http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.1", + "sshpk": "1.15.1" + } + }, + "httpntlm": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/httpntlm/-/httpntlm-1.6.1.tgz", + "integrity": "sha1-rQFScUOi6Hc8+uapb1hla7UqNLI=", + "dev": true, + "requires": { + "httpreq": "0.4.24", + "underscore": "1.7.0" + } + }, + "httpreq": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/httpreq/-/httpreq-0.4.24.tgz", + "integrity": "sha1-QzX/2CzZaWaKOUZckprGHWOTYn8=", + "dev": true + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "https-proxy-agent": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz", + "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==", + "dev": true, + "requires": { + "agent-base": "4.2.1", + "debug": "3.2.6" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "iconv-lite": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "dev": true, + "requires": { + "safer-buffer": "2.1.2" + } + }, + "ieee754": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", + "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "dev": true + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", + "dev": true, + "optional": true + }, + "import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", + "dev": true, + "requires": { + "import-from": "2.1.0" + } + }, + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "dev": true, + "requires": { + "resolve-from": "3.0.0" + } + }, + "import-local": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz", + "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==", + "dev": true, + "requires": { + "pkg-dir": "2.0.0", + "resolve-cwd": "2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "in-publish": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", + "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=", + "dev": true, + "optional": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "inflection": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.12.0.tgz", + "integrity": "sha1-ogCTVlbW9fa8TcdQLhrstwMihBY=", + "dev": true, + "optional": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "internal-ip": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-1.2.0.tgz", + "integrity": "sha1-rp+/k7mEh4eF1QqN4bNWlWBYz1w=", + "dev": true, + "requires": { + "meow": "3.7.0" + } + }, + "interpret": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", + "dev": true + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "1.4.0" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ipaddr.js": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz", + "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "1.12.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-my-ip-valid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz", + "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==", + "dev": true, + "optional": true + }, + "is-my-json-valid": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.19.0.tgz", + "integrity": "sha512-mG0f/unGX1HZ5ep4uhRaPOS8EkAY8/j6mDRMJrutq4CqhoJWYp7qAlonIPy3TV7p3ju4TK9fo/PbnoksWmsp5Q==", + "dev": true, + "optional": true, + "requires": { + "generate-function": "2.3.1", + "generate-object-property": "1.2.0", + "is-my-ip-valid": "1.0.0", + "jsonpointer": "4.0.1", + "xtend": "4.0.1" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "dev": true, + "requires": { + "is-path-inside": "1.0.1" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "1.0.2" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", + "dev": true + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "requires": { + "has": "1.0.3" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-symbol": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", + "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "dev": true, + "requires": { + "has-symbols": "1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isbinaryfile": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", + "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", + "dev": true, + "requires": { + "buffer-alloc": "1.2.0" + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "istanbul-api": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.3.7.tgz", + "integrity": "sha512-4/ApBnMVeEPG3EkSzcw25wDe4N66wxwn+KKn6b47vyek8Xb3NBAcg4xfuQbS7BqcZuTX4wxfD5lVagdggR3gyA==", + "dev": true, + "requires": { + "async": "2.6.1", + "fileset": "2.0.3", + "istanbul-lib-coverage": "1.2.1", + "istanbul-lib-hook": "1.2.2", + "istanbul-lib-instrument": "1.10.2", + "istanbul-lib-report": "1.1.5", + "istanbul-lib-source-maps": "1.2.6", + "istanbul-reports": "1.5.1", + "js-yaml": "3.12.0", + "mkdirp": "0.5.1", + "once": "1.4.0" + } + }, + "istanbul-instrumenter-loader": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-instrumenter-loader/-/istanbul-instrumenter-loader-3.0.1.tgz", + "integrity": "sha512-a5SPObZgS0jB/ixaKSMdn6n/gXSrK2S6q/UfRJBT3e6gQmVjwZROTODQsYW5ZNwOu78hG62Y3fWlebaVOL0C+w==", + "dev": true, + "requires": { + "convert-source-map": "1.6.0", + "istanbul-lib-instrument": "1.10.2", + "loader-utils": "1.1.0", + "schema-utils": "0.3.0" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "schema-utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", + "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", + "dev": true, + "requires": { + "ajv": "5.5.2" + } + } + } + }, + "istanbul-lib-coverage": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz", + "integrity": "sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.2.2.tgz", + "integrity": "sha512-/Jmq7Y1VeHnZEQ3TL10VHyb564mn6VrQXHchON9Jf/AEcmQ3ZIiyD1BVzNOKTZf/G3gE+kiGK6SmpF9y3qGPLw==", + "dev": true, + "requires": { + "append-transform": "0.4.0" + } + }, + "istanbul-lib-instrument": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz", + "integrity": "sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A==", + "dev": true, + "requires": { + "babel-generator": "6.26.1", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "istanbul-lib-coverage": "1.2.1", + "semver": "5.6.0" + } + }, + "istanbul-lib-report": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.5.tgz", + "integrity": "sha512-UsYfRMoi6QO/doUshYNqcKJqVmFe9w51GZz8BS3WB0lYxAllQYklka2wP9+dGZeHYaWIdcXUx8JGdbqaoXRXzw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "1.2.1", + "mkdirp": "0.5.1", + "path-parse": "1.0.6", + "supports-color": "3.2.3" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.6.tgz", + "integrity": "sha512-TtbsY5GIHgbMsMiRw35YBHGpZ1DVFEO19vxxeiDMYaeOFOCzfnYVxvl6pOUIZR4dtPhAGpSMup8OyF8ubsaqEg==", + "dev": true, + "requires": { + "debug": "3.2.6", + "istanbul-lib-coverage": "1.2.1", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "source-map": "0.5.7" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "istanbul-reports": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.5.1.tgz", + "integrity": "sha512-+cfoZ0UXzWjhAdzosCPP3AN8vvef8XDkWtTfgaN+7L3YTpNYITnCaEkceo5SEYy644VkHka/P1FvkWvrG/rrJw==", + "dev": true, + "requires": { + "handlebars": "4.0.12" + } + }, + "jasmine": { + "version": "2.99.0", + "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.99.0.tgz", + "integrity": "sha1-jKctEC5jm4Z8ZImFbg4YqceqQrc=", + "dev": true, + "requires": { + "exit": "0.1.2", + "glob": "7.1.3", + "jasmine-core": "2.99.1" + }, + "dependencies": { + "jasmine-core": { + "version": "2.99.1", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.99.1.tgz", + "integrity": "sha1-5kAN8ea1bhMLYcS80JPap/boyhU=", + "dev": true + } + } + }, + "jasmine-core": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.8.0.tgz", + "integrity": "sha1-vMl5rh+f0FcB5F5S5l06XWPxok4=", + "dev": true + }, + "jasmine-spec-reporter": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-4.2.1.tgz", + "integrity": "sha512-FZBoZu7VE5nR7Nilzy+Np8KuVIOxF4oXDPDknehCYBDE080EnlPu0afdZNmpGDBRCUBv3mj5qgqCRmk6W/K8vg==", + "dev": true, + "requires": { + "colors": "1.1.2" + } + }, + "jasminewd2": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/jasminewd2/-/jasminewd2-2.2.0.tgz", + "integrity": "sha1-43zwsX8ZnM4jvqcbIDk5Uka07E4=", + "dev": true + }, + "jquery": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.3.1.tgz", + "integrity": "sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg==" + }, + "js-base64": { + "version": "2.4.9", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.9.tgz", + "integrity": "sha512-xcinL3AuDJk7VSzsHgb9DvvIXayBbadtMZ4HFPx8rUszbW1MuNMlwYVC4zzCZ6e1sqZpnNS5ZFYOhXqA39T7LQ==", + "dev": true, + "optional": true + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "js-yaml": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", + "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", + "dev": true, + "requires": { + "argparse": "1.0.10", + "esprima": "4.0.1" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + }, + "json-loader": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", + "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "optional": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json3": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "http://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true, + "optional": true + }, + "jsonpointer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", + "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", + "dev": true, + "optional": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "karma": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/karma/-/karma-2.0.5.tgz", + "integrity": "sha512-rECezBeY7mjzGUWhFlB7CvPHgkHJLXyUmWg+6vHCEsdWNUTnmiS6jRrIMcJEWgU2DUGZzGWG0bTRVky8fsDTOA==", + "dev": true, + "requires": { + "bluebird": "3.5.2", + "body-parser": "1.18.3", + "chokidar": "2.0.4", + "colors": "1.1.2", + "combine-lists": "1.0.1", + "connect": "3.6.6", + "core-js": "2.5.7", + "di": "0.0.1", + "dom-serialize": "2.2.1", + "expand-braces": "0.1.2", + "glob": "7.1.3", + "graceful-fs": "4.1.11", + "http-proxy": "1.17.0", + "isbinaryfile": "3.0.3", + "lodash": "4.17.11", + "log4js": "2.11.0", + "mime": "1.6.0", + "minimatch": "3.0.4", + "optimist": "0.6.1", + "qjobs": "1.2.0", + "range-parser": "1.2.0", + "rimraf": "2.6.2", + "safe-buffer": "5.1.2", + "socket.io": "2.0.4", + "source-map": "0.6.1", + "tmp": "0.0.33", + "useragent": "2.2.1" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "3.1.10", + "normalize-path": "2.1.1" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.3", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "chokidar": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", + "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", + "dev": true, + "requires": { + "anymatch": "2.0.0", + "async-each": "1.0.1", + "braces": "2.3.2", + "fsevents": "1.2.4", + "glob-parent": "3.1.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "4.0.0", + "lodash.debounce": "4.0.8", + "normalize-path": "2.1.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.2.1", + "upath": "1.1.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "3.1.0", + "path-dirname": "1.0.2" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + } + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.13", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "karma-chrome-launcher": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz", + "integrity": "sha512-uf/ZVpAabDBPvdPdveyk1EPgbnloPvFFGgmRhYLTDH7gEB4nZdSBk8yTU47w1g/drLSx5uMOkjKk7IWKfWg/+w==", + "dev": true, + "requires": { + "fs-access": "1.0.1", + "which": "1.3.1" + } + }, + "karma-coverage-istanbul-reporter": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-1.4.3.tgz", + "integrity": "sha1-O13/RmT6W41RlrmInj9hwforgNk=", + "dev": true, + "requires": { + "istanbul-api": "1.3.7", + "minimatch": "3.0.4" + } + }, + "karma-jasmine": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-1.1.2.tgz", + "integrity": "sha1-OU8rJf+0pkS5rabyLUQ+L9CIhsM=", + "dev": true + }, + "karma-jasmine-html-reporter": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-0.2.2.tgz", + "integrity": "sha1-SKjl7xiAdhfuK14zwRlMNbQ5Ukw=", + "dev": true, + "requires": { + "karma-jasmine": "1.1.2" + } + }, + "karma-source-map-support": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.3.0.tgz", + "integrity": "sha512-HcPqdAusNez/ywa+biN4EphGz62MmQyPggUsDfsHqa7tSe4jdsxgvTKuDfIazjL+IOxpVWyT7Pr4dhAV+sxX5Q==", + "dev": true, + "requires": { + "source-map-support": "0.5.9" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz", + "integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==", + "dev": true, + "requires": { + "buffer-from": "1.1.1", + "source-map": "0.6.1" + } + } + } + }, + "killable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "1.0.0" + } + }, + "less": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/less/-/less-2.7.3.tgz", + "integrity": "sha512-KPdIJKWcEAb02TuJtaLrhue0krtRLoRoo7x6BNJIBelO00t/CCdJQUnHW5V34OnHMWzIktSalJxRO+FvytQlCQ==", + "dev": true, + "requires": { + "errno": "0.1.7", + "graceful-fs": "4.1.11", + "image-size": "0.5.5", + "mime": "1.6.0", + "mkdirp": "0.5.1", + "promise": "7.3.1", + "request": "2.81.0", + "source-map": "0.5.7" + } + }, + "less-loader": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-4.1.0.tgz", + "integrity": "sha512-KNTsgCE9tMOM70+ddxp9yyt9iHqgmSs0yTZc5XH5Wo+g80RWRIYNqE58QJKm/yMud5wZEvz50ugRDuzVIkyahg==", + "dev": true, + "requires": { + "clone": "2.1.2", + "loader-utils": "1.1.0", + "pify": "3.0.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "optional": true, + "requires": { + "prelude-ls": "1.1.2", + "type-check": "0.3.2" + } + }, + "libbase64": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/libbase64/-/libbase64-0.1.0.tgz", + "integrity": "sha1-YjUag5VjrF/1vSbxL2Dpgwu3UeY=", + "dev": true + }, + "libmime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/libmime/-/libmime-3.0.0.tgz", + "integrity": "sha1-UaGp50SOy9Ms2lRCFnW7IbwJPaY=", + "dev": true, + "requires": { + "iconv-lite": "0.4.15", + "libbase64": "0.1.0", + "libqp": "1.1.0" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.15", + "resolved": "http://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.15.tgz", + "integrity": "sha1-/iZaIYrGpXz+hUkn6dBMGYJe3es=", + "dev": true + } + } + }, + "libqp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/libqp/-/libqp-1.1.0.tgz", + "integrity": "sha1-9ebgatdLeU+1tbZpiL9yjvHe2+g=", + "dev": true + }, + "license-webpack-plugin": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-1.5.0.tgz", + "integrity": "sha512-Of/H79rZqm2aeg4RnP9SMSh19qkKemoLT5VaJV58uH5AxeYWEcBgGFs753JEJ/Hm6BPvQVfIlrrjoBwYj8p7Tw==", + "dev": true, + "requires": { + "ejs": "2.6.1" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "loader-runner": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.1.tgz", + "integrity": "sha512-By6ZFY7ETWOc9RFaAIb23IjJVcM4dvJC/N57nmdz9RSkMXvAXGI7SyVlAw3v8vjtDRlqThgVDVmTnr9fqMlxkw==", + "dev": true + }, + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "dev": true, + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + } + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + }, + "lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", + "dev": true, + "optional": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, + "lodash.mergewith": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz", + "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==", + "dev": true, + "optional": true + }, + "lodash.tail": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz", + "integrity": "sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=", + "dev": true + }, + "log4js": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-2.11.0.tgz", + "integrity": "sha512-z1XdwyGFg8/WGkOyF6DPJjivCWNLKrklGdViywdYnSKOvgtEBo2UyEMZS5sD2mZrQlU3TvO8wDWLc8mzE1ncBQ==", + "dev": true, + "requires": { + "amqplib": "0.5.2", + "axios": "0.15.3", + "circular-json": "0.5.8", + "date-format": "1.2.0", + "debug": "3.2.6", + "hipchat-notifier": "1.1.0", + "loggly": "1.1.1", + "mailgun-js": "0.18.1", + "nodemailer": "2.7.2", + "redis": "2.8.0", + "semver": "5.6.0", + "slack-node": "0.2.0", + "streamroller": "0.7.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "loggly": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/loggly/-/loggly-1.1.1.tgz", + "integrity": "sha1-Cg/B0/o6XsRP3HuJe+uipGlc6+4=", + "dev": true, + "optional": true, + "requires": { + "json-stringify-safe": "5.0.1", + "request": "2.75.0", + "timespan": "2.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true, + "optional": true + }, + "caseless": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", + "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", + "dev": true, + "optional": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "optional": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "form-data": { + "version": "2.0.0", + "resolved": "http://registry.npmjs.org/form-data/-/form-data-2.0.0.tgz", + "integrity": "sha1-bwrrrcxdoWwT4ezBETfYX5uIOyU=", + "dev": true, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.7", + "mime-types": "2.1.21" + } + }, + "har-validator": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", + "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", + "dev": true, + "optional": true, + "requires": { + "chalk": "1.1.3", + "commander": "2.17.1", + "is-my-json-valid": "2.19.0", + "pinkie-promise": "2.0.1" + } + }, + "node-uuid": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz", + "integrity": "sha1-sEDrCSOWivq/jTL7HxfxFn/auQc=", + "dev": true, + "optional": true + }, + "qs": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.3.tgz", + "integrity": "sha1-HPyyXBCpsrSDBT/zn138kjOQjP4=", + "dev": true, + "optional": true + }, + "request": { + "version": "2.75.0", + "resolved": "http://registry.npmjs.org/request/-/request-2.75.0.tgz", + "integrity": "sha1-0rgmiihtoT6qXQGt9dGMyQ9lfZM=", + "dev": true, + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.8.0", + "bl": "1.1.2", + "caseless": "0.11.0", + "combined-stream": "1.0.7", + "extend": "3.0.2", + "forever-agent": "0.6.1", + "form-data": "2.0.0", + "har-validator": "2.0.6", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.21", + "node-uuid": "1.4.8", + "oauth-sign": "0.8.2", + "qs": "6.2.3", + "stringstream": "0.0.6", + "tough-cookie": "2.3.4", + "tunnel-agent": "0.4.3" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true, + "optional": true + }, + "tunnel-agent": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", + "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", + "dev": true, + "optional": true + } + } + }, + "loglevel": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz", + "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=", + "dev": true + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "3.0.2" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "0.4.1", + "signal-exit": "3.0.2" + } + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "dev": true + }, + "lru-cache": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", + "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "magic-string": { + "version": "0.22.5", + "resolved": "http://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz", + "integrity": "sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==", + "dev": true, + "requires": { + "vlq": "0.2.3" + } + }, + "mailcomposer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/mailcomposer/-/mailcomposer-4.0.1.tgz", + "integrity": "sha1-DhxEsqB890DuF9wUm6AJ8Zyt/rQ=", + "dev": true, + "optional": true, + "requires": { + "buildmail": "4.0.1", + "libmime": "3.0.0" + } + }, + "mailgun-js": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/mailgun-js/-/mailgun-js-0.18.1.tgz", + "integrity": "sha512-lvuMP14u24HS2uBsJEnzSyPMxzU2b99tQsIx1o6QNjqxjk8b3WvR+vq5oG1mjqz/IBYo+5gF+uSoDS0RkMVHmg==", + "dev": true, + "optional": true, + "requires": { + "async": "2.6.1", + "debug": "3.1.0", + "form-data": "2.3.3", + "inflection": "1.12.0", + "is-stream": "1.1.0", + "path-proxy": "1.0.0", + "promisify-call": "2.0.4", + "proxy-agent": "3.0.3", + "tsscmp": "1.0.6" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.7", + "mime-types": "2.1.21" + } + } + } + }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "requires": { + "pify": "3.0.0" + } + }, + "make-error": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz", + "integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==", + "dev": true + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "1.0.1" + } + }, + "math-random": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", + "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=", + "dev": true + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "3.0.4", + "inherits": "2.0.3", + "safe-buffer": "5.1.2" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "http://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, + "requires": { + "mimic-fn": "1.2.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "0.1.7", + "readable-stream": "2.3.6" + } + }, + "meow": { + "version": "3.7.0", + "resolved": "http://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "2.1.0", + "decamelize": "1.2.0", + "loud-rejection": "1.6.0", + "map-obj": "1.0.1", + "minimist": "1.2.0", + "normalize-package-data": "2.4.0", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "redent": "1.0.0", + "trim-newlines": "1.0.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "mime-db": { + "version": "1.37.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", + "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==", + "dev": true + }, + "mime-types": { + "version": "2.1.21", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", + "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", + "dev": true, + "requires": { + "mime-db": "1.37.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.11" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mississippi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz", + "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", + "dev": true, + "requires": { + "concat-stream": "1.6.2", + "duplexify": "3.6.1", + "end-of-stream": "1.4.1", + "flush-write-stream": "1.0.3", + "from2": "2.3.0", + "parallel-transform": "1.1.0", + "pump": "2.0.1", + "pumpify": "1.5.1", + "stream-each": "1.2.3", + "through2": "2.0.3" + } + }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "dev": true, + "requires": { + "for-in": "1.0.2", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, + "mixin-object": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", + "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", + "dev": true, + "requires": { + "for-in": "0.1.8", + "is-extendable": "0.1.1" + }, + "dependencies": { + "for-in": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", + "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=", + "dev": true + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "1.2.0", + "copy-concurrently": "1.0.5", + "fs-write-stream-atomic": "1.0.10", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "run-queue": "1.0.3" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "requires": { + "dns-packet": "1.3.1", + "thunky": "1.0.3" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, + "nan": { + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.1.tgz", + "integrity": "sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA==", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "fragment-cache": "0.2.1", + "is-windows": "1.0.2", + "kind-of": "6.0.2", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", + "dev": true + }, + "neo-async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz", + "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==", + "dev": true + }, + "netmask": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-1.0.6.tgz", + "integrity": "sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU=", + "dev": true, + "optional": true + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "dev": true + }, + "ng-zorro-antd": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ng-zorro-antd/-/ng-zorro-antd-0.7.1.tgz", + "integrity": "sha512-GqeQ8BqOVu3ubKtavYsFti5niRKQwNgz6tMeULmKZdJAwS/ylAsDDmx5AB0bGLv4CrIgto9fUolRyxR8+dLYVw==", + "requires": { + "@angular/cdk": "5.2.5", + "date-fns": "1.29.0" + } + }, + "ngx-echarts": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/ngx-echarts/-/ngx-echarts-2.3.1.tgz", + "integrity": "sha512-0aCnTOPN0hA/cTwhNvV113LvHZ3z17g6oUdVrQndZBy0xXX/WFt21eMnyjeMSi3tG+US4DvPyzBq3Ih1ew1waw==" + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dev": true, + "requires": { + "lower-case": "1.1.4" + } + }, + "node-forge": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", + "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==", + "dev": true + }, + "node-gyp": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", + "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", + "dev": true, + "optional": true, + "requires": { + "fstream": "1.0.11", + "glob": "7.1.3", + "graceful-fs": "4.1.11", + "mkdirp": "0.5.1", + "nopt": "3.0.6", + "npmlog": "4.1.2", + "osenv": "0.1.5", + "request": "2.88.0", + "rimraf": "2.6.2", + "semver": "5.3.0", + "tar": "2.2.1", + "which": "1.3.1" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "optional": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "optional": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true, + "optional": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.7", + "mime-types": "2.1.21" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true, + "optional": true + }, + "har-validator": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz", + "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==", + "dev": true, + "optional": true, + "requires": { + "ajv": "5.5.2", + "har-schema": "2.0.0" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.15.1" + } + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "optional": true, + "requires": { + "abbrev": "1.1.1" + } + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true, + "optional": true + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true, + "optional": true + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true, + "optional": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true, + "optional": true + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, + "optional": true, + "requires": { + "aws-sign2": "0.7.0", + "aws4": "1.8.0", + "caseless": "0.12.0", + "combined-stream": "1.0.7", + "extend": "3.0.2", + "forever-agent": "0.6.1", + "form-data": "2.3.3", + "har-validator": "5.1.0", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.21", + "oauth-sign": "0.9.0", + "performance-now": "2.1.0", + "qs": "6.5.2", + "safe-buffer": "5.1.2", + "tough-cookie": "2.4.3", + "tunnel-agent": "0.6.0", + "uuid": "3.3.2" + } + }, + "semver": { + "version": "5.3.0", + "resolved": "http://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true, + "optional": true + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, + "optional": true, + "requires": { + "psl": "1.1.29", + "punycode": "1.4.1" + } + } + } + }, + "node-libs-browser": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", + "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", + "dev": true, + "requires": { + "assert": "1.4.1", + "browserify-zlib": "0.2.0", + "buffer": "4.9.1", + "console-browserify": "1.1.0", + "constants-browserify": "1.0.0", + "crypto-browserify": "3.12.0", + "domain-browser": "1.2.0", + "events": "1.1.1", + "https-browserify": "1.0.0", + "os-browserify": "0.3.0", + "path-browserify": "0.0.0", + "process": "0.11.10", + "punycode": "1.4.1", + "querystring-es3": "0.2.1", + "readable-stream": "2.3.6", + "stream-browserify": "2.0.1", + "stream-http": "2.8.3", + "string_decoder": "1.1.1", + "timers-browserify": "2.0.10", + "tty-browserify": "0.0.0", + "url": "0.11.0", + "util": "0.10.4", + "vm-browserify": "0.0.4" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "node-modules-path": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/node-modules-path/-/node-modules-path-1.0.2.tgz", + "integrity": "sha512-6Gbjq+d7uhkO7epaKi5DNgUJn7H0gEyA4Jg0Mo1uQOi3Rk50G83LtmhhFyw0LxnAFhtlspkiiw52ISP13qzcBg==", + "dev": true + }, + "node-sass": { + "version": "4.9.4", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.9.4.tgz", + "integrity": "sha512-MXyurANsUoE4/6KmfMkwGcBzAnJQ5xJBGW7Ei6ea8KnUKuzHr/SguVBIi3uaUAHtZCPUYkvlJ3Ef5T5VAwVpaA==", + "dev": true, + "optional": true, + "requires": { + "async-foreach": "0.1.3", + "chalk": "1.1.3", + "cross-spawn": "3.0.1", + "gaze": "1.1.3", + "get-stdin": "4.0.1", + "glob": "7.1.3", + "in-publish": "2.0.0", + "lodash.assign": "4.2.0", + "lodash.clonedeep": "4.5.0", + "lodash.mergewith": "4.6.1", + "meow": "3.7.0", + "mkdirp": "0.5.1", + "nan": "2.11.1", + "node-gyp": "3.8.0", + "npmlog": "4.1.2", + "request": "2.88.0", + "sass-graph": "2.2.4", + "stdout-stream": "1.4.1", + "true-case-path": "1.0.3" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "optional": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true, + "optional": true + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "optional": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true, + "optional": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "optional": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.7", + "mime-types": "2.1.21" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true, + "optional": true + }, + "har-validator": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz", + "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==", + "dev": true, + "optional": true, + "requires": { + "ajv": "5.5.2", + "har-schema": "2.0.0" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.15.1" + } + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true, + "optional": true + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true, + "optional": true + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true, + "optional": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true, + "optional": true + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, + "optional": true, + "requires": { + "aws-sign2": "0.7.0", + "aws4": "1.8.0", + "caseless": "0.12.0", + "combined-stream": "1.0.7", + "extend": "3.0.2", + "forever-agent": "0.6.1", + "form-data": "2.3.3", + "har-validator": "5.1.0", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.21", + "oauth-sign": "0.9.0", + "performance-now": "2.1.0", + "qs": "6.5.2", + "safe-buffer": "5.1.2", + "tough-cookie": "2.4.3", + "tunnel-agent": "0.6.0", + "uuid": "3.3.2" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true, + "optional": true + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, + "optional": true, + "requires": { + "psl": "1.1.29", + "punycode": "1.4.1" + } + } + } + }, + "nodemailer": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-2.7.2.tgz", + "integrity": "sha1-8kLmSa7q45tsftdA73sGHEBNMPk=", + "dev": true, + "optional": true, + "requires": { + "libmime": "3.0.0", + "mailcomposer": "4.0.1", + "nodemailer-direct-transport": "3.3.2", + "nodemailer-shared": "1.1.0", + "nodemailer-smtp-pool": "2.8.2", + "nodemailer-smtp-transport": "2.7.2", + "socks": "1.1.9" + }, + "dependencies": { + "smart-buffer": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-1.1.15.tgz", + "integrity": "sha1-fxFLW2X6s+KjWqd1uxLw0cZJvxY=", + "dev": true, + "optional": true + }, + "socks": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/socks/-/socks-1.1.9.tgz", + "integrity": "sha1-Yo1+TQSRJDVEWsC25Fk3bLPm1pE=", + "dev": true, + "optional": true, + "requires": { + "ip": "1.1.5", + "smart-buffer": "1.1.15" + } + } + } + }, + "nodemailer-direct-transport": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/nodemailer-direct-transport/-/nodemailer-direct-transport-3.3.2.tgz", + "integrity": "sha1-6W+vuQNYVglH5WkBfZfmBzilCoY=", + "dev": true, + "optional": true, + "requires": { + "nodemailer-shared": "1.1.0", + "smtp-connection": "2.12.0" + } + }, + "nodemailer-fetch": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.6.0.tgz", + "integrity": "sha1-ecSQihwPXzdbc/6IjamCj23JY6Q=", + "dev": true + }, + "nodemailer-shared": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/nodemailer-shared/-/nodemailer-shared-1.1.0.tgz", + "integrity": "sha1-z1mU4v0mjQD1zw+nZ6CBae2wfsA=", + "dev": true, + "requires": { + "nodemailer-fetch": "1.6.0" + } + }, + "nodemailer-smtp-pool": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/nodemailer-smtp-pool/-/nodemailer-smtp-pool-2.8.2.tgz", + "integrity": "sha1-LrlNbPhXgLG0clzoU7nL1ejajHI=", + "dev": true, + "optional": true, + "requires": { + "nodemailer-shared": "1.1.0", + "nodemailer-wellknown": "0.1.10", + "smtp-connection": "2.12.0" + } + }, + "nodemailer-smtp-transport": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/nodemailer-smtp-transport/-/nodemailer-smtp-transport-2.7.2.tgz", + "integrity": "sha1-A9ccdjFPFKx9vHvwM6am0W1n+3c=", + "dev": true, + "optional": true, + "requires": { + "nodemailer-shared": "1.1.0", + "nodemailer-wellknown": "0.1.10", + "smtp-connection": "2.12.0" + } + }, + "nodemailer-wellknown": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/nodemailer-wellknown/-/nodemailer-wellknown-0.1.10.tgz", + "integrity": "sha1-WG24EB2zDLRDjrVGc3pBqtDPE9U=", + "dev": true + }, + "nopt": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "dev": true, + "requires": { + "abbrev": "1.1.1", + "osenv": "0.1.5" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "2.7.1", + "is-builtin-module": "1.0.0", + "semver": "5.6.0", + "validate-npm-package-license": "3.0.4" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "2.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "requires": { + "are-we-there-yet": "1.1.5", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "requires": { + "boolbase": "1.0.0" + } + }, + "null-check": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz", + "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=", + "dev": true + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-component": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", + "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "0.1.1", + "define-property": "0.2.5", + "kind-of": "3.2.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + } + } + }, + "object-keys": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", + "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", + "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "opn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.1.0.tgz", + "integrity": "sha512-iPNl7SyM8L30Rm1sjGdLLheyHVw5YXVfi3SKWJzBI7efxRwHojfRFjwE/OLM6qp9xJYMgab8WicTU1cPoY+Hpg==", + "dev": true, + "requires": { + "is-wsl": "1.1.0" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "0.0.8", + "wordwrap": "0.0.2" + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "optional": true, + "requires": { + "deep-is": "0.1.3", + "fast-levenshtein": "2.0.6", + "levn": "0.3.0", + "prelude-ls": "1.1.2", + "type-check": "0.3.2", + "wordwrap": "1.0.0" + }, + "dependencies": { + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true, + "optional": true + } + } + }, + "options": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", + "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=", + "dev": true + }, + "original": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", + "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", + "dev": true, + "requires": { + "url-parse": "1.4.3" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "1.4.0", + "resolved": "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "1.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "1.3.0" + } + }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "pac-proxy-agent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-3.0.0.tgz", + "integrity": "sha512-AOUX9jES/EkQX2zRz0AW7lSx9jD//hQS8wFXBvcnd/J2Py9KaMJMqV/LPqJssj1tgGufotb2mmopGPR15ODv1Q==", + "dev": true, + "optional": true, + "requires": { + "agent-base": "4.2.1", + "debug": "3.2.6", + "get-uri": "2.0.2", + "http-proxy-agent": "2.1.0", + "https-proxy-agent": "2.2.1", + "pac-resolver": "3.0.0", + "raw-body": "2.3.3", + "socks-proxy-agent": "4.0.1" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "optional": true, + "requires": { + "ms": "2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true, + "optional": true + } + } + }, + "pac-resolver": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-3.0.0.tgz", + "integrity": "sha512-tcc38bsjuE3XZ5+4vP96OfhOugrX+JcnpUbhfuc4LuXBLQhoTthOstZeoQJBDnQUDYzYmdImKsbz0xSl1/9qeA==", + "dev": true, + "optional": true, + "requires": { + "co": "4.6.0", + "degenerator": "1.0.4", + "ip": "1.1.5", + "netmask": "1.0.6", + "thunkify": "2.1.2" + } + }, + "pako": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", + "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", + "dev": true + }, + "parallel-transform": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", + "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", + "dev": true, + "requires": { + "cyclist": "0.2.2", + "inherits": "2.0.3", + "readable-stream": "2.3.6" + } + }, + "param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "dev": true, + "requires": { + "no-case": "2.3.2" + } + }, + "parse-asn1": { + "version": "5.1.1", + "resolved": "http://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", + "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==", + "dev": true, + "requires": { + "asn1.js": "4.10.1", + "browserify-aes": "1.2.0", + "create-hash": "1.2.0", + "evp_bytestokey": "1.0.3", + "pbkdf2": "3.0.17" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "1.3.2" + } + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, + "parseqs": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", + "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", + "dev": true, + "requires": { + "better-assert": "1.0.2" + } + }, + "parseuri": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", + "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", + "dev": true, + "requires": { + "better-assert": "1.0.2" + } + }, + "parseurl": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-proxy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/path-proxy/-/path-proxy-1.0.0.tgz", + "integrity": "sha1-GOijaFn8nS8aU7SN7hOFQ8Ag3l4=", + "dev": true, + "optional": true, + "requires": { + "inflection": "1.3.8" + }, + "dependencies": { + "inflection": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.3.8.tgz", + "integrity": "sha1-y9Fg2p91sUw8xjV41POWeEvzAU4=", + "dev": true, + "optional": true + } + } + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "3.0.0" + } + }, + "pbkdf2": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", + "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "dev": true, + "requires": { + "create-hash": "1.2.0", + "create-hmac": "1.1.7", + "ripemd160": "2.0.2", + "safe-buffer": "5.1.2", + "sha.js": "2.4.11" + } + }, + "performance-now": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", + "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", + "dev": true, + "optional": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "2.0.4" + } + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "2.1.0" + } + }, + "portfinder": { + "version": "1.0.18", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.18.tgz", + "integrity": "sha512-KanzLOERzKoX3En5yTiV8K/arnU1ykYVokmtEn0PgCzqKZG9489tqW8ifp9+v3/VJZ5YDjvDt/PAP5WaPgk7FA==", + "dev": true, + "requires": { + "async": "1.5.2", + "debug": "2.6.9", + "mkdirp": "0.5.1" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "http://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "2.4.1", + "source-map": "0.6.1", + "supports-color": "5.5.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.5.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "3.0.0" + } + } + } + }, + "postcss-import": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-11.1.0.tgz", + "integrity": "sha512-5l327iI75POonjxkXgdRCUS+AlzAdBx4pOvMEhTKTCjb1p8IEeVR9yx3cPbmN7LIWJLbfnIXxAhoB4jpD0c/Cw==", + "dev": true, + "requires": { + "postcss": "6.0.23", + "postcss-value-parser": "3.3.1", + "read-cache": "1.0.0", + "resolve": "1.8.1" + } + }, + "postcss-load-config": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.0.0.tgz", + "integrity": "sha512-V5JBLzw406BB8UIfsAWSK2KSwIJ5yoEIVFb4gVkXci0QdKgA24jLmHZ/ghe/GgX0lJ0/D1uUK1ejhzEY94MChQ==", + "dev": true, + "requires": { + "cosmiconfig": "4.0.0", + "import-cwd": "2.1.0" + } + }, + "postcss-loader": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-2.1.6.tgz", + "integrity": "sha512-hgiWSc13xVQAq25cVw80CH0l49ZKlAnU1hKPOdRrNj89bokRr/bZF2nT+hebPPF9c9xs8c3gw3Fr2nxtmXYnNg==", + "dev": true, + "requires": { + "loader-utils": "1.1.0", + "postcss": "6.0.23", + "postcss-load-config": "2.0.0", + "schema-utils": "0.4.7" + } + }, + "postcss-url": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/postcss-url/-/postcss-url-7.3.2.tgz", + "integrity": "sha512-QMV5mA+pCYZQcUEPQkmor9vcPQ2MT+Ipuu8qdi1gVxbNiIiErEGft+eny1ak19qALoBkccS5AHaCaCDzh7b9MA==", + "dev": true, + "requires": { + "mime": "1.6.0", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "postcss": "6.0.23", + "xxhashjs": "0.2.2" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "pretty-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", + "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", + "dev": true, + "requires": { + "renderkid": "2.0.2", + "utila": "0.4.0" + } + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "optional": true, + "requires": { + "asap": "2.0.6" + } + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "promisify-call": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/promisify-call/-/promisify-call-2.0.4.tgz", + "integrity": "sha1-1IwtRWUszM1SgB3ey9UzptS9X7o=", + "dev": true, + "optional": true, + "requires": { + "with-callback": "1.0.2" + } + }, + "protractor": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/protractor/-/protractor-5.1.2.tgz", + "integrity": "sha1-myIXQXCaTGLVzVPGqt1UpxE36V8=", + "dev": true, + "requires": { + "@types/node": "6.0.118", + "@types/q": "0.0.32", + "@types/selenium-webdriver": "2.53.43", + "blocking-proxy": "0.0.5", + "chalk": "1.1.3", + "glob": "7.1.3", + "jasmine": "2.99.0", + "jasminewd2": "2.2.0", + "optimist": "0.6.1", + "q": "1.4.1", + "saucelabs": "1.3.0", + "selenium-webdriver": "3.0.1", + "source-map-support": "0.4.18", + "webdriver-js-extender": "1.0.0", + "webdriver-manager": "12.1.0" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true, + "requires": { + "globby": "5.0.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.1", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "rimraf": "2.6.2" + } + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.7", + "mime-types": "2.1.21" + } + }, + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "arrify": "1.0.1", + "glob": "7.1.3", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz", + "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==", + "dev": true, + "requires": { + "ajv": "5.5.2", + "har-schema": "2.0.0" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.15.1" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, + "requires": { + "aws-sign2": "0.7.0", + "aws4": "1.8.0", + "caseless": "0.12.0", + "combined-stream": "1.0.7", + "extend": "3.0.2", + "forever-agent": "0.6.1", + "form-data": "2.3.3", + "har-validator": "5.1.0", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.21", + "oauth-sign": "0.9.0", + "performance-now": "2.1.0", + "qs": "6.5.2", + "safe-buffer": "5.1.2", + "tough-cookie": "2.4.3", + "tunnel-agent": "0.6.0", + "uuid": "3.3.2" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, + "requires": { + "psl": "1.1.29", + "punycode": "1.4.1" + } + }, + "webdriver-manager": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.1.0.tgz", + "integrity": "sha512-oEc5fmkpz6Yh6udhwir5m0eN5mgRPq9P/NU5YWuT3Up5slt6Zz+znhLU7q4+8rwCZz/Qq3Fgpr/4oao7NPCm2A==", + "dev": true, + "requires": { + "adm-zip": "0.4.11", + "chalk": "1.1.3", + "del": "2.2.2", + "glob": "7.1.3", + "ini": "1.3.5", + "minimist": "1.2.0", + "q": "1.4.1", + "request": "2.88.0", + "rimraf": "2.6.2", + "semver": "5.6.0", + "xml2js": "0.4.19" + } + } + } + }, + "proxy-addr": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", + "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==", + "dev": true, + "requires": { + "forwarded": "0.1.2", + "ipaddr.js": "1.8.0" + } + }, + "proxy-agent": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-3.0.3.tgz", + "integrity": "sha512-PXVVVuH9tiQuxQltFJVSnXWuDtNr+8aNBP6XVDDCDiUuDN8eRCm+ii4/mFWmXWEA0w8jjJSlePa4LXlM4jIzNA==", + "dev": true, + "optional": true, + "requires": { + "agent-base": "4.2.1", + "debug": "3.2.6", + "http-proxy-agent": "2.1.0", + "https-proxy-agent": "2.2.1", + "lru-cache": "4.1.3", + "pac-proxy-agent": "3.0.0", + "proxy-from-env": "1.0.0", + "socks-proxy-agent": "4.0.1" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "optional": true, + "requires": { + "ms": "2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true, + "optional": true + } + } + }, + "proxy-from-env": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", + "integrity": "sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=", + "dev": true, + "optional": true + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "psl": { + "version": "1.1.29", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz", + "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.2.0", + "parse-asn1": "5.1.1", + "randombytes": "2.0.6", + "safe-buffer": "5.1.2" + } + }, + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "3.6.1", + "inherits": "2.0.3", + "pump": "2.0.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "q": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", + "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=", + "dev": true + }, + "qjobs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", + "dev": true + }, + "qs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", + "dev": true, + "optional": true + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "querystringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.0.tgz", + "integrity": "sha512-sluvZZ1YiTLD5jsqZcDmFyV2EwToyXZBfpoVOmktMmW+VEnhgakFHnasVph65fOjGPTWN0Nw3+XQaSeMayr0kg==", + "dev": true + }, + "randomatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.0.tgz", + "integrity": "sha512-KnGPVE0lo2WoXxIZ7cPR8YBpiol4gsSuOwDSg410oHh80ZMp5EiypNqL2K4Z77vJn6lB5rap7IkAmcUlalcnBQ==", + "dev": true, + "requires": { + "is-number": "4.0.0", + "kind-of": "6.0.2", + "math-random": "1.0.1" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "randombytes": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", + "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "2.0.6", + "safe-buffer": "5.1.2" + } + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "dev": true + }, + "raw-body": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", + "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==", + "dev": true, + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.3", + "iconv-lite": "0.4.23", + "unpipe": "1.0.0" + } + }, + "raw-loader": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-0.5.1.tgz", + "integrity": "sha1-DD0L6u2KAclm2Xh793goElKpeao=", + "dev": true + }, + "read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", + "dev": true, + "requires": { + "pify": "2.3.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + }, + "dependencies": { + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } + } + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "micromatch": "3.1.10", + "readable-stream": "2.3.6" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.3", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.13", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + } + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "2.1.0", + "strip-indent": "1.0.1" + } + }, + "redis": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/redis/-/redis-2.8.0.tgz", + "integrity": "sha512-M1OkonEQwtRmZv4tEWF2VgpG0JWJ8Fv1PhlgT5+B+uNq2cA3Rt1Yt/ryoR+vQNOQcIEgdCdfH0jr3bDpihAw1A==", + "dev": true, + "optional": true, + "requires": { + "double-ended-queue": "2.1.0-0", + "redis-commands": "1.4.0", + "redis-parser": "2.6.0" + } + }, + "redis-commands": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.4.0.tgz", + "integrity": "sha512-cu8EF+MtkwI4DLIT0x9P8qNTLFhQD4jLfxLR0cCNkeGzs87FN6879JOJwNQR/1zD7aSYNbU0hgsV9zGY71Itvw==", + "dev": true, + "optional": true + }, + "redis-parser": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-2.6.0.tgz", + "integrity": "sha1-Uu0J2srBCPGmMcB+m2mUHnoZUEs=", + "dev": true, + "optional": true + }, + "reflect-metadata": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.12.tgz", + "integrity": "sha512-n+IyV+nGz3+0q3/Yf1ra12KpCyi001bi4XFxSjbiWWjfqb52iTTtpGXmCCAOWWIAn9KEuFZKGqBERHmrtScZ3A==", + "dev": true + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "requires": { + "is-equal-shallow": "0.1.3" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "3.0.2", + "safe-regex": "1.1.0" + } + }, + "regexpu-core": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", + "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", + "dev": true, + "requires": { + "regenerate": "1.4.0", + "regjsgen": "0.2.0", + "regjsparser": "0.1.5" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dev": true, + "requires": { + "jsesc": "0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "renderkid": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.2.tgz", + "integrity": "sha512-FsygIxevi1jSiPY9h7vZmBFUbAOcbYm9UwyiLNdVsLRs/5We9Ob5NMPbGYUTWiLq5L+ezlVdE0A8bbME5CWTpg==", + "dev": true, + "requires": { + "css-select": "1.2.0", + "dom-converter": "0.2.0", + "htmlparser2": "3.3.0", + "strip-ansi": "3.0.1", + "utila": "0.4.0" + } + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "1.0.2" + } + }, + "request": { + "version": "2.81.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", + "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", + "dev": true, + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.8.0", + "caseless": "0.12.0", + "combined-stream": "1.0.7", + "extend": "3.0.2", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.21", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.1.2", + "stringstream": "0.0.6", + "tough-cookie": "2.3.4", + "tunnel-agent": "0.6.0", + "uuid": "3.3.2" + } + }, + "requestretry": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/requestretry/-/requestretry-1.13.0.tgz", + "integrity": "sha512-Lmh9qMvnQXADGAQxsXHP4rbgO6pffCfuR8XUBdP9aitJcLQJxhp7YZK4xAVYXnPJ5E52mwrfiKQtKonPL8xsmg==", + "dev": true, + "optional": true, + "requires": { + "extend": "3.0.2", + "lodash": "4.17.11", + "request": "2.81.0", + "when": "3.7.8" + }, + "dependencies": { + "when": { + "version": "3.7.8", + "resolved": "https://registry.npmjs.org/when/-/when-3.7.8.tgz", + "integrity": "sha1-xxMLan6gRpPoQs3J56Hyqjmjn4I=", + "dev": true, + "optional": true + } + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "resolve": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", + "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", + "dev": true, + "requires": { + "path-parse": "1.0.6" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true, + "requires": { + "align-text": "0.1.4" + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "3.0.4", + "inherits": "2.0.3" + } + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "1.2.0" + } + }, + "rxjs": { + "version": "5.5.12", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", + "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", + "requires": { + "symbol-observable": "1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "0.1.15" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sass-graph": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", + "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", + "dev": true, + "optional": true, + "requires": { + "glob": "7.1.3", + "lodash": "4.17.11", + "scss-tokenizer": "0.2.3", + "yargs": "7.1.0" + } + }, + "sass-loader": { + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-6.0.7.tgz", + "integrity": "sha512-JoiyD00Yo1o61OJsoP2s2kb19L1/Y2p3QFcCdWdF6oomBGKVYuZyqHWemRBfQ2uGYsk+CH3eCguXNfpjzlcpaA==", + "dev": true, + "requires": { + "clone-deep": "2.0.2", + "loader-utils": "1.1.0", + "lodash.tail": "4.1.1", + "neo-async": "2.6.0", + "pify": "3.0.0" + } + }, + "saucelabs": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.3.0.tgz", + "integrity": "sha1-0kDoAJ33+ocwbsRXimm6O1xCT+4=", + "dev": true, + "requires": { + "https-proxy-agent": "1.0.0" + }, + "dependencies": { + "agent-base": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-2.1.1.tgz", + "integrity": "sha1-1t4Q1a9hMtW9aSQn1G/FOFOQlMc=", + "dev": true, + "requires": { + "extend": "3.0.2", + "semver": "5.0.3" + } + }, + "https-proxy-agent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz", + "integrity": "sha1-NffabEjOTdv6JkiRrFk+5f+GceY=", + "dev": true, + "requires": { + "agent-base": "2.1.1", + "debug": "2.6.9", + "extend": "3.0.2" + } + }, + "semver": { + "version": "5.0.3", + "resolved": "http://registry.npmjs.org/semver/-/semver-5.0.3.tgz", + "integrity": "sha1-d0Zt5YnNXTyV8TiqeLxWmjy10no=", + "dev": true + } + } + }, + "sax": { + "version": "0.5.8", + "resolved": "http://registry.npmjs.org/sax/-/sax-0.5.8.tgz", + "integrity": "sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE=", + "dev": true + }, + "schema-utils": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", + "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", + "dev": true, + "requires": { + "ajv": "6.5.4", + "ajv-keywords": "3.2.0" + } + }, + "scss-tokenizer": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", + "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", + "dev": true, + "optional": true, + "requires": { + "js-base64": "2.4.9", + "source-map": "0.4.4" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "optional": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "selenium-webdriver": { + "version": "3.0.1", + "resolved": "http://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-3.0.1.tgz", + "integrity": "sha1-ot6l2kqX9mcuiefKcnbO+jZRR6c=", + "dev": true, + "requires": { + "adm-zip": "0.4.11", + "rimraf": "2.6.2", + "tmp": "0.0.30", + "xml2js": "0.4.19" + }, + "dependencies": { + "tmp": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz", + "integrity": "sha1-ckGdSovn1s51FI/YsyTlk6cRwu0=", + "dev": true, + "requires": { + "os-tmpdir": "1.0.2" + } + } + } + }, + "selfsigned": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.4.tgz", + "integrity": "sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw==", + "dev": true, + "requires": { + "node-forge": "0.7.5" + } + }, + "semver": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "dev": true + }, + "semver-dsl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/semver-dsl/-/semver-dsl-1.0.1.tgz", + "integrity": "sha1-02eN5VVeimH2Ke7QJTZq5fJzQKA=", + "dev": true, + "requires": { + "semver": "5.6.0" + } + }, + "semver-intersect": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/semver-intersect/-/semver-intersect-1.4.0.tgz", + "integrity": "sha512-d8fvGg5ycKAq0+I6nfWeCx6ffaWJCsBYU0H2Rq56+/zFePYfT8mXkB3tWBSjR5BerkHNZ5eTPIk1/LBYas35xQ==", + "dev": true, + "requires": { + "semver": "5.6.0" + } + }, + "send": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "1.1.2", + "destroy": "1.0.4", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", + "fresh": "0.5.2", + "http-errors": "1.6.3", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "2.3.0", + "range-parser": "1.2.0", + "statuses": "1.4.0" + }, + "dependencies": { + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.5.0.tgz", + "integrity": "sha512-Ga8c8NjAAp46Br4+0oZ2WxJCwIzwP60Gq1YPgU+39PiTVxyed/iKE/zyZI6+UlVYH5Q4PaQdHhcegIFPZTUfoQ==", + "dev": true + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "accepts": "1.3.5", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "1.0.3", + "http-errors": "1.6.3", + "mime-types": "2.1.21", + "parseurl": "1.3.2" + } + }, + "serve-static": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "dev": true, + "requires": { + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "parseurl": "1.3.2", + "send": "0.16.2" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "split-string": "3.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.2" + } + }, + "shallow-clone": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-1.0.0.tgz", + "integrity": "sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==", + "dev": true, + "requires": { + "is-extendable": "0.1.1", + "kind-of": "5.1.0", + "mixin-object": "2.0.1" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "silent-error": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/silent-error/-/silent-error-1.1.1.tgz", + "integrity": "sha512-n4iEKyNcg4v6/jpb3c0/iyH2G1nzUNl7Gpqtn/mHIJK9S/q/7MCfoO4rwVOoO59qPFIc0hVHvMbiOJ0NdtxKKw==", + "dev": true, + "requires": { + "debug": "2.6.9" + } + }, + "slack-node": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/slack-node/-/slack-node-0.2.0.tgz", + "integrity": "sha1-3kuN3aqLeT9h29KTgQT9q/N9+jA=", + "dev": true, + "optional": true, + "requires": { + "requestretry": "1.13.0" + } + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "smart-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.0.1.tgz", + "integrity": "sha512-RFqinRVJVcCAL9Uh1oVqE6FZkqsyLiVOYEZ20TqIOjuX7iFVJ+zsbs4RIghnw/pTs7mZvt8ZHhvm1ZUrR4fykg==", + "dev": true + }, + "smtp-connection": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.12.0.tgz", + "integrity": "sha1-1275EnyyPCJZ7bHoNJwujV4tdME=", + "dev": true, + "requires": { + "httpntlm": "1.6.1", + "nodemailer-shared": "1.1.0" + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "0.11.2", + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "map-cache": "0.2.2", + "source-map": "0.5.7", + "source-map-resolve": "0.5.2", + "use": "3.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "1.0.0", + "isobject": "3.0.1", + "snapdragon-util": "3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "dev": true, + "optional": true, + "requires": { + "hoek": "2.16.3" + } + }, + "socket.io": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.0.4.tgz", + "integrity": "sha1-waRZDO/4fs8TxyZS8Eb3FrKeYBQ=", + "dev": true, + "requires": { + "debug": "2.6.9", + "engine.io": "3.1.5", + "socket.io-adapter": "1.1.1", + "socket.io-client": "2.0.4", + "socket.io-parser": "3.1.3" + } + }, + "socket.io-adapter": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz", + "integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs=", + "dev": true + }, + "socket.io-client": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.0.4.tgz", + "integrity": "sha1-CRilUkBtxeVAs4Dc2Xr8SmQzL44=", + "dev": true, + "requires": { + "backo2": "1.0.2", + "base64-arraybuffer": "0.1.5", + "component-bind": "1.0.0", + "component-emitter": "1.2.1", + "debug": "2.6.9", + "engine.io-client": "3.1.6", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "socket.io-parser": "3.1.3", + "to-array": "0.1.4" + } + }, + "socket.io-parser": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.1.3.tgz", + "integrity": "sha512-g0a2HPqLguqAczs3dMECuA1RgoGFPyvDqcbaDEdCWY9g59kdUAz3YRmaJBNKXflrHNwB7Q12Gkf/0CZXfdHR7g==", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "debug": "3.1.0", + "has-binary2": "1.0.3", + "isarray": "2.0.1" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + } + } + }, + "sockjs": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", + "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", + "dev": true, + "requires": { + "faye-websocket": "0.10.0", + "uuid": "3.3.2" + } + }, + "sockjs-client": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.5.tgz", + "integrity": "sha1-G7fA9yIsQPQq3xT0RCy9Eml3GoM=", + "dev": true, + "requires": { + "debug": "2.6.9", + "eventsource": "0.1.6", + "faye-websocket": "0.11.1", + "inherits": "2.0.3", + "json3": "3.3.2", + "url-parse": "1.4.3" + }, + "dependencies": { + "faye-websocket": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", + "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", + "dev": true, + "requires": { + "websocket-driver": "0.7.0" + } + } + } + }, + "socks": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.2.1.tgz", + "integrity": "sha512-0GabKw7n9mI46vcNrVfs0o6XzWzjVa3h6GaSo2UPxtWAROXUWavfJWh1M4PR5tnE0dcnQXZIDFP4yrAysLze/w==", + "dev": true, + "requires": { + "ip": "1.1.5", + "smart-buffer": "4.0.1" + } + }, + "socks-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-4.0.1.tgz", + "integrity": "sha512-Kezx6/VBguXOsEe5oU3lXYyKMi4+gva72TwJ7pQY5JfqUx2nMk7NXA6z/mpNqIlfQjWYVfeuNvQjexiTaTn6Nw==", + "dev": true, + "requires": { + "agent-base": "4.2.1", + "socks": "2.2.1" + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "dev": true, + "requires": { + "atob": "2.1.2", + "decode-uri-component": "0.2.0", + "resolve-url": "0.2.1", + "source-map-url": "0.4.0", + "urix": "0.1.0" + } + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "0.5.7" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "spdx-correct": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.2.tgz", + "integrity": "sha512-q9hedtzyXHr5S0A1vEPoK/7l8NpfkFYTq6iCY+Pno2ZbdZR6WexZFtqeVGkGxW3TEJMN914Z55EnAGMmenlIQQ==", + "dev": true, + "requires": { + "spdx-expression-parse": "3.0.0", + "spdx-license-ids": "3.0.1" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "2.2.0", + "spdx-license-ids": "3.0.1" + } + }, + "spdx-license-ids": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.1.tgz", + "integrity": "sha512-TfOfPcYGBB5sDuPn3deByxPhmfegAhpDYKSOXZQN81Oyrrif8ZCodOLzK3AesELnCx03kikhyDwh0pfvvQvF8w==", + "dev": true + }, + "spdy": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz", + "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=", + "dev": true, + "requires": { + "debug": "2.6.9", + "handle-thing": "1.2.5", + "http-deceiver": "1.2.7", + "safe-buffer": "5.1.2", + "select-hose": "2.0.0", + "spdy-transport": "2.1.0" + } + }, + "spdy-transport": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.1.0.tgz", + "integrity": "sha512-bpUeGpZcmZ692rrTiqf9/2EUakI6/kXX1Rpe0ib/DyOzbiexVfXkw6GnvI9hVGvIwVaUhkaBojjCZwLNRGQg1g==", + "dev": true, + "requires": { + "debug": "2.6.9", + "detect-node": "2.0.4", + "hpack.js": "2.1.6", + "obuf": "1.1.2", + "readable-stream": "2.3.6", + "safe-buffer": "5.1.2", + "wbuf": "1.7.3" + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "3.0.2" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.15.1.tgz", + "integrity": "sha512-mSdgNUaidk+dRU5MhYtN9zebdzF2iG0cNPWy8HG+W8y+fT1JnSkh0fzzpjOa0L7P8i1Rscz38t0h4gPcKz43xA==", + "dev": true, + "requires": { + "asn1": "0.2.4", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.2", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.2", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "safer-buffer": "2.1.2", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "ssri": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", + "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "0.2.5", + "object-copy": "0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + } + } + }, + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "dev": true + }, + "stdout-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", + "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", + "dev": true, + "optional": true, + "requires": { + "readable-stream": "2.3.6" + } + }, + "stream-browserify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", + "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.6" + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "stream-shift": "1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "builtin-status-codes": "3.0.0", + "inherits": "2.0.3", + "readable-stream": "2.3.6", + "to-arraybuffer": "1.0.1", + "xtend": "4.0.1" + } + }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "dev": true + }, + "streamroller": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-0.7.0.tgz", + "integrity": "sha512-WREzfy0r0zUqp3lGO096wRuUp7ho1X6uo/7DJfTlEi0Iv/4gT7YHqXDjKC2ioVGBZtE8QzsQD9nx1nIuoZ57jQ==", + "dev": true, + "requires": { + "date-format": "1.2.0", + "debug": "3.2.6", + "mkdirp": "0.5.1", + "readable-stream": "2.3.6" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "stringstream": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz", + "integrity": "sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==", + "dev": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "4.0.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "style-loader": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.19.1.tgz", + "integrity": "sha512-IRE+ijgojrygQi3rsqT0U4dd+UcPCqcVvauZpCnQrGAlEe+FUIyrK93bUDScamesjP08JlQNsFJU+KmPedP5Og==", + "dev": true, + "requires": { + "loader-utils": "1.1.0", + "schema-utils": "0.3.0" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "schema-utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", + "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", + "dev": true, + "requires": { + "ajv": "5.5.2" + } + } + } + }, + "stylus": { + "version": "0.54.5", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.5.tgz", + "integrity": "sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk=", + "dev": true, + "requires": { + "css-parse": "1.7.0", + "debug": "2.6.9", + "glob": "7.0.6", + "mkdirp": "0.5.1", + "sax": "0.5.8", + "source-map": "0.1.43" + }, + "dependencies": { + "glob": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", + "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "stylus-loader": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-3.0.2.tgz", + "integrity": "sha512-+VomPdZ6a0razP+zinir61yZgpw2NfljeSsdUF5kJuEzlo3khXhY19Fn6l8QQz1GRJGtMCo8nG5C04ePyV7SUA==", + "dev": true, + "requires": { + "loader-utils": "1.1.0", + "lodash.clonedeep": "4.5.0", + "when": "3.6.4" + } + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + }, + "symbol-observable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", + "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=" + }, + "tapable": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.8.tgz", + "integrity": "sha1-mTcqXJmb8t8WCvwNdL7U9HlIzSI=", + "dev": true + }, + "tar": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "dev": true, + "optional": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "through": { + "version": "2.3.8", + "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "2.3.6", + "xtend": "4.0.1" + } + }, + "thunkify": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/thunkify/-/thunkify-2.1.2.tgz", + "integrity": "sha1-+qDp0jDFGsyVyhOjYawFyn4EVT0=", + "dev": true, + "optional": true + }, + "thunky": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.3.tgz", + "integrity": "sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow==", + "dev": true + }, + "time-stamp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-2.1.0.tgz", + "integrity": "sha512-lJbq6KsFhZJtN3fPUVje1tq/hHsJOKUUcUj/MGCiQR6qWBDcyi5kxL9J7/RnaEChCn0+L/DUN2WvemDrkk4i3Q==", + "dev": true + }, + "timers-browserify": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", + "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", + "dev": true, + "requires": { + "setimmediate": "1.0.5" + } + }, + "timespan": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/timespan/-/timespan-2.3.0.tgz", + "integrity": "sha1-SQLOBAvRPYRcj1myfp1ZutbzmSk=", + "dev": true, + "optional": true + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "1.0.2" + } + }, + "to-array": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", + "dev": true + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "regex-not": "1.0.2", + "safe-regex": "1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "3.0.0", + "repeat-string": "1.6.1" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + } + } + }, + "toposort": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz", + "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=", + "dev": true + }, + "tough-cookie": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", + "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "dev": true, + "optional": true, + "requires": { + "punycode": "1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true, + "optional": true + } + } + }, + "tree-kill": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.0.tgz", + "integrity": "sha512-DlX6dR0lOIRDFxI0mjL9IYg6OTncLm/Zt+JiBhE5OlFcAR8yc9S7FFXU9so0oda47frdM/JFsk7UjNt9vscKcg==", + "dev": true + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "true-case-path": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz", + "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==", + "dev": true, + "optional": true, + "requires": { + "glob": "7.1.3" + } + }, + "ts-node": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-4.1.0.tgz", + "integrity": "sha512-xcZH12oVg9PShKhy3UHyDmuDLV3y7iKwX25aMVPt1SIXSuAfWkFiGPEkg+th8R4YKW/QCxDoW7lJdb15lx6QWg==", + "dev": true, + "requires": { + "arrify": "1.0.1", + "chalk": "2.4.1", + "diff": "3.5.0", + "make-error": "1.3.5", + "minimist": "1.2.0", + "mkdirp": "0.5.1", + "source-map-support": "0.5.9", + "tsconfig": "7.0.0", + "v8flags": "3.1.1", + "yn": "2.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.5.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "minimist": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz", + "integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==", + "dev": true, + "requires": { + "buffer-from": "1.1.1", + "source-map": "0.6.1" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "3.0.0" + } + } + } + }, + "tsconfig": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-7.0.0.tgz", + "integrity": "sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==", + "dev": true, + "requires": { + "@types/strip-bom": "3.0.0", + "@types/strip-json-comments": "0.0.30", + "strip-bom": "3.0.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "tsickle": { + "version": "0.27.5", + "resolved": "http://registry.npmjs.org/tsickle/-/tsickle-0.27.5.tgz", + "integrity": "sha512-NP+CjM1EXza/M8mOXBLH3vkFEJiu1zfEAlC5WdJxHPn8l96QPz5eooP6uAgYtw1CcKfuSyIiheNUdKxtDWCNeg==", + "dev": true, + "requires": { + "minimist": "1.2.0", + "mkdirp": "0.5.1", + "source-map": "0.6.1", + "source-map-support": "0.5.9" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz", + "integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==", + "dev": true, + "requires": { + "buffer-from": "1.1.1", + "source-map": "0.6.1" + } + } + } + }, + "tslib": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" + }, + "tslint": { + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.9.1.tgz", + "integrity": "sha1-ElX4ej/1frCw4fDmEKi0dIBGya4=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "builtin-modules": "1.1.1", + "chalk": "2.4.1", + "commander": "2.17.1", + "diff": "3.5.0", + "glob": "7.1.3", + "js-yaml": "3.12.0", + "minimatch": "3.0.4", + "resolve": "1.8.1", + "semver": "5.6.0", + "tslib": "1.9.3", + "tsutils": "2.29.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.5.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "3.0.0" + } + } + } + }, + "tsscmp": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", + "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==", + "dev": true, + "optional": true + }, + "tsutils": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, + "requires": { + "tslib": "1.9.3" + } + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "1.1.2" + } + }, + "type-is": { + "version": "1.6.16", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", + "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "2.1.21" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "typescript": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.5.3.tgz", + "integrity": "sha512-ptLSQs2S4QuS6/OD1eAKG+S5G8QQtrU5RT32JULdZQtM1L3WTi34Wsu48Yndzi8xsObRAB9RPt/KhA9wlpEF6w==", + "dev": true + }, + "uglify-js": { + "version": "3.4.9", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz", + "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==", + "dev": true, + "requires": { + "commander": "2.17.1", + "source-map": "0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true, + "optional": true + }, + "uglifyjs-webpack-plugin": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.3.0.tgz", + "integrity": "sha512-ovHIch0AMlxjD/97j9AYovZxG5wnHOPkL7T1GKochBADp/Zwc44pEWNqpKl1Loupp1WhFg7SlYmHZRUfdAacgw==", + "dev": true, + "requires": { + "cacache": "10.0.4", + "find-cache-dir": "1.0.0", + "schema-utils": "0.4.7", + "serialize-javascript": "1.5.0", + "source-map": "0.6.1", + "uglify-es": "3.3.9", + "webpack-sources": "1.3.0", + "worker-farm": "1.6.0" + }, + "dependencies": { + "commander": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "uglify-es": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", + "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", + "dev": true, + "requires": { + "commander": "2.13.0", + "source-map": "0.6.1" + } + } + } + }, + "ultron": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", + "dev": true + }, + "underscore": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz", + "integrity": "sha1-a7rwh3UA02vjTsqlhODbn+8DUgk=", + "dev": true + }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "dev": true, + "requires": { + "arr-union": "3.1.0", + "get-value": "2.0.6", + "is-extendable": "0.1.1", + "set-value": "0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "to-object-path": "0.3.0" + } + } + } + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "2.0.1" + } + }, + "unique-slug": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.1.tgz", + "integrity": "sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg==", + "dev": true, + "requires": { + "imurmurhash": "0.1.4" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "0.3.1", + "isobject": "3.0.1" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "2.0.6", + "has-values": "0.1.4", + "isobject": "2.1.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "upath": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", + "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", + "dev": true + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", + "dev": true + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "2.1.1" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "url-loader": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-0.6.2.tgz", + "integrity": "sha512-h3qf9TNn53BpuXTTcpC+UehiRrl0Cv45Yr/xWayApjw6G8Bg2dGke7rIwDQ39piciWCWrC+WiqLjOh3SUp9n0Q==", + "dev": true, + "requires": { + "loader-utils": "1.1.0", + "mime": "1.6.0", + "schema-utils": "0.3.0" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "schema-utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", + "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", + "dev": true, + "requires": { + "ajv": "5.5.2" + } + } + } + }, + "url-parse": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.3.tgz", + "integrity": "sha512-rh+KuAW36YKo0vClhQzLLveoj8FwPJNu65xLb7Mrt+eZht0IPT0IXgSv8gcMegZ6NvjJUALf6Mf25POlMwD1Fw==", + "dev": true, + "requires": { + "querystringify": "2.1.0", + "requires-port": "1.0.0" + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "useragent": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.2.1.tgz", + "integrity": "sha1-z1k+9PLRdYdei7ZY6pLhik/QbY4=", + "dev": true, + "requires": { + "lru-cache": "2.2.4", + "tmp": "0.0.33" + }, + "dependencies": { + "lru-cache": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.2.4.tgz", + "integrity": "sha1-bGWGGb7PFAMdDQtZSxYELOTcBj0=", + "dev": true + } + } + }, + "util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true + }, + "uws": { + "version": "9.14.0", + "resolved": "https://registry.npmjs.org/uws/-/uws-9.14.0.tgz", + "integrity": "sha512-HNMztPP5A1sKuVFmdZ6BPVpBQd5bUjNC8EFMFiICK+oho/OQsAJy5hnIx4btMHiOk8j04f/DbIlqnEZ9d72dqg==", + "dev": true, + "optional": true + }, + "v8flags": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.1.tgz", + "integrity": "sha512-iw/1ViSEaff8NJ3HLyEjawk/8hjJib3E7pvG4pddVXfUg1983s3VGsiClDjhK64MQVDGqc1Q8r18S4VKQZS9EQ==", + "dev": true, + "requires": { + "homedir-polyfill": "1.0.1" + } + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "3.0.2", + "spdx-expression-parse": "3.0.0" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "vlq": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", + "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==", + "dev": true + }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "dev": true, + "requires": { + "indexof": "0.0.1" + } + }, + "void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "dev": true + }, + "watchpack": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", + "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", + "dev": true, + "requires": { + "chokidar": "2.0.4", + "graceful-fs": "4.1.11", + "neo-async": "2.6.0" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "3.1.10", + "normalize-path": "2.1.1" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.3", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "chokidar": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", + "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", + "dev": true, + "requires": { + "anymatch": "2.0.0", + "async-each": "1.0.1", + "braces": "2.3.2", + "fsevents": "1.2.4", + "glob-parent": "3.1.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "4.0.0", + "lodash.debounce": "4.0.8", + "normalize-path": "2.1.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.2.1", + "upath": "1.1.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "3.1.0", + "path-dirname": "1.0.2" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + } + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.13", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + } + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "1.0.1" + } + }, + "webdriver-js-extender": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/webdriver-js-extender/-/webdriver-js-extender-1.0.0.tgz", + "integrity": "sha1-gcUzqeM9W/tZe05j4s2yW1R3dRU=", + "dev": true, + "requires": { + "@types/selenium-webdriver": "2.53.43", + "selenium-webdriver": "2.53.3" + }, + "dependencies": { + "adm-zip": { + "version": "0.4.4", + "resolved": "http://registry.npmjs.org/adm-zip/-/adm-zip-0.4.4.tgz", + "integrity": "sha1-ph7VrmkFw66lizplfSUDMJEFJzY=", + "dev": true + }, + "sax": { + "version": "0.6.1", + "resolved": "http://registry.npmjs.org/sax/-/sax-0.6.1.tgz", + "integrity": "sha1-VjsZx8HeiS4Jv8Ty/DDjwn8JUrk=", + "dev": true + }, + "selenium-webdriver": { + "version": "2.53.3", + "resolved": "http://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-2.53.3.tgz", + "integrity": "sha1-0p/1qVff8aG0ncRXdW5OS/vc4IU=", + "dev": true, + "requires": { + "adm-zip": "0.4.4", + "rimraf": "2.6.2", + "tmp": "0.0.24", + "ws": "1.1.5", + "xml2js": "0.4.4" + } + }, + "tmp": { + "version": "0.0.24", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.24.tgz", + "integrity": "sha1-1qXhmNFKmDXMby18PZ4wJCjIzxI=", + "dev": true + }, + "ultron": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", + "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=", + "dev": true + }, + "ws": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz", + "integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==", + "dev": true, + "requires": { + "options": "0.0.6", + "ultron": "1.0.2" + } + }, + "xml2js": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.4.tgz", + "integrity": "sha1-MREBAAMAiuGSQOuhdJe1fHKcVV0=", + "dev": true, + "requires": { + "sax": "0.6.1", + "xmlbuilder": "9.0.7" + } + } + } + }, + "webpack": { + "version": "3.11.0", + "resolved": "http://registry.npmjs.org/webpack/-/webpack-3.11.0.tgz", + "integrity": "sha512-3kOFejWqj5ISpJk4Qj/V7w98h9Vl52wak3CLiw/cDOfbVTq7FeoZ0SdoHHY9PYlHr50ZS42OfvzE2vB4nncKQg==", + "dev": true, + "requires": { + "acorn": "5.7.3", + "acorn-dynamic-import": "2.0.2", + "ajv": "6.5.4", + "ajv-keywords": "3.2.0", + "async": "2.6.1", + "enhanced-resolve": "3.4.1", + "escope": "3.6.0", + "interpret": "1.1.0", + "json-loader": "0.5.7", + "json5": "0.5.1", + "loader-runner": "2.3.1", + "loader-utils": "1.1.0", + "memory-fs": "0.4.1", + "mkdirp": "0.5.1", + "node-libs-browser": "2.1.0", + "source-map": "0.5.7", + "supports-color": "4.5.0", + "tapable": "0.2.8", + "uglifyjs-webpack-plugin": "0.4.6", + "watchpack": "1.6.0", + "webpack-sources": "1.3.0", + "yargs": "8.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + } + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "2.3.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, + "requires": { + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "yargs": { + "version": "3.10.0", + "resolved": "http://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } + }, + "uglifyjs-webpack-plugin": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz", + "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=", + "dev": true, + "requires": { + "source-map": "0.5.7", + "uglify-js": "2.8.29", + "webpack-sources": "1.3.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yargs": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", + "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", + "dev": true, + "requires": { + "camelcase": "4.1.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.3", + "os-locale": "2.1.0", + "read-pkg-up": "2.0.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "7.0.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + } + } + }, + "yargs-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "dev": true, + "requires": { + "camelcase": "4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + } + } + } + } + }, + "webpack-dev-middleware": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz", + "integrity": "sha512-FCrqPy1yy/sN6U/SaEZcHKRXGlqU0DUaEBL45jkUYoB8foVb6wCnbIJ1HKIx+qUFTW+3JpVcCJCxZ8VATL4e+A==", + "dev": true, + "requires": { + "memory-fs": "0.4.1", + "mime": "1.6.0", + "path-is-absolute": "1.0.1", + "range-parser": "1.2.0", + "time-stamp": "2.1.0" + } + }, + "webpack-dev-server": { + "version": "2.11.3", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.11.3.tgz", + "integrity": "sha512-Qz22YEFhWx+M2vvJ+rQppRv39JA0h5NNbOOdODApdX6iZ52Diz7vTPXjF7kJlfn+Uc24Qr48I3SZ9yncQwRycg==", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "array-includes": "3.0.3", + "bonjour": "3.5.0", + "chokidar": "2.0.4", + "compression": "1.7.3", + "connect-history-api-fallback": "1.5.0", + "debug": "3.2.6", + "del": "3.0.0", + "express": "4.16.4", + "html-entities": "1.2.1", + "http-proxy-middleware": "0.17.4", + "import-local": "1.0.0", + "internal-ip": "1.2.0", + "ip": "1.1.5", + "killable": "1.0.1", + "loglevel": "1.6.1", + "opn": "5.1.0", + "portfinder": "1.0.18", + "selfsigned": "1.10.4", + "serve-index": "1.9.1", + "sockjs": "0.3.19", + "sockjs-client": "1.1.5", + "spdy": "3.4.7", + "strip-ansi": "3.0.1", + "supports-color": "5.5.0", + "webpack-dev-middleware": "1.12.2", + "yargs": "6.6.0" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "3.1.10", + "normalize-path": "2.1.1" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.3", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "chokidar": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", + "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", + "dev": true, + "requires": { + "anymatch": "2.0.0", + "async-each": "1.0.1", + "braces": "2.3.2", + "fsevents": "1.2.4", + "glob-parent": "3.1.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "4.0.0", + "lodash.debounce": "4.0.8", + "normalize-path": "2.1.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.2.1", + "upath": "1.1.0" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "2.1.1" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "3.1.0", + "path-dirname": "1.0.2" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + } + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.13", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "3.0.0" + } + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yargs": { + "version": "6.6.0", + "resolved": "http://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", + "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", + "dev": true, + "requires": { + "camelcase": "3.0.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.3", + "os-locale": "1.4.0", + "read-pkg-up": "1.0.1", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "1.0.2", + "which-module": "1.0.0", + "y18n": "3.2.1", + "yargs-parser": "4.2.1" + } + }, + "yargs-parser": { + "version": "4.2.1", + "resolved": "http://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", + "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", + "dev": true, + "requires": { + "camelcase": "3.0.0" + } + } + } + }, + "webpack-merge": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.1.4.tgz", + "integrity": "sha512-TmSe1HZKeOPey3oy1Ov2iS3guIZjWvMT2BBJDzzT5jScHTjVC3mpjJofgueEzaEd6ibhxRDD6MIblDr8tzh8iQ==", + "dev": true, + "requires": { + "lodash": "4.17.11" + } + }, + "webpack-sources": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz", + "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==", + "dev": true, + "requires": { + "source-list-map": "2.0.1", + "source-map": "0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "webpack-subresource-integrity": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-1.2.0.tgz", + "integrity": "sha512-bdMR4DRbINUFt+QhNfBFHURnCzT8mtHjXiclQWX/aXBpu2pM4nOb2qViyt84ZSFrVKEXkAbmz7mSoZQH/08xFg==", + "dev": true, + "requires": { + "webpack-sources": "1.3.0" + } + }, + "websocket-driver": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", + "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", + "dev": true, + "requires": { + "http-parser-js": "0.5.0", + "websocket-extensions": "0.1.3" + } + }, + "websocket-extensions": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", + "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", + "dev": true + }, + "when": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/when/-/when-3.6.4.tgz", + "integrity": "sha1-RztRfsFZ4rhQBUl6E5g/CVQS404=", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "2.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "requires": { + "string-width": "1.0.2" + } + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true + }, + "with-callback": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/with-callback/-/with-callback-1.0.2.tgz", + "integrity": "sha1-oJYpuakgAo1yFAT7Q1vc/1yRvCE=", + "dev": true, + "optional": true + }, + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true + }, + "worker-farm": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz", + "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==", + "dev": true, + "requires": { + "errno": "0.1.7" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "ws": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "dev": true, + "requires": { + "async-limiter": "1.0.0", + "safe-buffer": "5.1.2", + "ultron": "1.1.1" + } + }, + "xml2js": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", + "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", + "dev": true, + "requires": { + "sax": "1.2.4", + "xmlbuilder": "9.0.7" + }, + "dependencies": { + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + } + } + }, + "xmlbuilder": { + "version": "9.0.7", + "resolved": "http://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", + "dev": true + }, + "xmlhttprequest-ssl": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", + "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=", + "dev": true + }, + "xregexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", + "integrity": "sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM=", + "dev": true, + "optional": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "xxhashjs": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/xxhashjs/-/xxhashjs-0.2.2.tgz", + "integrity": "sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw==", + "dev": true, + "requires": { + "cuint": "0.2.2" + } + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yargs": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "dev": true, + "optional": true, + "requires": { + "camelcase": "3.0.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.3", + "os-locale": "1.4.0", + "read-pkg-up": "1.0.1", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "1.0.2", + "which-module": "1.0.0", + "y18n": "3.2.1", + "yargs-parser": "5.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true, + "optional": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true, + "optional": true + } + } + }, + "yargs-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", + "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "dev": true, + "optional": true, + "requires": { + "camelcase": "3.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true, + "optional": true + } + } + }, + "yeast": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", + "dev": true + }, + "yn": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", + "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=", + "dev": true + }, + "zone.js": { + "version": "0.8.26", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.26.tgz", + "integrity": "sha512-W9Nj+UmBJG251wkCacIkETgra4QgBo/vgoEkb4a2uoLzpQG7qF9nzwoLXWU5xj3Fg2mxGvEDh47mg24vXccYjA==" + }, + "zrender": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/zrender/-/zrender-4.0.4.tgz", + "integrity": "sha512-03Vd/BDl/cPXp8E61f5+Xbgr/a4vDyFA+uUtUc1s+5KgcPbyY2m+78R/9LQwkR6QwFYHG8qk25Q8ESGs/qpkZw==" + } + } +} diff --git a/usecaseui-portal/package.json b/usecaseui-portal/package.json new file mode 100644 index 00000000..845a9e9a --- /dev/null +++ b/usecaseui-portal/package.json @@ -0,0 +1,55 @@ +{ + "name": "usecase-ui", + "version": "0.0.0", + "license": "MIT", + "scripts": { + "ng": "ng", + "start": "ng serve", + "build": "ng build --prod --aot", + "test": "ng test", + "lint": "ng lint", + "e2e": "ng e2e" + }, + "private": true, + "dependencies": { + "@angular/animations": "^5.2.0", + "@angular/common": "^5.2.0", + "@angular/compiler": "^5.2.0", + "@angular/core": "^5.2.0", + "@angular/forms": "^5.2.0", + "@angular/http": "^5.2.0", + "@angular/platform-browser": "^5.2.0", + "@angular/platform-browser-dynamic": "^5.2.0", + "@angular/router": "^5.2.0", + "@ngx-translate/core": "^9.1.1", + "@ngx-translate/http-loader": "^2.0.1", + "core-js": "^2.4.1", + "d3": "^3.5.17", + "echarts": "^4.1.0", + "jquery": "^3.3.1", + "ng-zorro-antd": "^0.7.1", + "ngx-echarts": "^2.2.0", + "rxjs": "^5.5.6", + "zone.js": "^0.8.19" + }, + "devDependencies": { + "@angular/cli": "~1.7.4", + "@angular/compiler-cli": "^5.2.0", + "@angular/language-service": "^5.2.0", + "@types/jasmine": "~2.8.3", + "@types/jasminewd2": "~2.0.2", + "@types/node": "~6.0.60", + "codelyzer": "^4.0.1", + "jasmine-core": "~2.8.0", + "jasmine-spec-reporter": "~4.2.1", + "karma": "~2.0.0", + "karma-chrome-launcher": "~2.2.0", + "karma-coverage-istanbul-reporter": "^1.2.1", + "karma-jasmine": "~1.1.0", + "karma-jasmine-html-reporter": "^0.2.2", + "protractor": "~5.1.2", + "ts-node": "~4.1.0", + "tslint": "~5.9.1", + "typescript": "~2.5.3" + } +} diff --git a/usecaseui-portal/pom.xml b/usecaseui-portal/pom.xml new file mode 100644 index 00000000..71a4d24e --- /dev/null +++ b/usecaseui-portal/pom.xml @@ -0,0 +1,105 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Copyright (C) 2018 CMCC, Inc. and others. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + + <parent> + <groupId>org.onap.usecase-ui</groupId> + <artifactId>usecase-ui</artifactId> + <version>1.2.0-SNAPSHOT</version> + </parent> + + <modelVersion>4.0.0</modelVersion> + <artifactId>usecaseui-portal</artifactId> + <packaging>pom</packaging> + <name>usecase-ui</name> + + <build> + <plugins> + <plugin> + <artifactId>maven-clean-plugin</artifactId> + <version>3.1.0</version> + <executions> + <execution> + <id>clean dist folder</id> + <phase>clean</phase> + <goals> + <goal>clean</goal> + </goals> + <configuration> + <filesets> + <fileset> + <directory>${project.basedir}/dist</directory> + </fileset> + </filesets> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <groupId>com.github.eirslett</groupId> + <artifactId>frontend-maven-plugin</artifactId> + <version>1.6</version> + <configuration> + <installDirectory>${project.basedir}</installDirectory> + </configuration> + <executions> + <execution> + <id>install node and npm</id> + <goals> + <goal>install-node-and-npm</goal> + </goals> + <configuration> + <nodeVersion>v8.11.4</nodeVersion> + <npmVersion>5.6.0</npmVersion> + </configuration> + </execution> + + <execution> + <id>npm set progress off</id> + <goals> + <goal>npm</goal> + </goals> + <configuration> + <arguments>set progress=false</arguments> + </configuration> + </execution> + + <execution> + <id>npm install</id> + <goals> + <goal>npm</goal> + </goals> + <configuration> + <arguments>install</arguments> + </configuration> + </execution> + + <execution> + <id>npm run src build</id> + <goals> + <goal>npm</goal> + </goals> + <configuration> + <arguments>run build</arguments> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> +</project> diff --git a/usecaseui-portal/src/app/alarm/alarm.component.css b/usecaseui-portal/src/app/alarm/alarm.component.css new file mode 100644 index 00000000..757a55b6 --- /dev/null +++ b/usecaseui-portal/src/app/alarm/alarm.component.css @@ -0,0 +1,138 @@ +/* + Copyright (C) 2018 CMCC, Inc. and others. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ +.title { + font: 700 18px/18px "思源黑体"; + color: #4c5e70; + margin-bottom: 18px; +} +hr { + border: none; + height: 2px; + background-color: #dce1e7; + margin-bottom: 20px; +} +.select .query_criteria span { + display: inline-block; + font: 700 14px "Arial"; + color: #4c5e70; +} +.select .query_criteria nz-dropdown { + vertical-align: middle; +} +.select .query_criteria nz-dropdown :hover { + border-color: #147dc2; +} +.select .query_criteria nz-dropdown button { + width: 165px; + height: 30px; + background-color: #eceff4; + text-align: left; + border-color: #9fa9ab; +} +.select .query_criteria nz-dropdown button span { + font-weight: 400; + display: inline-block; + width: 120px; + overflow: hidden; + text-overflow: ellipsis; + padding-top: 2px; +} +.select .query_criteria nz-dropdown button i { + position: absolute; + top: 10px; + right: 10px; +} +.select .query_criteria .search { + margin-left: 20px; + height: 30px; + padding: 0 10px; +} +.select .query_criteria .search span { + color: #fff; + font-weight: 400; +} +::ng-deep .vertical-center-modal { + display: flex; + align-items: center; + justify-content: center; +} +::ng-deep .vertical-center-modal .ant-modal { + top: 0; +} +.content { + clear: both; + padding-top: 20px; +} +.content .title { + border-radius: 5px 5px 5px 5px; + background-color: #fff; + height: 106px; + border-bottom: 1px solid #f0f0f0; + margin-bottom: 20px; + clear: both; +} +.content .title ul { + display: flex; + display: -webkit-flex; + justify-content: space-around; + align-items: center; + padding: 0; + margin: 0; + height: 100%; + width: 70%; + float: left; +} +.content .title ul li { + list-style: none; + padding-left: 32px; + width: 100%; + border-left: 1px solid #eceff4; +} +.content .title ul li h5 { + font: 500 14px "Arial"; + color: #3d4d65; +} +.content .title ul li p { + font: 500 24px "Arial"; + color: #3fa8eb; + margin-bottom: 0; +} +.content .title ul li:nth-child(1) { + border: none; +} +.content .title .thumbnail { + width: 25%; + height: 90px; + float: left; + margin-top: 8px; +} +.content .tablelist { + background-color: #fff; + padding: 24px 10px 0px; + border-radius: 0 0 5px 5px; +} +.content .tablelist .action { + padding: 10px 0 0 20px; +} +.content .tablelist .action .details { + display: inline-block; + width: 16px; + height: 16px; + background: url(../../assets/images/icon.png) center -113px; +} +.content .tablelist .action .details:hover { + background: url(../../assets/images/icon.png) no-repeat center -128px; +} diff --git a/usecaseui-portal/src/app/alarm/alarm.component.html b/usecaseui-portal/src/app/alarm/alarm.component.html new file mode 100644 index 00000000..8f95de37 --- /dev/null +++ b/usecaseui-portal/src/app/alarm/alarm.component.html @@ -0,0 +1,113 @@ +<!-- + Copyright (C) 2018 CMCC, Inc. and others. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<h3 class="title"> <span (click)="detailHide()" style="cursor:pointer;">Alarm</span> <span *ngIf="detailshow">> + Details</span> </h3> +<hr> +<div class="select" [@showHideAnimate]="state"> + <div class="query_criteria"> + <span>Source Name: </span> + <nz-dropdown [nzTrigger]="'click'" [nzPlacement]="'bottomLeft'"> + <button nz-button nz-dropdown><span>{{sourceNameSelected}}</span> <i class="anticon anticon-down"></i></button> + <ul nz-menu> + <li nz-menu-item (click)="choseSourceName(item)" *ngFor="let item of sourceNameList"> + <a>{{item.name}}</a> + </li> + </ul> + </nz-dropdown> + + <span>Priority: </span> + <nz-dropdown [nzTrigger]="'click'" [nzPlacement]="'bottomLeft'"> + <button nz-button nz-dropdown><span>{{prioritySelected}}</span> <i class="anticon anticon-down"></i></button> + <ul nz-menu> + <li nz-menu-item (click)="chosePriority(item)" *ngFor="let item of priorityList"> + <a>{{item}}</a> + </li> + </ul> + </nz-dropdown> + + <span>Status: </span> + <nz-dropdown [nzTrigger]="'click'" [nzPlacement]="'bottomLeft'"> + <button nz-button nz-dropdown><span>{{statusSelected}}</span> <i class="anticon anticon-down"></i></button> + <ul nz-menu> + <li nz-menu-item (click)="choseStatus(item)" *ngFor="let item of statusList"> + <a>{{item}}</a> + </li> + </ul> + </nz-dropdown> + <br> <br> + <span>Report Time: </span> + <nz-range-picker [(ngModel)]="dateRange" (ngModelChange)="onChange($event)" nzShowTime></nz-range-picker> + + <button class="search" nz-button [nzType]="'primary'" (click)="getAlarmFormData()"><i class="anticon anticon-search"></i><span>Search</span></button> + </div> +</div> +<nz-modal nzWrapClassName="vertical-center-modal" [(nzVisible)]="isVisibleMiddle" nzTitle="Alarm Chart" (nzOnCancel)="handleCancelMiddle()" + (nzOnOk)="handleOkMiddle()"> + <app-line [initData]="alarmChartInitBig" [chartData]="alarmChartDataBig"></app-line> +</nz-modal> +<div class="content" [@showHideAnimate]="state"> + <div class="title"> + <ul> + <li> + <h5>All</h5> + <p>{{alarmList.all }}</p> + </li> + <li> + <h5>Closed</h5> + <p>{{alarmList.closed }}</p> + </li> + <li> + <h5>Action</h5> + <p>{{alarmList.Action }}</p> + </li> + </ul> + <div class="thumbnail" (click)="showModalMiddle()"> + <app-line [initData]="alarmChartInit" [chartData]="alarmChartData"></app-line> + </div> + </div> + <div class="tablelist"> + <nz-table #nzTable [nzData]="dataSet" [nzPageSize]="10" nzShowSizeChanger nzShowQuickJumper [nzPageSizeOptions]="[5,10,15,20]" + nzSize="middle"> + <thead (nzSortChange)="sort($event)" nzSingleSort> + <tr> + <th nzWidth="5%">NO</th> + <th nzWidth="20%">Source Name</th> + <th nzWidth="10%">Priority</th> + <th nzWidth="20%">SpecificProblem</th> + <th nzWidth="20%">Report Time</th> + <th nzWidth="15%">Status</th> + <th nzWidth="10%">Action</th> + </tr> + </thead> + <tbody> + <!-- <ng-template ngFor let-data [ngForOf]="nzTable.data" let-i="index"> --> + <tr *ngFor="let item of list; let i = index; "> + <td>{{i+1}}</td> + <td>{{item.name}}</td> + <td>{{item.age}}</td> + <td>{{item.address}}</td> + <td>{{item.address}}</td> + <td>{{item.address}}</td> + <td class="action"><a (click)="detailShow()"><i class="details"></i></a></td> + </tr> + <!-- </ng-template> --> + </tbody> + </nz-table> + </div> +</div> +<div [@showHideAnimate]="state2"> + <app-details></app-details> +</div>
\ No newline at end of file diff --git a/usecaseui-portal/src/app/alarm/alarm.component.less b/usecaseui-portal/src/app/alarm/alarm.component.less new file mode 100644 index 00000000..2d05c703 --- /dev/null +++ b/usecaseui-portal/src/app/alarm/alarm.component.less @@ -0,0 +1,132 @@ +.title { + font: 700 18px/18px "思源黑体"; + color: #4c5e70; + margin-bottom: 18px; +} +hr { + border: none; + height: 2px; + background-color: #dce1e7; + margin-bottom: 20px; +} +.select { + .query_criteria { + span { + display: inline-block; + font: 700 14px "Arial"; + color: #4c5e70; + } + nz-dropdown { + vertical-align: middle; + :hover{ + border-color: #147dc2; + } + button { + width: 165px; + height: 30px; + background-color: #eceff4; + text-align: left; + border-color: #9fa9ab; + span { + font-weight: 400; + display: inline-block; + width: 120px; + overflow: hidden; + text-overflow: ellipsis; + padding-top: 2px; + } + i { + position: absolute; + top: 10px; + right: 10px; + } + } + //下拉框中的样式在style.less中,下拉框是在body中额外临时生成的 + } + .search { + margin-left: 20px; + height: 30px; + padding: 0 10px; + span { + color: #fff; + font-weight: 400; + } + } + } + +} +// model style + +::ng-deep .vertical-center-modal { + display: flex; + align-items: center; + justify-content: center; +} +::ng-deep .vertical-center-modal .ant-modal { + top: 0; +} + +.content { + clear: both; + padding-top: 20px; + .title { + border-radius: 5px 5px 5px 5px; + background-color: #fff; + height: 106px; + border-bottom: 1px solid #f0f0f0; + margin-bottom: 20px; + clear: both; + ul { + display: flex; + display: -webkit-flex; + justify-content: space-around; + align-items: center; + padding: 0; + margin: 0; + height: 100%; + width: 70%; + float: left; + li { + list-style: none; + padding-left: 32px; + width: 100%; + border-left: 1px solid #eceff4; + h5 { + font: 500 14px "Arial"; + color: #3d4d65; + } + p { + font: 500 24px "Arial"; + color: #3fa8eb; + margin-bottom: 0; + } + } + li:nth-child(1){ + border: none; + } + } + .thumbnail { + width: 25%; + height: 90px; + float: left; + margin-top: 8px; + } + } + .tablelist { + background-color: #fff; + padding: 24px 10px 0px; + border-radius: 0 0 5px 5px; + .action{ + padding: 10px 0 0 20px; + .details{ + display: inline-block; + width: 16px; + height: 16px; + background: url(../../assets/images/icon.png) center -113px; + &:hover { + background: url(../../assets/images/icon.png) no-repeat center -128px; + } + } + } + } +} diff --git a/usecaseui-portal/src/app/alarm/alarm.component.spec.ts b/usecaseui-portal/src/app/alarm/alarm.component.spec.ts new file mode 100644 index 00000000..c7f5a738 --- /dev/null +++ b/usecaseui-portal/src/app/alarm/alarm.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AlarmComponent } from './alarm.component'; + +describe('AlarmComponent', () => { + let component: AlarmComponent; + let fixture: ComponentFixture<AlarmComponent>; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ AlarmComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AlarmComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/usecaseui-portal/src/app/alarm/alarm.component.ts b/usecaseui-portal/src/app/alarm/alarm.component.ts new file mode 100644 index 00000000..72dd5181 --- /dev/null +++ b/usecaseui-portal/src/app/alarm/alarm.component.ts @@ -0,0 +1,380 @@ +import { Component, OnInit, Input, Output, EventEmitter, HostBinding } from '@angular/core'; +import { MyhttpService } from '../myhttp.service'; +import * as addDays from 'date-fns/add_days'; +import { showHideAnimate, slideToRight } from '../animates'; + +@Component({ + selector: 'app-alarm', + templateUrl: './alarm.component.html', + styleUrls: ['./alarm.component.less'], + animations: [ + showHideAnimate, slideToRight + ] +}) +export class AlarmComponent implements OnInit { + @HostBinding('@routerAnimate') routerAnimateState; //路由动画 + public pageNumber:number=1; + public pageSize:number=5; + public name:string=''; + public Priority:string =''; + public Status:string =''; + public Report:string =''; + list: any; + + + constructor( + private myhttp:MyhttpService) { } + isVisibleMiddle = false; + + showModalMiddle(): void { + this.isVisibleMiddle = true; + } + handleOkMiddle(): void { + console.log('click ok'); + this.isVisibleMiddle = false; + } + handleCancelMiddle(): void { + this.isVisibleMiddle = false; + } + ngOnInit() { + this.getAlarmFormData(); + } + + // 筛选框(下拉框) + // sourceNameList = ['aaaa','bbbb','cccc','dddddDDDDDDDDDDDDDDD']; + sourceNameList=[ + {key:null,name:'请选择'}, + {key:1,name:'aaaa'}, + {key:2,name:'bbbb'}, + {key:3,name:'cccc'}, + {key:4,name:'dddddDDDDDDDDDDDDDDD'} + ] + sourceNameSelected = this.sourceNameList[0].name; + priorityList = ['aaaa','bbbb','cccc','ddddd']; + prioritySelected = this.priorityList[0]; + statusList = ['aaaa','bbbb','cccc','ddddd']; + statusSelected = this.statusList[0]; + choseSourceName(item){ + console.log(item,'item1'); + this.sourceNameSelected = item; + } + chosePriority(item){ + console.log(item); + this.prioritySelected = item; + } + choseStatus(item){ + console.log(item); + this.statusSelected = item; + } + + // 日期筛选 + dateRange = [ addDays(new Date(), -30), new Date() ]; + + onChange(result: Date): void { + console.log('onChange: ', result); + } + // search(){ + // this.myhttp.getAlarmFormData().subscribe + + // } + sort(e){ + + } + // 数量统计 + alarmList = { + all:22439, + closed:37923, + Action: 12342 + } + + //折线图縮略圖 + alarmChartData:Object; + alarmChartInit:Object = { + height:100, + width:290, + option:{ + tooltip : { + show : false, + trigger: 'axis', + }, + legend: { + show :false, + bottom: '0px', + data: ['All', 'Active', 'Closed'] + }, + series: [ + { + name: 'All', + type: 'line', + smooth: true,//将图变得平缓 + showSymbol: false, + areaStyle: { + opacity: 0.8 + }, + //timeframe_one + data: [40, 45, 38, 52, 64, 58, 69, 87, 76, 33, 64, 87, 45, 76, 88, 56, 33, 76, 45, 65], + itemStyle: { + color: "#526b75" + }, + lineStyle: { + width: 1, + opacity: 0.5 + } + }, + { + name: 'Active', + type: 'line', + smooth: true,//将图变得平缓 + showSymbol: false, + areaStyle: { + opacity: 0.8 + }, + //timeframe_two + data: [32, 43, 23, 45, 63, 24, 54, 22, 32, 42, 42, 22, 23, 43, 32, 34, 42, 33, 42, 12], + itemStyle: { + color: "#fb6e6e" + }, + lineStyle: { + width: 1, + opacity: 0.5 + } + }, + { + name: 'Closed', + type: 'line', + smooth: true,//将图变得平缓 + showSymbol: false, + areaStyle: { + opacity: 0.8 + }, + //timeframe_two + data: [12, 23, 13, 25, 33, 14, 34, 12, 12, 22, 12, 12, 13, 23, 12, 24, 22, 13, 22, 5], + itemStyle: { + color: "#3fa8eb" + }, + lineStyle: { + width: 1, + opacity: 0.5 + } + } + ] + } + }; + getAlarmChartData(){ + let paramsObj = { + alarmSourceName:this.sourceNameSelected + } + this.myhttp.getHomePerformanceChartData(paramsObj) + .subscribe((data)=>{ + this.alarmChartData = { + series:[ + {data:data.CPU}, + {data:data.CPU}, + {data:data.Memory} + ] + } + },(err)=>{ + console.log(err); + }) + } + //折线图放大圖 + alarmChartDataBig:Object; + alarmChartInitBig:Object = { + height:240, + width:500, + option:{ + tooltip : { + show : true, + trigger: 'axis', + }, + legend: { + show :true, + bottom: '0px', + data: ['All', 'Active', 'Closed'] + }, + series: [ + { + name: 'All', + type: 'line', + smooth: true,//将图变得平缓 + showSymbol: false, + areaStyle: { + opacity: 0.8 + }, + //timeframe_one + data: [40, 45, 38, 52, 64, 58, 69, 87, 76, 33, 64, 87, 45, 76, 88, 56, 33, 76, 45, 65], + itemStyle: { + color: "#526b75" + }, + lineStyle: { + width: 1, + opacity: 0.5 + } + }, + { + name: 'Active', + type: 'line', + smooth: true,//将图变得平缓 + showSymbol: false, + areaStyle: { + opacity: 0.8 + }, + //timeframe_two + data: [32, 43, 23, 45, 63, 24, 54, 22, 32, 42, 42, 22, 23, 43, 32, 34, 42, 33, 42, 12], + itemStyle: { + color: "#fb6e6e" + }, + lineStyle: { + width: 1, + opacity: 0.5 + } + }, + { + name: 'Closed', + type: 'line', + smooth: true,//将图变得平缓 + showSymbol: false, + areaStyle: { + opacity: 0.8 + }, + //timeframe_two + data: [12, 23, 13, 25, 33, 14, 34, 12, 12, 22, 12, 12, 13, 23, 12, 24, 22, 13, 22, 5], + itemStyle: { + color: "#3fa8eb" + }, + lineStyle: { + width: 1, + opacity: 0.5 + } + } + ] + } + }; + //表格数据 + dataSet = [ + { + name : 'John Brown', + age : 32, + expand : false, + address : 'New York No. 1', + description: 'My name is John Brown, I am 32 years old, living in New York No. 1 Lake Park.' + }, + { + name : 'Aim Green', + age : 42, + expand : false, + address : 'London No. 1', + description: 'My name is Jim Green, I am 42 years old, living in London No. 1 Lake Park.' + }, + { + name : 'Bim Green', + age : 42, + expand : false, + address : 'London No. 1', + description: 'My name is Jim Green, I am 42 years old, living in London No. 1 Lake Park.' + }, + { + name : 'Cim Green', + age : 42, + expand : false, + address : 'London No. 1', + description: 'My name is Jim Green, I am 42 years old, living in London No. 1 Lake Park.' + }, + { + name : 'Jim Green', + age : 42, + expand : false, + address : 'London No. 1', + description: 'My name is Jim Green, I am 42 years old, living in London No. 1 Lake Park.' + }, + { + name : 'Xim Green', + age : 42, + expand : false, + address : 'London No. 1', + description: 'My name is Jim Green, I am 42 years old, living in London No. 1 Lake Park.' + }, + { + name : 'Jim Green', + age : 42, + expand : false, + address : 'London No. 1', + description: 'My name is Jim Green, I am 42 years old, living in London No. 1 Lake Park.' + }, + { + name : 'Jim Green', + age : 42, + expand : false, + address : 'London No. 1', + description: 'My name is Jim Green, I am 42 years old, living in London No. 1 Lake Park.' + }, + { + name : 'Jim Green', + age : 42, + expand : false, + address : 'London No. 1', + description: 'My name is Jim Green, I am 42 years old, living in London No. 1 Lake Park.' + }, + { + name : 'Jim Green', + age : 42, + expand : false, + address : 'London No. 1', + description: 'My name is Jim Green, I am 42 years old, living in London No. 1 Lake Park.' + }, + { + name : 'cim Green', + age : 42, + expand : false, + address : 'London No. 1', + description: 'My name is Jim Green, I am 42 years old, living in London No. 1 Lake Park.' + }, + { + name : 'bim Green', + age : 42, + expand : false, + address : 'London No. 1', + description: 'My name is Jim Green, I am 42 years old, living in London No. 1 Lake Park.' + }, + { + name : 'aoe Black', + age : 32, + expand : false, + address : 'Sidney No. 1', + description: 'My name is Joe Black, I am 32 years old, living in Sidney No. 1 Lake Park.' + } + ]; + + //详情页标题显示 + detailshow = false; + // 显示隐藏动画 + state = "show"; + state2 = "hide"; + detailShow() { + this.state = 'hide'; + this.state2 = 'show'; + this.detailshow = true; + } + detailHide() { + this.state = 'show'; + this.state2 = 'hide'; + this.detailshow = false; + } + getSelects:Object = { + countAll:0, + countClose:0, + countActive:0, + eventNameList:[], + sourceIdList:[], + reportingEntityNameList:[], + sourceNameList:[], +}; + getAlarmFormData(){ + this.myhttp.getAlarmFormData(this.pageNumber,this.pageSize,this.name,this.Priority,this.Status,this.Report).subscribe((data)=>{ + if(data.retCode ==200){ + this.list = data.list; + } + console.log(data,'data'); + }) + } +} diff --git a/usecaseui-portal/src/app/animates.ts b/usecaseui-portal/src/app/animates.ts new file mode 100644 index 00000000..cde7e568 --- /dev/null +++ b/usecaseui-portal/src/app/animates.ts @@ -0,0 +1,42 @@ +import { trigger, state, style, animate, transition } from '@angular/animations'; + +// 路由动画 +export const slideToRight = trigger('routerAnimate', [ + // 定义void表示空状态下 + state('void', style({ position:'fixed', zIndex:'-1' })), //不明白为啥要加定位出场动画才生效 + // * 表示任何状态 + state('*', style({ })), + // 进场动画 + transition(':enter', [ + style({transform: 'translateX(-100%)'}), + animate('.5s ease-in-out') + ]), + // 出场动画 + transition(':leave', [ + animate('.5s ease-in-out', style({transform: 'translateX(100%)'}) ) + ]) +]); +// 详情页显示隐藏动画 +export const showHideAnimate = trigger('showHideAnimate', [ + state('show', style({ + transform: 'scale(1)', + display:'block', + })), + state('hide', style({ + transform: 'scale(0)', + display:'none' + })), + transition('show => hide', animate('300ms ease-in')), + transition('hide => show', animate('300ms ease-out')) +]); +// 详情页显示隐藏动画 +export const slideUpDown = trigger('slideUpDown', [ + state('down', style({ + height: "*" + })), + state('up', style({ + height: "0" + })), + transition('down => up', animate('300ms ease-in')), + transition('up => down', animate('300ms ease-out')) +]);
\ No newline at end of file diff --git a/usecaseui-portal/src/app/app-routing.module.ts b/usecaseui-portal/src/app/app-routing.module.ts new file mode 100644 index 00000000..7fe7361c --- /dev/null +++ b/usecaseui-portal/src/app/app-routing.module.ts @@ -0,0 +1,41 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; + + +import { HomeComponent } from './home/home.component'; +import { ServicesComponent } from './services/services.component'; +import { ServicesListComponent } from './services/services-list/services-list.component'; +import { OnboardVnfVmComponent } from './services/onboard-vnf-vm/onboard-vnf-vm.component'; +import { AlarmComponent } from './alarm/alarm.component'; +import { PerformanceComponent } from './performance/performance.component'; +import { PerformanceVnfComponent } from './performance/performance-vnf/performance-vnf.component'; +import { PerformanceVmComponent } from './performance/performance-vm/performance-vm.component'; + +import { CcvpnNetworkComponent } from './ccvpn-network/ccvpn-network.component'; + +// import { DetailsComponent } from './details/details.component'; + +const ServicesChildRoutes: Routes = [ + { path: 'services-list', component: ServicesListComponent}, + { path: 'onboard-vnf-vm', component: OnboardVnfVmComponent}, + { path: '**', redirectTo: 'services-list' } +] + +const routes: Routes = [ + { path: 'home', component: HomeComponent}, + // { path: 'services', component: ServicesComponent, children:ServicesChildRoutes}, //暂时不是子路由结构 + { path: 'services/services-list', component: ServicesListComponent}, + { path: 'services/onboard-vnf-vm', component: OnboardVnfVmComponent}, + { path: 'alarm', component: AlarmComponent}, + { path: 'performance', component: PerformanceComponent}, + { path: 'performance/performance-vnf', component: PerformanceVnfComponent}, + { path: 'performance/performance-vm', component: PerformanceVmComponent}, + { path: 'network', component: CcvpnNetworkComponent }, + { path: '**', redirectTo: 'home', pathMatch: 'full'} +]; + +@NgModule({ + imports: [ RouterModule.forRoot(routes) ], + exports: [ RouterModule ] +}) +export class AppRoutingModule {} diff --git a/usecaseui-portal/src/app/app.component.css b/usecaseui-portal/src/app/app.component.css new file mode 100644 index 00000000..f25d3262 --- /dev/null +++ b/usecaseui-portal/src/app/app.component.css @@ -0,0 +1,39 @@ +/* + Copyright (C) 2018 CMCC, Inc. and others. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ +nz-layout nz-sider ul li { + margin: 0; + font-size: 16px; +} +nz-layout nz-sider ul li span { + font-size: 16px; +} +nz-layout nz-sider ul li i { + width: 16px; + height: 16px; +} +nz-layout nz-sider ul li .icon-services { + background: url(../assets/images/icon.png) no-repeat 0px -16px; +} +nz-layout nz-sider ul li ul li { + font-size: 12px; +} +nz-layout nz-sider ul hr { + margin: 0 auto; + background-color: #39434f; + height: 1px; + border: none; + width: 80%; +} diff --git a/usecaseui-portal/src/app/app.component.html b/usecaseui-portal/src/app/app.component.html new file mode 100644 index 00000000..8e189e73 --- /dev/null +++ b/usecaseui-portal/src/app/app.component.html @@ -0,0 +1,80 @@ +<!-- + Copyright (C) 2018 CMCC, Inc. and others. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<nz-layout> + <nz-sider nzWidth='260' style="overflow: auto; height: 100vh; position: fixed; left: 0"> + <ul nz-menu [nzTheme]="'dark'" [nzMode]="'inline'" style="width: 260px;"> + <li nz-menu-item nzSelected> + <a routerLink="home"> + <span title> + <i class="anticon anticon-home"></i> + <span> {{"Home" | translate}} </span> + </span> + </a> + </li> + <hr> + <li nz-submenu> + <span title><i class="anticon anticon-home"></i> {{"Services" | translate}} </span> + <ul> + <li nz-menu-item><a routerLink='services/services-list'> {{"Services List" | translate}}</a></li> + <li nz-menu-item><a routerLink='services/onboard-vnf-vm'> Onboard VNF/VM </a></li> + </ul> + </li> + <!-- <hr> + <li nz-menu-item> + <a routerLink="alarm"> + <span title> + <i class="anticon anticon-mail"></i> + <span> {{"Alarm" | translate}} </span> + </span> + </a> + </li> + <hr> --> + <li nz-submenu> + <span title><i class="anticon anticon-setting"></i> {{"Monitor" | translate}} </span> + <ul> + <li nz-menu-item><a routerLink='alarm'> {{"Alarm" | translate}} </a></li> + <li nz-menu-item><a routerLink='performance/performance-vnf'> {{"Performance" | translate}}</a></li> + </ul> + </li> + <hr> + <li nz-menu-item> + <a routerLink="network"> + <span title> + <i class="anticon anticon-share-alt"></i> + <span> {{"Network" | translate}} </span> + </span> + </a> + </li> + </ul> + <button (click)="changeLanguage('zh')" >{{"zh" | translate}}</button> + <button (click)="changeLanguage('en')" >{{"en" | translate}}</button> + <select name="Language" id="" [(ngModel)]="selectLanguage" (change)="changeLanguage1()"> + <option *ngFor="let item of Language" value="{{item}}">{{item | translate}}</option> + </select> + + <nz-dropdown [nzTrigger]="'click'" [nzPlacement]="'bottomRight'"> + <button nz-button nz-dropdown><span>{{selectLanguage | translate}}</span> <i class="anticon anticon-down"></i></button> + <ul nz-menu> + <li nz-menu-item (click)="changeLanguage2(item)" *ngFor="let item of Language"> + <a>{{item | translate}}</a> + </li> + </ul> + </nz-dropdown> + </nz-sider> + <nz-layout style="margin-left: 260px; padding: 20px 32px; height:100vh; position:relative;"> + <router-outlet></router-outlet> + </nz-layout> +</nz-layout> diff --git a/usecaseui-portal/src/app/app.component.less b/usecaseui-portal/src/app/app.component.less new file mode 100644 index 00000000..a805166e --- /dev/null +++ b/usecaseui-portal/src/app/app.component.less @@ -0,0 +1,32 @@ +nz-layout { + nz-sider { + ul { + li { + margin: 0; + font-size: 16px; + span { + font-size: 16px; + } + i { + width: 16px; + height: 16px; + } + .icon-services { + background: url(../assets/images/icon.png) no-repeat 0px -16px; + } + ul { + li{ + font-size: 12px; + } + } + } + hr { + margin: 0 auto; + background-color: #39434f; + height: 1px; + border: none; + width: 80%; + } + } + } +}
\ No newline at end of file diff --git a/usecaseui-portal/src/app/app.component.spec.ts b/usecaseui-portal/src/app/app.component.spec.ts new file mode 100644 index 00000000..bcbdf36b --- /dev/null +++ b/usecaseui-portal/src/app/app.component.spec.ts @@ -0,0 +1,27 @@ +import { TestBed, async } from '@angular/core/testing'; +import { AppComponent } from './app.component'; +describe('AppComponent', () => { + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ + AppComponent + ], + }).compileComponents(); + })); + it('should create the app', async(() => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.debugElement.componentInstance; + expect(app).toBeTruthy(); + })); + it(`should have as title 'app'`, async(() => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.debugElement.componentInstance; + expect(app.title).toEqual('app'); + })); + it('should render title in a h1 tag', async(() => { + const fixture = TestBed.createComponent(AppComponent); + fixture.detectChanges(); + const compiled = fixture.debugElement.nativeElement; + expect(compiled.querySelector('h1').textContent).toContain('Welcome to app!'); + })); +}); diff --git a/usecaseui-portal/src/app/app.component.ts b/usecaseui-portal/src/app/app.component.ts new file mode 100644 index 00000000..be13c1a1 --- /dev/null +++ b/usecaseui-portal/src/app/app.component.ts @@ -0,0 +1,34 @@ +import { Component } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; + + +@Component({ + selector: 'app-root', + templateUrl: './app.component.html', + styleUrls: ['./app.component.less'] +}) +export class AppComponent { + constructor(private translate:TranslateService){ + translate.addLangs(['en', 'zh']); + translate.setDefaultLang('en'); + // translate.use('en'); + } + changeLanguage(Language): void { + switch(Language){ + case 'en': + this.translate.use('en'); + break; + case 'zh': + this.translate.use('zh'); + } + } + // 多语言 + Language:String[] = ["zh","en"]; + selectLanguage = "en"; + changeLanguage1(){ + this.translate.use(this.selectLanguage); + } + changeLanguage2(item){ + this.translate.use(item); + } +} diff --git a/usecaseui-portal/src/app/app.module.ts b/usecaseui-portal/src/app/app.module.ts new file mode 100644 index 00000000..7c24f110 --- /dev/null +++ b/usecaseui-portal/src/app/app.module.ts @@ -0,0 +1,98 @@ +import { BrowserModule } from '@angular/platform-browser'; +import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; +import { NgModule } from '@angular/core'; +import { FormsModule } from '@angular/forms'; +import { HttpClientModule } from '@angular/common/http'; +import { HttpClient } from '@angular/common/http'; +import { NgZorroAntdModule } from 'ng-zorro-antd'; +import { NZ_I18N, en_US } from 'ng-zorro-antd'; +import { NgxEchartsModule } from 'ngx-echarts'; + +import { TranslateModule, TranslateLoader } from '@ngx-translate/core'; +import {TranslateHttpLoader} from '@ngx-translate/http-loader'; +export function HttpLoaderFactory(httpClient: HttpClient) { + return new TranslateHttpLoader(httpClient, '../assets/i18n/', '.json'); +} + +import { AppRoutingModule } from './app-routing.module'; + +//注册语言包 +import { registerLocaleData } from '@angular/common'; +import en from '@angular/common/locales/en'; +registerLocaleData(en); + +//自定义组件 +import { AppComponent } from './app.component'; +import { HomeComponent } from './home/home.component'; +import { ServicesComponent } from './services/services.component'; +import { ServicesListComponent } from './services/services-list/services-list.component'; +import { OnboardVnfVmComponent } from './services/onboard-vnf-vm/onboard-vnf-vm.component'; +import { AlarmComponent } from './alarm/alarm.component'; +import { PerformanceComponent } from './performance/performance.component'; +import { PerformanceVnfComponent } from './performance/performance-vnf/performance-vnf.component'; +import { PerformanceVmComponent } from './performance/performance-vm/performance-vm.component'; +import { CcvpnNetworkComponent } from './ccvpn-network/ccvpn-network.component'; +import { CcvpnDetailComponent } from './ccvpn-detail/ccvpn-detail.component'; +import { CcvpnCreationComponent } from './ccvpn-creation/ccvpn-creation.component'; + +import { DetailsComponent } from './components/details/details.component'; +import { GraphiclistComponent } from './components/graphiclist/graphiclist.component'; + +import { BarComponent } from './components/charts/bar/bar.component'; +import { LineComponent } from './components/charts/line/line.component'; +import { PieComponent } from './components/charts/pie/pie.component'; + +import {PathLocationStrategy, LocationStrategy, HashLocationStrategy} from '@angular/common'; +// 自定义服务 +import { MyhttpService } from './myhttp.service'; +import { networkHttpservice } from './networkHttpservice.service'; + +@NgModule({ + providers : [ + { provide: LocationStrategy, useClass: HashLocationStrategy }, + { provide: NZ_I18N, useValue: en_US }, + MyhttpService, + networkHttpservice + ], + declarations: [ + AppComponent, + HomeComponent, + + ServicesComponent, + ServicesListComponent, + OnboardVnfVmComponent, + + AlarmComponent, + + PerformanceComponent, + PerformanceVnfComponent, + PerformanceVmComponent, + DetailsComponent, + PieComponent, + LineComponent, + BarComponent, + GraphiclistComponent, + + CcvpnNetworkComponent, + CcvpnDetailComponent, + CcvpnCreationComponent, + ], + imports: [ + BrowserModule, + FormsModule, + HttpClientModule, + TranslateModule.forRoot({ + loader: { + provide: TranslateLoader, + useFactory: HttpLoaderFactory, + deps: [HttpClient] + } + }), + BrowserAnimationsModule, + NgZorroAntdModule.forRoot(), + NgxEchartsModule, + AppRoutingModule + ], + bootstrap: [ AppComponent ] +}) +export class AppModule { }
\ No newline at end of file diff --git a/usecaseui-portal/src/app/ccvpn-creation/ccvpn-creation.component.css b/usecaseui-portal/src/app/ccvpn-creation/ccvpn-creation.component.css new file mode 100644 index 00000000..35fdbef5 --- /dev/null +++ b/usecaseui-portal/src/app/ccvpn-creation/ccvpn-creation.component.css @@ -0,0 +1,195 @@ +/* + Copyright (C) 2018 CMCC, Inc. and others. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ +.title { + font: 700 18px/18px "思源黑体"; + color: #4c5e70; + margin-bottom: 18px; +} +hr { + border: none; + height: 2px; + background-color: #dce1e7; + margin-bottom: 10px; +} +.model { + background-color: #fff; + height: 90%; + overflow-y: auto; +} +.model .back { + position: absolute; + top: 10px; + right: 20px; +} +.model .creation { + position: relative; + width: 60%; + height: 100%; + overflow-y: auto; + border-radius: 5px; + padding: 15px; +} +.model .creation h3.title { + height: 20px; + font: 700 20px/20px "Arial"; + color: #666; +} +.model .creation h3 { + height: 20px; + font: 700 16px/20px "Arial"; + margin: 5px 0px; + color: #000; +} +.model .creation .submit { + position: absolute; + top: 10px; + right: 20px; +} +/* SOTN VPN */ +.model .creation .sotnvpn ul li { + display: inline-block; + height: 35px; + width: 49.5%; +} +.model .creation .sotnvpn ul li span { + display: inline-block; + width: 110px; + font: 700 14px "Arial"; + color: #3fa8eb; + vertical-align: middle; +} +.model .creation .sotnvpn ul li input { + width: 165px; +} +/* Site List */ +/* addsite model */ +.model .sitemodel { + position: absolute; + z-index: 10; + left: 10px; + top: 60px; + background-color: #fff; + box-shadow: 0px 0px 20px #000; + width: 60%; + max-height: 90%; + border-radius: 5px; + overflow-y: auto; +} +.model .sitemodel h3 { + height: 30px; + font: 700 16px/30px "Arial"; + border-bottom: 1px solid #aaa; + padding-left: 10px; +} +.model .sitemodel h4 { + height: 30px; + font: 700 16px/30px "Arial"; + padding-left: 10px; + background-color: #ddd; +} +.model .sitemodel .inputs { + padding: 10px 20px 0; +} +.model .sitemodel .inputs ul li { + display: inline-block; + height: 35px; + width: 49.5%; +} +.model .sitemodel .inputs ul li span { + display: inline-block; + width: 110px; + font: 700 14px "Arial"; + color: #3fa8eb; + vertical-align: middle; +} +.model .sitemodel .inputs input { + width: 165px; +} +.model .sitemodel .action { + float: left; + padding: 10px; +} + +.model nz-table tbody td i.anticon:hover { + color: #3fa8eb; + cursor: pointer; +} + +/* site table */ +.model .site nz-table tbody td i.anticon:hover { + color: #3fa8eb; + cursor: pointer; +} +/* WAN Port */ + +/* Site Group List */ +.model .sitegroup .sitegroupmodal { + position: absolute; + z-index: 10; + left: 200px; + top: 300px; + background-color: #fff; + box-shadow: 0px 0px 20px #000; + width: 330px; + border-radius: 5px; +} +.model .sitegroup .sitegroupmodal h3 { + height: 30px; + font: 700 16px/30px "Arial"; + border-bottom: 1px solid #aaa; + padding-left: 10px; +} +.model .sitegroup .sitegroupmodal .inputs { + padding: 10px 20px 0; +} +.model .sitegroup .sitegroupmodal span { + display: inline-block; + width: 100px; + margin-bottom: 10px; +} +.model .sitegroup .sitegroupmodal .inputs input { + width: 165px; +} +.model .sitegroup .sitegroupmodal .action { + float: right; + padding: 10px; +} + + +/* 图 */ +.model .chart { + width: 40%; + padding: 10px; + height: 100%; + border-left: 10px solid #f3f3f3; +} +.model .chart #createChart { + width: 100%; + height: 80%; + margin-top: 20px; + position: relative; +} +.model .chart #createChart .siteNameP { + position: fixed; + border: 5px; + padding: 3px 5px; + color: #fff; + background: #999; + box-shadow: 0px 0px 20px #000; + max-width: 100px; + overflow: hidden; + text-overflow: ellipsis; +} diff --git a/usecaseui-portal/src/app/ccvpn-creation/ccvpn-creation.component.html b/usecaseui-portal/src/app/ccvpn-creation/ccvpn-creation.component.html new file mode 100644 index 00000000..15486238 --- /dev/null +++ b/usecaseui-portal/src/app/ccvpn-creation/ccvpn-creation.component.html @@ -0,0 +1,313 @@ +<!-- + Copyright (C) 2018 CMCC, Inc. and others. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<h3 class="title"> Services List </h3> +<hr> +<div class="model"> + <!-- 创建数据 --> + <button class="back" nz-button (click)="goback()"><span><i class="anticon anticon-rollback"></i></span></button> + <div class="creation fl"> + <h3 class="title">{{createParams.commonParams.templateType}} Instance Creation</h3> + <div class="sotnvpn clearfix"> + <h3>SOTN VPN Info</h3> + <ul> + <li><span>Name:</span> <input nz-input [(ngModel)]="sotnInfo.name"></li> + <li><span>Description:</span> <input nz-input [(ngModel)]="sotnInfo.description"></li> + <li><span>Start Time:</span> + <nz-date-picker [(ngModel)]="sotnInfo.startTime" + (ngModelChange)="startTimeChange($event)" + nzPlaceHolder="start time" + nzShowTime> + </nz-date-picker> + </li> + <li><span>End Time:</span> + <nz-date-picker [(ngModel)]="sotnInfo.endTime" + (ngModelChange)="endTimeChange($event)" + nzPlaceHolder="end time" + nzShowTime> + </nz-date-picker> + </li> + <li><span>COS:</span> + <nz-select style="width: 165px;" [(ngModel)]="sotnInfo.COS" nzAllowClear nzPlaceHolder="Choose"> + <nz-option nzValue="premium" nzLabel="premium"></nz-option> + <nz-option nzValue="standard" nzLabel="standard"></nz-option> + </nz-select> + </li> + <li><span>Reroute Enabled:</span> <nz-switch [(ngModel)]="sotnInfo.reroute"></nz-switch> </li> + <li><span>Service Level Specification:</span> <input nz-input [(ngModel)]="sotnInfo.SLS"></li> + <li><span>Dual Link:</span> + <nz-select style="width: 165px;" [(ngModel)]="sotnInfo.dualLink" nzAllowClear nzPlaceHolder="Choose"> + <nz-option nzValue="no_protection" nzLabel="no_protection"></nz-option> + <nz-option nzValue="static_1+1" nzLabel="static_1+1"></nz-option> + <nz-option nzValue="permanent_1+1" nzLabel="permanent_1+1"></nz-option> + </nz-select> + </li> + <li><span>CIR:</span> <input nz-input [(ngModel)]="sotnInfo.CIR"></li> + <li><span>EIR:</span> <input nz-input [(ngModel)]="sotnInfo.EIR"></li> + <li><span>CBS:</span> <input nz-input [(ngModel)]="sotnInfo.CBS"></li> + <li><span>EBS:</span> <input nz-input [(ngModel)]="sotnInfo.EBS"></li> + <li><span>Color Aware:</span> <nz-switch [(ngModel)]="sotnInfo.colorAware"></nz-switch> </li> + <li><span>Coupling Flag:</span> <nz-switch [(ngModel)]="sotnInfo.couplingFlag"></nz-switch> </li> + </ul> + </div> + + <div class="site"> + <h3>Site List</h3> + <button nz-button (click)="addSite()">Add Site</button> + <nz-table #siteTable [nzData]="siteTableData" + [nzShowPagination]="false" + nzSize="small"> + <thead> + <tr> + <th nzWidth="10%"> NO. </th> + <th nzWidth="15%"> Name </th> + <th nzWidth="15%"> Description </th> + <th nzWidth="15%"> Post Code </th> + <th nzWidth="15%"> Address </th> + <th nzWidth="15%"> VLAN </th> + <th nzWidth="15%"> Action </th> + </tr> + </thead> + <tbody> + <!-- <ng-template ngFor let-data [ngForOf]="siteTable.data" let-i="index"> --> + <tr *ngFor="let item of siteTable.data; let i = index; "> + <td>{{i+1}}</td> + <td>{{item.baseData.name}}</td> + <td>{{item.baseData.description}}</td> + <td>{{item.baseData.postcode}}</td> + <td>{{item.baseData.address}}</td> + <td>{{item.baseData.vlan}}</td> + <td> + <span class="action" (click)="editSite(i+1)"><i class="anticon anticon-edit"></i></span> + <span class="action" (click)="deleteSite(i+1)"><i class="anticon anticon-delete"></i></span> + </td> + </tr> + <!-- </ng-template> --> + </tbody> + </nz-table> + </div> + + <div class="sitegroup" *ngIf="createParams.commonParams.templateType == 'CCVPN'"> + <h3>Site_Group List</h3> + <button nz-button (click)="addSiteGroup()">Add Group</button> + <div class="sitegroupmodal" *ngIf="siteGroupModelShow"> + <h3>Site_Group</h3> + <div class="inputs"> + <span>Group Name:</span> <input nz-input [(ngModel)]="siteGroupModelData.name"> <br> + <span>Topology:</span> + <nz-select style="width: 165px;" [(ngModel)]="siteGroupModelData.topology" nzAllowClear nzPlaceHolder="Choose"> + <nz-option nzValue="full-mesh" nzLabel="full-mesh"></nz-option> + <nz-option nzValue="hub-spoke" nzLabel="hub-spoke"></nz-option> + </nz-select> + <nz-table #groupModalTable [nzData]="siteGroupModalTableData" [nzLoading]="loading" [nzShowPagination]="false" nzSize="small"> + <thead> + <tr> + <th nzShowCheckbox [(nzChecked)]="allChecked" [nzIndeterminate]="indeterminate" (nzCheckedChange)="groupModal_checkAll($event)"></th> + <th> Site Name</th> + <th> Role</th> + </tr> + </thead> + <tbody> + <tr *ngFor="let item of groupModalTable.data; let i = index;"> + <td nzShowCheckbox [nzDisabled]="item.disabled" [(nzChecked)]="item.checked" (nzCheckedChange)="refreshStatus($event)"></td> + <td>{{ item.siteName }}</td> + <td> + <nz-select style="width: 80px;" [(ngModel)]="item.role" + nzAllowClear nzPlaceHolder="Choose" + [nzDisabled]="siteGroupModelData.topology != 'hub-spoke'"> + <nz-option nzValue="hub" nzLabel="hub"></nz-option> + <nz-option nzValue="spoke" nzLabel="spoke"></nz-option> + </nz-select> + </td> + </tr> + </tbody> + </nz-table> + </div> + <div class="action"> + <button nz-button nzType="primary" (click)="addsitegroup_OK()">OK</button> + <button nz-button nzType="primary" (click)="addsitegroup_cancel()">Cancel</button> + </div> + </div> + <nz-table #siteGroupTable [nzData]="siteGroupTableData" + [nzLoading]="loading" + [nzShowPagination]="false" + nzSize="small"> + <thead> + <tr> + <th nzWidth="10%"> NO. </th> + <th nzWidth="20%"> Group Name </th> + <th nzWidth="20%"> Topology </th> + <th nzWidth="20%"> Sites </th> + <th nzWidth="15%"> Role </th> + <th nzWidth="15%"> Action </th> + </tr> + </thead> + <tbody> + <!-- <ng-template ngFor let-data [ngForOf]="siteGroupTable.data" let-i="index"> --> + <tr *ngFor="let item of siteGroupTable.data; let i = index; "> + <td>{{i+1}}</td> + <td>{{item.name}}</td> + <td>{{item.topology}}</td> + <td>{{item.sites}}</td> + <td>{{item.role}}</td> + <td> + <span class="action" (click)="editGroupSite(i+1)"><i class="anticon anticon-edit"></i></span> + <span class="action" (click)="deleteGroupSite(i+1)"><i class="anticon anticon-delete"></i></span> + </td> + </tr> + <!-- </ng-template> --> + </tbody> + </nz-table> + </div> + + <button class="submit" nz-button [nzType]="'primary'" (click)="submit()"><span>Create</span></button> + </div> + <!-- site模态框 --> + <div class="sitemodel" *ngIf="siteModelShow"> + <h3>Site_Enterprise Service</h3> + <div class="inputs"> + <ul> + <li><span>Name:</span> <input nz-input [(ngModel)]="siteBaseData.name"></li> + <li><span>Description:</span> <input nz-input [(ngModel)]="siteBaseData.description"></li> + <li *ngIf="createParams.commonParams.templateType == 'CCVPN'"><span>Type:</span> + <nz-select style="width: 165px;" [(ngModel)]="siteBaseData.type" nzAllowClear nzPlaceHolder="Choose"> + <nz-option nzValue="single-gateway" nzLabel="single-gateway"></nz-option> + <nz-option nzValue="dual-gateway" nzLabel="dual-gateway"></nz-option> + </nz-select> + </li> + <li *ngIf="createParams.commonParams.templateType == 'CCVPN'"><span>Role:</span> + <nz-select style="width: 165px;" [(ngModel)]="siteBaseData.role" nzAllowClear nzPlaceHolder="Choose"> + <nz-option nzValue="dsvpn-hub" nzLabel="dsvpn-hub"></nz-option> + <nz-option nzValue="sd-wan-edge" nzLabel="sd-wan-edge"></nz-option> + </nz-select> + </li> + <li><span>PostCode:</span> <input nz-input [(ngModel)]="siteBaseData.postcode"></li> + <li><span>VLAN:</span> <input nz-input [(ngModel)]="siteBaseData.vlan"></li> + <li><span>Address:</span> + <nz-select style="width: 165px;" [(ngModel)]="siteBaseData.address" nzAllowClear nzPlaceHolder="Choose"> + <nz-option *ngFor="let item of siteModeAddress" nzValue="{{item}}" nzLabel="{{item}}"></nz-option> + </nz-select> + </li> + </ul> + </div> + <div *ngIf="createParams.commonParams.templateType == 'CCVPN'"> + <h4>CPE</h4> + <div class="inputs"> + <ul> + <li><span>Name:</span> <input nz-input [(ngModel)]="siteCpeData.device_name"></li> + <li><span>Version:</span> <input nz-input [(ngModel)]="siteCpeData.device_version"></li> + <li><span>ESN:</span> <input nz-input [(ngModel)]="siteCpeData.device_esn"></li> + <li><span>Class:</span> + <nz-select style="width: 165px;" [(ngModel)]="siteCpeData.device_class" nzAllowClear nzPlaceHolder="Choose"> + <nz-option nzValue="VNF" nzLabel="VNF"></nz-option> + <nz-option nzValue="PNF" nzLabel="PNF"></nz-option> + </nz-select> + </li> + <li><span>System IP:</span> <input nz-input [(ngModel)]="siteCpeData.device_systemIp"></li> + <li><span>Vendor:</span> <input nz-input [(ngModel)]="siteCpeData.device_vendor"></li> + <li><span>Type:</span> <input nz-input [(ngModel)]="siteCpeData.device_type"></li> + </ul> + </div> + <h4>WAN Port</h4> + <div> + <nz-table #siteModalTable [nzData]="siteWanData" + [nzLoading]="loading" + [nzShowPagination]="false" + nzSize="small"> + <thead> + <tr> + <th nzWidth="10%"> NO. </th> + <th nzWidth="15%"> Name </th> + <th nzWidth="15%"> Description </th> + <th nzWidth="15%"> PortType </th> + <th nzWidth="18%"> PortNumber </th> + <th nzWidth="17%"> IPAddress </th> + <th nzWidth="10%"> Action </th> + </tr> + </thead> + <tbody> + <!-- <ng-template ngFor let-data [ngForOf]="siteModalTable.data" let-i="index"> --> + <tr *ngFor="let item of siteModalTable.data; let i = index; "> + <td>{{i+1}}</td> + <td>{{item.sitewanport_name}}</td> + <td>{{item.sitewanport_description}}</td> + <td>{{item.sitewanport_portType}}</td> + <td>{{item.sitewanport_portNumber}}</td> + <td>{{item.sitewanport_ipAddress}}</td> + <td> + <span class="action" (click)="editWanPort(i+1)"><i class="anticon anticon-edit"></i></span> + </td> + </tr> + <!-- </ng-template> --> + </tbody> + </nz-table> + </div> + <nz-modal [(nzVisible)]="wanPortModal" nzWidth="400" nzTitle="WAN Port Edit" (nzOnCancel)="wanPortModal_Cancel()" (nzOnOk)="wanPortModal_Ok()"> + <ul class="wanPortModalList"> + <li><span>Name:</span> <input nz-input [(ngModel)]="siteWanParams.sitewanport_name"></li> + <!-- <li><span>Device Name:</span> <input nz-input [(ngModel)]="siteWanParams.sitewanport_deviceName"></li> --> + <li><span>Description:</span> <input nz-input [(ngModel)]="siteWanParams.sitewanport_description"></li> + <li><span>Port Type:</span> + <nz-select style="width: 165px;" [(ngModel)]="siteWanParams.sitewanport_portType" nzAllowClear nzPlaceHolder="Choose"> + <nz-option nzValue="GE" nzLabel="GE"></nz-option> + <nz-option nzValue="FE" nzLabel="FE"></nz-option> + <nz-option nzValue="XGE" nzLabel="XGE"></nz-option> + <nz-option nzValue="LTE" nzLabel="LTE"></nz-option> + <nz-option nzValue="xDSL(ATM)" nzLabel="xDSL(ATM)"></nz-option> + <nz-option nzValue="xSDL(PTM)" nzLabel="xSDL(PTM)"></nz-option> + </nz-select> + </li> + <li><span>Port Number:</span> <input nz-input [(ngModel)]="siteWanParams.sitewanport_portNumber"></li> + <li><span>Ip Address:</span> <input nz-input [(ngModel)]="siteWanParams.sitewanport_ipAddress"></li> + <li><span>Provider IP Address:</span> <input nz-input [(ngModel)]="siteWanParams.sitewanport_providerIpAddress"></li> + <li><span>Transport Nerwork:</span> <input nz-input [(ngModel)]="siteWanParams.sitewanport_transportNetworkName"></li> + <li><span>Input Bandwidth:</span> <input nz-input [(ngModel)]="siteWanParams.sitewanport_inputBandwidth"></li> + <li><span>Output Bandwidth:</span> <input nz-input [(ngModel)]="siteWanParams.sitewanport_outputBandwidth"></li> + </ul> + </nz-modal> + </div> + + <div class="action"> + <button nz-button nzType="primary" (click)="addsite_OK()">OK</button> + <button nz-button nzType="primary" (click)="addsite_cancel()">Cancel</button> + </div> + </div> + <!-- 图 --> + <div class="chart fr"> + Create Service + {{createParams.commonParams.templateType}} + <div id="createChart"> + <svg width="100%" height="100%"> + <line *ngFor="let item of lines" x1=50% y1="45%" [attr.x2]="item.x2" y2="72%" style="stroke:#3fa8eb;stroke-width:2"/> + <image xlink:href="./assets/images/cloud-site.png" + x="25%" y="30%" width="50%"/> + <!-- <text dx="42%" dy="45%" style="font:700 18px 'Arial';fill:#666">{{createParams.commonParams.templateType}}</text> --> + <text dx="42%" dy="45%" style="font:700 18px 'Arial';fill:#666"></text> + <g *ngFor="let item of siteImage" + (mouseover)="showSite($event,item)" + (mousemove)="moveSite($event,item)" + (mouseout)="hideSite($event)"> + <image + xlink:href="./assets/images/site.png" + [attr.x]="item.x" y="65%" width="80px"/> + <text [attr.dx]="item.x + 25" dy="72%" style="font:700 16px 'Arial';fill:#666">{{ item.name }}</text> + </g> + + </svg> + <!-- <p class="siteNameP" [ngStyle]="siteNameStyle">{{ siteName }}</p> --> + </div> + </div> + +</div> diff --git a/usecaseui-portal/src/app/ccvpn-creation/ccvpn-creation.component.spec.ts b/usecaseui-portal/src/app/ccvpn-creation/ccvpn-creation.component.spec.ts new file mode 100644 index 00000000..922bd9ea --- /dev/null +++ b/usecaseui-portal/src/app/ccvpn-creation/ccvpn-creation.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { CcvpnCreationComponent } from './ccvpn-creation.component'; + +describe('CcvpnCreationComponent', () => { + let component: CcvpnCreationComponent; + let fixture: ComponentFixture<CcvpnCreationComponent>; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ CcvpnCreationComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(CcvpnCreationComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/usecaseui-portal/src/app/ccvpn-creation/ccvpn-creation.component.ts b/usecaseui-portal/src/app/ccvpn-creation/ccvpn-creation.component.ts new file mode 100644 index 00000000..ffc354c7 --- /dev/null +++ b/usecaseui-portal/src/app/ccvpn-creation/ccvpn-creation.component.ts @@ -0,0 +1,548 @@ +import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; +import { MyhttpService } from '../myhttp.service'; + +@Component({ + selector: 'app-ccvpn-creation', + templateUrl: './ccvpn-creation.component.html', + styleUrls: ['./ccvpn-creation.component.css'] +}) +export class CcvpnCreationComponent implements OnInit { + + constructor(private myhttp:MyhttpService) { } + + ngOnInit() { + this.getSiteAddressList(); + this.getTemParameters(); + } + + @Input() createParams; + @Input() namesTranslate; //输入项参数名字转换 + @Output() closeCreate = new EventEmitter(); + + templateParameters = {}; + getTemParameters(){ //获取模板参数 + let chosedtemplates = Object.values(this.createParams.templates); + // console.log(this.createParams); + console.log(chosedtemplates); //模板id数组 + let types = ["sotnvpn","site","sdwanvpn"]; + chosedtemplates.forEach((item,index)=>{ + this.myhttp.getTemplateParameters(types[index],item) + .subscribe((data)=>{ + if(index === 0){ + this.templateParameters["sotnvpn"] = data; + this.sotnNames = data.inputs.map((item)=>{return item.name}); //云的真实名字 + }else if(index === 1){ + this.templateParameters["site"] = data; + let wanportnames = {}; + this.siteNames = data.inputs.map((item)=>{return item.name}); //site中所有真实名字,没有分组,放在一起了 + this.siteNames.forEach((item)=>{ + if(item.includes("_device_")){ + this.siteCpeNames.push(item); + }else if(item.includes("_sitewanport_")){ + let firstName = item.split("_")[0]; + wanportnames[firstName]?wanportnames[firstName].push(item):wanportnames[firstName]=[item]; + }else { + this.siteBaseNames.push(item); + } + }) + this.siteWanNames = Object.values(wanportnames); + this.siteWanNames.forEach((item)=>{ + this.siteWanData.push(this.siteWanParams); //根据wanport组添加表格中 + }) + // console.log(this.sotnNames) + // console.log(this.siteNames) + // console.log(this.siteBaseNames) + // console.log(this.siteCpeNames) + // console.log(this.siteWanNames) + // console.log(this.siteWanData) + }else if(index === 2){ + this.templateParameters["sdwan"] = data; + this.siteGroupNames = data.inputs.map((item)=>{return item.name}); //sdwanvpn真实名字 + // console.log(this.siteGroupNames); + } + + },(err)=>{ + + }) + }) + + } + // SOTN VPN Info 输入参数 + sotnInfo = { + name:null,description:null, + startTime:null,endTime:null, + COS:"premium",reroute:false, + SLS:null,dualLink:false, + CIR:null,EIR:null, + CBS:null,EBS:null, + colorAware:false,couplingFlag:false + } + sotnNames = [] //真实名字 + + startTimeChange(event){ + console.log(event) + } + endTimeChange(event){ + console.log(event) + } + + + // Site List + siteTableData = [ + + ] + siteModeAddress = [];//site地址,筛选框数据,本地配置文件 + siteNames = [];//site中所有真实名字,未分组,模拟真实请求情况; + + siteBaseData = { //模态框数据,输入参数,绑定数据 + name:null, + description:null, + type:null, + role:null, + postcode:null, + address:null, + vlan:null, + sotnVpnName:null, //SOTN VPN Info中name + controlPoint:null, //site group里面site的Role设置为spoke时,传递site group里面Role设置为hub的site name;否则传递空白 + groupRole:null, //site group的role + groupName:null, //site group的name + emails:null,// 不显示传空 + latitude:null,// + longitude:null,// + clientSignal:null// + }; + siteBaseNames = [] //真实名字 + // cpe 编辑 + siteCpeData = { + device_name:null, + device_version:null, + device_esn:null, + device_class:null, + device_systemIp:null, + device_vendor:null, + device_type:null + }; + siteCpeNames = [] //真实名字 + // Wan Port 编辑 + siteWanData = []; //wan port 表格绑定数据 + siteWanParams = { //每一行数据详细参数,模态框 + sitewanport_name:null, + sitewanport_deviceName:null, + sitewanport_description:null, + sitewanport_portType:null, + sitewanport_portNumber:null, + sitewanport_ipAddress:null, + sitewanport_providerIpAddress:null, + sitewanport_transportNetworkName:null, + sitewanport_inputBandwidth:null, + sitewanport_outputBandwidth:null + }; + siteWanNames = [] //真实名字 + wanPortModal = false; //模态框显示隐藏 + wanPortEditNum = 0;//编辑哪行 + editWanPort(num){ + this.wanPortModal = true; + this.wanPortEditNum = num; + this.siteWanParams = Object.assign({},this.siteWanData[num-1]); + } + wanPortModal_Ok(){ + let inputsData = Object.assign({},this.siteWanParams); //新建对象,断开原引用,因为后面要清空模态框 + inputsData.sitewanport_deviceName = this.siteCpeData.device_name; + this.siteWanData[this.wanPortEditNum-1] = inputsData; + this.siteWanData = [...this.siteWanData]; //表格刷新 + Object.keys(this.siteWanParams).forEach((item)=>{ //清空模态框 + this.siteWanParams[item] = null; + }) + this.wanPortModal = false; + console.log(this.siteWanData) + } + wanPortModal_Cancel(){ + this.wanPortModal = false; + } + + + // 获取site地址,手动文件 + getSiteAddressList(){ + this.myhttp.getSiteAddress() + .subscribe((data)=>{ + console.log(data); + this.siteModeAddress = data.map((item)=>{ return item.location}); + },(err)=>{ + console.log(err); + }) + } + siteModelShow = false; + addSite(){ + this.siteModelShow = true; + this.isEdit = 0; + } + // addsite模态框按钮 + isEdit = 0; //编辑序号,No值,0表示增加 + addsite_OK(){ + this.siteBaseData.sotnVpnName = this.sotnInfo.name; + // let inputsData = Object.assign({},this.siteBaseData,this.siteCpeData,this.siteWanData); //新建对象,断开原引用,因为后面要清空模态框 + let inputs = {}; + inputs["baseData"] = Object.assign({},this.siteBaseData); + inputs["cpeData"] = Object.assign({},this.siteCpeData); + inputs["wanportData"] = this.siteWanData.map((item)=>{ + return Object.assign({},item); + }) + console.log(inputs); + if(this.isEdit){ + // 编辑状态不增加 + this.siteTableData[this.isEdit-1] = inputs; + this.siteTableData = [...this.siteTableData]; //表格刷新 + this.siteGroupTableData.forEach((item)=>{ //site修改名字后,更新组中sites值 + if(item.sites.split(";").filter((d)=>{return d!=""}).includes(this.lastSiteName)){ + item.sites = item.sites.replace(this.lastSiteName,this.siteBaseData.name); + } + }) + }else{ + // this.siteTableData.push(inputs);//使用 push 或者 splice 修改 nzData 失效 当加上[nzFrontPagination]="false" 时,生效 + this.siteTableData = [...this.siteTableData,inputs]; + } + + Object.keys(this.siteBaseData).forEach((item)=>{ //清空模态框 + this.siteBaseData[item] = null; + }) + Object.keys(this.siteCpeData).forEach((item)=>{ //清空模态框 + this.siteCpeData[item] = null; + }) + this.siteWanData.forEach((item)=>{ + Object.keys(item).forEach((item2)=>{ + item[item2] = null; + }) + }) + // console.log(this.siteTableData); + this.lastSiteName = null; + this.drawImage(this.siteTableData); + this.siteModelShow = false; + } + addsite_cancel(){ + Object.keys(this.siteBaseData).forEach((item)=>{ //清空模态框 + this.siteBaseData[item] = null; + }) + Object.keys(this.siteCpeData).forEach((item)=>{ //清空模态框 + this.siteCpeData[item] = null; + }) + this.siteWanData.forEach((item)=>{ + Object.keys(item).forEach((item2)=>{ + item[item2] = null; + }) + }) + this.lastSiteName = null; + this.siteModelShow = false; + } + lastSiteName = null; //当site修改之后,若修改了名字,则需要更新group中sites的名字 + editSite(num){ //编辑修改选中site信息 + this.siteModelShow = true; + this.isEdit=num; + this.siteBaseData = Object.assign({},this.siteTableData[num-1].baseData); + this.siteCpeData = Object.assign({},this.siteTableData[num-1].cpeData); + this.siteWanData = this.siteTableData[num-1].wanportData.map((item)=>{return Object.assign({},item)}); + this.lastSiteName = this.siteBaseData.name; + } + deleteSite(num){ + let deleteSiteName = this.siteTableData[num-1].baseData.name; //删除的site中name + let groupSites = []; + this.siteGroupTableData.forEach((item)=>{ groupSites.push(...item.sites.split(";").filter((d)=>{return d!=""})) }); + if(groupSites.includes(deleteSiteName)){ + alert("this site has in grouplist;can't delete!") + return false; + } + this.siteTableData = this.siteTableData.filter((d,i) => i !== num-1); + // this.siteTableData.splice(num-1,1); //模板中加上[nzFrontPagination]="false" 时,生效 + this.drawImage(this.siteTableData); + + // let groupIndex = this.siteGroupTableData.findIndex((item)=>{return item.sites.split(";").includes(deleteSiteName)}); + // console.log(groupIndex) + // this.deleteGroupSite(groupIndex + 1); //删除时首行编号为1 + } + + // site节点图形描绘 + lines=[]; + siteImage=[]; + drawImage(sitelist){ + let cx = 200; + let cy = 200; + let r = 180; + let startAngle = -210 * (Math.PI/180); + let step = sitelist.length > 1 ? 120/(sitelist.length-1) * (Math.PI/180) : 1; + + this.lines = sitelist.map((item,index)=>{ + let x = cx + Math.cos(startAngle - step*index)*r; + let y = cy + Math.sin(startAngle - step*index)*r; + return {img:"line",site:item.baseData.name,x1:cx,y1:cy,x2:x,y2:y} + }) + this.siteImage = this.lines.map((item)=>{ + return {img:"site",name:item.site,x:item.x2 - 40,y:item.y2 - 40} + }) + } + + siteName=null; + siteNameStyle = { + 'display':'none', + 'left':'0', + 'top':'0' + } + showSite($event,item){ + this.siteName = item.name; + this.siteNameStyle.display = 'block'; + } + moveSite($event,item){ + this.siteNameStyle.left = $event.clientX + "px"; + this.siteNameStyle.top = $event.clientY - 35 + "px"; + } + hideSite($event){ + this.siteNameStyle.display = 'none'; + } + // siteGroup List + siteGroupTableData = [ + + ] + siteGroupModelData = { + name:null, + topology:null, + sites:null, + role:null + } + siteGroupModelShow = false; + siteGroupModalTableData = [];// ==> siteTableData? + siteGroupNames=[]; //sdwanvpn真实名字 + + // 勾选框 + allChecked = false; + indeterminate = false; + groupModal_checkAll(value){ + this.siteGroupModalTableData.forEach(data => { + if (!data.disabled) { + data.checked = value; + } + }); + this.refreshStatus(); + } + refreshStatus(){ + const allChecked = this.siteGroupModalTableData.filter(item => !item.disabled).every(item => item.checked === true); + const allUnChecked = this.siteGroupModalTableData.filter(item => !item.disabled).every(item => !item.checked); + this.allChecked = allChecked; + this.indeterminate = (!allChecked) && (!allUnChecked); + } + + addSiteGroup(){ + this.isGroupEdit = 0; + this.siteGroupModelShow = true; + let checkedSite = this.siteGroupTableData.map((item)=>{return item.sites}).join(";").split(";").filter((d)=>{return d!=""});//循环组中是否已经选用了某个site,若存在 则新组不可选 + // console.log(checkedSite); + this.siteTableData.forEach((item,index)=>{ + if(checkedSite.includes(item.baseData.name)){ + this.siteGroupModalTableData.push({siteName:item.baseData.name,role:null,checked:false,disabled:true}) + }else { + this.siteGroupModalTableData.push({siteName:item.baseData.name,role:null,checked:false,disabled:false}) + } + }) + } + // addsiteGroup模态框按钮 + addsitegroup_OK(){ //将模态框中的值赋给表中对应项--->将选中的site中的groupRole、groupName、controlPoint更新---> + //拷贝数据判断是增加或编辑,更新表中数据---> 清除模态框中数据,便于下次添加,关闭模态框 + console.log(this.siteGroupModalTableData); + this.siteGroupModelData.sites=""; //置空组成员名字,写成""方便+= ,若为null +=时会转成 "null" + this.siteGroupModelData.role=""; // + let site_controlPoint = this.siteGroupModalTableData.map((item)=>{ if(item.checked&&item.role=="hub"){ return item.siteName}}).filter((item)=>{return item!=undefined}); + // console.log(site_controlPoint); + this.siteGroupModalTableData.forEach((item,index)=>{ //模态框中site顺序和 表中site顺序一致 + if(item.checked){ + this.siteGroupModelData.sites += item.siteName+";"; + this.siteGroupModelData.role += item.role+";"; + this.siteTableData[index].baseData.groupRole = item.role; //site group的role + this.siteTableData[index].baseData.groupName = this.siteGroupModelData.name; //site group的name + if(item.role == "spoke"){ + this.siteTableData[index].baseData.controlPoint = site_controlPoint.join(); //site group里面site的Role设置为spoke时,传递site group里面Role设置为hub的site name;否则传递空白 + } + } + }) + + let inputsData = {}; + Object.assign(inputsData,this.siteGroupModelData); + if(this.isGroupEdit){ + // 编辑状态不增加 + this.siteGroupTableData[this.isGroupEdit-1] = inputsData; + this.siteGroupTableData = [...this.siteGroupTableData]; //表格刷新 + }else{ + // this.siteTableData.push(inputsData);//使用 push 或者 splice 修改 nzData 失效 + this.siteGroupTableData = [...this.siteGroupTableData,inputsData]; + } + + Object.keys(this.siteGroupModelData).forEach((item)=>{ + this.siteGroupModelData[item] = null; + }) + this.siteGroupModalTableData = []; + this.siteGroupModelShow = false; + } + addsitegroup_cancel(){ + this.siteGroupModalTableData = []; + this.siteGroupModelShow = false; + } + isGroupEdit = 0; //编辑序号,No值,0表示增加 + editGroupSite(num){ //将当前编辑的行数据填入模态框--->获取当前编辑项sites名--->判断更新模态框中site项状态 + this.siteGroupModelShow = true; + this.isGroupEdit=num; + this.siteGroupModelData = Object.assign({},this.siteGroupTableData[num-1]); + console.log(this.siteGroupModelData) + let editSites = this.siteGroupTableData[num-1].sites.split(";").filter((item)=>{return item!=""}); //获取组中的site名 + // console.log(editSites); + let checkedSite = this.siteGroupTableData.map((item)=>{return item.sites}).join(";").split(";").filter((d)=>{return d!=""});//循环组中是否已经选用了某个site,若存在 则新组不可选 + // console.log(checkedSite); + this.siteTableData.forEach((item,index)=>{ + if(editSites.includes(item.baseData.name)){//先将编辑组中的site 中这三个值还原,否则减少某个site时 不会更新不选中的 + item.baseData.groupRole = null; //site group的role + item.baseData.groupName = null; //site group的name + item.baseData.controlPoint = null; + this.siteGroupModalTableData.push({siteName:item.baseData.name,role:item.baseData.groupRole,checked:true,disabled:false}) + }else + if(checkedSite.includes(item.baseData.name)){ + this.siteGroupModalTableData.push({siteName:item.baseData.name,role:null,checked:false,disabled:true}) + }else { + this.siteGroupModalTableData.push({siteName:item.baseData.name,role:null,checked:false,disabled:false}) + } + }) + + } + deleteGroupSite(num){ + let deleteSiteGroupsites = this.siteGroupTableData[num-1].sites.split(";").filter((item)=>{return item!=""}); //删除的site中name + this.siteGroupTableData = this.siteGroupTableData.filter((d,i) => i !== num-1); + this.siteTableData.forEach((item,index)=>{ + if(deleteSiteGroupsites.includes(item.baseData.name)){ + item.baseData.groupRole = null; //site group的role + item.baseData.groupName = null; //site group的name + item.baseData.controlPoint = null; + } + }) + } + + + + // 提交创建数据 + submit(){ + let globalCustomerId = this.createParams.commonParams.customer.id; + let globalServiceType = this.createParams.commonParams.serviceType; + let sotnInputs = {}; + // 由于请求模板不一样,所以外层需要循环请求回来的真实名字,内层循环本地参数,将当前值赋给真实名字 + this.sotnNames.forEach((name)=>{ + for(let key in this.sotnInfo){ + let nameParts = this.namesTranslate.sotnNameTranslate[key].split("_"); + if(name.startsWith(nameParts[0])&&name.endsWith(nameParts[1])){ + sotnInputs[name] = this.sotnInfo[key]; + break; + } + } + }) + console.log(sotnInputs); + let vpnbody = { + service:{ + name:this.sotnInfo.name, + description:this.sotnInfo.description, + serviceInvariantUuid:this.templateParameters["sotnvpn"].invariantUUID, //template.invariantUUID, //serviceDefId + serviceUuid:this.templateParameters["sotnvpn"].uuid, //template.uuid, // uuid ?? templateId + globalSubscriberId:globalCustomerId, //customer.id + serviceType:globalServiceType, //serviceType.value + parameters:{ + locationConstraints:[], + resources:[], + requestInputs:sotnInputs + } + } + } + + let sitebody = this.siteTableData.map((site)=>{ + let siteInputs = {}; + this.siteBaseNames.forEach((basename)=>{ + for(let key in site.baseData){ + let namePart = this.namesTranslate.siteNameTranslate.baseNames[key]; + if(basename.endsWith(namePart)){ + siteInputs[basename] = site.baseData[key]; + break; + } + } + }) + this.siteCpeNames.forEach((cpename)=>{ + for(let key in site.cpeData){ + let namePart = this.namesTranslate.siteNameTranslate.cpeNames[key]; + if(cpename.endsWith(namePart)){ + siteInputs[cpename] = site.cpeData[key]; + break; + } + } + }) + this.siteWanNames.forEach((item,index)=>{ + item.forEach((wanportname)=>{ + for(let key in site.wanportData[index]){ + let namePart = this.namesTranslate.siteNameTranslate.wanportNames[key]; + if(wanportname.endsWith(namePart)){ + siteInputs[wanportname] = site.wanportData[index][key]; + break; + } + } + }) + }) + + return { + service:{ + name:site.baseData.name, + description:site.baseData.description, + serviceInvariantUuid:this.templateParameters["site"].invariantUUID, + serviceUuid:this.templateParameters["site"].uuid, + globalSubscriberId:globalCustomerId, + serviceType:globalServiceType, + parameters:{ + locationConstraints:[], + resources:[], + requestInputs:siteInputs + } + } + } + }); + console.log(sitebody); + + let groupbody = this.siteGroupTableData.map((item)=>{ + let siteGroupInputs = {}; + this.siteGroupNames.forEach((name)=>{ + for(let key in item){ + let nameParts = this.namesTranslate.siteGroupNameTranslate[key].split("_"); + if(name.startsWith(nameParts[0])&&name.endsWith(nameParts[1])){ + siteGroupInputs[name] = item[key]; + break; + } + } + }) + return { + service:{ + name:item.name, + description:item.topology, + serviceInvariantUuid:this.templateParameters["sdwan"].invariantUUID, + serviceUuid:this.templateParameters["sdwan"].uuid, + globalSubscriberId:globalCustomerId, + serviceType:globalServiceType, + parameters:{ + locationConstraints:[], + resources:[], + requestInputs:siteGroupInputs + } + } + } + }) + console.log(groupbody); + + let createObj = { + vpnbody:vpnbody, + sitebody:sitebody, + groupbody:groupbody + } + + this.closeCreate.emit(createObj); + + } + + goback(){ + this.closeCreate.emit(); + } +} diff --git a/usecaseui-portal/src/app/ccvpn-detail/ccvpn-detail.component.css b/usecaseui-portal/src/app/ccvpn-detail/ccvpn-detail.component.css new file mode 100644 index 00000000..710bd104 --- /dev/null +++ b/usecaseui-portal/src/app/ccvpn-detail/ccvpn-detail.component.css @@ -0,0 +1,138 @@ +/* + Copyright (C) 2018 CMCC, Inc. and others. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ +.title { + font: 700 18px/18px "思源黑体"; + color: #4c5e70; + margin-bottom: 18px; +} +hr { + border: none; + height: 2px; + background-color: #dce1e7; + margin-bottom: 10px; +} +.model { + background-color: #fff; + height: 90%; + overflow-y: auto; +} +.model .back { + position: absolute; + top: 10px; + right: 20px; +} +.model .detaildata { + position: relative; + width: 60%; + height: 100%; + overflow-y: auto; + border-radius: 5px; + padding: 15px; +} +.model .detaildata h3.title { + height: 20px; + font: 700 20px/20px "Arial"; + color: #666; +} +.model .detaildata h3 { + height: 20px; + font: 700 16px/20px "Arial"; + margin: 5px 0px; + color: #000; +} +/* SOTN VPN */ +.model .detaildata .sotnvpn ul li { + display: inline-block; + height: 35px; + width: 49.5%; +} +.model .detaildata .sotnvpn ul li span { + display: inline-block; + width: 110px; + font: 700 14px "Arial"; + color: #3fa8eb; + vertical-align: middle; +} +/* site Detail */ +.model .detaildata .site .siteDetail { + position: fixed; + z-index: 10; + left: 260px; + top: 50px; + background-color: #fff; + box-shadow: 0px 0px 20px #000; + width: 50%; + max-height: 85%; + border-radius: 5px; + overflow-y: auto; +} +.model .detaildata .site h3 { + margin: 0; + height: 30px; + font: 700 16px/30px "Arial"; + padding-left: 10px; + background-color: #ddd; +} +.model .detaildata .site h3 .closeDetail { + cursor: pointer; + padding: 2px 15px; + color: #3fa8eb; +} +.model .detaildata .site ul li { + padding-left: 5px; + display: inline-block; + height: 35px; + width: 32%; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} +.model .detaildata .site ul li span { + display: inline-block; + width: 95px; + font: 700 14px "Arial"; + color: #3fa8eb; + vertical-align: middle; +} + +/* 图 */ +.model .chart { + width: 40%; + padding: 10px; + height: 100%; + border-left: 10px solid #f3f3f3; +} +.model .chart #detailChart { + position: relative; + width: 100%; + height: 80%; + margin-top: 20px; +} +.model .chart #detailChart .cloudcounty { + cursor: pointer; +} + +.model .chart #detailChart .couldDetail { + position: absolute; + left: 50%; + top: 10px; + width: 80%; + transform: translate(-50%,0); + height: 160px; + background-color: #aaa; + border-radius: 5px; + box-shadow: 0px 0px 20px #000; +}
\ No newline at end of file diff --git a/usecaseui-portal/src/app/ccvpn-detail/ccvpn-detail.component.html b/usecaseui-portal/src/app/ccvpn-detail/ccvpn-detail.component.html new file mode 100644 index 00000000..33d56eb9 --- /dev/null +++ b/usecaseui-portal/src/app/ccvpn-detail/ccvpn-detail.component.html @@ -0,0 +1,336 @@ +<!-- + Copyright (C) 2018 CMCC, Inc. and others. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<h3 class="title"> Services List </h3> +<hr> +<div class="model"> + <!-- 详情数据 --> + <button class="back" nz-button (click)="goback()"><span><i class="anticon anticon-rollback"></i></span></button> + <div class="detaildata fl"> + <h3 class="title">{{detailParams.sotnvpnSer['service-instance-name']}} Instance Detail</h3> + <div class="sotnvpn clearfix"> + <h3>SOTN VPN Info</h3> + <ul> + <li><span>Name:</span> {{sotnVpnInfo.name}}</li> + <li><span>Description:</span> {{sotnVpnInfo.description}} </li> + <li><span>Start Time:</span> {{sotnVpnInfo.startTime}}</li> + <li><span>End Time:</span> {{sotnVpnInfo.endTime}} </li> + <li><span>COS:</span> {{sotnVpnInfo.COS}}</li> + <li><span>Reroute Enable:</span> {{sotnVpnInfo.reroute}} </li> + <li><span>Service Level Specification:</span> {{sotnVpnInfo.SLS}}</li> + <li><span>DualLink:</span> {{sotnVpnInfo.dualLink}} </li> + <li><span>CIR:</span> {{sotnVpnInfo.CIR}}</li> + <li><span>EIR:</span> {{sotnVpnInfo.EIR}} </li> + <li><span>CBS:</span> {{sotnVpnInfo.CBS}}</li> + <li><span>EBS:</span> {{sotnVpnInfo.EBS}} </li> + <li><span>Color Aware:</span> {{sotnVpnInfo.colorAware}}</li> + <li><span>Coupling Flag:</span> {{sotnVpnInfo.couplingFlag}} </li> + </ul> + </div> + + <div class="site"> + <h3>Site List</h3> + <nz-table #nzTable [nzData]="siteList" + [nzShowPagination]="false" + nzSize="small"> + <thead> + <tr> + <th nzWidth="10%"> NO. </th> + <th nzWidth="15%"> Name </th> + <th nzWidth="20%"> Description </th> + <th nzWidth="15%"> Post Code </th> + <th nzWidth="15%"> Address </th> + <th nzWidth="15%"> VLAN </th> + <th nzWidth="10%"> Action </th> + </tr> + </thead> + <tbody> + <!-- <ng-template ngFor let-data [ngForOf]="nzTable.data" let-i="index"> --> + <tr *ngFor="let item of nzTable.data; let i = index; "> + <td>{{i+1}}</td> + <td>{{item.baseNames.name}}</td> + <td>{{item.baseNames.description}}</td> + <td>{{item.baseNames.postcode}}</td> + <td>{{item.baseNames.address}}</td> + <td>{{item.baseNames.vlan}}</td> + <td (click)="showSiteDetail(item)"> <a href="javascript:;">Detail</a> </td> + </tr> + <!-- </ng-template> --> + </tbody> + </nz-table> + <div class="siteDetail" *ngIf="siteDetail"> + <h3>Site_Enterprise Service <span class="closeDetail fr" (click)="siteDetail=false">X</span></h3> + <ul> + <li><span>Name:</span> {{ siteDetailData.baseNames.name}}</li> + <li><span>Description:</span> {{ siteDetailData.baseNames.description }} </li> + <li *ngIf="detailParams.sotnvpnSer.Type == 'CCVPN'"><span>Type:</span> {{ siteDetailData.baseNames.type }} </li> + <li *ngIf="detailParams.sotnvpnSer.Type == 'CCVPN'"><span>Role:</span> {{ siteDetailData.baseNames.role }} </li> + <li><span>PostCode:</span> {{ siteDetailData.baseNames.postcode }} </li> + <li><span>VLAN:</span> {{ siteDetailData.baseNames.vlan }}</li> + <li><span>Address:</span> {{ siteDetailData.baseNames.address }}</li> + <li><span>ClientSignal:</span> {{ siteDetailData.baseNames.clientSignal }}</li> + <li><span>ControlPoint:</span> {{ siteDetailData.baseNames.controlPoint }}</li> + <li><span>Emails:</span> {{ siteDetailData.baseNames.emails }}</li> + <li><span>GroupName:</span> {{ siteDetailData.baseNames.groupName }}</li> + <li><span>GroupRole:</span> {{ siteDetailData.baseNames.groupRole }}</li> + <li><span>Latitude:</span> {{ siteDetailData.baseNames.latitude }}</li> + <li><span>Longitude:</span> {{ siteDetailData.baseNames.longitude }}</li> + <li><span>SotnVpnName:</span> {{ siteDetailData.baseNames.sotnVpnName }}</li> + </ul> + <div *ngIf="detailParams.sotnvpnSer.Type == 'CCVPN'"> + <h3>CPE</h3> + <ul> + <li><span>Name:</span> {{siteDetailData.cpeNames.device_name}}</li> + <li><span>Version:</span> {{ siteDetailData.cpeNames.device_version }} </li> + <li><span>ESN:</span> {{ siteDetailData.cpeNames.device_esn }} </li> + <li><span>Class:</span> {{ siteDetailData.cpeNames.device_class }} </li> + <li><span>System IP:</span> {{ siteDetailData.cpeNames.device_systemIp }} </li> + <li><span>Vendor:</span> {{ siteDetailData.cpeNames.device_vendor }}</li> + <li><span>Type:</span> {{ siteDetailData.cpeNames.device_type }}</li> + </ul> + <h3>WAN Port</h3> + <nz-table #nzTable [nzData]="siteDetailData.wanportNames" + [nzShowPagination]="false" + nzSize="small"> + <thead> + <tr> + <th nzWidth="10%"> NO. </th> + <th nzWidth="15%"> Name </th> + <th nzWidth="20%"> Description </th> + <th nzWidth="15%"> PortType </th> + <th nzWidth="15%"> PortNumber </th> + <th nzWidth="15%"> IPAddress </th> + <th nzWidth="10%"> Action </th> + </tr> + </thead> + <tbody> + <!-- <ng-template ngFor let-data [ngForOf]="nzTable.data" let-i="index"> --> + <tr *ngFor="let item of nzTable.data; let i = index; "> + <td>{{i+1}}</td> + <td>{{item.sitewanport_name}}</td> + <td>{{item.sitewanport_description}}</td> + <td>{{item.sitewanport_portType}}</td> + <td>{{item.sitewanport_portNumber}}</td> + <td>{{item.sitewanport_ipAddress}}</td> + <td (click)="showWanportDetail(item)"> <a href="javascript:;">Detail</a> </td> + </tr> + <!-- </ng-template> --> + </tbody> + </nz-table> + <nz-modal [(nzVisible)]="wanPortModal" [nzTitle]="modalTitle" [nzContent]="modalContent" [nzFooter]="modalFooter" (nzOnCancel)="handleCancel()"> + <ng-template #modalTitle> + WAN Port Detail + </ng-template> + + <ng-template #modalContent> + <p> <span style="color:#3fa8eb;font:700 14px 'Arial';display:inline-block;width:200px;"> Name </span> {{wanPortDetail.sitewanport_name}}</p> + <p> <span style="color:#3fa8eb;font:700 14px 'Arial';display:inline-block;width:200px;"> Description: </span> {{wanPortDetail.sitewanport_description}} </p> + <p> <span style="color:#3fa8eb;font:700 14px 'Arial';display:inline-block;width:200px;"> Port Type: </span> {{wanPortDetail.sitewanport_portType}} </p> + <p> <span style="color:#3fa8eb;font:700 14px 'Arial';display:inline-block;width:200px;"> Port Number: </span> {{wanPortDetail.sitewanport_portNumber}} </p> + <p> <span style="color:#3fa8eb;font:700 14px 'Arial';display:inline-block;width:200px;"> Ip Address: </span> {{wanPortDetail.sitewanport_ipAddress}} </p> + <p> <span style="color:#3fa8eb;font:700 14px 'Arial';display:inline-block;width:200px;"> Provider IP Address: </span> {{wanPortDetail.sitewanport_providerIpAddress}} </p> + <p> <span style="color:#3fa8eb;font:700 14px 'Arial';display:inline-block;width:200px;"> Transport Nerwork: </span> {{wanPortDetail.sitewanport_transportNetworkName}} </p> + <p> <span style="color:#3fa8eb;font:700 14px 'Arial';display:inline-block;width:200px;"> Input Bandwidth: </span> {{wanPortDetail.sitewanport_inputBandwidth}} </p> + <p> <span style="color:#3fa8eb;font:700 14px 'Arial';display:inline-block;width:200px;"> Output Bandwidth: </span> {{wanPortDetail.sitewanport_outputBandwidth}} </p> + </ng-template> + + <ng-template #modalFooter> + <!-- <button nz-button nzType="primary" (click)="handleOk()" [nzLoading]="isConfirmLoading">Custom Submit</button> --> + </ng-template> + </nz-modal> + </div> + + </div> + </div> + + <div class="sitegroup" *ngIf="detailParams.sotnvpnSer.Type == 'CCVPN'"> + <h3>Site_Group List</h3> + <nz-table #nzTable [nzData]="siteGroupList" + [nzLoading]="loading" + [nzShowPagination]="false" + nzSize="small"> + <thead> + <tr> + <th nzWidth="10%"> NO. </th> + <th nzWidth="20%"> Group Name </th> + <th nzWidth="20%"> Topology </th> + </tr> + </thead> + <tbody> + <!-- <ng-template ngFor let-data [ngForOf]="nzTable.data" let-i="index"> --> + <tr *ngFor="let item of nzTable.data; let i = index; "> + <td>{{i+1}}</td> + <td>{{item.name}}</td> + <td>{{item.topology}}</td> + </tr> + <!-- </ng-template> --> + </tbody> + </nz-table> + </div> + </div> + <!-- 图 --> + <div class="chart fr"> + + <div id="detailChart"> + <!-- <svg width="100%" height="100%"> + <line *ngFor="let item of lines" [attr.x1]="item.x1" [attr.y1]="item.y1" [attr.x2]="item.x2" [attr.y2]="item.y2" style="stroke:#3fa8eb;stroke-width:2"/> + <image xlink:href="./assets/images/cloud-county.png" + class="cloudcounty" + (click)="toggleClick()" + (mouseover)="hoverShowcould()" + (mouseout)="hoverHidecould()" + x="175" y="175" height="50px" width="50px"/> + <image *ngFor="let item of siteImage" + xlink:href="./assets/images/cloud-city.png" + [attr.x]="item.x" [attr.y]="item.y" height="50px" width="50px"/> + </svg> + <div class="couldDetail" *ngIf="hoverShow || clickShow"> + + </div> --> + <svg width="100%" height="100%" style="position: relative"> + <!--背景大图--> + <image xlink:href="./assets/images/bigcloud.png" + class="backgroundcloud" + width="100%" + style="position: absolute;z-index:-1"> + </image> + <!--tp,site,domain之间的连线--> + <line *ngFor="let item of detailLines" [attr.x1]="item.x1" [attr.y1]="item.y1" [attr.x2]="item.x2" [attr.y2]="item.y2" style="stroke:#FFC000; stroke-width:2"></line> + <line *ngIf="detailSites" x1="45%" y1="30%" x2="75%" y2="20%" style="stroke:#FFC000; stroke-width:2"></line> + <!--本地domain--> + <g class="clouds"> + <image xlink:href="./assets/images/domain.png" + id="domain1" + width="20%" + x="10%" y="10%" + ></image> + <text dx="12%" dy="16%" style="font-size: 14px; fill:#666;width: 20px;"> + {{vpns[0].domain}} + </text> + </g> + <g *ngIf="vpns[1]" class="clouds"> + <image xlink:href="./assets/images/domain.png" + id="domain2" + width="20%" + x="40%" y="13%" + ></image> + <text dx="43%" dy="19%" style="font-size: 14px; fill: #666;width: 20px;"> + {{vpns[1].domain}} + </text> + </g> + <!--domain1下连接的tp--> + <g class="clouds"> + <image xlink:href="./assets/images/tp.png" + class="tp" + id="tp1" + height="16" width="20" + x="15%" y="25%" + ></image> + <text dx="18%" dy="27%" style="font-size: 14px; fill: #666;width: 20px;"> + {{vpns[0].sitetpname}} + </text> + </g> + <g class="clouds"> + <image xlink:href="./assets/images/tp.png" + class="tp" + id="tp2" + height="16" width="20" + x="30%" y="10%" + ></image> + <text dx="30%" dy="6%" style="font-size: 14px; fill: #666;width: 20px;"> + {{vpns[0].othertpname}} + </text> + </g> + <!--domain2下连接的tp--> + <g *ngIf="vpns[1]" class="clouds"> + <image xlink:href="./assets/images/tp.png" + class="tp" + id="tp3" + height="16" width="20" + x="40%" y="10%" + ></image> + <text dx="40%" dy="9%" style="font-size: 14px; fill: #666;width: 20px;"> + {{vpns[1].othertpname}} + </text> + </g> + <g *ngIf="vpns[1]" class="clouds"> + <image xlink:href="./assets/images/tp.png" + class="tp" + id="tp4" + height="16" width="20" + x="43%" y="28%" + ></image> + <text dx="46%" dy="30%" style="font-size: 14px; fill: #666;width: 20px;"> + {{vpns[1].sitetpname}} + </text> + </g> + <!--外部云--> + <g class="clouds"> + <image xlink:href="./assets/images/out-domain.png" + id="extent-cloud" + height="70.8" width="120" + x="66%" y="12%" + ></image> + <text dx="68%" dy="18%" style="font-size: 14px; fill: #666;width: 20px;"> + SP Partent Network + </text> + </g> + <!--本地的2个site--> + <g class="clouds"> + <image xlink:href="./assets/images/site.png" + id="site1" + height="59" width="100" + x="0%" y="48%" + ></image> + <text dx="2%" dy="53%" style="font-size: 14px; fill: #666;width: 20px;"> + {{localSite[0]["service-instance-name"]}} + </text> + </g> + <g *ngIf="!detailSites" class="clouds"> + <image xlink:href="./assets/images/site.png" + id="site2" + height="59" width="100" + x="25%" y="48%" + ></image> + <text dx="26%" dy="54%" style="font-size: 14px; fill: #666;width: 20px;"> + {{localSite[1]["service-instance-name"]}} + </text> + </g> + <!--外部的2个site--> + <g *ngIf="!detailSites" class="clouds"> + <image xlink:href="./assets/images/site.png" + id="site3" + height="59" width="100" + x="50%" y="48%" + ></image> + <text dx="52%" dy="54%" style="font-size: 14px; fill: #666;width: 20px;"> + {{outerSite[1]["service-instance-name"]}} + </text> + </g> + <g class="clouds"> + <image xlink:href="./assets/images/site.png" + id="site4" + height="59" width="100" + x="75%" y="48%" + ></image> + <text dx="80%" dy="54%" style="font-size: 14px; fill: #666;width: 20px;"> + {{outerSite[0]["service-instance-name"]}} + </text> + </g> + </svg> + </div> + </div> + +</div> diff --git a/usecaseui-portal/src/app/ccvpn-detail/ccvpn-detail.component.spec.ts b/usecaseui-portal/src/app/ccvpn-detail/ccvpn-detail.component.spec.ts new file mode 100644 index 00000000..dc5d34d9 --- /dev/null +++ b/usecaseui-portal/src/app/ccvpn-detail/ccvpn-detail.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { CcvpnDetailComponent } from './ccvpn-detail.component'; + +describe('CcvpnDetailComponent', () => { + let component: CcvpnDetailComponent; + let fixture: ComponentFixture<CcvpnDetailComponent>; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ CcvpnDetailComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(CcvpnDetailComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/usecaseui-portal/src/app/ccvpn-detail/ccvpn-detail.component.ts b/usecaseui-portal/src/app/ccvpn-detail/ccvpn-detail.component.ts new file mode 100644 index 00000000..c9d60ef8 --- /dev/null +++ b/usecaseui-portal/src/app/ccvpn-detail/ccvpn-detail.component.ts @@ -0,0 +1,368 @@ +import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; +import { MyhttpService } from '../myhttp.service'; +import * as d3 from 'd3'; + +@Component({ + selector: 'app-ccvpn-detail', + templateUrl: './ccvpn-detail.component.html', + styleUrls: ['./ccvpn-detail.component.css'] +}) +export class CcvpnDetailComponent implements OnInit { + + constructor(private myhttp:MyhttpService) { } + + ngOnInit() { + // this.getDetails(); + this.dataInit(); + this.drawImages(); + } + + @Input() detailParams; + @Input() namesTranslate; + @Output() closeDetail = new EventEmitter(); + + sotnVpnInfo:any; + siteList=[]; + siteGroupList=[]; + dataInit(){ + // 循环真实参数,对比名字转换配置文件,将真实参数名字改成通用名字 + this.sotnVpnInfo = JSON.parse(this.detailParams.sotnvpnSer['input-parameters']).service.parameters.requestInputs; + for(let key in this.sotnVpnInfo){ + for(let key2 in this.namesTranslate.sotnNameTranslate){ + let partnames = this.namesTranslate.sotnNameTranslate[key2].split("_"); + if(key.startsWith(partnames[0])&&key.endsWith(partnames[1])){ + this.sotnVpnInfo[key2] = this.sotnVpnInfo[key]; + break; + } + } + } + + this.siteList = this.detailParams.siteSer.map((item)=>{ + return JSON.parse(item['input-parameters']).service.parameters.requestInputs; + }) + this.siteList.forEach((oneSite,idex)=>{ + oneSite["baseNames"]={};oneSite["cpeNames"]={};oneSite["wanportNames"]=[]; + for(let key in oneSite){ + let hasfind = false; + if(key == "baseNames" || key == "cpeNames" || key == "wanportNames"){ continue }; + for(let key2 in this.namesTranslate.siteNameTranslate.baseNames){ + if(key.endsWith(this.namesTranslate.siteNameTranslate.baseNames[key2])){ + oneSite["baseNames"][key2] = oneSite[key]; + hasfind = true; + break; + } + } + if(hasfind){ continue }; + for(let key3 in this.namesTranslate.siteNameTranslate.cpeNames){ + if(key.endsWith(this.namesTranslate.siteNameTranslate.cpeNames[key3])){ + oneSite["cpeNames"][key3] = oneSite[key]; + hasfind = true; + break; + } + } + if(hasfind){ continue }; + let wanportStartName = key.split("_")[0]; + // 先分组,后面再变换名字 + let theItem = oneSite["wanportNames"].find((item,index)=>{ + if(item){ + return Object.keys(item)[0].startsWith(wanportStartName) + } + }) + theItem?theItem[key]=oneSite[key]:oneSite["wanportNames"].push({[key]:oneSite[key]}) + } + let wanportTs = Object.values(this.namesTranslate.siteNameTranslate.wanportNames); + oneSite["wanportNames"].forEach((item)=>{ + for(let key in item){ + let newName = wanportTs.find((name)=>{ + return key.endsWith(name); + }) + newName?item[newName]=item[key]:null; + } + }) + + }) + + this.siteGroupList = this.detailParams.sdwanSer.map((item)=>{ + return JSON.parse(item['input-parameters']).service.parameters.requestInputs; + }) + this.siteGroupList.forEach((oneSiteGroup)=>{ + for(let key in oneSiteGroup){ + for(let key2 in this.namesTranslate.siteGroupNameTranslate){ + let partnames = this.namesTranslate.siteGroupNameTranslate[key2].split("_"); + if(key.startsWith(partnames[0])&&key.endsWith(partnames[1])){ + oneSiteGroup[key2] = oneSiteGroup[key]; + break; + } + } + } + }) + console.log(this.siteList) + this.drawImage(this.siteList); + } + + // site详情 + siteDetailData={baseNames:{},cpeNames:{},wanportNames:[]}; + siteDetail = false; + showSiteDetail(item){ + this.siteDetail = true; + this.siteDetailData = item; + } + + wanPortModal = false; + wanPortDetail = {}; + showWanportDetail(item){ + this.wanPortModal = true; + this.wanPortDetail = item; + } + handleCancel(){ + this.wanPortModal = false; + } + + // sitegroup详情 + + // site节点图形描绘 + // site分类,根据site查tp pnf --> allotted-resource + localSite = [];//本地site + outerSite = [];//外部site + + getSiteAResource(){ + return new Promise((res,rej)=>{ + this.detailParams.siteSer.forEach((site)=>{ + site["relationship-list"]["relationship"].find((item)=>{return item["related-to"]=="site-resource"})?this.localSite.push(site):this.outerSite.push(site); + }) + + if(this.localSite[0]["service-instance-name"].startsWith("Dc")){ + this.localSite.reverse(); + } + + if(this.outerSite[0]["service-instance-name"].startsWith("Dc")){ + this.outerSite.reverse(); + } + + // 本地site获取tp pnf + this.localSite.forEach((site)=>{ + let obj = { + customerId: this.detailParams.customer.id, + serviceType: this.detailParams.serviceType, + serviceId: site["service-instance-id"] + } + this.myhttp.getAllottedResource(obj) + .subscribe((data)=>{ + // console.log(data); + let resource = data["allotted-resource"].find((item)=>{ return item["allotted-resource-name"]=="sotn ar"}); + // console.log(resource); + let tps_pnfs = resource["relationship-list"]["relationship"].find((item)=>{ return item["related-to"]=="p-interface"})["relationship-data"]; + // console.log(tps_pnfs); + // site.pnfname = tps_pnfs.find((item)=>{return item["relationship-key"]=="pnf.pnf-name"})["relationship-value"]; + site.tpsitename = tps_pnfs.find((item)=>{return item["relationship-key"]=="p-interface.interface-name"})["relationship-value"]; + // // 通过pnfname获取domain(network-resource); + // this.myhttp.getPnfDetail(site.pnfname) + // .subscribe((data2)=>{ + // // console.log(data2); + // let networkRelation = data2["relationship-list"]["relationship"].find((item)=>{ return item["related-to"]=="network-resource"})["relationship-data"]; + // site.domain = networkRelation.find((item)=>{return item["relationship-key"]=="network-resource.network-id"})["relationship-value"]; + // res("sites-domain"); + // }) + res("sites-domain"); + }) + }) + }) + } + //通过sotn 查vpn-id --> tp pnf --> allotted-resource + relation = {sotn:{ + name:"sotn1", + vpns:[ + { + name:"vpn1", + domain:"domain1", + site:"site1", + tps:[ + {name:"tp1",lineto:"site1"}, + {name:"tp2",lineto:"domain1"} + ] + }, + { + name:"vpn2", + domain:"domain2", + site:"site2", + tps:[ + {name:"tp3",lineto:"site2"}, + {name:"tp4",lineto:"domain2"} + ] + } + ] + }}; + + vpns = [{name: "", tps: [], domain: "", sitetpname: "", othertpname: ""}]; + getSotnAresource(){ + return new Promise((res,rej)=>{ + let connectivityId = this.detailParams.sotnvpnSer["relationship-list"]["relationship"] + .find((item)=>{return item["related-to"]=="connectivity"})["relationship-data"] + .find((item2)=>{return item2["relationship-key"]=="connectivity.connectivity-id"})["relationship-value"]; + this.myhttp.getSotnConnectivity(connectivityId) + .subscribe((data)=>{ + // console.log(data); //默认一个connectivityId只能查到一个connectivity + let vpns = data.connectivity[0]["relationship-list"]["relationship"] + .filter((item)=>{ return item["related-to"]=="vpn-binding"}) + .map((item2)=>{return item2["relationship-data"].find((item3)=>{return item3["relationship-key"]=="vpn-binding.vpn-id"})["relationship-value"]}); + console.log(vpns); + this.detailParams.sotnvpnSer.vpns = vpns.map((item)=>{return {name:item}}); + this.detailParams.sotnvpnSer.vpns.forEach((vpn,index)=>{ + this.myhttp.getVpnBinding(vpn.name) + .subscribe((data2)=>{ + // console.log(data2); //默认一个vpnid只能查到一个vpnbinding + let tps_pnfs = data2["vpn-binding"][0]["relationship-list"]["relationship"] + .filter((item)=>{ return item["related-to"]=="p-interface"}) + .map((item2)=>{return item2["relationship-data"]}); + let pnfname = tps_pnfs.map((item)=>{return item.find((item2)=>{return item2["relationship-key"]=="pnf.pnf-name"})["relationship-value"]}); + let tpnames = tps_pnfs.map((item)=>{return item.find((item2)=>{return item2["relationship-key"]=="p-interface.interface-name"})["relationship-value"]}); + // console.log(pnfname) + // console.log(tpnames) + vpn.tps = tpnames; + // let thissite = this.localSite.find((item)=>{return item.pnfname == pnfname[0]}); //查找site上pnfname相同的项,即同domain + // console.log(thissite); + // thissite.tpsotnname = tpsotnnames.find((item)=>{return item!=thissite.tpsitename}); + // 通过pnfname获取domain(network-resource); + this.myhttp.getPnfDetail(pnfname[0]) + .subscribe((data2)=>{ + // console.log(data2); + let networkRelation = data2["relationship-list"]["relationship"].find((item)=>{ return item["related-to"]=="network-resource"})["relationship-data"]; + vpn.domain = networkRelation.find((item)=>{return item["relationship-key"]=="network-resource.network-id"})["relationship-value"]; + if(this.localSite[index]){ + vpn.sitetpname = this.localSite.find((site)=>{return tpnames.includes(site.tpsitename)}).tpsitename; + console.log(tpnames) + console.log(vpn.sitetpname) + vpn.othertpname = tpnames.find((name)=>{return name != vpn.sitetpname}); + }else{ + vpn.sitetpname = this.localSite[0].tpsitename; + vpn.othertpname = tpnames.find((name)=>{return name != vpn.sitetpname}); + } + + this.vpns = this.detailParams.sotnvpnSer.vpns; + res("sotn-domain"); + // console.log(vpn); + }) + + }) + }) + }) + }) + } + + drawImages(){ + + this.getSiteAResource().then((data)=>{ + console.log(data); + return this.getSotnAresource() + }).then((data)=>{ + console.log(data); + console.log(this.localSite); + this.detailSites = this.detailParams.sotnvpnSer.Type == "CCVPN"?false:true; + this.detailParams.sotnvpnSer.Type == "CCVPN"?null:this.detailLines.length = this.detailLines.length-3; + // 当只有一个vpn的时候 + if(this.detailParams.sotnvpnSer.Type == "CCVPN" && this.vpns.length == 1){ + let line = { + "x1":"32%","y1":"12%","x2":"32%","y2":"50%"//t2--site2 当本地云只有一朵的时候,tp2与本地site2相连 + } + this.detailLines.length = this.detailLines.length-6; + this.detailLines.push(line); + // 当本地site有两个的时候 + if(this.localSite.length==2){ + let line = { + "x1":"40%","y1":"52%","x2":"52%","y2":"52%"//site2--site3 + } + this.detailLines.push(line); + } + // 当外部site有两个的时候 + if(this.outerSite.length==2){ + let line = { + "x1":"75%","y1":"20%","x2":"60%","y2":"50%"//out-domain--site3 + } + this.detailLines.push(line); + } + } + }) + // let allnodes = [this.getSiteAResource(),this.getSotnAresource()]; + // Promise.all(allnodes).then((data)=>{ + // console.log(data) + // console.log(this.localSite); + + + // }) + } + + detailSites=false; + detailLines=[ //详情拓扑图连线的坐标 + { + "x1":"5%","y1":"50%","x2":"17%","y2":"25%"//site1--tp1 + }, + { + "x1":"22%","y1":"20%","x2":"17%","y2":"25%"//tp1--domian1 + } + , + { + "x1":"26%","y1":"15%","x2":"30%","y2":"12%"//domian1--tp2 + }, + + { + "x1":"80%","y1":"20%","x2":"85%","y2":"50%"//out-domain--site4 + }, + + { + "x1":"50%","y1":"22%","x2":"45%","y2":"28%"//tp4--domian2 + }, + { + "x1":"40%","y1":"11%","x2":"50%","y2":"15%"//domian2--tp3 + }, + { + "x1":"32%","y1":"11%","x2":"41%","y2":"11%"//tp2--tp3 + }, + + { + "x1":"45%","y1":"30%","x2":"35%","y2":"50%"//site2--tp4 + }, + { + "x1":"75%","y1":"20%","x2":"60%","y2":"50%"//out-domain--site3 + }, + { + "x1":"40%","y1":"52%","x2":"52%","y2":"52%"//site2--site3 + } + ]; + lines=[]; + siteImage=[]; + drawImage(sitelist){ + let cx = 200; + let cy = 200; + let r = 150; + let startAngle = -210 * (Math.PI/180); + let step = sitelist.length > 1 ? 120/(sitelist.length-1) * (Math.PI/180) : 1; + + this.lines = sitelist.map((item,index)=>{ + let x = cx + Math.cos(startAngle - step*index)*r; + let y = cy + Math.sin(startAngle - step*index)*r; + return {img:"line",x1:cx,y1:cy,x2:x,y2:y} + }) + this.siteImage = this.lines.map((item)=>{ + return {img:"site",x:item.x2 - 25,y:item.y2 - 25} + }) + console.log(this.siteImage,this.lines) + } + clickShow = false; + hoverShow = false; + toggleClick(){ + this.clickShow = !this.clickShow; + } + hoverShowcould(){ + this.hoverShow = true; + } + hoverHidecould(){ + this.hoverShow = false; + } + + + + goback(){ + this.closeDetail.emit(); + } + +} diff --git a/usecaseui-portal/src/app/ccvpn-network/ccvpn-network.component.css b/usecaseui-portal/src/app/ccvpn-network/ccvpn-network.component.css new file mode 100644 index 00000000..2ac88d32 --- /dev/null +++ b/usecaseui-portal/src/app/ccvpn-network/ccvpn-network.component.css @@ -0,0 +1,97 @@ +/* + Copyright (C) 2018 CMCC, Inc. and others. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ +.outer{ + width: 20%; + float: left; +} +.content{ + width: 100px; + margin: 30px 0; +} + +.tips{ + margin: 20px auto; + padding:0 5px; + width: 100%; + height: 40px; + line-height: 40px; + border: 1px gainsboro solid; + border-radius: 10px; +} +.submit,.delete,.add{ + padding:10px 20px; + width: 100px; + margin: 0 auto; + background: dodgerblue; + border: none; + border-radius: 10px; + color: #fff; + cursor: pointer; +} +/*.line-click{*/ + /*cursor: pointer !important;*/ +/*}*/ + + +#tpContainer{ + width:100%; + /*height: 80%;*/ + float: left; +} +.model { + padding: 15px; + height: 100%; + width: 100%; +} +.model .creation { + /*margin-top:-4%;*/ + background-color: #fff; + /*float: left;*/ + width: 20%; + position: absolute; + right: 1%; + border-radius: 5px; + box-shadow: 0 0 10px #9e9e9e; + padding: 10px; + height: 80vh; + overflow: auto; +} +.model .creation .v_color{ + height: 17px; + float: left; + margin-left: -11px; + margin-top: 5px; + border-left: 4px #3fa8eb solid; +} +.w_font4{ + font-weight: 400; +} +.title-span{ + margin-left: 10%; + font-size: 12px; +} +.red-span{ + color: red; + margin-right: 3px; +} +.choose li nz-select,.choose li input{ + display: block !important; + margin: 5px 10% 15px; + width: 80%; +} + + + diff --git a/usecaseui-portal/src/app/ccvpn-network/ccvpn-network.component.html b/usecaseui-portal/src/app/ccvpn-network/ccvpn-network.component.html new file mode 100644 index 00000000..4fbe4875 --- /dev/null +++ b/usecaseui-portal/src/app/ccvpn-network/ccvpn-network.component.html @@ -0,0 +1,135 @@ +<!-- + Copyright (C) 2018 CMCC, Inc. and others. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<div class="model"> + <!--图表--> + <div class="tips"> + 请根据以下操作,来配置您的网络 + </div> + <button nz-button nzType="primary" style="margin-top: 2px;display: block" (click)="showForm()">Add Link</button> + <div id="tpContainer" style="overflow: hidden;"></div> + <!--弹出框--> + <div class="creation" id="d3_form" *ngIf="isVisible==true"> + <span class="v_color"></span> + <h3 class="w_font4">Set Attribtes</h3> + <ul class="choose"> + <li> + <span class="title-span"><span class="red-span">*</span>Link Name </span> + <input nz-input [(ngModel)]="linkName" maxlength="20"> + </li> + </ul> + <h4>Left Port</h4> + <ul class="choose"> + <li> + <span class="title-span"><span class="red-span">*</span>Network </span> + <nz-select [(ngModel)]="networkVal1" nzShowSearch nzAllowClear (ngModelChange)="network1Change($event)"> + <nz-option *ngFor="let option of networkOption" [nzLabel]="option.network" [nzValue]="option.network"></nz-option> + </nz-select> + </li> + <li> + <span class="title-span"> <span class="red-span">*</span>Node </span> + <nz-select [(ngModel)]="selectedNode1" nzShowSearch nzAllowClear (ngModelChange)="node1Change($event)"> + <nz-option *ngFor="let node of nodeOption1[networkVal1]" [nzValue]="node" [nzLabel]="node"></nz-option> + </nz-select> + </li> + <li> + <span class="title-span"><span class="red-span">*</span>Terminal Point </span> + <!-- <input nz-input id="city-one" value=""> --> + <nz-select [(ngModel)]="selecteTpName1" nzShowSearch nzAllowClear> + <nz-option *ngFor="let tp of tpOption1" [nzValue]="tp" [nzLabel]="tp"></nz-option> + </nz-select> + </li> + </ul> + <h4>Right Port</h4> + <label nz-checkbox [(ngModel)]="inputshow">Partner Network</label> + <ul class="choose"> + <li> + <span class="title-span"><span *ngIf="inputshow" class="red-span">*</span>Host Url</span> + <input nz-input [(ngModel)]="cloudUrl" [disabled]='!inputshow' [attr.disabled] ='!inputshow?true:undefined'> + </li> + <li> + <span class="title-span"><span class="red-span">*</span>Network </span> + <input nz-input *ngIf="inputshow" [(ngModel)]="cloudNetwork"> + <nz-select *ngIf="!inputshow" [(ngModel)]="networkVal2" nzShowSearch nzAllowClear (ngModelChange)="network2Change($event)"> + <nz-option *ngFor="let option of networkOption" [nzLabel]="option.network" [nzValue]="option.network"> </nz-option> + </nz-select> + </li> + <li> + <span class="title-span"><span class="red-span">*</span>Node </span> + <input nz-input *ngIf="inputshow" [(ngModel)]="cloudNode"> + <nz-select *ngIf="!inputshow" [(ngModel)]="selectedNode2" nzShowSearch nzAllowClear (ngModelChange)="node2Change($event)"> + <nz-option *ngFor="let node of nodeOption1[networkVal2]" [nzValue]="node" [nzLabel]="node"></nz-option> + </nz-select> + </li> + <li> + <span class="title-span"><span class="red-span">*</span>Terminal Point </span> + <input nz-input *ngIf="inputshow" [(ngModel)]="cloudTp"> + <nz-select *ngIf="!inputshow" [(ngModel)]="selecteTpName2" nzShowSearch nzAllowClear> + <nz-option *ngFor="let tp of tpOption2" [nzValue]="tp" [nzLabel]="tp"></nz-option> + </nz-select> + </li> + </ul> + <button nz-button nzType="primary" nzSize="small" style="width: 60px;" (click)="submitForm()">OK</button> + <button nz-button nzType="default" nzSize="small" style="width: 60px;" (click)="hideForm()">Cancel</button> + </div> + <div class="creation" id="delbox" *ngIf="delBoxisVisible==true"> + <span class="v_color"></span> + <h3 class="w_font4">Set Attribtes</h3> + <ul class="choose"> + <li> + <span class="title-span">Link Name </span> + <input nz-input [(ngModel)]="delLinkname" disabled="disabled"> + </li> + </ul> + <h4>Left Port</h4> + <ul class="choose"> + <li> + <span class="title-span">Network </span> + <input nz-input [(ngModel)]="delNetwork1" disabled="disabled"> + </li> + <li> + <span class="title-span">Node </span> + <input nz-input [(ngModel)]="delNode1" disabled="disabled"> + </li> + <li> + <span class="title-span">Terminal Point </span> + <input nz-input [(ngModel)]="delTp1" disabled="disabled"> + </li> + </ul> + <h4>Right Port</h4> + <ul class="choose"> + <li *ngIf="delcloud"> + <span class="title-span">Host Url</span> + <input nz-input [(ngModel)]="delcloudUrl" disabled="disabled"> + </li> + <li> + <span class="title-span">Network </span> + <input nz-input [(ngModel)]="delNetwork2" disabled="disabled"> + </li> + <li> + <span class="title-span">Node </span> + <input nz-input [(ngModel)]="delNode2" disabled="disabled"> + </li> + <li> + <span class="title-span">Terminal Point </span> + <input nz-input [(ngModel)]="delTp2" disabled="disabled"> + </li> + </ul> + <button nz-button nzType="primary" nzSize="small" class="del-button" style="width: 90px;" (click)="delLink()" *ngIf="!delcloud">delete Link</button> + <button nz-button nzType="primary" nzSize="small" class="del-button" style="width: 90px;" (click)="delCloudLink()" *ngIf="delcloud">delete Link</button> + <button nz-button nzType="default" nzSize="small" class="del-button" style="width: 60px;" (click)="hideForm()">Cancel</button> + </div> +</div> + diff --git a/usecaseui-portal/src/app/ccvpn-network/ccvpn-network.component.spec.ts b/usecaseui-portal/src/app/ccvpn-network/ccvpn-network.component.spec.ts new file mode 100644 index 00000000..03cc5065 --- /dev/null +++ b/usecaseui-portal/src/app/ccvpn-network/ccvpn-network.component.spec.ts @@ -0,0 +1,40 @@ +/* + Copyright (C) 2018 CMCC, Inc. and others. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { CcvpnNetworkComponent } from './ccvpn-network.component'; + +describe('CcvpnNetworkComponent', () => { + let component: CcvpnNetworkComponent; + let fixture: ComponentFixture<CcvpnNetworkComponent>; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ CcvpnNetworkComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(CcvpnNetworkComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/usecaseui-portal/src/app/ccvpn-network/ccvpn-network.component.ts b/usecaseui-portal/src/app/ccvpn-network/ccvpn-network.component.ts new file mode 100644 index 00000000..0174aa77 --- /dev/null +++ b/usecaseui-portal/src/app/ccvpn-network/ccvpn-network.component.ts @@ -0,0 +1,1195 @@ +/* + Copyright (C) 2018 CMCC, Inc. and others. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ +import {Component, EventEmitter, OnInit, Output} from '@angular/core'; +import * as d3 from 'd3'; +import * as $ from 'jquery'; +import {networkHttpservice} from '../networkHttpservice.service'; + +@Component({ + selector: 'app-ccvpn-network', + templateUrl: './ccvpn-network.component.html', + styleUrls: ['./ccvpn-network.component.css'] +}) +export class CcvpnNetworkComponent implements OnInit { + + constructor(private myhttp: networkHttpservice) { + } + + ngOnInit() { + var thisNg = this; + thisNg.getD3Data(); + + + //本地云TP端口断开连线 ,直接点击线可删除连线 + $('#tpContainer').on('click', '.line-local', function () { + thisNg.isVisible = false; + thisNg.delBoxisVisible = true; + thisNg.delcloud = false; + + thisNg.delTp1 = $(this).attr('data-tp1'); + thisNg.delTp2 = $(this).attr('data-tp2'); + thisNg.delNode1 = $(this).attr('data-node1'); + thisNg.delNode2 = $(this).attr('data-node2'); + thisNg.delVersion = $(this).attr('data-version'); + thisNg.delLinkname = $(this).attr('data-link'); + + thisNg.delLinkIndex = $(this); + let dataD3 = thisNg.d3Data; + for (let p = 0; p < dataD3.length; p++) {//判断两个tp端口分别属于哪个Domain network + if (dataD3[p]['name'] == thisNg.delTp1) { + thisNg.network.push(dataD3[p]['source']['name']); + } + if (dataD3[p]['name'] == thisNg.delTp2) { + thisNg.network.push(dataD3[p]['source']['name']); + } + } + thisNg.delNetwork1 = thisNg.network[0]; + thisNg.delNetwork2 = thisNg.network[1]; + }); + + //外部云 断开连线 ,直接点击线可删除连线 + $('#tpContainer').on('click', '.cloudline', function () { + thisNg.isVisible = false; + thisNg.delBoxisVisible = true; + thisNg.delcloud = true; + + thisNg.delTp1 = $(this).attr('data-tp1'); + thisNg.delTp2 = $(this).attr('data-tp2'); + thisNg.delNode1 = $(this).attr('data-node1'); + thisNg.delNode2 = $(this).attr('data-node2'); + thisNg.delVersion = $(this).attr('data-version'); + thisNg.delNetwork1 = $(this).attr('data-network'); + thisNg.delNetwork2 =$(this).attr('data-cloudnetwork'); + thisNg.delcloudUrl =$(this).attr('data-url'); + thisNg.delLinkname = $(this).attr('data-link'); + thisNg.aaiId =$(this).attr('data-aaiid'); + thisNg.getCloudUrl(thisNg.aaiId,thisNg); + }); + } + + addLinkDisabled = true; + isVisible = false; + outCloudShow = false; + inputshow = false; + delBoxisVisible = false; + + d3Data = [];//D3渲染需要的数据 + logicalLinks = [];//logicalLinks接口返回的已有的连线数据 + linkName=null;//连线的名字link-name + networkOption = [];//表单network下拉选框填充的数据 + nodeOption1 = {};//node下拉选框填充的数据 + tpOption1 = [];//node下拉选框填充的数据 + tpOption2 = [];//node下拉选框填充的数据 + networkVal1 = null;//network1下拉框默认数据 + networkVal2 = null;//network2下拉框默认数据 + selectedNode1 = null;//node1下拉框默认数据 + selectedNode2 = null;//node2下拉框默认数据 + selecteTpName1 = null;//TP1下拉框默认数据 + selecteTpName2 = null;//TP2下拉框默认数据 + cloudUrl = null;//外部云URL地址 + cloudNetwork = null;//外部云network名称 + cloudNode = null;//外部云Node名称 + cloudTp = null;//外部云Tp名称 + dataCloud=[];//外部云的信息 + dataCloudLink=[]; + aaiId=""; + charge=-200; + + //删除连线时 右侧框显示的数据 + delLinkname=null; + delNetwork1 = null; + delNode1 = null; + delTp1 = null; + delcloudUrl = null; + delNetwork2 = null; + delNode2 = null; + delTp2 = null; + delVersion = null; + delLinkIndex = null; + network = []; + delcloud = false; + + winWidth = $('.content').width(); + winHeight = $('.content').height(); + + + imgmap = { + '1': '../assets/images/cloud-county1.png', + '2': '../assets/images/cloud-city1.png', + '3': '../assets/images/cloud-out.png', + }; + tpoption = { + container: '#tpContainer', + data: '', + width: 1000, + height: this.winHeight + }; + + showForm(): void { + if (this.addLinkDisabled == false) { + this.isVisible = true; + this.delBoxisVisible = false; + } + } + + hideForm(): void { + this.isVisible = false; + this.delBoxisVisible = false; + this.linkName=null; + this.networkVal1 = null;//初始化network1下拉框默认数据 + this.networkVal2 = null;//初始化network2下拉框默认数据 + this.selectedNode1 = null;//初始化node1下拉框默认数据 + this.selectedNode2 = null;//初始化node2下拉框默认数据 + this.selecteTpName1 = null;//初始化TP1下拉框默认数据 + this.selecteTpName2 = null;//初始化TP2下拉框默认数据 + // this.localUrl=null;//本地云URL地址 + this.cloudUrl = null;//外部云URL地址 + this.cloudNetwork = null;//外部云network名称 + this.cloudNode = null;//外部云Node名称 + this.cloudTp = null;//外部云Tp名称 + } + + + tpName=null; + tpNameStyle = { + 'display':'none', + 'left':'0', + 'top':'0' + }; + showtp($event,item){ + console.log(111111111) + this.tpName = item; + this.tpNameStyle.display = 'block'; + } + movetp($event,item){ + this.tpNameStyle.left = $event.clientX + "px"; + this.tpNameStyle.top = $event.clientY - 35 + "px"; + } + hidetp($event){ + this.tpNameStyle.display = 'none'; + } + + //获取云图数据 + getD3Data() { + this.myhttp.getNetworkD3Data() + .subscribe((data) => { + if(data.length==0){ + this.addLinkDisabled = false; + return; + }; + for(let ii=0;ii<data.length;ii++){ + if(data[ii]["aaiId"]!=""){ + this.dataCloud=data.splice(ii,1) + } + } + for (var i = 0; i < data.length; i++) { + let name1 = {}, name2 = {}; + let nodess = []; + name1['name'] = name2['network'] = data[i]['networkId']; + name1['type'] = '1'; + name1['source'] = i; + this.d3Data.push(name1); + for (let c = 0; c < data[i]["pnfs"].length; c++) { + nodess.push(data[i]['pnfs'][c]['pnfName']); + this.nodeOption1[name2['network']] = nodess; + } + this.networkOption.push(name2); + } + console.log(this.networkOption) + for (var i = 0; i < data.length; i++) { + let tp_length = data[i]['tps'].length; + for (var h = 0; h < tp_length; h++) { + let name2 = {}; + let interface_name = data[i]['tps'][h]['interface-name']; + name2['name'] = interface_name; + name2['type'] = '2'; + name2['source'] = i; + this.d3Data.push(name2); + } + } + for (let b = 0; b < this.d3Data.length; b++) { + this.d3Data[b]['target'] = b; + } + this.initPosition(this.d3Data); + setTimeout(this.render(this.d3Data, this.imgmap,this.dataCloud,this.charge,data),0) + }, (err) => { + console.log(err); + }); + + } + + //获取云图初始的连线状态 getlogicalLinksData + getLinksData() { + this.myhttp.getLogicalLinksData() + .subscribe((data) => { + console.log(data["status"]) + if (data["status"]=="FAILED") { + return; + } + for (let i = 0; i < data["logical-link"].length; i++) { + if(data["logical-link"][i]["relationship-list"]["relationship"].length>2){ + this.dataCloudLink=data["logical-link"].splice(i,1); + } + } + console.log(this.dataCloudLink) + for (let i = 0; i < data["logical-link"].length; i++) { + let textval = []; + textval[0] = data['logical-link'][i]['relationship-list']['relationship'][0]['relationship-data'][1]['relationship-value'];//tp1 + textval[1] = data['logical-link'][i]['relationship-list']['relationship'][1]['relationship-data'][1]['relationship-value'];//tp2 + textval[2] = data['logical-link'][i]['resource-version'];//version + textval[3] = data['logical-link'][i]['relationship-list']['relationship'][0]['relationship-data'][0]['relationship-value'];//node1 + textval[4] = data['logical-link'][i]['relationship-list']['relationship'][1]['relationship-data'][0]['relationship-value'];//node2 + textval[5] = data['logical-link'][i]['operational-status']; + textval[6] = data['logical-link'][i]['link-name']; + this.logicalLinks.push(textval); + this.chose(textval); + } + if(this.dataCloudLink.length>0){ + this.getcloudLine(this.dataCloudLink) + } + }, (err) => { + console.log(err); + }); + } + + //D3云图渲染 + render(nodes, imgmap,dataCloud,charge,dataD3) { + var thiss = this; + var _this = this.tpoption, + width = null, + height = _this.height; + if (_this.width > 800) { + width = _this.width; + } else { + width = 800; + } + + var str=""; + for(var i=0;i<10;i++){ + str+="<div>这是div"+i+"</div>" + } + + if(dataD3.length<=4){ + charge=-850; + }else if(dataD3.length>4 && dataD3.length<=6) { + charge=-700; + }else if(dataD3.length>6 && dataD3.length<=10) { + charge=-600; + }else { + charge=-150; + } + var svg = d3.select(_this.container).append('svg') + .attr('width', width) + .attr('height', height) + .attr('id', 'content-svg') + .style('pointer-events', 'all'), + graph = svg.append('g').attr('class', 'graph').attr('id', 'graph'), + + _g_nodes = graph.selectAll('g.node') + .data(nodes) + .enter() + .append('g') + .style('display', function (d) { + var display = 'block'; + switch (d.type) { + case '1': + display = 'none'; + break; + case '2': + display = 'none'; + break; + default: + break; + } + return display; + }) + .style('cursor', 'pointer') + .attr('class', 'node'), + + _g_lines = graph.selectAll('line.line') + .data(nodes) + .enter() + .append('g') + .style('display', 'none') + .attr('class', 'line'); + + + _g_lines.append('line') + .style('stroke', '#93c62d' + ) + .style('stroke-width', 2); + + _g_nodes.append('image') + .attr('width', function (d) { + var width = 40; + switch (d.type) { + case '1': + width = 4.4 * width; + break; + case '2': + width = 0.12 * width; + break; + default: + break; + } + return width; + }) + .attr('height', function (d) { + var height = 20; + switch (d.type) { + case '1': + height = 3.5 * height; + break; + case '2': + height = 0.2 * height; + break; + default: + break; + } + return height; + }) + .attr('xlink:href', function (d) { + return imgmap[d.type]; + }); + + _g_nodes.append('text') + .text(function (d) { + return d.name; + }) + .style('transform', function (d) { + var x = null; + var y = null; + switch (d.type) { + case '1': + x = 7; + y = -7; + break; + case '2': + x = 1; + y = -2; + break; + default: + break; + } + return 'translate(' + x + '%,' + y + '%)'; + }) + .style('font-size', function (d) { + var size = 14; + switch (d.type) { + case '1': + size = 14; + break; + case '2': + size = 12; + break; + default: + break; + } + return size; + }) + .style('fill', function (d) { + var color = '#666'; + switch (d.type) { + case '1': + color = '#666'; + break; + case '2': + color = '#666'; + break; + default: + break; + } + return color; + }) + .style('font-weight', '500'); + + + //线上添加自定义属性 + _g_lines.each(function (d, i) { + var _this = d3.select(this); + if (d.name) { + _this.attr('data-text', d.name); + } + }); + var force = d3.layout.force() + .size([1000,this.winHeight]) + .linkDistance(5) + // .theta(0) + .charge(charge) + .nodes(nodes) + .links(nodes) + .start(); + // let distanceMax2=1; + // force.distanceMax = function(_) { + // return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2); + // }; + //添加拖拽行为 + // _g_nodes.call(this.getDragBehavior(force)); + + + force.on('tick', function (d) { + nodes.forEach(function(d,i){ + + d.x = d.x - 25 < 0 ? 25 : d.x ; + d.x = d.x + 25 > width ? width - 25 : d.x ; + d.y = d.y - 15 < 0 ? 15 : d.y ; + d.y = d.y + 15> height ? height - 15 : d.y ; + }); + if(force.alpha()<=0.1){ + + + _g_nodes.style('display', function (d) { + + + var display = 'block'; + switch (d.type) { + case '1': + display = 'block'; + break; + case '2': + display = 'none'; + break; + default: + break; + } + return display; + }); + + _g_lines.select('line') + .attr('x1', function (d) { + return d.source.x; + }) + .attr('y1', function (d) { + return d.source.y; + }) + .attr('x2', function (d) { + return d.target.x; + }) + .attr('y2', function (d) { + return d.target.y; + }); + + _g_nodes.attr('transform', function (d) { + // console.log(d) + // if(d["type"]==1){ + // d["x"]=400; + // d["y"]=400; + // }else { + // d["x"]=d["x"]; + // d["y"]=d["y"] + // } + var image = d3.select(this).select('image')[0][0], + halfWidth = parseFloat(image.attributes[0]['value']) / 2, + halfHeight = parseFloat(image.attributes[1]['value']) / 2; + + + return 'translate(' + (d.x - halfWidth) + ',' + (d.y - halfHeight) + ')'; + }); + + _g_nodes.select('text').attr('dy', function (d) { + var image = this.previousSibling, + height = parseFloat(image.attributes[1]['value']), + fontSize = 12; + return height + 1.5 * fontSize; + }); + + + } + + }); + + force.on('end', function () { + + force.stop(); + if(dataCloud.length>0){ + thiss.getoutCloud(dataCloud,imgmap); + } + thiss.getLinksData(); + thiss.addLinkDisabled = false; + }); + + }; + + //拓扑图拖拽效果 + getDragBehavior(force) { + + return d3.behavior.drag() + .origin(function (d) { + return d; + }) + .on('dragstart', dragstart) + .on('drag', dragging) + .on('dragend', dragend); + + function dragstart(d) { + d3.event.sourceEvent.stopPropagation(); + d3.select(this).classed('dragging', true); + force.start(); + } + + function dragging(d) { + d.x = d3.event.x; + d.y = d3.event.y; + } + + function dragend(d) { + d3.select(this).classed('dragging', false); + } + + } + + //初始化节点位置 + initPosition(datas) { + let origin = [this.tpoption.width / 2, this.tpoption.height / 2]; + let points = this.getVertices(origin, Math.min(this.tpoption.width/2, this.tpoption.height/2), datas.length); + datas.forEach((item, i) => { + item.x = points[i].x; + item.y = points[i].y; + }); + } + + //根据多边形获取定位点 + getVertices(origin, r, n) { + if (typeof n !== 'number') return; + var ox = origin[0]; + var oy = origin[1]; + var angle = 30 * n / n; + var i = 0; + var points = []; + var tempAngle = 0; + while (i < n) { + tempAngle = (i * angle * Math.PI) / 180; + points.push({ + x: ox - r * Math.sin(tempAngle), + y: oy - r * Math.cos(tempAngle), + }); + i++; + } + return points; + } + + //渲染外部云 + getoutCloud(dataCloud,imgmap) { + var _this = this, + width; + let networkId=dataCloud[0]["networkId"]; + if (_this.tpoption.width > 800) { + width = _this.tpoption.width; + } else { + width = 800; + } + var svg = d3.select('#content-svg'); + svg.append('g').attr('class', 'out').attr('id', 'out').style({'display': 'block'}).attr('transform', 'translate(' + (width - 200) + ',0)'); + var out = d3.select('#out'); + out.append('image').style('width', '200').style('height', '118').attr('xlink:href', imgmap['3']); + out.append('text').text(networkId) + .style('transform', 'translate(0,0)') + .style('font-size', '16') + .style('font-weight', '400') + .attr('dx', '40') + .attr('dy', '70') + .style('fill', '#666'); + } + + //外部云连接 + getcloudLine(dataCloudLink) { + let textval = []; + textval[0] = dataCloudLink[0]['relationship-list']['relationship'][0]['relationship-data'][1]['relationship-value'];//tp1 + textval[1] = dataCloudLink[0]['relationship-list']['relationship'][1]['relationship-data'][1]['relationship-value'];//tp2 + textval[2] = dataCloudLink[0]['resource-version'];//version + textval[3] = dataCloudLink[0]['relationship-list']['relationship'][0]['relationship-data'][0]['relationship-value'];//node1 + textval[4] = dataCloudLink[0]['relationship-list']['relationship'][1]['relationship-data'][0]['relationship-value'];//node2 + textval[5] = dataCloudLink[0]['operational-status'];//status + textval[6] = dataCloudLink[0]['relationship-list']['relationship'][2]['relationship-data'][0]['relationship-value'];//aaiId + textval[7] =this.dataCloud[0]["networkId"]; + console.log(this.dataCloud); + let dataD3=this.d3Data; + for (let p = 0; p < dataD3.length; p++) {//判断两个tp端口分别属于哪个Domain network + if (dataD3[p]['name'] == textval[0]) { + textval[8] =dataD3[p]['source']['name'];//network1 + } + } + textval[9] =dataCloudLink[0]["link-name"]; + + let lines_json = {}; + var _this = this, + width; + if (_this.tpoption.width > 800) { + width = _this.tpoption.width; + } else { + width = 800; + } + for (let i = 0; i < $(".node").length; i++) { + if ($('.node').eq(i).find('text').html() == textval[0]) { + //获取二级的x,y坐标 + $('.node').eq(i).show(); + var translates = $('.node').eq(i).css('transform'); + lines_json['x1'] = parseFloat(translates.substring(7).split(',')[4]); + lines_json['y1'] = parseFloat(translates.substring(7).split(',')[5]); + lines_json['x2'] = width - 100; + lines_json['y2'] = 100; + } + } + var x1 = lines_json['x1']; + var y1 = lines_json['y1']; + var x2 = lines_json['x2']; + var y2 = lines_json['y2']; + var color='#14bb58'; + if(textval[5]=="up"){ + color='#14bb58'; + }else { + color='red'; + } + var line = "<line class='line cloudline ' stroke='"+color+"' stroke-width='2' style='cursor:pointer'></line>"; + var svg = d3.select('#graph'); + $(".cloudline").remove(); + $('#graph').prepend(line); + $('.cloudline').attr({ + x1: x1 + 100, + y1: y1 + 10, + x2: x2, + y2: y2, + 'data-tp1': textval[0], + 'data-tp2': textval[1], + 'data-version': textval[2], + 'data-node1':textval[3], + 'data-node2':textval[4], + 'data-network':textval[8], + 'data-cloudnetwork':textval[7], + 'data-url':"", + 'data-aaiid':textval[6], + "data-link":textval[9] + }); + svg.html(svg.html()); + } + + //查询外部云host url地址 + getCloudUrl(aaiId,thisNg){ + this.myhttp.queryCloudUrl(aaiId) + .subscribe((data) => { + thisNg.delcloudUrl=data["service-url"]; + }, (err) => { + console.log(err); + }); + } + + + //右侧表单下拉选框数据填充 三级联动 + //Left Port + network1Change(value: string): void { + this.selectedNode1 = this.nodeOption1[value][0]; + this.getPInterfaces1(); + } + + node1Change(): void { + this.getPInterfaces1(); + } + + //获取指定node下的TP数据 + getPInterfaces1() { + let params = { + pnfName: this.selectedNode1, + }; + this.myhttp.getPInterfacesData1(params) + .subscribe((data) => { + this.tpOption1 = []; + for (let i = 0; i < data.length; i++) { + let tpName = data[i]['interface-name']; + this.tpOption1.push(tpName); + } + this.selecteTpName1 = this.tpOption1[0]; + }, (err) => { + // console.log(err); + }); + } + + //Right Port + network2Change(value: string): void { + this.selectedNode2 = this.nodeOption1[value][0]; + this.getPInterfaces2(); + } + + node2Change(): void { + this.getPInterfaces2(); + } + + //获取指定node下的TP数据 + getPInterfaces2() { + let params = { + pnfName: this.selectedNode2, + }; + this.myhttp.getPInterfacesData2(params) + .subscribe((data) => { + this.tpOption2 = []; + for (let i = 0; i < data.length; i++) { + let tpName = data[i]['interface-name']; + this.tpOption2.push(tpName); + } + this.selecteTpName2 = this.tpOption2[0]; + }, (err) => { + // console.log(err); + }); + } + + //提交表单,连线 + submitForm(): void { + //当页面ONAP未选中,即本地云端TP连线 + var _thiss = this; + if (this.inputshow == false) { + if (this.linkName == null || this.networkVal1 == null || this.selectedNode1 == null || this.selecteTpName1 == null || this.networkVal2 == null || this.selectedNode2 == null || this.selecteTpName2 == null) { + alert('服务端口不能为空,请选择端口信息'); + return; + } else if (this.networkVal1 == this.networkVal2) { + alert('同一云服务下的TP端口不能相连!'); + return; + } + let tp_links = [], + tp1 = this.selecteTpName1, + tp2 = this.selecteTpName2; + for (let i = 0; i < $(".line-local").length; i++) { + let data_text1 = $('.line-local').eq(i).attr('data-tp1'); + let data_text2 = $('.line-local').eq(i).attr('data-tp2'); + tp_links.push(data_text1); + tp_links.push(data_text2); + } + if (tp_links.indexOf(tp1) != -1 || tp_links.indexOf(tp2) != -1) { + alert('此端口号连线已存在!'); + return; + } + this.createTpLinks(); + + } else { + //当页面ONAP选中,即创建外部云,连线 + if (this.linkName == null || this.networkVal1 == null || this.selectedNode1 == null || this.selecteTpName1 == null || this.cloudUrl == null || this.cloudNetwork == null || this.cloudNode == null || this.cloudTp == null) { + alert('服务端口信息不能为空,请填写完整的端口信息'); + return; + } + let tp_links = [], + tp1 = this.selecteTpName1; + for (let i = 0; i < $(".line-local").length; i++) { + let data_text1 = $('.line-local').eq(i).attr('data-tp1'); + tp_links.push(data_text1); + } + if (tp_links.indexOf(tp1) != -1) { + alert('此端口号连线已存在!'); + return; + } + Promise + .all([this.createCloudNetwork(), this.createPnfs(), this.createCloudTp(), this.createCloudLinks()]) + .then(function (results) { + console.log(results); + if (results.indexOf('FAIL') == -1) { + // _thiss.queryOutCloudLink(); + _thiss.outCloudShow = true; + _thiss.outCloud(_thiss.imgmap); + setTimeout(_thiss.cloudLine(_thiss.networkVal1, _thiss.selectedNode1, _thiss.selecteTpName1, _thiss.cloudUrl, _thiss.cloudNetwork, _thiss.cloudNode, _thiss.cloudTp, 121211,"up",_thiss.linkName), 0); + _thiss.hideForm(); + } else { + console.log('失败'); + } + }); + + } + } + + //创建tp连线 调用接口createLink + createTpLinks() { + let params = { + 'link-name': this.linkName, + 'in-maint': false, + 'link-type': 'cross-link', + 'speed-value': '10000', + 'operational-status': 'up', + 'relationship-list': { + 'relationship': [ + { + 'related-to': this.selecteTpName1, + 'related-link': '/aai/v13/network/pnfs/pnf/' + this.selectedNode1 + '/p-interfaces/p-interface/' + this.selecteTpName1 + }, + { + 'related-to': this.selecteTpName2, + 'related-link': '/aai/v13/network/pnfs/pnf/' + this.selectedNode2 + '/p-interfaces/p-interface/' + this.selecteTpName2 + } + ] + } + }; + this.myhttp.createLink(params) + .subscribe((data) => { + if (data["status"] == 'SUCCESS') { + this.queryAddLink(); + } + }, (err) => { + // console.log(err); + alert('系统忙,连接失败!'); + }); + } + + //创建tp连接线后马上查询新增的连线 + queryAddLink() { + let linkName=this.linkName, + selecteTpName1 = this.selecteTpName1, + selecteTpName2 = this.selecteTpName2, + selectedNode1 = this.selectedNode1, + selectedNode2 = this.selectedNode2; + let params = { + 'link-name': selecteTpName1 + '_' + selecteTpName2, + }; + this.myhttp.querySpecificLinkInfo(params) + .subscribe((data) => { + let version = data['resource-version'], + operational_status = data['operational-status']; + let textval = [selecteTpName1, selecteTpName2, version, selectedNode1, selectedNode2, operational_status,linkName]; + this.hideForm(); + this.chose(textval); + }, (err) => { + // console.log(err); + alert('系统忙,连接失败!'); + }); + } + + //两个TP之间的连线 坐标获取 + chose(textval) { + var lines_json = {}; + lines_json['tp1'] = textval[0]; + lines_json['tp2'] = textval[1]; + lines_json['version'] = textval[2]; + lines_json['node1'] = textval[3]; + lines_json['node2'] = textval[4]; + lines_json['status'] = textval[5]; + lines_json['linkname'] = textval[6]; + for (let i = 0; i < $(".node").length; i++) { + if ($('.node').eq(i).find('text').html() == textval[0]) { + $('.node').eq(i).show(); + //获取二级的x,y坐标 + var translates = $('.node').eq(i).css('transform'); + lines_json['x1'] = parseFloat(translates.substring(7).split(',')[4]); + lines_json['y1'] = parseFloat(translates.substring(7).split(',')[5]); + } + if ($('.node').eq(i).find('text').html() == textval[1]) { + $('.node').eq(i).show(); + var translates = $('.node').eq(i).css('transform'); + lines_json['x2'] = parseFloat(translates.substring(7).split(',')[4]); + lines_json['y2'] = parseFloat(translates.substring(7).split(',')[5]); + } + } + + this.addLine(lines_json); + } + + //两个TP之间的连线 连线渲染 + addLine(lines) { + let tp1 = lines.tp1; + let tp2 = lines.tp2; + let version = lines.version; + let node1 = lines.node1; + let node2 = lines.node2; + let status = lines.status; + let linkname = lines.linkname; + let x1 = lines.x1; + let y1 = lines.y1 + 5; + let x2 = lines.x2; + let y2 = lines.y2 + 5; + let color = '#14bb58'; + if (status == 'up') { + color = '#14bb58'; + } else { + color = 'red'; + } + let line = '<line class=\'line line-local \' stroke=\'' + color + '\' stroke-width=\'2\' style=\'cursor:pointer\'></line>'; + let svg = d3.select('#graph'); + $('#graph').prepend(line); + $('.line').first().attr({ + x1: x1, + y1: y1, + x2: x2, + y2: y2, + 'data-tp1': tp1, + 'data-tp2': tp2, + 'data-version': version, + 'data-node1': node1, + 'data-node2': node2, + "data-link":linkname + }); + svg.html(svg.html()); + } + + //创建外部云连线后,马上查询连线 + queryOutCloudLink() { + let networkVal1 = this.networkVal1, + selectedNode1 = this.selectedNode1, + selecteTpName1 = this.selecteTpName1, + cloudUrl = this.cloudUrl, + cloudNetWork = this.cloudNetwork, + cloudNode = this.cloudNode, + cloudTp = this.cloudTp, + linkname=this.linkName; + let params = { + 'link-name': linkname, + }; + this.myhttp.querySpecificLinkInfo(params) + .subscribe((data) => { + let version = data['resource-version']; + let status = data['operational-status']; + let link_name = data['link-name']; + this.outCloudShow = true; + this.outCloud(this.imgmap); + setTimeout(this.cloudLine(networkVal1, selectedNode1, selecteTpName1, cloudUrl, cloudNetWork, cloudNode, cloudTp, version,status,link_name), 0); + }, (err) => { + // console.log(err); + alert('系统忙,连接失败!'); + }); + } + + //新增外部云 + outCloud(imgmap) { + var _this = this, + width; + if (_this.tpoption.width > 800) { + width = _this.tpoption.width; + } else { + width = 800; + } + var svg = d3.select('#content-svg'); + svg.append('g').attr('class', 'out').attr('id', 'out').style({'display': 'block'}).attr('transform', 'translate(' + (width - 200) + ',0)'); + var out = d3.select('#out'); + out.append('image').style('width', '200').style('height', '118').attr('xlink:href', imgmap['3']); + out.append('text').text('Partner Network') + .style('transform', 'translate(0,0)') + .style('font-size', '16') + .style('font-weight', 'bold') + .attr('dx', '40') + .attr('dy', '70') + .style('fill', '#fff'); + } + + //新增 外部云连接 + cloudLine(networkVal1, selectedNode1, selecteTpName1, cloudUrl, cloudNetWork, cloudNode, cloudTp, version,status,link_name) { + let lines_json = {}; + var _this = this, + width; + if (_this.tpoption.width > 800) { + width = _this.tpoption.width; + } else { + width = 800; + } + for (let i = 0; i < $(".node").length; i++) { + if ($('.node').eq(i).find('text').html() == networkVal1) { + //获取二级的x,y坐标 + var translates = $('.node').eq(i).css('transform'); + lines_json['x1'] = parseFloat(translates.substring(7).split(',')[4]); + lines_json['y1'] = parseFloat(translates.substring(7).split(',')[5]); + lines_json['x2'] = width - 100; + lines_json['y2'] = 100; + } + } + var x1 = lines_json['x1']; + var y1 = lines_json['y1']; + var x2 = lines_json['x2']; + var y2 = lines_json['y2']; + var color='#14bb58'; + if(status=="up"){ + color='#14bb58'; + }else { + color='red'; + } + var line = "<line class='line cloudline ' stroke='"+color+"' stroke-width='2' style='cursor:pointer'></line>"; + var svg = d3.select('#graph'); + $(".cloudline").remove(); + $('#graph').prepend(line); + $('.cloudline').attr({ + x1: x1 + 100, + y1: y1 + 10, + x2: x2, + y2: y2, + 'data-tp1': selecteTpName1, + 'data-tp2': cloudTp, + 'data-version': version, + 'data-node1':selectedNode1, + 'data-node2':cloudNode, + 'data-network':networkVal1, + 'data-cloudnetwork':cloudNetWork, + 'data-url':cloudUrl, + "data-link":link_name + }); + svg.html(svg.html()); + } + + //创建外部云,连线时调用以下4个接口:createCloudNetwork,createPnfs,createCloudTp,createCloudLinks + createCloudNetwork() { + let _thiss = this; + let params = { + 'selflink': this.cloudUrl, + 'network-id': this.cloudNetwork, + 'provider-id': '', + 'client-id': '', + 'te-topo-id': '' + }; + var pro = new Promise(function (resolve, reject) { + //做一些异步操作 + _thiss.myhttp.createNetwrok(params) + .subscribe((data) => { + resolve(data["status"]); + }, (err) => { + console.log(err); + }); + }); + return pro; + } + + createPnfs() { + let _thiss = this; + let params= { + "pnf-name": this.cloudNode, + "pnf-id": "", + "in-maint": "", + "admin-status": "up", + "operational-status": "up", + "relationship-list": { + "relationship": { + "related-to": "network-resource", + "relationship-label": "tosca.relationships.network.LinksTo", + "related-link": "/aai/v13/network/network-resources/network-resource/"+this.cloudNetwork, + "relationship-data": { + "relationship-key": "network-resource.network-id", + "relationship-value": this.cloudNetwork + } + } + } + }; + var pro = new Promise(function (resolve, reject) { + //做一些异步操作 + _thiss.myhttp.createNetwrok(params) + .subscribe((data) => { + resolve(data["status"]); + }, (err) => { + console.log(err); + }); + }); + return pro; + } + + createCloudTp() { + let _thiss = this; + let params= { + "interface-name": this.cloudTp, + "speed-value": "100000", + "in-maint": "true", + "network-ref": "", + "transparent": "", + "operational-status": "up", + }; + let cloudNodeName=this.cloudNode; + + var pro = new Promise(function (resolve, reject) { + //做一些异步操作 + _thiss.myhttp.createTp(params,cloudNodeName) + .subscribe((data) => { + resolve(data["status"]); + }, (err) => { + // console.log(err); + }); + }); + return pro; + } + + createCloudLinks() { + let _thiss = this; + let params={ + "link-name": this.linkName, + "in-maint": "", + "link-type": "", + "speed-value": "", + "relationship-list": { + "relationship" : [ + { + "related-to": this.selecteTpName1, + "related-link": "/aai/v13/network/pnfs/pnf/"+this.selectedNode1+"/p-interfaces/p-interface/"+this.selecteTpName1 + }, + { + "related-to": this.cloudTp, + "related-link": "/aai/v13/network/pnfs/pnf/"+this.cloudNode+"/p-interfaces/p-interface/"+this.cloudTp + } + ] + } + }; + var pro = new Promise(function (resolve, reject) { + //做一些异步操作 + _thiss.myhttp.createCloudLink(params) + .subscribe((data) => { + resolve(data["status"]); + }, (err) => { + // console.log(err); + }); + }); + return pro; + } + + //本地云TP端口 删除连线 调用接口deleteLink + delLink(): void { + let deltp1 = this.delTp1, + deltp2 = this.delTp2, + version = this.delVersion, + delLinkIndex = this.delLinkIndex; + let params = { + 'logical-link': this.delLinkname, + 'resource-version': version, + }; + this.myhttp.deleteLink(params) + .subscribe((data) => { + if (data["status"] == 'SUCCESS') { + this.delLine(deltp1, deltp2); + console.log(delLinkIndex) + delLinkIndex.remove(); + } + }, (err) => { + console.log(err); + }); + } + + delLine(val1, val2) { + for (let i = 0; i < $(".node").length; i++) { + if ($('.node').eq(i).find('text').html() == val1) { + $('.node').eq(i).hide(); + } + if ($('.node').eq(i).find('text').html() == val2) { + $('.node').eq(i).hide(); + } + } + this.delBoxisVisible = false; + } + + //外部云 删除连线 调用接口deleteCloudLine + delCloudLink() : void { + let deltp1 = this.delTp1, + deltp2 = this.delTp2, + version = this.delVersion; + let params = { + 'logical-link': this.delLinkname, + 'resource-version': version, + }; + this.myhttp.deleteLink(params) + .subscribe((data) => { + console.log(data) + if (data["status"] == 'SUCCESS') { + this.delLine(deltp1, deltp2); + $('.cloudline').remove(); + } + }, (err) => { + console.log(err); + }); + } + +} diff --git a/usecaseui-portal/src/app/components/charts/bar/bar.component.html b/usecaseui-portal/src/app/components/charts/bar/bar.component.html new file mode 100644 index 00000000..a7cd0677 --- /dev/null +++ b/usecaseui-portal/src/app/components/charts/bar/bar.component.html @@ -0,0 +1,18 @@ +<!-- + Copyright (C) 2018 CMCC, Inc. and others. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<p> + bar works! +</p> diff --git a/usecaseui-portal/src/app/components/charts/bar/bar.component.less b/usecaseui-portal/src/app/components/charts/bar/bar.component.less new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/usecaseui-portal/src/app/components/charts/bar/bar.component.less diff --git a/usecaseui-portal/src/app/components/charts/bar/bar.component.spec.ts b/usecaseui-portal/src/app/components/charts/bar/bar.component.spec.ts new file mode 100644 index 00000000..d979ffb6 --- /dev/null +++ b/usecaseui-portal/src/app/components/charts/bar/bar.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BarComponent } from './bar.component'; + +describe('BarComponent', () => { + let component: BarComponent; + let fixture: ComponentFixture<BarComponent>; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ BarComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BarComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/usecaseui-portal/src/app/components/charts/bar/bar.component.ts b/usecaseui-portal/src/app/components/charts/bar/bar.component.ts new file mode 100644 index 00000000..fa9ecbbd --- /dev/null +++ b/usecaseui-portal/src/app/components/charts/bar/bar.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-bar', + templateUrl: './bar.component.html', + styleUrls: ['./bar.component.less'] +}) +export class BarComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/usecaseui-portal/src/app/components/charts/line/line.component.html b/usecaseui-portal/src/app/components/charts/line/line.component.html new file mode 100644 index 00000000..9a43e28c --- /dev/null +++ b/usecaseui-portal/src/app/components/charts/line/line.component.html @@ -0,0 +1,22 @@ +<!-- + Copyright (C) 2018 CMCC, Inc. and others. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<div echarts +[initOpts]="initOpts" +[options]="lineOption" +[merge]="updateOption" +(chartInit)="chartInit($event)"> + Line Chart +</div> diff --git a/usecaseui-portal/src/app/components/charts/line/line.component.less b/usecaseui-portal/src/app/components/charts/line/line.component.less new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/usecaseui-portal/src/app/components/charts/line/line.component.less diff --git a/usecaseui-portal/src/app/components/charts/line/line.component.spec.ts b/usecaseui-portal/src/app/components/charts/line/line.component.spec.ts new file mode 100644 index 00000000..afe70654 --- /dev/null +++ b/usecaseui-portal/src/app/components/charts/line/line.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { LineComponent } from './line.component'; + +describe('LineComponent', () => { + let component: LineComponent; + let fixture: ComponentFixture<LineComponent>; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ LineComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(LineComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/usecaseui-portal/src/app/components/charts/line/line.component.ts b/usecaseui-portal/src/app/components/charts/line/line.component.ts new file mode 100644 index 00000000..8bc8ebd8 --- /dev/null +++ b/usecaseui-portal/src/app/components/charts/line/line.component.ts @@ -0,0 +1,79 @@ +import { Component, OnInit, Input } from '@angular/core'; +import { SimpleChanges } from '@angular/core/src/metadata/lifecycle_hooks'; + +@Component({ + selector: 'app-line', + templateUrl: './line.component.html', + styleUrls: ['./line.component.less'] +}) +export class LineComponent implements OnInit { + // 图形数据 + @Input() chartData; + // 初始化数据 + @Input() initData; + + constructor() { } + + ngOnInit() { + this.initOpts = { + renderer: 'canvas', + height: this.initData.height, + width: this.initData.width + }; + this.lineOption ={ + tooltip : this.initData.option.tooltip, + icon:'circle', + legend: this.initData.option.legend, + grid: { + left: '1%', + right: '3%', + top: '10%', + bottom: '10%', + containLabel: true + }, + xAxis: { + axisTick: { + show: false, + }, + axisLine:{ + show: false + }, + data: ['01','02','04','06','08','10','12','14','16','18','20','22','24'] + }, + yAxis: { + axisTick: { + show: false, + }, + axisLine:{ + show: false + } + }, + series : this.initData.option.series + } + } + + ngOnChanges(changes:SimpleChanges){ + + // 当有实例的时候再执行,相当于第一次不执行下面方法 + if(this.chartIntance){ + this.chartDataChange() + } + } + // 初始化图形高度 + initOpts:any; + // 折线图配置 + lineOption:any; + // 实例对象 + chartIntance:any; + // 数据变化 + updateOption:any; + chartDataChange(){ + this.updateOption = this.chartData; + } + chartInit(chart){ + this.chartIntance = chart; + } + + + +} diff --git a/usecaseui-portal/src/app/components/charts/pie/pie.component.html b/usecaseui-portal/src/app/components/charts/pie/pie.component.html new file mode 100644 index 00000000..5f1e94ce --- /dev/null +++ b/usecaseui-portal/src/app/components/charts/pie/pie.component.html @@ -0,0 +1,24 @@ +<!-- + Copyright (C) 2018 CMCC, Inc. and others. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<div echarts +[initOpts]="initOpts" +[options]="pieOption" +[merge]="updateOption" +(chartInit)="chartInit($event)" +(chartMouseOver)="pieMouseOver($event)" +(chartMouseOut)="pieMouseOut($event)"> + Pie Chart +</div>
\ No newline at end of file diff --git a/usecaseui-portal/src/app/components/charts/pie/pie.component.less b/usecaseui-portal/src/app/components/charts/pie/pie.component.less new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/usecaseui-portal/src/app/components/charts/pie/pie.component.less diff --git a/usecaseui-portal/src/app/components/charts/pie/pie.component.spec.ts b/usecaseui-portal/src/app/components/charts/pie/pie.component.spec.ts new file mode 100644 index 00000000..528da25c --- /dev/null +++ b/usecaseui-portal/src/app/components/charts/pie/pie.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { PieComponent } from './pie.component'; + +describe('PieComponent', () => { + let component: PieComponent; + let fixture: ComponentFixture<PieComponent>; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ PieComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(PieComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/usecaseui-portal/src/app/components/charts/pie/pie.component.ts b/usecaseui-portal/src/app/components/charts/pie/pie.component.ts new file mode 100644 index 00000000..8a5e2100 --- /dev/null +++ b/usecaseui-portal/src/app/components/charts/pie/pie.component.ts @@ -0,0 +1,104 @@ +import { Component, OnInit, Input } from '@angular/core'; +import { SimpleChanges } from '@angular/core/src/metadata/lifecycle_hooks'; + +@Component({ + selector: 'app-pie', + templateUrl: './pie.component.html', + styleUrls: ['./pie.component.less'] +}) +export class PieComponent implements OnInit { + // 图形数据 + @Input() chartData; + // 初始化数据 + @Input() initData; + + constructor() { } + + ngOnInit() { + this.initOpts = { + renderer: 'canvas', + height: this.initData.height + }; + this.pieOption = { + legend: this.initData.option.legend, + color:this.initData.option.color, + series : [ + { + name: this.initData.option.series[0].name, + type: 'pie', + radius : this.initData.option.series[0].radius, + center: ['50%', '45%'], + legendHoverLink: false, + hoverOffset: 5, + avoidLabelOverlap: false, + label: this.initData.option.series[0].label, + data:[ + {value:1, name:'11'} + ], + itemStyle: { + emphasis: { + shadowBlur: 5, + shadowOffsetX: 0, + shadowColor: 'rgba(0, 0, 0, 0.5)' + } + } + } + ] + } + } + + ngOnChanges(changes:SimpleChanges){ + + // 当有实例的时候再执行,相当于第一次不执行下面方法 + if(this.chartIntance){ + this.chartDataChange() + } + } + + // 初始化图形高度 + initOpts:any; + // alarm饼图 + pieOption:any; + // 实例对象 + chartIntance:any; + // 数据变化 + updateOption:any; + chartDataChange(){ + this.updateOption = this.chartData; + // 要等到updateOption渲染完再执行 + this.chartIntance.on('finished',()=>{ + this.chartIntance.dispatchAction({ + type:'highlight', + seriesIndex: 0, + dataIndex:0 + }) + // 由于所有视图变化渲染都会执行,更新完注销此事件 + this.chartIntance.off('finished') + }) + } + + chartInit(chart){ + this.chartIntance = chart; + } + + pieMouseOver(e){ + this.chartIntance.dispatchAction({ + type:'downplay' + }) + this.chartIntance.dispatchAction({ + type:'highlight', + seriesIndex: 0, + dataIndex:e.dataIndex + }) + } + + pieMouseOut(e){ + this.chartIntance.dispatchAction({ + type:'highlight', + seriesIndex: 0, + dataIndex:e.dataIndex + }) + } + + +} diff --git a/usecaseui-portal/src/app/components/details/details.component.css b/usecaseui-portal/src/app/components/details/details.component.css new file mode 100644 index 00000000..0d450d28 --- /dev/null +++ b/usecaseui-portal/src/app/components/details/details.component.css @@ -0,0 +1,104 @@ +/* + Copyright (C) 2018 CMCC, Inc. and others. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ +.content .header { + background-color: #fff; + border-radius: 5px; + padding: 30px 28px 0; + position: relative; + margin-bottom: 30px; + border: 1px solid #e4e4e4; +} +.content .header hr { + margin: 0; + border: none; + height: 1px; + background-color: #e4e4e4; +} +.content .header h2 { + font: 700 24px/18px 'Times New Roman'; + color: #3fa8eb; + text-align: center; + margin-bottom: 27px; +} +.content .header span.tildeimg { + position: absolute; + left: 50%; + top: 71px; + width: 60px; + height: 10px; + transform: translate(-30px, 0); + background: url(../../../assets/images/tildeimg.png) no-repeat center center; + background-color: #fff; +} +.content .header .headerlist { + display: flex; +} +.content .header .headerlist div { + width: 100%; +} +.content .header .headerlist div p { + font: 400 14px 'Arial'; + color: #323437; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + margin: 18px 0 15px; +} +.content .header .headerlist div p span { + display: inline-block; + width: 50%; + text-align: right; + font: 700 14px 'Arial'; + color: #3fa8eb; +} +.content hr { + margin: 0; + border: none; + height: 1px; + background-color: #e4e4e4; +} +.content button { + width: 88px; + height: 22px; + position: absolute; + left: 50%; + transform: translate(-44px, 0); + border: none; + outline: none; + cursor: pointer; + background-color: #fff; + background: url(../../../assets/images/open-close2.png) no-repeat center -22px; +} +.content button:hover { + background: url(../../../assets/images/open-close2.png) no-repeat center -66px; +} +.content .buttonActive { + transform: translate(-44px, -22px); + background: url(../../../assets/images/open-close2.png) no-repeat center 0px; +} +.content .buttonActive:hover { + background: url(../../../assets/images/open-close2.png) no-repeat center -44px; +} +.content h2.detailtitle { + font: 700 24px/18px 'Times New Roman'; + color: #3fa8eb; + text-align: center; + margin-bottom: 15px; + padding-top: 25px; +} +.content .detailInformatioin { + overflow: hidden; +} diff --git a/usecaseui-portal/src/app/components/details/details.component.html b/usecaseui-portal/src/app/components/details/details.component.html new file mode 100644 index 00000000..b5c576c7 --- /dev/null +++ b/usecaseui-portal/src/app/components/details/details.component.html @@ -0,0 +1,68 @@ +<!-- + Copyright (C) 2018 CMCC, Inc. and others. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<div class="content"> + <div class="header"> + <h2>HEADER INFORMATION</h2> + <hr> <span class="tildeimg"></span> + <div class="headerlist"> + <div class="leftlist"> + <p> <span>Version :</span> </p> + <p> <span>Domain :</span> </p> + <p> <span>Event Name :</span> Fault_IMSSBC_Backup MPU is down </p> + <p> <span>Event Id :</span> 15105642034 </p> + <p> <span>EventType :</span> </p> + <p> <span>NfcNamingCode :</span> </p> + <p> <span>NfNamingCode :</span> </p> + <p> <span>SourceName :</span> </p> + <p> <span>SourceId :</span> </p> + <p> <span>ReportingEntityName :</span> </p> + <p> <span>ReportingEntityId :</span> </p> + </div> + <div class="rightlist"> + <p> <span>Priority :</span> Normal </p> + <p> <span>ReportTime :</span> </p> + <p> <span>ClearTime :</span> </p> + <p> <span>FaultFieldsVersion :</span> </p> + <p> <span>Event Servrity :</span> </p> + <p> <span>EventSourceType :</span> </p> + <p> <span>EventCategory :</span> </p> + <p> <span>AlarmCondition :</span> </p> + <p> <span>SpecificProblem :</span> </p> + <p> <span>Status :</span> </p> + <p> <span>AlarmInterfaceA :</span> </p> + </div> + </div> + </div> + <hr> + <button [ngClass]="{'buttonActive':moredetailShow}" (click)="slideUpDown()"></button> + <h2 class="detailtitle">DETAIL INFORMATION</h2> + <div class="detailInformatioin" [@slideUpDown]='state'> + <nz-table #detailTable [nzData]="detailData" [nzShowPagination]="false" nzSize="small" [nzBordered]="true"> + <thead> + <tr> + <th nzWidth="18%">Item Name</th> + <th >Item Value</th> + </tr> + </thead> + <tbody> + <tr *ngFor="let data of detailTable.data"> + <td>{{data.name}}</td> + <td>{{data.value}}</td> + </tr> + </tbody> + </nz-table> + </div> +</div> diff --git a/usecaseui-portal/src/app/components/details/details.component.less b/usecaseui-portal/src/app/components/details/details.component.less new file mode 100644 index 00000000..ad81d8a6 --- /dev/null +++ b/usecaseui-portal/src/app/components/details/details.component.less @@ -0,0 +1,96 @@ + +.content { + .header { + background-color: #fff; + border-radius: 5px; + padding: 30px 28px 0; + position: relative; + margin-bottom: 30px; + border: 1px solid #e4e4e4; + hr { + margin: 0; + border: none; + height: 1px; + background-color: #e4e4e4; + } + h2 { + font: 700 24px/18px 'Times New Roman'; + color: #3fa8eb; + text-align: center; + margin-bottom: 27px; + } + span.tildeimg { + position: absolute; + left: 50%; + top: 71px; + width: 60px; + height: 10px; + transform: translate(-30px,0); + background: url(../../../assets/images/tildeimg.png) no-repeat center center; + background-color: #fff; + } + .headerlist { + display: flex; + div { + width: 100%; + p { + font: 400 14px 'Arial'; + color: #323437; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + margin: 18px 0 15px; + span { + display: inline-block; + width: 50%; + text-align: right; + font: 700 14px 'Arial'; + color: #3fa8eb; + } + } + } + } + } + hr { + margin: 0; + border: none; + height: 1px; + background-color: #e4e4e4; + } + button { + width: 88px; + height: 22px; + position: absolute; + left: 50%; + transform: translate(-44px,0); + border: none; + outline: none; + cursor: pointer; + background-color: #fff; + background: url(../../../assets/images/open-close2.png) no-repeat center -22px; + &:hover { + background: url(../../../assets/images/open-close2.png) no-repeat center -66px; + } + } + .buttonActive { + transform: translate(-44px,-22px); + background: url(../../../assets/images/open-close2.png) no-repeat center -0px; + &:hover { + background: url(../../../assets/images/open-close2.png) no-repeat center -44px; + } + } + h2.detailtitle { + font: 700 24px/18px 'Times New Roman'; + color: #3fa8eb; + text-align: center; + margin-bottom: 15px; + padding-top: 25px; + } + .detailInformatioin { + // transition: all 0.3s linear; + overflow: hidden; + } + .detailshow { + + } +}
\ No newline at end of file diff --git a/usecaseui-portal/src/app/components/details/details.component.spec.ts b/usecaseui-portal/src/app/components/details/details.component.spec.ts new file mode 100644 index 00000000..1d5cbeb8 --- /dev/null +++ b/usecaseui-portal/src/app/components/details/details.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DetailsComponent } from './details.component'; + +describe('DetailsComponent', () => { + let component: DetailsComponent; + let fixture: ComponentFixture<DetailsComponent>; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ DetailsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DetailsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/usecaseui-portal/src/app/components/details/details.component.ts b/usecaseui-portal/src/app/components/details/details.component.ts new file mode 100644 index 00000000..f9e6474b --- /dev/null +++ b/usecaseui-portal/src/app/components/details/details.component.ts @@ -0,0 +1,36 @@ +import { Component, OnInit, Input } from '@angular/core'; +import { slideUpDown } from '../../animates'; + +@Component({ + selector: 'app-details', + templateUrl: './details.component.html', + styleUrls: ['./details.component.less'], + animations: [ slideUpDown ] +}) +export class DetailsComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + + ngOnChanges(changes){ + console.log(changes); + } + // 详情显示 + moredetailShow = false; + @Input() detailId; + detailData = [ + {name:"DNS.AttDnsQuery",value:"0"}, + {name:"DNS.SuccDnsQuery",value:"0"}, + {name:"DNS.SuccDnsQuery",value:"0"}, + {name:"DNS.SuccDnsQuery",value:"0"}, + {name:"DNS.SuccDnsQuery",value:"0"}, + {name:"sssssss",value:"1111"}, + ] + state = 'up' + slideUpDown(){ + this.moredetailShow = !this.moredetailShow; + this.state = this.state === 'up' ? 'down' : 'up'; + } +} diff --git a/usecaseui-portal/src/app/components/graphiclist/graphiclist.component.css b/usecaseui-portal/src/app/components/graphiclist/graphiclist.component.css new file mode 100644 index 00000000..7268b5dc --- /dev/null +++ b/usecaseui-portal/src/app/components/graphiclist/graphiclist.component.css @@ -0,0 +1,93 @@ +/* + Copyright (C) 2018 CMCC, Inc. and others. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ +.content .title { + border-radius: 5px 5px 0 0; + background-color: #fff; + height: 106px; + border-bottom: 1px solid #f0f0f0; + margin-bottom: 0; +} +.content .title ul { + display: flex; + display: -webkit-flex; + justify-content: space-around; + align-items: center; + padding: 0; + margin: 0; + height: 100%; +} +.content .title ul li { + list-style: none; + padding-left: 32px; + width: 100%; + border-left: 1px solid #eceff4; +} +.content .title ul li h5 { + font: 500 14px "Arial"; + color: #3d4d65; +} +.content .title ul li p { + font: 500 24px "Arial"; + color: #3fa8eb; + margin-bottom: 0; +} +.content .title ul li:nth-child(1) { + border: none; +} +.content .chart { + background-color: #fff; + position: relative; + border-radius: 5px; + margin-bottom: 20px; + height: 106px; +} +.content .chart .select { + padding: 20px 50px; + width: 70%; + float: left; +} +.content .chart .select nz-dropdown { + margin-right: 20px; +} +.content .chart .select nz-dropdown a { + font: 700 12px "Arial"; + color: #3d4d65; +} +.content .chart .select nz-dropdown a:hover { + color: #3fa8eb; +} +.content .chart .AlarmChart { + width: 25%; + padding-top: 7px; + float: left; +} +.content .tablelist { + background-color: #fff; + padding: 24px 10px 0px; + border-radius: 0 0 5px 5px; +} +.content .tablelist .action { + padding: 10px 0 0 20px; +} +.content .tablelist .action .details { + display: inline-block; + width: 16px; + height: 16px; + background: url(../../../assets/images/icon.png) center -113px; +} +.content .tablelist .action .details:hover { + background: url(../../../assets/images/icon.png) no-repeat center -128px; +} diff --git a/usecaseui-portal/src/app/components/graphiclist/graphiclist.component.html b/usecaseui-portal/src/app/components/graphiclist/graphiclist.component.html new file mode 100644 index 00000000..19c7d853 --- /dev/null +++ b/usecaseui-portal/src/app/components/graphiclist/graphiclist.component.html @@ -0,0 +1,79 @@ +<!-- + Copyright (C) 2018 CMCC, Inc. and others. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<div class="content"> + <!-- <div class="title"> + <ul> + <li><h5>CPU</h5> <p>{{alarmList.all }}</p></li> + <li><h5>Memory</h5> <p>{{alarmList.closed }}</p></li> + <li><h5>Disk</h5> <p>{{alarmList.alarm }}</p></li> + </ul> + </div> --> + <nz-modal nzWrapClassName="vertical-center-modal" [(nzVisible)]="isVisibleMiddle" nzTitle="Alarm Chart" (nzOnCancel)="handleCancelMiddle()" (nzOnOk)="handleOkMiddle()"> + <app-line [initData]="alarmChartInitBig" [chartData]="alarmChartDataBig"></app-line> + </nz-modal> + <div class="chart"> + <div class="select"> + <nz-dropdown [nzTrigger]="'click'"> + <a nz-dropdown> + {{MeasurementSelected}} <i class="anticon anticon-down"></i> + </a> + <ul nz-menu> + <li nz-menu-item (click)="choseMeasurement(item)" *ngFor="let item of MeasurementList">{{item}}</li> + </ul> + </nz-dropdown> + <nz-dropdown [nzTrigger]="'click'"> + <a nz-dropdown> + {{ReportTimeSelected}} <i class="anticon anticon-down"></i> + </a> + <ul nz-menu> + <li nz-menu-item (click)="choseReportTime(item)" *ngFor="let item of ReportTimeList">{{item}}</li> + </ul> + </nz-dropdown> + </div> + <div class="AlarmChart" (click)="showModalMiddle()"> + <app-line [initData]="alarmChartInit" [chartData]="alarmChartData"></app-line> + </div> + <!-- <button class="open-close" [ngClass]="{'open-close-active':alarmShow}" (click)="alarmShow=!alarmShow"></button> --> + </div> + <div class="tablelist"> + <nz-table #nzTable [nzData]="dataSet" [nzPageSize]="10" nzShowSizeChanger [nzPageSizeOptions]="[5,10,15,20]" nzSize="middle"> + <thead (nzSortChange)="sort($event)" nzSingleSort> + <tr> + <th nzWidth="5%">NO</th> + <th nzWidth="20%">Source Name</th> + <th nzWidth="10%">Priority</th> + <th nzWidth="20%">SpecificProblem</th> + <th nzWidth="20%">Report Time</th> + <th nzWidth="15%">Status</th> + <th nzWidth="10%">Action</th> + </tr> + </thead> + <tbody> + <!-- <ng-template ngFor let-data [ngForOf]="nzTable.data" let-i="index"> --> + <tr *ngFor="let item of nzTable.data; let i = index; "> + <td>{{i+1}}</td> + <td>{{item.name}}</td> + <td>{{item.age}}</td> + <td>{{item.address}}</td> + <td>{{item.address}}</td> + <td>{{item.address}}</td> + <td><a class="action" (click)="detailShow(i+1)"><i class="details"></i></a></td> + </tr> + <!-- </ng-template> --> + </tbody> + </nz-table> + </div> +</div> diff --git a/usecaseui-portal/src/app/components/graphiclist/graphiclist.component.less b/usecaseui-portal/src/app/components/graphiclist/graphiclist.component.less new file mode 100644 index 00000000..30fea328 --- /dev/null +++ b/usecaseui-portal/src/app/components/graphiclist/graphiclist.component.less @@ -0,0 +1,108 @@ +.content { + .title { + border-radius: 5px 5px 0 0; + background-color: #fff; + height: 106px; + border-bottom: 1px solid #f0f0f0; + margin-bottom: 0; + ul { + display: flex; + display: -webkit-flex; + justify-content: space-around; + align-items: center; + padding: 0; + margin: 0; + height: 100%; + li { + list-style: none; + padding-left: 32px; + width: 100%; + border-left: 1px solid #eceff4; + h5 { + font: 500 14px "Arial"; + color: #3d4d65; + } + p { + font: 500 24px "Arial"; + color: #3fa8eb; + margin-bottom: 0; + } + } + li:nth-child(1){ + border: none; + } + } + } + .chart { + background-color: #fff; + position: relative; + border-radius: 5px; + margin-bottom: 20px; + height: 106px; + .select { + padding: 20px 50px; + width: 70%; + float: left; + nz-dropdown { + margin-right: 20px; + a { + font: 700 12px "Arial"; + color: #3d4d65; + &:hover { + color: #3fa8eb; + } + } + } + } + .AlarmChart { + // height: 0px; + // border-bottom: 1px solid #f5f5f5; + // transition: all 0.3s linear; + width: 25%; + padding-top: 7px; + float: left; + } + // .alarmChart-active { + // height: 386px; + // } + // .open-close { + // width: 50px; + // height: 25px; + // position: absolute; + // left: 50%; + // bottom: 0px; + // transform: translate(-25px,0); + // border: none; + // outline: none; + // cursor: pointer; + // background-color: #fff; + // background: url(../../../assets/images/open-close.png) no-repeat center -27px; + // &:hover { + // background: url(../../../assets/images/open-close.png) no-repeat center -79px; + // } + // } + // .open-close-active { + // background: url(../../../assets/images/open-close.png) center -1px; + // &:hover { + // background: url(../../../assets/images/open-close.png) no-repeat center -53px; + // } + // } + } + .tablelist { + background-color: #fff; + padding: 24px 10px 0px; + border-radius: 0 0 5px 5px; + .action{ + padding: 10px 0 0 20px; + .details{ + display: inline-block; + width: 16px; + height: 16px; + background: url(../../../assets/images/icon.png) center -113px; + &:hover { + background: url(../../../assets/images/icon.png) no-repeat center -128px; + } + } + } + } +}
\ No newline at end of file diff --git a/usecaseui-portal/src/app/components/graphiclist/graphiclist.component.spec.ts b/usecaseui-portal/src/app/components/graphiclist/graphiclist.component.spec.ts new file mode 100644 index 00000000..013db38a --- /dev/null +++ b/usecaseui-portal/src/app/components/graphiclist/graphiclist.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { GraphiclistComponent } from './graphiclist.component'; + +describe('GraphiclistComponent', () => { + let component: GraphiclistComponent; + let fixture: ComponentFixture<GraphiclistComponent>; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ GraphiclistComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(GraphiclistComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/usecaseui-portal/src/app/components/graphiclist/graphiclist.component.ts b/usecaseui-portal/src/app/components/graphiclist/graphiclist.component.ts new file mode 100644 index 00000000..fc86ee0d --- /dev/null +++ b/usecaseui-portal/src/app/components/graphiclist/graphiclist.component.ts @@ -0,0 +1,213 @@ +import { Component, OnInit, Input, Output, EventEmitter, HostBinding } from '@angular/core'; + +@Component({ + selector: 'app-graphiclist', + templateUrl: './graphiclist.component.html', + styleUrls: ['./graphiclist.component.less'] +}) +export class GraphiclistComponent implements OnInit { + + constructor() { } + isVisibleMiddle = false; + + showModalMiddle(): void { + this.isVisibleMiddle = true; + } + handleOkMiddle(): void { + console.log('click ok'); + this.isVisibleMiddle = false; + } + handleCancelMiddle(): void { + this.isVisibleMiddle = false; + } + + ngOnInit() { + } + + // 筛选框(下拉框) + MeasurementList = ['aaaa','bbbb','cccc','dddddDDDD']; + MeasurementSelected = "Measurement"; + ReportTimeList = ['aaaa','bbbb','cccc','ddddd']; + ReportTimeSelected = "ReportTime"; + choseMeasurement(item){ + console.log(item); + this.MeasurementSelected = item; + } + choseReportTime(item){ + console.log(item); + this.ReportTimeSelected = item; + } + + sort(e){ + + } + // 数量统计 + alarmList = { + all:22439, + closed:37923, + alarm: 12342 + } + + //折线图 + alarmChartData:Object; + alarmChartInit:Object = { + height:100, + width:290, + option:{ + tooltip : { + show : false, + }, + legend: { + show :false, + }, + series: [ + { + name: 'Memory', + type: 'bar', + legendHoverLink: true, + barWidth: "25%", + //timeframe_one + data: [40, 45, 38, 52, 64, 58, 69, 87, 76, 33, 64, 87, 45], + itemStyle: { + color: "#3fa8eb" + }, + } + ] + } + }; + //折线图 + alarmChartDataBig:Object; + alarmChartInitBig:Object = { + height:240, + width:500, + option:{ + tooltip : { + show : true, + trigger: 'axis', + }, + legend: { + bottom: 'bottom', + data: ['Memory'] + }, + series: [ + { + name: 'Memory', + type: 'bar', + legendHoverLink: true, + barWidth: "25%", + //timeframe_one + data: [40, 45, 38, 52, 64, 58, 69, 87, 76, 33, 64, 87, 45], + itemStyle: { + color: "#3fa8eb" + }, + } + ] + } + }; + + //表格数据 + dataSet = [ + { + name : 'John Brown', + age : 32, + expand : false, + address : 'New York No. 1', + description: 'My name is John Brown, I am 32 years old, living in New York No. 1 Lake Park.' + }, + { + name : 'Aim Green', + age : 42, + expand : false, + address : 'London No. 1', + description: 'My name is Jim Green, I am 42 years old, living in London No. 1 Lake Park.' + }, + { + name : 'Bim Green', + age : 42, + expand : false, + address : 'London No. 1', + description: 'My name is Jim Green, I am 42 years old, living in London No. 1 Lake Park.' + }, + { + name : 'Cim Green', + age : 42, + expand : false, + address : 'London No. 1', + description: 'My name is Jim Green, I am 42 years old, living in London No. 1 Lake Park.' + }, + { + name : 'Jim Green', + age : 42, + expand : false, + address : 'London No. 1', + description: 'My name is Jim Green, I am 42 years old, living in London No. 1 Lake Park.' + }, + { + name : 'Xim Green', + age : 42, + expand : false, + address : 'London No. 1', + description: 'My name is Jim Green, I am 42 years old, living in London No. 1 Lake Park.' + }, + { + name : 'Jim Green', + age : 42, + expand : false, + address : 'London No. 1', + description: 'My name is Jim Green, I am 42 years old, living in London No. 1 Lake Park.' + }, + { + name : 'Jim Green', + age : 42, + expand : false, + address : 'London No. 1', + description: 'My name is Jim Green, I am 42 years old, living in London No. 1 Lake Park.' + }, + { + name : 'Jim Green', + age : 42, + expand : false, + address : 'London No. 1', + description: 'My name is Jim Green, I am 42 years old, living in London No. 1 Lake Park.' + }, + { + name : 'Jim Green', + age : 42, + expand : false, + address : 'London No. 1', + description: 'My name is Jim Green, I am 42 years old, living in London No. 1 Lake Park.' + }, + { + name : 'cim Green', + age : 42, + expand : false, + address : 'London No. 1', + description: 'My name is Jim Green, I am 42 years old, living in London No. 1 Lake Park.' + }, + { + name : 'bim Green', + age : 42, + expand : false, + address : 'London No. 1', + description: 'My name is Jim Green, I am 42 years old, living in London No. 1 Lake Park.' + }, + { + name : 'aoe Black', + age : 32, + expand : false, + address : 'Sidney No. 1', + description: 'My name is Joe Black, I am 32 years old, living in Sidney No. 1 Lake Park.' + } + ]; + + @Output() detailData = new EventEmitter(); + detailShow(id){ + let prems = { + id:id, + detailShow: true + } + this.detailData.emit(prems); + + } + +} diff --git a/usecaseui-portal/src/app/dataInterface.ts b/usecaseui-portal/src/app/dataInterface.ts new file mode 100644 index 00000000..fe42594e --- /dev/null +++ b/usecaseui-portal/src/app/dataInterface.ts @@ -0,0 +1,38 @@ + +interface homeData { + services:{ + number:number, + chartdata:Object[] + }, + performance:{ + per_Vnf:number, + per_VmPm:number + }, + alarm:{ + chartdata:Object[] + }, + Vm_performance:{ + names:string[] + } +}; + +interface homeVmLineData { + CPU:number[], + Memory:number[] +} + +interface servicesSelectData { + customer:string[], + serviceType:string[] +} + +interface servicesTableData { + total:number, + tableList:string[] +} + +interface onboardTableData { + total:number, + tableList:string[] +} +export {homeData, homeVmLineData, servicesSelectData, servicesTableData, onboardTableData} diff --git a/usecaseui-portal/src/app/home/home.component.css b/usecaseui-portal/src/app/home/home.component.css new file mode 100644 index 00000000..d2e51e40 --- /dev/null +++ b/usecaseui-portal/src/app/home/home.component.css @@ -0,0 +1,157 @@ +/* + Copyright (C) 2018 CMCC, Inc. and others. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ +.title { + font: 700 18px/18px "思源黑体"; + color: #4c5e70; + margin-bottom: 18px; +} +hr { + border: none; + height: 2px; + background-color: #dce1e7; + margin-bottom: 20px; +} +.content .services { + float: left; + background-color: #fff; + width: 30%; + height: 628px; + border-radius: 5px; + padding: 28px 22px; +} +.content .services h4 { + font: 600 16px/16px "Arial"; + color: #3d4d65; + margin-bottom: 58px; +} +.content .services h3 { + font: 400 48px/48px "Arial"; + color: #3fa8eb; + text-align: center; +} +.content .services h3 span { + font-size: 14px; +} +.content .services p { + font: 400 14px/14px "Arial"; + color: #54657e; + text-align: center; + margin-bottom: 48px; +} +.content .services .tip { + background-color: #eceff4; + color: #3d4d65; + font-size: 16px; + margin: 0 20px; + height: 35px; + line-height: 35px; + border-radius: 5px; +} +.content .rightcontent { + float: left; + padding-left: 15px; + width: 70%; +} +.content .rightcontent .rt-content { + height: 220px; + margin-bottom: 18px; +} +.content .rightcontent .rt-content .poerformance { + float: left; + background-color: #fff; + height: 100%; + width: 50%; + border-radius: 5px; + padding: 28px 26px; +} +.content .rightcontent .rt-content .poerformance h4 { + font: 600 16px/16px "Arial"; + color: #3d4d65; + margin-bottom: 34px; +} +.content .rightcontent .rt-content .poerformance div { + height: 57px; + position: relative; + margin-bottom: 10px; +} +.content .rightcontent .rt-content .poerformance div h3 { + font: 600 25px/25px "Arial"; + color: #3d4d65; + margin-bottom: 10px; +} +.content .rightcontent .rt-content .poerformance div p { + font: 400 12px/12px "Arial"; + color: #54657e; +} +.content .rightcontent .rt-content .poerformance div img { + position: absolute; + top: 0; + right: 0; +} +.content .rightcontent .rt-content .alarm { + float: left; + background-color: #fff; + height: 100%; + width: 48%; + margin-left: 2%; + border-radius: 5px; + position: relative; + padding: 28px 26px; +} +.content .rightcontent .rt-content .alarm h4 { + position: absolute; + font: 600 16px/16px "Arial"; + color: #3d4d65; +} +.content .rightcontent .rb-content { + height: 390px; + background-color: #fff; + border-radius: 5px; + padding: 24px 30px; + position: relative; +} +.content .rightcontent .rb-content h4 { + font: 600 16px/16px "Arial"; + color: #3d4d65; +} +.content .rightcontent .rb-content nz-dropdown { + position: absolute; + top: 24px; + right: 30px; +} +.content .rightcontent .rb-content nz-dropdown button { + width: 170px; + height: 35px; + background-color: #eceff4; + text-align: left; + border-color: #cad3df; +} +.content .rightcontent .rb-content nz-dropdown button span { + display: inline-block; + width: 120px; + overflow: hidden; + text-overflow: ellipsis; + font-size: 14px; +} +.content .rightcontent .rb-content nz-dropdown button i { + position: absolute; + top: 12px; + right: 12px; +} +.content .rightcontent .rb-content #pfVmChartLine { + width: 100%; + height: 318px; +} diff --git a/usecaseui-portal/src/app/home/home.component.html b/usecaseui-portal/src/app/home/home.component.html new file mode 100644 index 00000000..b2fa5eb4 --- /dev/null +++ b/usecaseui-portal/src/app/home/home.component.html @@ -0,0 +1,63 @@ +<!-- + Copyright (C) 2018 CMCC, Inc. and others. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<h3 class="title"> {{"Overall trend" | translate}}</h3> +<hr> +<div class="content"> + <div class="services"> + <h4>{{"SERVICES" | translate}}</h4> + <h3>{{serviceNumber}} <span>{{"services" | translate}}</span> </h3> + <p>{{serviceNumber}} {{"services has been created" | translate}}</p> + <app-pie [initData]="serviceChartInit" [chartData]="serviceChartData"></app-pie> + <p class="tip">View the details</p> + </div> + + <div class="rightcontent"> + <div class="rt-content"> + <div class="poerformance"> + <h4>{{"PERFORMANCE" | translate}}</h4> + <div class="pfVnf"> + <h3 class="pfVnfNum">126</h3> + <p>Performance VNF</p> + <img src="../../assets/images/VNF.png" alt="VNF"> + </div> + <div class="pfVmPm"> + <h3 class="pfVmPmNum">286</h3> + <p>Performance VM/PM</p> + <img src="../../assets/images/VM.png" alt="VM/PM"> + </div> + </div> + <div class="alarm"> + <h4>{{"Alarm" | translate}}</h4> + <app-pie [initData]="alarmChartInit" [chartData]="alarmChartData"></app-pie> + </div> + </div> + + <div class="rb-content"> + <h4>{{"VM Performance" | translate}}</h4> + <nz-dropdown [nzTrigger]="'click'" [nzPlacement]="'bottomRight'"> + <button nz-button nz-dropdown><span>{{vmPerformanceNameSelected}}</span> <i class="anticon anticon-down"></i></button> + <ul nz-menu> + <li nz-menu-item (click)="vmPerformanceNameSelect(item)" *ngFor="let item of vmPerformanceNames"> + <a>{{item}}</a> + </li> + </ul> + </nz-dropdown> + <app-line [initData]="performanceChartInit" [chartData]="performanceChartData"></app-line> + </div> + </div> + +</div> + diff --git a/usecaseui-portal/src/app/home/home.component.less b/usecaseui-portal/src/app/home/home.component.less new file mode 100644 index 00000000..89abafa6 --- /dev/null +++ b/usecaseui-portal/src/app/home/home.component.less @@ -0,0 +1,145 @@ +.title { + font: 700 18px/18px "思源黑体"; + color: #4c5e70; + margin-bottom: 18px; +} +hr { + border: none; + height: 2px; + background-color: #dce1e7; + margin-bottom: 20px; +} +.content { + .services { + float: left; + background-color: #fff; + width: 30%; + height: 628px; + border-radius: 5px; + padding: 28px 22px; + h4 { + font: 600 16px/16px "Arial"; + color: #3d4d65; + margin-bottom: 58px; + } + h3 { + font: 400 48px/48px "Arial"; + color: #3fa8eb; + text-align: center; + span { + font-size: 14px; + } + } + p { + font: 400 14px/14px "Arial"; + color: #54657e; + text-align: center; + margin-bottom: 48px; + } + .tip { + background-color: #eceff4; + color: #3d4d65; + font-size: 16px; + margin: 0 20px; + height: 35px; + line-height: 35px; + border-radius: 5px; + } + } + .rightcontent { + float: left; + padding-left: 15px; + width: 70%; + .rt-content { + height: 220px; + margin-bottom: 18px; + .poerformance { + float: left; + background-color: #fff; + height: 100%; + width: 50%; + border-radius: 5px; + padding: 28px 26px; + h4 { + font: 600 16px/16px "Arial"; + color: #3d4d65; + margin-bottom: 34px; + } + div { + height: 57px; + position: relative; + margin-bottom: 10px; + h3 { + font: 600 25px/25px "Arial"; + color: #3d4d65; + margin-bottom: 10px; + } + p { + font: 400 12px/12px "Arial"; + color: #54657e + } + img { + position: absolute; + top: 0; + right: 0; + } + } + } + .alarm { + float: left; + background-color: #fff; + height: 100%; + width: 48%; + margin-left: 2%; + border-radius: 5px; + position: relative; + padding: 28px 26px; + h4 { + position: absolute; + font: 600 16px/16px "Arial"; + color: #3d4d65; + } + } + } + .rb-content { + height: 390px; + background-color: #fff; + border-radius: 5px; + padding: 24px 30px; + position: relative; + h4 { + font: 600 16px/16px "Arial"; + color: #3d4d65; + } + nz-dropdown { + position: absolute; + top: 24px; + right: 30px; + button { + width: 170px; + height: 35px; + background-color: #eceff4; + text-align: left; + border-color: #cad3df; + span { + display: inline-block; + width: 120px; + overflow: hidden; + text-overflow: ellipsis; + font-size: 14px; + } + i { + position: absolute; + top: 12px; + right: 12px; + } + } + //下拉框中的样式在style.less中,下拉框是在body中额外临时生成的 + } + #pfVmChartLine { + width: 100%; + height: 318px; + } + } + } +}
\ No newline at end of file diff --git a/usecaseui-portal/src/app/home/home.component.spec.ts b/usecaseui-portal/src/app/home/home.component.spec.ts new file mode 100644 index 00000000..490e81bd --- /dev/null +++ b/usecaseui-portal/src/app/home/home.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { HomeComponent } from './home.component'; + +describe('HomeComponent', () => { + let component: HomeComponent; + let fixture: ComponentFixture<HomeComponent>; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ HomeComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(HomeComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/usecaseui-portal/src/app/home/home.component.ts b/usecaseui-portal/src/app/home/home.component.ts new file mode 100644 index 00000000..39fab25d --- /dev/null +++ b/usecaseui-portal/src/app/home/home.component.ts @@ -0,0 +1,166 @@ +import { Component, OnInit, Input, Output, EventEmitter, HostBinding } from '@angular/core'; +import { MyhttpService } from '../myhttp.service'; +import { slideToRight } from '../animates'; + +@Component({ + selector: 'app-home', + templateUrl: './home.component.html', + styleUrls: ['./home.component.less'], + animations: [ slideToRight ] +}) +export class HomeComponent implements OnInit { + @HostBinding('@routerAnimate') routerAnimateState; + + constructor(private myhttp: MyhttpService) { } + + ngOnInit() { + this.getHomeAllData(); + } + + // alarm饼图 + alarmChartData:Object; + alarmChartInit:Object = { + height: 164, + option:{ + legend: { + orient: 'vertical', + left: '0px', + bottom: '0px', + data: ['Active','Closed'] + }, + color:["#fb6e6e","#526b75"], + series:[{ + name:"告警信息", + radius : '55%', + label:{ + normal:{ + show: false, + }, + emphasis: { + show: true, + formatter:'{b}\n{c},{d}%', + } + } + }] + } + }; + + // services饼图 + serviceNumber:number = 0; + serviceChartData:Object; + serviceChartInit:Object = { + height: 300, + option:{ + legend: { + orient: 'vertical', + left: '0px', + bottom: '0px', + data: ['Active','Closed'] + }, + color:["#3fa8eb","#1abb9b","#a4ead7"], + series:[{ + name:"服务信息", + radius : ['45%','65%'], + avoidLabelOverlap: false, + label:{ + normal:{ + show: false, + position: 'center' + }, + emphasis: { + show: true, + formatter:'{b}\n{c}', + textStyle: { + fontSize: '20', + fontWeight: 'bold' + } + } + }, + labelLine: { + normal: { + show: false + } + }, + }] + } + }; + + // Performance线图 + performanceChartData:Object; + performanceChartInit:Object = { + height:320, + option:{ + legend: { + bottom: '0px', + data: ['CPU','Memory'] + }, + series : [ + { + name: 'CPU', + type: 'line', + data:[20,23,14,12,34,25,22,42,52,35,34,13,13] + }, + { + name: 'Memory', + type: 'line', + data:[10,23,24,22,14,15,32,12,12,32,14,23,23] + } + ] + } + }; + getPerformanceChartData(){ + let paramsObj = { + vmPerformanceName:this.vmPerformanceNameSelected + } + this.myhttp.getHomePerformanceChartData(paramsObj) + .subscribe((data)=>{ + this.performanceChartData = { + series:[ + {data:data.CPU}, + {data:data.Memory} + ] + } + },(err)=>{ + console.log(err); + }) + } + + // vm筛选框 + vmPerformanceNames = ['performanceNameOne']; + vmPerformanceNameSelected = this.vmPerformanceNames[0]; + vmPerformanceNameSelect(item){ + if(this.vmPerformanceNameSelected != item){ + console.log(item); + this.vmPerformanceNameSelected = item; + this.getPerformanceChartData() + } + } + + // 获取数据 + getHomeAllData(){ + this.myhttp.getAllHomeData() + .subscribe( + (data)=>{ + console.log(data); + this.alarmChartData ={ + series:[{ + data:data.alarm.chartdata + }] + }; + this.serviceNumber = data.services.number; + this.serviceChartData ={ + series:[{ + data:data.services.chartdata + }] + }; + this.vmPerformanceNames = data.Vm_performance.names; + this.vmPerformanceNameSelected = this.vmPerformanceNames[0]; + this.getPerformanceChartData(); + }, + (err)=>{ + console.log(err); + } + ) + } + +} diff --git a/usecaseui-portal/src/app/myhttp.service.ts b/usecaseui-portal/src/app/myhttp.service.ts new file mode 100644 index 00000000..09f13a49 --- /dev/null +++ b/usecaseui-portal/src/app/myhttp.service.ts @@ -0,0 +1,266 @@ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpHeaders, HttpParams, HttpResponse } from '@angular/common/http'; +import { Observable } from 'rxjs/Observable'; +import { homeData, homeVmLineData, servicesSelectData, servicesTableData, onboardTableData} from './dataInterface'; + + + +@Injectable() +export class MyhttpService { + + constructor(private http: HttpClient) { } + + baseUrl = "./assets/json"; + url={ + allhome:this.baseUrl + "/homeAllData.json", + homeLineData:this.baseUrl + "/homePerformanceChartData.json", + serviceSelectList:this.baseUrl + "/servicesList.json", //customer、serviceType + servicesTableData:this.baseUrl + "/servicesTableData.json", + onboardTableData:this.baseUrl + "/onboardTableData.json", + + customers:this.baseUrl + "/customers.json?", + serviceType:this.baseUrl + "/serviceTypes.json?*_*", + servicesCategory:this.baseUrl + "/configuration_files/servicesCategory.json?", + serviceInstanceList:this.baseUrl + "/instanceTableData4.json?", + serviceTemplates:this.baseUrl + "/serviceTemplates2.json?", + templateCategory:this.baseUrl + "/configuration_files/templateCategory.json?", + templateParameters:this.baseUrl + "/*_*" + "ServiceTemplateParameters.json?", + addressData: this.baseUrl + "/siteAddressData.json?", + createService:this.baseUrl + "/createService.json?", + inputNamesTransform: this.baseUrl + "/configuration_files/inputNamesTranslate.json?", + deleteService: this.baseUrl + "/deleteService.json?", + progress:this.baseUrl + "/progress.json?", + + allottedResource:this.baseUrl + "/allotted-resources2.json?", + pnfDetail:this.baseUrl + "/pnfdetail-domain.json?", + connectivity:this.baseUrl + "/sotn-connectivity2.json?", + vpnBinding:this.baseUrl + "/vpnbinding.json?", + alarmFormData:this.baseUrl + "/alarmFormData.json?" + } + + // baseUrl = 'http://172.19.44.223/api/usecaseui-server/v1'; + // baseUrl = '/api/usecaseui-server/v1'; + // url={ + // allhome:this.baseUrl + "/alarm/getAlarmDataByStatus/0", + // homeLineData:this.baseUrl + "/...........", + // serviceSelectList:this.baseUrl + "/xxxxxxxxxxxxx", + // servicesTableData:this.baseUrl + "/xxxxxxxx.json", + // onboardTableData:this.baseUrl + "/xxxxxxx.json", + + + // customers:this.baseUrl + "/uui-lcm/customers", + // serviceType:this.baseUrl + "/uui-lcm/customers/" + "*_*" + "/service-subscriptions", + // servicesCategory: "./assets/json/configuration_files/servicesCategory.json", + // serviceInstanceList:this.baseUrl + '/uui-sotn/getServiceInstanceList', + // serviceTemplates:this.baseUrl + "/uui-lcm/service-templates", + // templateCategory: "./assets/json/configuration_files/templateCategory.json", + // templateParameters:this.baseUrl + "/uui-lcm/service-templates/" + "*_*" +"?toscaModelPath=", + // addressData: this.baseUrl + "/uui-sotn/getOssInvenory", + // createService:this.baseUrl + "/uui-lcm/services", + // inputNamesTransform: "./assets/json/configuration_files/inputNamesTranslate.json?", + // deleteService: this.baseUrl + "/uui-lcm/services/", + // progress:this.baseUrl + "/uui-lcm/services/" + "*_*" + "/operations/", + + // allottedResource:this.baseUrl + "/uui-sotn/getAllottedResources", + // pnfDetail:this.baseUrl + "/uui-sotn/getPnfInfo/", + // connectivity:this.baseUrl + "/uui-sotn/getConnectivityInfo/", + // vpnBinding:this.baseUrl + "/uui-sotn/getPinterfaceByVpnId/" + // } + + // home页数据 + getAllHomeData() { + return this.http.get<homeData>(this.url.allhome); + } + //home页折线图数据 + getHomePerformanceChartData(paramsObj){ + let params = new HttpParams({fromObject:paramsObj}); + return this.http.get<homeVmLineData>(this.url.homeLineData,{params}); + } + + // servicesList数据 + // getServicesSelectData():Observable<HttpResponse<servicesSelectData>>{ + // return this.http.get<servicesSelectData>(this.url.serviceSelectList,{observe:'response'}); + // } + getServicesTableData(paramsObj):Observable<HttpResponse<servicesTableData>>{ + let params = new HttpParams({fromObject:paramsObj}); + return this.http.get<servicesTableData>(this.url.servicesTableData,{observe:'response',params}); + } + + // onboard数据 + getOnboardTableData(paramsObj):Observable<HttpResponse<onboardTableData>>{ + let params = new HttpParams({fromObject:paramsObj}); + return this.http.get<onboardTableData>(this.url.onboardTableData,{observe:'response',params}); + } + + + + + + testObservable(){ + let myObservable = new Observable((observer)=>{ + observer.next(1); + observer.next((n)=>{ + console.log(3+n); + }) + setTimeout(()=>{ + observer.next(66666) + },100) + observer.next(()=>{ + setTimeout((n)=>{ + console.log("9999---" + n); + },10) + }) + // observer.error(2); + // observer.complete(); + }); + + myObservable.subscribe((e)=>{ + if(typeof e == "function"){ + e(5) + } + console.log(e); + },(err)=>{ + console.log(err); + },()=>{ + console.log(555); + }) + } + + //--------------------------------------------------------------------------------- + + // 获取所有customers + getAllCustomers(){ + return this.http.get<any>(this.url.customers); + // return this.http.jsonp<Object[]>('http://127.0.0.1:5500/customers.json',"callback");// 测试用 :请求数据需要用回调函数包裹 + } + + // 获取相应的serviceType + getServiceTypes(customer){ + let url = this.url.serviceType.replace("*_*",customer.id); + return this.http.get<any>(url); + } + // 获取服务分类信息,本地配置文件 + getServicesCategory(){ + return this.http.get<any>(this.url.servicesCategory); + } + // list表格数据 + getInstanceTableData(paramsObj){ + let params = new HttpParams({fromObject:paramsObj}); + return this.http.get<any>(this.url.serviceInstanceList,{params}); + } + + // // 服务详情数据 + // getInstanceDetails(id){ + // let url = this.baseUrl + "/detailsData.json?id=" + id; + // return this.http.get<instanceDetail>(url); + // } + + // 获取所有模板类型 + getAllServiceTemplates(){ + return this.http.get<any>(this.url.serviceTemplates); + } + + // 获取模板分类信息,本地配置文件 + getTemplateCategory(){ + return this.http.get<any>(this.url.servicesCategory); + } + // 获取模板输入项参数 + getTemplateParameters(type,template){ + let url = this.url.templateParameters.replace("*_*",type) + template.toscaModelURL; //本地模拟 + // let url = this.url.templateParameters.replace("*_*",template.uuid) + template.toscaModelURL; + return this.http.get<any>(url); + } + // siteAddress 地址 + getSiteAddress(){ + return this.http.get<any>(this.url.addressData); + } + + // 创建接口 + createInstance(requestBody){ + return this.http.get<any>(this.url.createService); //本地模拟 + // return this.http.post<any>(this.url.createService,requestBody); + } + + // 输入参数名字转换 + inputNamesTransform(){ + return this.http.get(this.url.inputNamesTransform); + } + + // 删除接口 + deleteInstance(obj){ + let httpOptions = { + headers: new HttpHeaders({ + 'Content-Type': 'application/json', + 'Accept':'application/json', + 'Authorization':'Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==' + }), + body:{ + 'globalSubscriberId': obj.globalSubscriberId, + 'serviceType': obj.serviceType + } + }; + return this.http.get<any>(this.url.deleteService); //本地模拟 + // return this.http.delete<any>(this.url.deleteService + obj.serviceInstanceId, httpOptions); + } + + // 查询进度接口 + getProgress(obj){ + let url = this.url.progress.replace("*_*",obj.serviceId) + obj.operationId; + return this.http.get<any>(url); + } + + // 获取allotted-resource 能获取tp和pnf值 + getAllottedResource(obj){ + let params = new HttpParams({fromObject:obj}); + let url = this.url.allottedResource; + return this.http.get<any>(url,{params}); + } + //通过pnf值获取对应的domain (network-resource) + getPnfDetail(name){ + let url = this.url.pnfDetail + name; + return this.http.get<any>(url); + } + //通过sotn 获取connectivity ,查找vpn-id + getSotnConnectivity(id){ + let url = this.url.connectivity + id; + return this.http.get<any>(url); + } + //通过vpn-id 查找tp和pnf + getVpnBinding(id){ + let url = this.url.vpnBinding + id; + return this.http.get<any>(url); + } + // 时间格式化 毫秒转正常值 + dateformater(vmstime){ + if(!vmstime){ + return '' + } + let mstime = Number((vmstime + '').slice(0,13)); + let time = new Date(mstime); + let year = time.getFullYear(); + let month = time.getMonth() + 1; + let day = time.getDate(); + let hours = time.getHours(); + let minutes = time.getMinutes(); + let seconds = time.getSeconds(); + let formattime = year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds; + return formattime; + } + + // alarm表格数据 + // getAlarmFormData(pageNumber:number,pageSaze:number,name?:string,Priority?:string,Status?:string,Report?:string){ + // return this.http.post<any>(this.url.alarmFormData,{ + // pageNumber:pageNumber, + // pageSaze:pageSaze, + // name:name, + // Priority:Priority, + // Status:Status, + // Report:Report + // }); + // } + + + getAlarmFormData(pageNumber:number,pageSaze:number,name?:string,Priority?:string,Status?:string,Report?:string){ + return this.http.get<any>(this.url.alarmFormData+'?pageNumber='+pageNumber+'?pageSaze'+pageSaze+'?name'+name+'?Priority'+Priority+'?Status'+Status+'?Report'+Report); + } +} diff --git a/usecaseui-portal/src/app/networkHttpservice.service.ts b/usecaseui-portal/src/app/networkHttpservice.service.ts new file mode 100644 index 00000000..5e713d7f --- /dev/null +++ b/usecaseui-portal/src/app/networkHttpservice.service.ts @@ -0,0 +1,99 @@ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpHeaders, HttpParams, HttpResponse } from '@angular/common/http'; + +interface tablelist { + total:number, + list:Object[] +} +interface d3list { + total:number, + list:Object[] +} + +@Injectable() +export class networkHttpservice { + + constructor(private http:HttpClient) { } + + baseUrl = "./assets/json/"; + // list表格数据 + getInstanceTableData(paramsObj){ + let url = this.baseUrl + "instanceTableData.json"; + let params = new HttpParams({fromObject:paramsObj}); + return this.http.get<tablelist>(url,{params}); + } + //d3数据 + getNetworkD3Data(){ + let url = this.baseUrl + "netWorkD3Data.json"; + // let params = new HttpParams({fromObject:paramsObj}); + return this.http.get<any>(url); + } + //初始化连线 logical-links + getLogicalLinksData(){ + let url = this.baseUrl + "LogicalLinksData.json"; + // let params = new HttpParams({fromObject:paramsObj}); + return this.http.get<any>(url); + } + //查询指定的node对应的tp数据 + getPInterfacesData1(paramsObj){ + let url = this.baseUrl + "p_interfaces1.json"; + let params = new HttpParams({fromObject:paramsObj}); + return this.http.get<any>(url,{params}); + } + getPInterfacesData2(paramsObj){ + let url = this.baseUrl + "p_interfaces2.json"; + let params = new HttpParams({fromObject:paramsObj}); + return this.http.get<any>(url,{params}); + } + //创建连线接口 + createLink(paramsObj){ + let url = this.baseUrl+ "status.json"; + let params = new HttpParams({fromObject:paramsObj}); + return this.http.get<any>(url,{params}); + } + //查询指定的单个连接线 接口 + querySpecificLinkInfo(paramsObj){ + let url = this.baseUrl+ "specific_link _nfo.json"; + let params = new HttpParams({fromObject:paramsObj}); + return this.http.get<any>(url,{params}); + } + + //查询 外部云host this.url地址 接口 + queryCloudUrl(paramsObj){ + let url = this.baseUrl+ "url.json"; + let params = new HttpParams({fromObject:paramsObj}); + return this.http.get<any>(url,{params}); + } + + //创建外部云newwork接口 + createNetwrok(paramsObj){ + let url = this.baseUrl+ "status.json"; + let params = new HttpParams({fromObject:paramsObj}); + return this.http.get<any>(url,{params}); + } + //创建外部云pnf接口 + createPnf(paramsObj){ + let url = this.baseUrl+ "status.json"; + let params = new HttpParams({fromObject:paramsObj}); + return this.http.get<any>(url,{params}); + } + //创建外部云Tp接口 + createTp(paramsObj,cloudNodeName){ + console.log(cloudNodeName) + let url = this.baseUrl+ "status.json"; + let params = new HttpParams({fromObject:paramsObj}); + return this.http.get<any>(url,{params}); + } + //创建外部云link接口 + createCloudLink(paramsObj){ + let url = this.baseUrl+ "status.json"; + let params = new HttpParams({fromObject:paramsObj}); + return this.http.get<any>(url,{params}); + } + //删除连线 + deleteLink(paramsObj){ + let url = this.baseUrl+ "status.json"; + let params = new HttpParams({fromObject:paramsObj}); + return this.http.get<any>(url,{params}); + } +} diff --git a/usecaseui-portal/src/app/networkHttpservice.service1.ts b/usecaseui-portal/src/app/networkHttpservice.service1.ts new file mode 100644 index 00000000..edb4df7c --- /dev/null +++ b/usecaseui-portal/src/app/networkHttpservice.service1.ts @@ -0,0 +1,97 @@ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpHeaders, HttpParams, HttpResponse } from '@angular/common/http'; + + +@Injectable() +export class networkHttpservice { + + constructor(private http:HttpClient) { } + + // baseUrl = "./assets/json/";//本地环境 + // url={ + // "getNetworkD3Data":this.baseUrl + "netWorkD3Data.json", + // "getLogicalLinksData":this.baseUrl + "LogicalLinksData.json", + // "getPInterfacesData1":this.baseUrl + "netWorkD3Data.json", + // "getPInterfacesData2":this.baseUrl + "p_interfaces1.json", + // "createLink":this.baseUrl + "status.json", + // "querySpecificLinkInfo":this.baseUrl + "specific_link _nfo.json", + // "queryCloudUrl":this.baseUrl + "url.json", + // "createNetwrok":this.baseUrl + "status.json", + // "createPnf":this.baseUrl + "status.json", + // "createTp":this.baseUrl + "status.json", + // "createCloudLink":this.baseUrl + "status.json", + // "createCloudUrl":this.baseUrl + "status.json", + // "deleteLink":this.baseUrl + "status.json", + // }; + // baseUrl = "http://10.73.242.244:8082/uui-sotn/";//线上环境 + // baseUrl = "http://172.19.44.223/api/usecaseui-server/v1/uui-sotn/";//线上环境 + baseUrl = "/api/usecaseui-server/v1/uui-sotn/";//线上环境 + url={ + "getNetworkD3Data":this.baseUrl + "getNetWorkResources", + "getLogicalLinksData":this.baseUrl + "getLogicalLinks", + "getPInterfacesData1":this.baseUrl + "getPinterfaceByPnfName/", + "getPInterfacesData2":this.baseUrl + "getPinterfaceByPnfName/", + "createLink":this.baseUrl + "createLink/", + "querySpecificLinkInfo":this.baseUrl + "getSpecificLogicalLink/", + "queryCloudUrl":this.baseUrl + "getHostUrl/", + "createNetwrok":this.baseUrl + "createTopoNetwork/", + "createPnf":this.baseUrl + "createPnf/", + "createTp":this.baseUrl + "pnf/", + "createCloudLink":this.baseUrl + "createLink/", + "createCloudUrl":this.baseUrl + "createHostUrl/", + "deleteLink":this.baseUrl + "deleteLink/", + }; + //d3数据 + getNetworkD3Data(){ + return this.http.get<any>(this.url["getNetworkD3Data"]); + } + //初始化连线 logical-links + getLogicalLinksData(){ + return this.http.get<any>(this.url["getLogicalLinksData"]); + } + //查询指定的node对应的tp数据 + getPInterfacesData1(paramsObj){ + return this.http.get<any>(this.url['getPInterfacesData1']+paramsObj["pnfName"]); + } + getPInterfacesData2(paramsObj){ + return this.http.get<any>(this.url["getPInterfacesData2"]+paramsObj["pnfName"]); + } + //创建连线接口 + createLink(paramsObj){ + return this.http.put<any>(this.url["createLink"]+paramsObj["link-name"],paramsObj); + } + //查询指定的单个连接线 接口 + querySpecificLinkInfo(paramsObj){ + return this.http.get<any>(this.url["querySpecificLinkInfo"]+paramsObj["link-name"]); + } + //查询 外部云host this.url地址 接口 + queryCloudUrl(aaiId){ + return this.http.get<any>(this.url["queryCloudUrl"]+aaiId); + } + //创建外部云newwork接口 + createNetwrok(paramsObj){ + return this.http.put<any>(this.url["createNetwrok"]+paramsObj["network-id"],paramsObj); + } + //创建外部云pnf接口 + createPnf(paramsObj){ + return this.http.put<any>(this.url["createPnf"]+paramsObj["pnf-name"],paramsObj); + } + //创建外部云Tp接口 + createTp(paramsObj,cloudNodeName){ + let str=cloudNodeName+"/p-interfaces/p-interface/"+paramsObj["interface-name"]+"/createTerminationPoint"; + return this.http.put<any>(this.url["createTp"]+str,paramsObj); + } + //创建外部云link接口 + createCloudLink(paramsObj){ + return this.http.put<any>(this.url["createCloudLink"]+paramsObj["link-name"],paramsObj); + } + //创建外部云host url接口 + createCloudUrl(paramsObj){ + return this.http.put<any>(this.url["createCloudUrl"]+paramsObj["aai-id"],paramsObj); + } + //删除连线 + deleteLink(paramsObj){ + let str=paramsObj["logical-link"]+"/"+paramsObj["resource-version"]; + return this.http.delete<any>((this.url["deleteLink"]+str)); + } +} diff --git a/usecaseui-portal/src/app/performance/performance-vm/performance-vm.component.css b/usecaseui-portal/src/app/performance/performance-vm/performance-vm.component.css new file mode 100644 index 00000000..079a409c --- /dev/null +++ b/usecaseui-portal/src/app/performance/performance-vm/performance-vm.component.css @@ -0,0 +1,75 @@ +/* + Copyright (C) 2018 CMCC, Inc. and others. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ +.title { + font: 700 18px/18px "思源黑体"; + color: #4c5e70; + margin-bottom: 18px; +} +hr { + border: none; + height: 2px; + background-color: #dce1e7; + margin-bottom: 20px; +} +.select { + margin-bottom: 20px; +} +.select span { + display: inline-block; + font: 700 14px "Arial"; + color: #4c5e70; +} +.select nz-dropdown { + vertical-align: middle; +} +.select nz-dropdown :hover { + border-color: #147dc2; +} +.select nz-dropdown button { + width: 165px; + height: 30px; + background-color: #eceff4; + text-align: left; + border-color: #9fa9ab; +} +.select nz-dropdown button span { + font-weight: 400; + display: inline-block; + width: 120px; + overflow: hidden; + text-overflow: ellipsis; + padding-top: 2px; +} +.select nz-dropdown button i { + position: absolute; + top: 10px; + right: 10px; +} +.select .submit { + margin-left: 20px; + vertical-align: middle; + height: 30px; + padding: 0 10px; +} +.select .submit span { + color: #fff; + font-weight: 400; +} +.content { + background-color: #fff; + border-radius: 5px; + padding: 12px; +} diff --git a/usecaseui-portal/src/app/performance/performance-vm/performance-vm.component.html b/usecaseui-portal/src/app/performance/performance-vm/performance-vm.component.html new file mode 100644 index 00000000..76d2485e --- /dev/null +++ b/usecaseui-portal/src/app/performance/performance-vm/performance-vm.component.html @@ -0,0 +1,79 @@ +<!-- + Copyright (C) 2018 CMCC, Inc. and others. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<!-- <h3 class="title"> + <span (click)="performanceShow()" style="cursor:pointer;">Performance VM</span> + <span (click)="graphicShow()" *ngIf="graphicshow">> Graphic list </span> + <span *ngIf="detailshow">> Details </span> +</h3> +<hr> +<div class="select" [@showHideAnimate]="state"> + <span>Source Name: </span> + <nz-dropdown [nzTrigger]="'click'" [nzPlacement]="'bottomLeft'"> + <button nz-button nz-dropdown><span>{{sourceNameSelected}}</span> <i class="anticon anticon-down"></i></button> + <ul nz-menu> + <li nz-menu-item (click)="choseSourceName(item)" *ngFor="let item of sourceNameList"> + <a>{{item}}</a> + </li> + </ul> + </nz-dropdown> + + <span>ReportingEntityName: </span> + <nz-dropdown [nzTrigger]="'click'" [nzPlacement]="'bottomLeft'"> + <button nz-button nz-dropdown><span>{{ReportingEntityNameSelected}}</span> <i class="anticon anticon-down"></i></button> + <ul nz-menu> + <li nz-menu-item (click)="choseReportingEntityName(item)" *ngFor="let item of ReportingEntityNameList"> + <a>{{item}}</a> + </li> + </ul> + </nz-dropdown> + <button class="submit" nz-button [nzType]="'primary'" (click)="submit()"><i class="anticon anticon-plus-circle-o"></i><span>Submit</span></button> +</div> +<div class="content" [@showHideAnimate]="state"> + <nz-table #nzTable [nzData]="dataSet" [nzPageSize]="10" nzShowSizeChanger nzShowQuickJumper [nzPageSizeOptions]="[5,10,15,20]" nzSize="middle"> + <thead (nzSortChange)="sort($event)" nzSingleSort> + <tr> + <th nzWidth="5%">NO</th> + <th nzWidth="20%">Source Name</th> + <th nzWidth="20%">ReportingEntityName</th> + <th nzWidth="10%">Type</th> + <th nzWidth="15%">CPU</th> + <th nzWidth="10%">Memory</th> + <th nzWidth="10%">Disk</th> + <th nzWidth="10%">Action</th> + </tr> + </thead> + <tbody> --> + <!-- <ng-template ngFor let-data [ngForOf]="nzTable.data" let-i="index"> --> + <!-- <tr *ngFor="let item of nzTable.data; let i = index; "> + <td>{{i+1}}</td> + <td>{{item.name}}</td> + <td>{{item.address}}</td> + <td>{{item.age}}</td> + <td>{{item.address}}</td> + <td>{{item.age}}</td> + <td>{{item.age}}</td> + <td><a (click)="graphicShow()">Delete</a></td> + </tr> --> + <!-- </ng-template> --> + <!-- </tbody> + </nz-table> +</div> +<div [@showHideAnimate]="state2"> + <app-graphiclist (detailData)="detailShow($event)"></app-graphiclist> +</div> +<div [@showHideAnimate]="state3"> + <app-details [detailId]="detailId"></app-details> +</div> --> diff --git a/usecaseui-portal/src/app/performance/performance-vm/performance-vm.component.less b/usecaseui-portal/src/app/performance/performance-vm/performance-vm.component.less new file mode 100644 index 00000000..8a9005c5 --- /dev/null +++ b/usecaseui-portal/src/app/performance/performance-vm/performance-vm.component.less @@ -0,0 +1,61 @@ +.title { + font: 700 18px/18px "思源黑体"; + color: #4c5e70; + margin-bottom: 18px; +} +hr { + border: none; + height: 2px; + background-color: #dce1e7; + margin-bottom: 20px; +} +.select { + margin-bottom: 20px; + span { + display: inline-block; + font: 700 14px "Arial"; + color: #4c5e70; + } + nz-dropdown { + vertical-align: middle; + :hover{ + border-color: #147dc2; + } + button { + width: 165px; + height: 30px; + background-color: #eceff4; + text-align: left; + border-color: #9fa9ab; + span { + font-weight: 400; + display: inline-block; + width: 120px; + overflow: hidden; + text-overflow: ellipsis; + padding-top: 2px; + } + i { + position: absolute; + top: 10px; + right: 10px; + } + } + //下拉框中的样式在style.less中,下拉框是在body中额外临时生成的 + } + .submit { + margin-left: 20px; + vertical-align: middle; + height: 30px; + padding: 0 10px; + span { + color: #fff; + font-weight: 400; + } + } +} +.content { + background-color: #fff; + border-radius: 5px; + padding: 12px; +}
\ No newline at end of file diff --git a/usecaseui-portal/src/app/performance/performance-vm/performance-vm.component.spec.ts b/usecaseui-portal/src/app/performance/performance-vm/performance-vm.component.spec.ts new file mode 100644 index 00000000..fd441da3 --- /dev/null +++ b/usecaseui-portal/src/app/performance/performance-vm/performance-vm.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { PerformanceVmComponent } from './performance-vm.component'; + +describe('PerformanceVmComponent', () => { + let component: PerformanceVmComponent; + let fixture: ComponentFixture<PerformanceVmComponent>; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ PerformanceVmComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(PerformanceVmComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/usecaseui-portal/src/app/performance/performance-vm/performance-vm.component.ts b/usecaseui-portal/src/app/performance/performance-vm/performance-vm.component.ts new file mode 100644 index 00000000..1fb099c9 --- /dev/null +++ b/usecaseui-portal/src/app/performance/performance-vm/performance-vm.component.ts @@ -0,0 +1,159 @@ +import { Component, OnInit, HostBinding } from '@angular/core'; +import { slideToRight, showHideAnimate } from '../../animates'; + +@Component({ + selector: 'app-performance-vm', + templateUrl: './performance-vm.component.html', + styleUrls: ['./performance-vm.component.less'], + animations: [ slideToRight, showHideAnimate ] +}) +export class PerformanceVmComponent implements OnInit { + @HostBinding('@routerAnimate') routerAnimateState; + constructor() { } + + ngOnInit() { + } + + // 筛选框(下拉框) + sourceNameList = ['aaaa','bbbb','cccc','dddddDDDDDDDDDDDDDDD']; + sourceNameSelected = this.sourceNameList[0]; + ReportingEntityNameList = ['aaaa','bbbb','cccc','ddddd']; + ReportingEntityNameSelected = this.ReportingEntityNameList[0]; + choseSourceName(item){ + console.log(item); + this.sourceNameSelected = item; + } + choseReportingEntityName(item){ + console.log(item); + this.ReportingEntityNameSelected = item; + } + + //表格数据 + dataSet = [ + { + name : 'John Brown', + age : 32, + expand : false, + address : 'New York No. 1', + description: 'My name is John Brown, I am 32 years old, living in New York No. 1 Lake Park.' + }, + { + name : 'Aim Green', + age : 42, + expand : false, + address : 'London No. 1', + description: 'My name is Jim Green, I am 42 years old, living in London No. 1 Lake Park.' + }, + { + name : 'Bim Green', + age : 42, + expand : false, + address : 'London No. 1', + description: 'My name is Jim Green, I am 42 years old, living in London No. 1 Lake Park.' + }, + { + name : 'Cim Green', + age : 42, + expand : false, + address : 'London No. 1', + description: 'My name is Jim Green, I am 42 years old, living in London No. 1 Lake Park.' + }, + { + name : 'Jim Green', + age : 42, + expand : false, + address : 'London No. 1', + description: 'My name is Jim Green, I am 42 years old, living in London No. 1 Lake Park.' + }, + { + name : 'Xim Green', + age : 42, + expand : false, + address : 'London No. 1', + description: 'My name is Jim Green, I am 42 years old, living in London No. 1 Lake Park.' + }, + { + name : 'Jim Green', + age : 42, + expand : false, + address : 'London No. 1', + description: 'My name is Jim Green, I am 42 years old, living in London No. 1 Lake Park.' + }, + { + name : 'Jim Green', + age : 42, + expand : false, + address : 'London No. 1', + description: 'My name is Jim Green, I am 42 years old, living in London No. 1 Lake Park.' + }, + { + name : 'Jim Green', + age : 42, + expand : false, + address : 'London No. 1', + description: 'My name is Jim Green, I am 42 years old, living in London No. 1 Lake Park.' + }, + { + name : 'Jim Green', + age : 42, + expand : false, + address : 'London No. 1', + description: 'My name is Jim Green, I am 42 years old, living in London No. 1 Lake Park.' + }, + { + name : 'cim Green', + age : 42, + expand : false, + address : 'London No. 1', + description: 'My name is Jim Green, I am 42 years old, living in London No. 1 Lake Park.' + }, + { + name : 'bim Green', + age : 42, + expand : false, + address : 'London No. 1', + description: 'My name is Jim Green, I am 42 years old, living in London No. 1 Lake Park.' + }, + { + name : 'aoe Black', + age : 32, + expand : false, + address : 'Sidney No. 1', + description: 'My name is Joe Black, I am 32 years old, living in Sidney No. 1 Lake Park.' + } + ]; + + //详情页标题显示 + graphicshow = false; + detailshow = false; + // 显示隐藏动画 + state = "show"; + state2 = "hide"; + state3 = "hide"; + performanceShow() { + this.state = 'show'; + this.state2 = 'hide'; + this.state3 = 'hide'; + this.graphicshow = false; + this.detailshow = false; + } + graphicShow() { + this.state = 'hide'; + this.state2 = 'show'; + this.state3 = 'hide'; + this.graphicshow = true; + this.detailshow = false; + } + // 选中id + detailId:number; + detailShow(prems) { + this.state = 'hide'; + this.state2 = 'hide'; + this.state3 = 'show'; + this.graphicshow = true; + this.detailshow = true; + console.log(prems); + this.detailId = prems.id; + } + +} diff --git a/usecaseui-portal/src/app/performance/performance-vnf/performance-vnf.component.css b/usecaseui-portal/src/app/performance/performance-vnf/performance-vnf.component.css new file mode 100644 index 00000000..4ed015fe --- /dev/null +++ b/usecaseui-portal/src/app/performance/performance-vnf/performance-vnf.component.css @@ -0,0 +1,126 @@ +/* + Copyright (C) 2018 CMCC, Inc. and others. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ +.title { + font: 700 18px/18px "思源黑体"; + color: #4c5e70; + margin-bottom: 18px; +} +hr { + border: none; + height: 2px; + background-color: #dce1e7; + margin-bottom: 20px; +} +.select { + margin-bottom: 20px; +} +.select span { + display: inline-block; + font: 700 14px "Arial"; + color: #4c5e70; +} +.select nz-dropdown { + vertical-align: middle; +} +.select nz-dropdown :hover { + border-color: #147dc2; +} +.select nz-dropdown button { + width: 165px; + height: 30px; + background-color: #eceff4; + text-align: left; + border-color: #9fa9ab; +} +.select nz-dropdown button span { + font-weight: 400; + display: inline-block; + width: 120px; + overflow: hidden; + text-overflow: ellipsis; + padding-top: 2px; +} +.select nz-dropdown button i { + position: absolute; + top: 10px; + right: 10px; +} +.select .submit { + margin-left: 20px; + vertical-align: middle; + height: 30px; + padding: 0 10px; +} +.select .submit span { + color: #fff; + font-weight: 400; +} +.content { + background-color: #fff; + border-radius: 5px; + padding: 12px; +} +.content .vnfs { + display: flex; + flex-wrap: wrap; + justify-content: space-around; +} +.content .vnfs .vnf { + width: 18%; + height: 200px; + margin: 5px; + padding: 20px; + border-radius: 2px; + text-align: center; + cursor: pointer; + transition: all 0.3s linear; +} +.content .vnfs .vnf:hover { + background-color: #f5f5f5; + transform: scale(1.02); +} +.content .vnfs .vnf h3 { + font-size: 14px; + color: #3fa8eb; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + margin-bottom: 0; +} +.content .vnfs .vnf .intro { + text-align: left; + font-size: 12px; + overflow: hidden; + display: -webkit-box; + -webkit-line-clamp: 3; + -webkit-box-orient: vertical; + word-wrap: break-word; + word-break: break-all; +} +.content .vnfs .empty { + width: 18%; + height: 200px; + margin: 5px; + border-radius: 2px; +} +.content .pages { + height: 25px; + margin: 20px 10px; + position: relative; +} +.content .pages nz-pagination { + float: right; +} diff --git a/usecaseui-portal/src/app/performance/performance-vnf/performance-vnf.component.html b/usecaseui-portal/src/app/performance/performance-vnf/performance-vnf.component.html new file mode 100644 index 00000000..0b398703 --- /dev/null +++ b/usecaseui-portal/src/app/performance/performance-vnf/performance-vnf.component.html @@ -0,0 +1,64 @@ +<!-- + Copyright (C) 2018 CMCC, Inc. and others. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<h3 class="title"> + <span (click)="performanceShow()" style="cursor:pointer;">Performance VNF</span> + <span (click)="graphicShow()" *ngIf="graphicshow">> Graphic list </span> + <span *ngIf="detailshow">> Details </span> +</h3> +<hr> +<div class="select" [@showHideAnimate]="state"> + <span>Source Name: </span> + <nz-dropdown [nzTrigger]="'click'" [nzPlacement]="'bottomLeft'"> + <button nz-button nz-dropdown><span>{{sourceNameSelected}}</span> <i class="anticon anticon-down"></i></button> + <ul nz-menu> + <li nz-menu-item (click)="choseSourceName(item)" *ngFor="let item of sourceNameList"> + <a>{{item}}</a> + </li> + </ul> + </nz-dropdown> + + <span>ReportingEntityName: </span> + <nz-dropdown [nzTrigger]="'click'" [nzPlacement]="'bottomLeft'"> + <button nz-button nz-dropdown><span>{{ReportingEntityNameSelected}}</span> <i class="anticon anticon-down"></i></button> + <ul nz-menu> + <li nz-menu-item (click)="choseReportingEntityName(item)" *ngFor="let item of ReportingEntityNameList"> + <a>{{item}}</a> + </li> + </ul> + </nz-dropdown> + <button class="submit" nz-button [nzType]="'primary'" (click)="submit()"><i class="anticon anticon-plus-circle-o"></i><span>Submit</span></button> +</div> +<div class="content" [@showHideAnimate]="state"> + <div class="vnfs"> + <div class="vnf" *ngFor="let item of vnfsData" (click)="graphicShow()"> + <img src="../../../assets/images/VNF3.png" alt="VNF3"> + <h3>Mfvs_MMEManaxxdeafsfdf</h3> + <div class="intro"> + Mfvs_MMEMa naxxdfdafa fafad a afeaf sfdff doafe oghaiod aaafeageageagfdavzvdagewag + </div> + </div> + <div class="empty" *ngFor="let empty of emptys"></div> + </div> + <div class="pages"> + <nz-pagination [(nzPageIndex)]="current" [nzTotal]="500" [nzSize]="'small'" [nzPageSize]="10" [nzPageSizeOptions]="[10,15,20,25,30]" nzShowSizeChanger nzShowQuickJumper></nz-pagination> + </div> +</div> +<div [@showHideAnimate]="state2"> + <app-graphiclist (detailData)="detailShow($event)"></app-graphiclist> +</div> +<div [@showHideAnimate]="state3"> + <app-details [detailId]="detailId"></app-details> +</div> diff --git a/usecaseui-portal/src/app/performance/performance-vnf/performance-vnf.component.less b/usecaseui-portal/src/app/performance/performance-vnf/performance-vnf.component.less new file mode 100644 index 00000000..977ef5c0 --- /dev/null +++ b/usecaseui-portal/src/app/performance/performance-vnf/performance-vnf.component.less @@ -0,0 +1,115 @@ +.title { + font: 700 18px/18px "思源黑体"; + color: #4c5e70; + margin-bottom: 18px; +} +hr { + border: none; + height: 2px; + background-color: #dce1e7; + margin-bottom: 20px; +} +.select { + margin-bottom: 20px; + span { + display: inline-block; + font: 700 14px "Arial"; + color: #4c5e70; + } + nz-dropdown { + vertical-align: middle; + :hover{ + border-color: #147dc2; + } + button { + width: 165px; + height: 30px; + background-color: #eceff4; + text-align: left; + border-color: #9fa9ab; + span { + font-weight: 400; + display: inline-block; + width: 120px; + overflow: hidden; + text-overflow: ellipsis; + padding-top: 2px; + } + i { + position: absolute; + top: 10px; + right: 10px; + } + } + //下拉框中的样式在style.less中,下拉框是在body中额外临时生成的 + } + .submit { + margin-left: 20px; + vertical-align: middle; + height: 30px; + padding: 0 10px; + span { + color: #fff; + font-weight: 400; + } + } +} + +.content { + background-color: #fff; + border-radius: 5px; + padding: 12px; + .vnfs { + display: flex; + flex-wrap: wrap; + justify-content: space-around; + .vnf { + // width: 180px; + width: 18%; + height: 200px; + margin: 5px; + padding: 20px; + border-radius: 2px; + text-align: center; + cursor: pointer; + transition: all 0.3s linear; + &:hover { + background-color: #f5f5f5; + transform: scale(1.02); + } + h3 { + font-size: 14px; + color: #3fa8eb; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + margin-bottom: 0; + } + .intro { + text-align: left; + font-size: 12px; + overflow: hidden; + display: -webkit-box; + -webkit-line-clamp: 3; + -webkit-box-orient: vertical; + word-wrap:break-word; + word-break:break-all; + } + } + .empty { + // width: 180px; + width: 18%; + height: 200px; + margin: 5px; + border-radius: 2px; + } + } + .pages { + height: 25px; + margin: 20px 10px; + position: relative; + nz-pagination { + float: right; + } + } +}
\ No newline at end of file diff --git a/usecaseui-portal/src/app/performance/performance-vnf/performance-vnf.component.spec.ts b/usecaseui-portal/src/app/performance/performance-vnf/performance-vnf.component.spec.ts new file mode 100644 index 00000000..c535b737 --- /dev/null +++ b/usecaseui-portal/src/app/performance/performance-vnf/performance-vnf.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { PerformanceVnfComponent } from './performance-vnf.component'; + +describe('PerformanceVnfComponent', () => { + let component: PerformanceVnfComponent; + let fixture: ComponentFixture<PerformanceVnfComponent>; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ PerformanceVnfComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(PerformanceVnfComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/usecaseui-portal/src/app/performance/performance-vnf/performance-vnf.component.ts b/usecaseui-portal/src/app/performance/performance-vnf/performance-vnf.component.ts new file mode 100644 index 00000000..d2e8d991 --- /dev/null +++ b/usecaseui-portal/src/app/performance/performance-vnf/performance-vnf.component.ts @@ -0,0 +1,92 @@ +import { Component, OnInit, HostBinding } from '@angular/core'; +import { slideToRight, showHideAnimate } from '../../animates'; + +@Component({ + selector: 'app-performance-vnf', + templateUrl: './performance-vnf.component.html', + styleUrls: ['./performance-vnf.component.less'], + animations: [ slideToRight, showHideAnimate ] +}) +export class PerformanceVnfComponent implements OnInit { + @HostBinding('@routerAnimate') routerAnimateState; + constructor() { } + + ngOnInit() { + let _this = this; + setTimeout(function(){ + // 在路由切换时加载图片造成动画卡顿,先完成动画再加载图片 + _this.vnfsData = [ + {name:"aaa",text:"oahgieango"}, + {name:"aaa",text:"oahgieango"}, + {name:"aaa",text:"oahgieango"}, + {name:"aaa",text:"oahgieango"}, + {name:"aaa",text:"oahgieango"}, + {name:"aaa",text:"oahgieango"}, + {name:"aaa",text:"oahgieango"}, + {name:"aaa",text:"oahgieango"}, + {name:"aaa",text:"oahgieango"}, + {name:"aaa",text:"oahgieango"}, + {name:"aaa",text:"oahgieango"} + ]; + _this.emptys = new Array(15-_this.vnfsData.length); + },300) + } + + // 筛选框(下拉框) + sourceNameList = ['aaaa','bbbb','cccc','dddddDDDDDDDDDDDDDDD']; + sourceNameSelected = this.sourceNameList[0]; + ReportingEntityNameList = ['aaaa','bbbb','cccc','ddddd']; + ReportingEntityNameSelected = this.ReportingEntityNameList[0]; + choseSourceName(item){ + console.log(item); + this.sourceNameSelected = item; + } + choseReportingEntityName(item){ + console.log(item); + this.ReportingEntityNameSelected = item; + } + + submit(){ + + } + // vnfs数据 + vnfsData = []; + emptys = []; //补空盒子用 + // 分页 + current = 1; //当前页码 + + //详情页标题显示 + graphicshow = false; + detailshow = false; + // 显示隐藏动画 + state = "show"; + state2 = "hide"; + state3 = "hide"; + performanceShow() { + this.state = 'show'; + this.state2 = 'hide'; + this.state3 = 'hide'; + this.graphicshow = false; + this.detailshow = false; + } + graphicShow() { + this.state = 'hide'; + this.state2 = 'show'; + this.state3 = 'hide'; + this.graphicshow = true; + this.detailshow = false; + } + // 选中id + detailId:number; + detailShow(prems) { + this.state = 'hide'; + this.state2 = 'hide'; + this.state3 = 'show'; + this.graphicshow = true; + this.detailshow = true; + console.log(prems); + this.detailId = prems.id; + } + + +} diff --git a/usecaseui-portal/src/app/performance/performance.component.css b/usecaseui-portal/src/app/performance/performance.component.css new file mode 100644 index 00000000..cf63a829 --- /dev/null +++ b/usecaseui-portal/src/app/performance/performance.component.css @@ -0,0 +1,26 @@ +/* + Copyright (C) 2018 CMCC, Inc. and others. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ +.title { + font: 700 18px/18px "思源黑体"; + color: #4c5e70; + margin-bottom: 18px; +} +hr { + border: none; + height: 2px; + background-color: #dce1e7; + margin-bottom: 20px; +} diff --git a/usecaseui-portal/src/app/performance/performance.component.html b/usecaseui-portal/src/app/performance/performance.component.html new file mode 100644 index 00000000..c092e876 --- /dev/null +++ b/usecaseui-portal/src/app/performance/performance.component.html @@ -0,0 +1,17 @@ +<!-- + Copyright (C) 2018 CMCC, Inc. and others. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<h3 class="title"> Performance </h3> +<hr> diff --git a/usecaseui-portal/src/app/performance/performance.component.less b/usecaseui-portal/src/app/performance/performance.component.less new file mode 100644 index 00000000..2b1949a5 --- /dev/null +++ b/usecaseui-portal/src/app/performance/performance.component.less @@ -0,0 +1,11 @@ +.title { + font: 700 18px/18px "思源黑体"; + color: #4c5e70; + margin-bottom: 18px; +} +hr { + border: none; + height: 2px; + background-color: #dce1e7; + margin-bottom: 20px; +} diff --git a/usecaseui-portal/src/app/performance/performance.component.spec.ts b/usecaseui-portal/src/app/performance/performance.component.spec.ts new file mode 100644 index 00000000..1bdc919d --- /dev/null +++ b/usecaseui-portal/src/app/performance/performance.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { PerformanceComponent } from './performance.component'; + +describe('PerformanceComponent', () => { + let component: PerformanceComponent; + let fixture: ComponentFixture<PerformanceComponent>; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ PerformanceComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(PerformanceComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/usecaseui-portal/src/app/performance/performance.component.ts b/usecaseui-portal/src/app/performance/performance.component.ts new file mode 100644 index 00000000..12405e9e --- /dev/null +++ b/usecaseui-portal/src/app/performance/performance.component.ts @@ -0,0 +1,16 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-performance', + templateUrl: './performance.component.html', + styleUrls: ['./performance.component.less'] +}) +export class PerformanceComponent implements OnInit { + + constructor() { } + + ngOnInit() { + + } + +} diff --git a/usecaseui-portal/src/app/services/onboard-vnf-vm/onboard-vnf-vm.component.css b/usecaseui-portal/src/app/services/onboard-vnf-vm/onboard-vnf-vm.component.css new file mode 100644 index 00000000..a1cc6455 --- /dev/null +++ b/usecaseui-portal/src/app/services/onboard-vnf-vm/onboard-vnf-vm.component.css @@ -0,0 +1,59 @@ +/* + Copyright (C) 2018 CMCC, Inc. and others. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ +.title { + font: 700 18px/18px "思源黑体"; + color: #4c5e70; + margin-bottom: 18px; +} +hr { + border: none; + height: 2px; + background-color: #dce1e7; + margin-bottom: 20px; +} +.list { + background-color: #fff; + border-radius: 5px; + padding: 10px; +} +.list nz-table tbody td span.onboarding { + font-size: 12px; + color: #147dc2; +} +.list nz-table tbody td span.onboarded { + font-size: 14px; + color: #147dc2; +} +.list nz-table tbody td span.updating { + font-size: 12px; + color: blue; +} +.list nz-table tbody td span.deleting { + font-size: 12px; + color: red; +} +.list nz-table tbody td span.invalid { + font-size: 14px; + color: purple; +} +.list nz-table tbody td i.anticon { + cursor: pointer; + font-size: 18px; + padding: 2px; +} +.list nz-table tbody td i.anticon:hover { + color: #147dc2; +} diff --git a/usecaseui-portal/src/app/services/onboard-vnf-vm/onboard-vnf-vm.component.html b/usecaseui-portal/src/app/services/onboard-vnf-vm/onboard-vnf-vm.component.html new file mode 100644 index 00000000..d5286a3a --- /dev/null +++ b/usecaseui-portal/src/app/services/onboard-vnf-vm/onboard-vnf-vm.component.html @@ -0,0 +1,61 @@ +<!-- + Copyright (C) 2018 CMCC, Inc. and others. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<h3 class="title"> Onboard VNF </h3> +<hr> +<div class="list"> + <nz-table #nzTable [nzData]="tableData" + nzShowSizeChanger + [nzFrontPagination]="false" + [nzShowQuickJumper]="true" + [nzPageSizeOptions]="[5,10,15,20]" + [nzTotal]= 'total' + [(nzPageSize)]="pageSize" + [(nzPageIndex)]='pageIndex' + [nzLoading]="loading" + nzSize="middle" + (nzPageIndexChange)="searchData()" + (nzPageSizeChange)="searchData(true)"> + <thead (nzSortChange)="sort($event)" nzSingleSort> + <tr> + <th nzWidth="5%">NO</th> + <th nzWidth="20%" nzShowSort nzSortKey="name"> Name </th> + <th nzWidth="20%">Type</th> + <th nzWidth="15%">Version</th> + <th nzWidth="20%">Status</th> + <th nzWidth="15%">Action</th> + </tr> + </thead> + <tbody> + <!-- <ng-template ngFor let-data [ngForOf]="nzTable.data" let-i="index"> --> + <tr *ngFor="let item of nzTable.data; let i = index; "> + <td>{{i+1}}</td> + <td>{{item.name}}</td> + <td>{{item.type}}</td> + <td>{{item.version}}</td> + <td> + <span [ngClass]="{'onboarding':item.status=='Onboarding','onboarded':item.status=='Onboarded', + 'updating':item.status=='Updating','deleting':item.status=='Deleting','invalid':item.status=='Invalid'}">{{item.status}}</span> + <nz-progress *ngIf="item.status!='Onboarded' && item.status!='Invalid'" [nzPercent]="item.progress"></nz-progress> + </td> + <td> + <i class="anticon anticon-cloud-upload-o" (click)="updataService()"></i> + <i class="anticon anticon-delete" (click)="deleteService()"></i> + </td> + </tr> + <!-- </ng-template> --> + </tbody> + </nz-table> +</div>
\ No newline at end of file diff --git a/usecaseui-portal/src/app/services/onboard-vnf-vm/onboard-vnf-vm.component.less b/usecaseui-portal/src/app/services/onboard-vnf-vm/onboard-vnf-vm.component.less new file mode 100644 index 00000000..ab118737 --- /dev/null +++ b/usecaseui-portal/src/app/services/onboard-vnf-vm/onboard-vnf-vm.component.less @@ -0,0 +1,50 @@ +.title { + font: 700 18px/18px "思源黑体"; + color: #4c5e70; + margin-bottom: 18px; +} +hr { + border: none; + height: 2px; + background-color: #dce1e7; + margin-bottom: 20px; +} +.list { + background-color: #fff; + border-radius: 5px; + padding: 10px; + nz-table { + tbody { + td { + span.onboarding { + font-size: 12px; + color: #147dc2; + } + span.onboarded { + font-size: 14px; + color: #147dc2; + } + span.updating { + font-size: 12px; + color: blue; + } + span.deleting { + font-size: 12px; + color: red; + } + span.invalid { + font-size: 14px; + color: purple; + } + i.anticon { + cursor: pointer; + font-size: 18px; + padding: 2px; + &:hover{ + color: #147dc2; + } + } + } + } + } +}
\ No newline at end of file diff --git a/usecaseui-portal/src/app/services/onboard-vnf-vm/onboard-vnf-vm.component.spec.ts b/usecaseui-portal/src/app/services/onboard-vnf-vm/onboard-vnf-vm.component.spec.ts new file mode 100644 index 00000000..0e49f656 --- /dev/null +++ b/usecaseui-portal/src/app/services/onboard-vnf-vm/onboard-vnf-vm.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { OnboardVnfVmComponent } from './onboard-vnf-vm.component'; + +describe('OnboardVnfVmComponent', () => { + let component: OnboardVnfVmComponent; + let fixture: ComponentFixture<OnboardVnfVmComponent>; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ OnboardVnfVmComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(OnboardVnfVmComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/usecaseui-portal/src/app/services/onboard-vnf-vm/onboard-vnf-vm.component.ts b/usecaseui-portal/src/app/services/onboard-vnf-vm/onboard-vnf-vm.component.ts new file mode 100644 index 00000000..c42b3ce3 --- /dev/null +++ b/usecaseui-portal/src/app/services/onboard-vnf-vm/onboard-vnf-vm.component.ts @@ -0,0 +1,61 @@ +import { Component, OnInit, HostBinding } from '@angular/core'; +import { MyhttpService } from '../../myhttp.service'; +import { slideToRight } from '../../animates'; + +@Component({ + selector: 'app-onboard-vnf-vm', + templateUrl: './onboard-vnf-vm.component.html', + styleUrls: ['./onboard-vnf-vm.component.less'], + animations: [ slideToRight ] +}) +export class OnboardVnfVmComponent implements OnInit { + @HostBinding('@routerAnimate') routerAnimateState; + constructor(private myhttp: MyhttpService) { } + + ngOnInit() { + this.getTableData(); + } + + + //表格数据 + tableData = []; + pageIndex = 1; + pageSize = 10; + total = 100; + loading = false; + sortName = null; + sortValue = null; + getTableData(){ + // 查询参数: 当前页码,每页条数,排序方式 + let paramsObj = { + pageIndex:this.pageIndex, + pageSize:this.pageSize, + nameSort:this.sortValue + } + this.myhttp.getOnboardTableData(paramsObj) + .subscribe((data)=>{ + console.log(data); + this.total = data.body.total; + this.tableData = data.body.tableList; + },(err)=>{ + console.log(err); + }) + } + sort(sort: { key: string, value: string }): void { + console.log(sort); + this.sortName = sort.key; + this.sortValue = sort.value; + this.getTableData(); + } + searchData(reset:boolean = false){ + console.log(reset) + this.getTableData(); + } + updataService(){ + console.log("updataService!"); + } + deleteService(){ + console.log("deleteService!"); + } + +} diff --git a/usecaseui-portal/src/app/services/services-list/services-list.component.css b/usecaseui-portal/src/app/services/services-list/services-list.component.css new file mode 100644 index 00000000..eaf8fddb --- /dev/null +++ b/usecaseui-portal/src/app/services/services-list/services-list.component.css @@ -0,0 +1,132 @@ +/* + Copyright (C) 2018 CMCC, Inc. and others. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ +.title { + font: 700 18px/18px "思源黑体"; + color: #4c5e70; + margin-bottom: 18px; +} +hr { + border: none; + height: 2px; + background-color: #dce1e7; + margin-bottom: 20px; +} +.action { + margin-bottom: 20px; +} +.action span { + display: inline-block; + font: 700 14px "Arial"; + color: #4c5e70; +} +.action nz-dropdown { + vertical-align: middle; +} +.action nz-dropdown :hover { + border-color: #147dc2; +} +.action nz-dropdown button { + width: 165px; + height: 30px; + background-color: #eceff4; + text-align: left; + border-color: #9fa9ab; +} +.action nz-dropdown button span { + font-weight: 400; + display: inline-block; + width: 120px; + overflow: hidden; + text-overflow: ellipsis; + padding-top: 2px; +} +.action nz-dropdown button i { + position: absolute; + top: 10px; + right: 10px; +} +.action .create { + float: right; + height: 30px; + padding: 0 10px; +} +.action .create span { + color: #fff; + font-weight: 400; +} +.list { + background-color: #fff; + border-radius: 5px; + padding: 10px; +} +.list nz-table tbody td span.active { + font-size: 14px; + color: #147dc2; +} +.list nz-table tbody td span.closed { + font-size: 14px; + color: red; +} +.list nz-table tbody td span.onboarding { + font-size: 12px; + color: #147dc2; +} +.list nz-table tbody td span.updating { + font-size: 12px; + color: blue; +} +.list nz-table tbody td span.deleting { + font-size: 12px; + color: red; +} +.list nz-table tbody td span.creating { + font-size: 12px; + color: green; +} +.list nz-table tbody td i.anticon { + cursor: pointer; + font-size: 18px; + padding: 2px; +} +.list nz-table tbody td i.anticon:hover { + color: #147dc2; +} +.list nz-table tbody tr.childtr td { + font-size: 12px; + color: #147dc2; +} +.detailComponent { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100vh; + background-color: #f3f3f3; + overflow-y: auto; + padding: 20px 32px; + z-index: 3; +} +.createComponent { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100vh; + background-color: #f3f3f3; + overflow-y: auto; + padding: 20px 32px; + z-index: 3; +} diff --git a/usecaseui-portal/src/app/services/services-list/services-list.component.html b/usecaseui-portal/src/app/services/services-list/services-list.component.html new file mode 100644 index 00000000..e0866524 --- /dev/null +++ b/usecaseui-portal/src/app/services/services-list/services-list.component.html @@ -0,0 +1,185 @@ +<!-- + Copyright (C) 2018 CMCC, Inc. and others. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<h3 class="title"> Services List </h3> +<hr> +<div class="action"> + <span>Customer: </span> + <nz-dropdown [nzTrigger]="'click'" [nzPlacement]="'bottomLeft'"> + <button nz-button nz-dropdown><span>{{customerSelected.name}}</span> <i class="anticon anticon-down"></i></button> + <ul nz-menu style="max-height: 200px; overflow: auto;"> + <li nz-menu-item (click)="choseCustomer(item)" *ngFor="let item of customerList"> + <a title="{{item.name}}" style="max-width: 165px; overflow: hidden; text-overflow: ellipsis;">{{item.name}}</a> + </li> + </ul> + </nz-dropdown> + + + <span>Service Type: </span> + <nz-dropdown [nzTrigger]="'click'" [nzPlacement]="'bottomLeft'"> + <button nz-button nz-dropdown><span>{{serviceTypeSelected.name}}</span> <i class="anticon anticon-down"></i></button> + <ul nz-menu style="max-height: 200px; overflow: auto;"> + <li nz-menu-item (click)="choseServiceType(item)" *ngFor="let item of serviceTypeList"> + <a title="{{item.name}}" style="max-width: 165px; overflow: hidden; text-overflow: ellipsis;">{{item.name}}</a> + </li> + </ul> + </nz-dropdown> + + <button class="create" nz-button [nzType]="'primary'" (click)="showModal()"><i class="anticon anticon-plus-circle-o"></i><span> Create </span></button> + <nz-modal [(nzVisible)]="isVisible" nzTitle="Create" (nzOnCancel)="handleCancel()" (nzOnOk)="handleOk()"> + <p>Content one</p> + <p>Content two</p> + <p>Content three</p> + </nz-modal> + <button class="create" nz-button [nzType]="'primary'" (click)="showModal2()"><i class="anticon anticon-plus-circle-o"></i><span> Create </span></button> + <nz-modal [(nzVisible)]="isVisible2" nzTitle="Create" (nzOnCancel)="handleCancel()" (nzOnOk)="handleOk2()"> + <span style="display:inline-block;width:70px;">Service: </span> + <nz-select style="width: 165px;" [(ngModel)]="templateTypeSelected" nzAllowClear (ngModelChange)="choseTemplateType()"> + <!-- <nz-option *ngFor="let item of templateType" [nzValue]="item" [nzLabel]="item"></nz-option> --> + <nz-option nzValue="SOTN" nzLabel="SOTN"></nz-option> + <nz-option nzValue="CCVPN" nzLabel="CCVPN"></nz-option> + </nz-select> + + <hr> + <span>SOTN VPN: </span> + <nz-select style="width: 165px;" [(ngModel)]="template1" nzAllowClear > + <nz-option *ngFor="let item of templates" [nzValue]="item" [nzLabel]="item.name"></nz-option> + </nz-select> + + <span> SITE: </span> + <nz-select style="width: 165px;" [(ngModel)]="template2" nzAllowClear > + <nz-option *ngFor="let item of templates" [nzValue]="item" [nzLabel]="item.name"></nz-option> + </nz-select> + + <div *ngIf="templateTypeSelected == 'CCVPN'"> + <br> + <span style="display:inline-block;width:70px;">SD-WAN: </span> + <nz-select style="width: 165px;" [(ngModel)]="template3" nzAllowClear > + <nz-option *ngFor="let item of templates" [nzValue]="item" [nzLabel]="item.name"></nz-option> + </nz-select> + </div> + </nz-modal> +</div> +<div class="list"> + <nz-table *ngIf="1" + #nzTable [nzData]="tableData" + nzShowSizeChanger + [nzFrontPagination]="false" + [nzShowQuickJumper]="true" + [nzPageSizeOptions]="[5,10,15,20]" + [nzTotal]= 'total' + [(nzPageSize)]="pageSize" + [(nzPageIndex)]='pageIndex' + [nzLoading]="loading" + [nzSize]="'middle'" + [nzScroll]="{ y: '58vh' }" + (nzPageIndexChange)="searchData()" + (nzPageSizeChange)="searchData(true)"> + <thead (nzSortChange)="sort($event)" nzSingleSort> + <tr> + <th nzWidth="5%">NO</th> + <th nzWidth="5%"></th> + <th nzWidth="20%" nzShowSort nzSortKey="name">Service Instance Id</th> + <th nzWidth="20%">Name</th> + <th nzWidth="15%">Type</th> + <th nzWidth="20%">Status</th> + <th nzWidth="15%">Action</th> + </tr> + </thead> + <tbody> + <ng-template ngFor let-data [ngForOf]="nzTable.data" let-i="index"> + <tr> + <td>{{i+1}}</td> + <td [nzShowExpand]="data.children[0]" [(nzExpand)]="data.expand"></td> + <td>{{data.serviceId}}</td> + <td>{{data.name}}</td> + <td>{{data.type}}</td> + <td> + <span [ngClass]="{'active':data.status=='Active','closed':data.status=='Closed','onboarding':data.status=='Onboarding', + 'updating':data.status=='Updating','deleting':data.status=='Deleting','creating':data.status=='Creating'}">{{data.status}}</span> + <nz-progress *ngIf="data.status!='Active' && data.status!='Closed'" [nzPercent]="data.progress"></nz-progress> + </td> + <td> + <i class="anticon anticon-setting" (click)="scaleService()"></i> + <i class="anticon anticon-cloud-upload-o" (click)="updataService()"></i> + <i class="anticon anticon-delete" (click)="deleteService()"></i> + </td> + </tr> + <tr class="childtr" [nzExpand]="data.expand" *ngFor="let item of data.children"> + <td></td> + <td></td> + <td>{{item.serviceId}}</td> + <td>{{item.name}}</td> + <td colspan="3">{{item.type}}</td> + </tr> + </ng-template> + </tbody> + </nz-table> + <nz-table *ngIf="1" + #nzTable2 [nzData]="tableData2" + nzShowSizeChanger + [nzFrontPagination]="true" + [nzShowQuickJumper]="true" + [nzPageSizeOptions]="[5,10,15,20]" + [(nzPageSize)]="pageSize" + [(nzPageIndex)]='pageIndex' + nzSize="middle" + [nzScroll]="{ y: '58vh' }"> + <thead nzSingleSort> + <tr> + <th nzWidth="5%">NO.</th> + <th nzWidth="20%"> Instance ID </th> + <th nzWidth="20%">Instance Name</th> + <!-- <th nzWidth="10%">Type</th> --> + <th nzWidth="25%">Description</th> + <th nzWidth="15%">Status</th> + <th nzWidth="10%">Action</th> + </tr> + </thead> + <tbody> + <!-- <ng-template ngFor let-data [ngForOf]="nzTable2.data" let-i="index"> --> + <tr *ngFor="let item of nzTable2.data; let i = index; "> + <td>{{pageSize*(pageIndex-1) + i+1}}</td> + <td>{{item.sotnvpnSer['service-instance-id']}}</td> + <td>{{item.sotnvpnSer['service-instance-name']}}</td> + <!-- <td>{{item.type}}</td> --> + <td>{{item.sotnvpnSer.description}}</td> + <td> + <span *ngIf="item.sotnvpnSer.status!='creating' && item.sotnvpnSer.status!='deleting'">{{item.sotnvpnSer.status}}</span> + <span *ngIf="item.sotnvpnSer.status=='creating' || item.sotnvpnSer.status=='deleting'" [ngClass]="{'deleting':item.sotnvpnSer.status=='deleting','creating':item.sotnvpnSer.status=='creating'}">{{item.sotnvpnSer.status}}</span> + <nz-progress *ngIf="item.sotnvpnSer.status=='creating' || item.sotnvpnSer.status=='deleting'" [nzPercent]="item.sotnvpnSer.rate"></nz-progress> + </td> + <td> + <span title="detail" class="action" [ngClass]="{'cannotclick':item.sotnvpnSer.status=='deleting'||item.sotnvpnSer.status=='creating'}" + (click)="showDetail(item)"> <i class="anticon anticon-ellipsis"></i> </span> + <span title="delete" class="action" [ngClass]="{'cannotclick':item.sotnvpnSer.status=='deleting'||item.sotnvpnSer.status=='creating'}" + (click)="deleteInstace(item)"> <i class="anticon anticon-delete"></i> </span> + </td> + </tr> + <!-- </ng-template> --> + </tbody> + </nz-table> +</div> + +<div class="detailComponent" *ngIf="detailshow"> + <app-ccvpn-detail [namesTranslate]="namesTranslate" [detailParams]="detailData" (closeDetail)="detailshow = false;"></app-ccvpn-detail> +</div> +<div class="createComponent" *ngIf="createshow"> + <app-ccvpn-creation + [createParams]="createData" + [namesTranslate]="namesTranslate" + (closeCreate)="closeCreate($event)"> + </app-ccvpn-creation> +</div> diff --git a/usecaseui-portal/src/app/services/services-list/services-list.component.less b/usecaseui-portal/src/app/services/services-list/services-list.component.less new file mode 100644 index 00000000..7e8ff80e --- /dev/null +++ b/usecaseui-portal/src/app/services/services-list/services-list.component.less @@ -0,0 +1,127 @@ +.title { + font: 700 18px/18px "思源黑体"; + color: #4c5e70; + margin-bottom: 18px; +} +hr { + border: none; + height: 2px; + background-color: #dce1e7; + margin-bottom: 20px; +} +.action { + margin-bottom: 20px; + span { + display: inline-block; + font: 700 14px "Arial"; + color: #4c5e70; + } + nz-dropdown { + vertical-align: middle; + :hover{ + border-color: #147dc2; + } + button { + width: 165px; + height: 30px; + background-color: #eceff4; + text-align: left; + border-color: #9fa9ab; + span { + font-weight: 400; + display: inline-block; + width: 120px; + overflow: hidden; + text-overflow: ellipsis; + padding-top: 2px; + } + i { + position: absolute; + top: 10px; + right: 10px; + } + } + //下拉框中的样式在style.less中,下拉框是在body中额外临时生成的 + } + .create { + float: right; + height: 30px; + padding: 0 10px; + span { + color: #fff; + font-weight: 400; + } + } +} +.list { + background-color: #fff; + border-radius: 5px; + padding: 10px; + nz-table { + tbody { + td { + span.active { + font-size: 14px; + color: #147dc2; + } + span.closed { + font-size: 14px; + color: red; + } + span.onboarding{ + font-size: 12px; + color: #147dc2; + } + span.updating{ + font-size: 12px; + color: blue; + } + span.deleting { + font-size: 12px; + color: red; + } + span.creating { + font-size: 12px; + color: green; + } + i.anticon { + cursor: pointer; + font-size: 18px; + padding: 2px; + &:hover{ + color: #147dc2; + } + } + } + tr.childtr { + td { + font-size: 12px; + color: #147dc2; + } + } + } + } +} + +.detailComponent { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100vh; + background-color: #f3f3f3; + overflow-y: auto; + padding: 20px 32px; + z-index: 3; +} +.createComponent { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100vh; + background-color: #f3f3f3; + overflow-y: auto; + padding: 20px 32px; + z-index: 3; +} diff --git a/usecaseui-portal/src/app/services/services-list/services-list.component.spec.ts b/usecaseui-portal/src/app/services/services-list/services-list.component.spec.ts new file mode 100644 index 00000000..61440dc3 --- /dev/null +++ b/usecaseui-portal/src/app/services/services-list/services-list.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ServicesListComponent } from './services-list.component'; + +describe('ServicesListComponent', () => { + let component: ServicesListComponent; + let fixture: ComponentFixture<ServicesListComponent>; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ServicesListComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ServicesListComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/usecaseui-portal/src/app/services/services-list/services-list.component.ts b/usecaseui-portal/src/app/services/services-list/services-list.component.ts new file mode 100644 index 00000000..d893070d --- /dev/null +++ b/usecaseui-portal/src/app/services/services-list/services-list.component.ts @@ -0,0 +1,511 @@ +import { Component, OnInit, HostBinding } from '@angular/core'; +import { MyhttpService } from '../../myhttp.service'; +import { slideToRight } from '../../animates'; +import { NzModalService } from 'ng-zorro-antd'; + +@Component({ + selector: 'app-services-list', + templateUrl: './services-list.component.html', + styleUrls: ['./services-list.component.less'], + animations: [ slideToRight ] +}) +export class ServicesListComponent implements OnInit { + @HostBinding('@routerAnimate') routerAnimateState; + constructor(private myhttp: MyhttpService, private modalService: NzModalService) { } + + ngOnInit() { + this.getallCustomers(); + this.getTemplateSubTypes(); + this.inputNamests(); + } + // 筛选框(下拉框)customer servicetype + customerList = []; + customerSelected = {name:null,id:null}; + serviceTypeList = []; + serviceTypeSelected = {name:null,id:null}; + + // 获取所有customer + getallCustomers(){ + this.myhttp.getAllCustomers() + .subscribe((data)=>{ + this.customerList = data.map((item)=>{return {name:item["subscriber-name"],id:item["global-customer-id"]}}); + this.customerSelected = this.customerList[0]; + this.choseCustomer(this.customerSelected); + // console.log(this.customers) + }) + } + + choseCustomer(item){ + this.customerSelected = item; + this.myhttp.getServiceTypes(this.customerSelected) + .subscribe((data)=>{ + this.serviceTypeList = data.map((item)=>{return {name:item["service-type"]}}); + this.serviceTypeSelected = this.serviceTypeList[0]; + this.choseServiceType(this.serviceTypeSelected); + // console.log(this.listServiceTypes); + }) + } + choseServiceType(item){ + this.serviceTypeSelected = item; + this.getTableData(); + } + + // 模态框(对话框) create + isVisible = false; + showModal(): void { + this.isVisible = true; + } + handleOk(): void { + console.log('Button ok clicked!'); + this.isVisible = false; + } + handleCancel(): void { + console.log('Button cancel clicked!'); + this.isVisible = false; + this.isVisible2 = false; + } + + // 创建模态框2(对话框) create ------------------------------- + isVisible2 = false; + showModal2(): void { + this.isVisible2 = true; + this.templates1 = []; //多次创建会push累积名字,从新置空 + this.templates2 = []; + this.templates3 = []; + this.getAlltemplates(); + } + // 服务 + templateTypeSelected = "SOTN"; + choseTemplateType(){ + // this.filterTemplates();//分类 + } + // 模板 + templates = []; templates1;templates2;templates3; + template1={name:null}; + template2={name:null}; + template3={name:null}; + // 模板分类数据,创建、获取实例分类共用 + templateSubTypes = {}; //子类,sotnvpn、site、sdwan + getTemplateSubTypes(){ + this.myhttp.getServicesCategory() + .subscribe((data)=>{ + this.templateSubTypes = data; + },(err)=>{ + console.log("getTemplateTypes err") + }) + } + + getAlltemplates(){ //获取所有模板类型 + this.myhttp.getAllServiceTemplates() + .subscribe((data)=>{ + console.log(data) + this.templates = data; + this.template1 = data[0]; + this.template2 = data[1]; + this.template3 = data[2]; + // this.filterTemplates();//分类 + },(err)=>{ + + }) + } + // filterTemplates(){ //模板类型分类,本地配置文件 + // this.templates1 = []; + // this.templates2 = []; + // this.templates3 = []; + // this.templates.forEach((item)=>{ + // this.templateSubTypes[this.templateTypeSelected].sotnvpn.find((d)=>{ + // return d["model-invariant-id"] == item.uuid && d["model-version-id"] == item.invariantUUID + // })?this.templates1.push(item):null; + // this.templateSubTypes[this.templateTypeSelected].site.find((d)=>{ + // return d["model-invariant-id"] == item.uuid && d["model-version-id"] == item.invariantUUID + // })?this.templates2.push(item):null; + // if(this.templateTypeSelected=="CCVPN"){ + // this.templateSubTypes[this.templateTypeSelected].sdwan.find((d)=>{ + // return d["model-invariant-id"] == item.uuid && d["model-version-id"] == item.invariantUUID + // })?this.templates3.push(item):null; + // } + // }) + // this.template1 = this.templates1[0]; + // this.template2 = this.templates2[0]; + // if(this.templates3[0]){ + // this.template3 = this.templates3[0]; + // } + // } + + + // 确定、取消 + createshow = false; + createData:Object={}; + handleOk2(): void { + console.log('Button ok clicked!'); + this.isVisible2 = false; + let data1 = {commonParams:{customer:this.customerSelected, serviceType:this.serviceTypeSelected, templateType:"SOTN"},templates:{template1:this.template1,template2:this.template2}}; + let data2 = {commonParams:{customer:this.customerSelected, serviceType:this.serviceTypeSelected, templateType:"CCVPN"},templates:{template1:this.template1,template2:this.template2,template3:this.template3}}; + + this.createData = this.templateTypeSelected == "SOTN" ? data1 : data2; + this.createshow = true; + } + // handleCancel(): void { + // console.log('Button cancel clicked!'); + // this.isVisible2 = false; + // } + + + //表格数据 + tableData = []; + pageIndex = 1; + pageSize = 10; + total = 100; + loading = false; + sortName = null; + sortValue = null; + getTableData(){ + // 查询参数: customer serviceType 当前页码,每页条数,排序方式 + let paramsObj = { + customer:this.customerSelected, + serviceType:this.serviceTypeSelected, + pageIndex:this.pageIndex, + pageSize:this.pageSize, + serviceIdSort:this.sortValue + } + this.myhttp.getServicesTableData(paramsObj) + .subscribe((data)=>{ + console.log(data); + this.total = data.body.total; + this.tableData = data.body.tableList; + },(err)=>{ + console.log(err); + }) + } + sort(sort: { key: string, value: string }): void { + console.log(sort); + this.sortName = sort.key; + this.sortValue = sort.value; + this.getTableData(); + } + searchData(reset:boolean = false){ + console.log(reset) + this.getTableData(); + } + + scaleService(){ + console.log("scaleService!"); + } + updataService(){ + console.log("updataService!"); + } + deleteService(){ + console.log("deleteService!"); + } + + //表格数据 + tableData2 = []; + getTableData2(){ + let params = { + customerId:this.customerSelected.id, + serviceType:this.serviceTypeSelected + } + this.myhttp.getInstanceTableData(params) + .subscribe((data)=>{ + this.pageIndex = 1; + this.tableData2 = []; + console.log(data) + // data.results.forEach((item)=>{ + // item["sotnvpnSer"] = item["service-subscription"]["service-instances"]["service-instance"].find((d)=>{ + // return this.templateSubTypes["SOTN"].sotnvpn.find((m)=>{ + // return d["model-invariant-id"]==m["model-invariant-id"] && d["model-version-id"]==m["model-version-id"] + // })?item["Type"]="SOTN":null || this.templateSubTypes["CCVPN"].sotnvpn.find((m)=>{ + // return d["model-invariant-id"]==m["model-invariant-id"] && d["model-version-id"]==m["model-version-id"] + // })?item["Type"]="CCVPN":null + // }) + + // if(item["sotnvpnSer"]){ + // this.tableData2.push(item); + // } + // }) + + //---------数据结构有问题,模拟只有一组数据情况---------// + data["sotnvpnSer"] = data["service-instance"].find((d)=>{ + return this.templateSubTypes["SOTN"].sotnvpn.find((m)=>{ + return d["model-invariant-id"]==m["model-invariant-id"] && d["model-version-id"]==m["model-version-id"] + })?d["Type"]="SOTN":null || this.templateSubTypes["CCVPN"].sotnvpn.find((m)=>{ + return d["model-invariant-id"]==m["model-invariant-id"] && d["model-version-id"]==m["model-version-id"] + })?d["Type"]="CCVPN":null + }) + let inputParams = JSON.parse(data["sotnvpnSer"]["input-parameters"]).service.parameters.requestInputs; + let descriptionName = Object.keys(inputParams).find((item)=>{ return item.endsWith("_description")}); + data["sotnvpnSer"]["description"] = inputParams[descriptionName]; + data["sotnvpnSer"]["status"] = "Active"; + this.tableData2.push(data); + + console.log(this.tableData2) + },(err)=>{ + console.log(err); + }) + } + + // 显示详情 + detailshow = false; + detailData:Object; + showDetail(service){ + service["siteSer"]=[]; + service["sdwanSer"]=[]; + service["customer"]=this.customerSelected; + service["serviceType"] = this.serviceTypeSelected; + // service["service-subscription"]["service-instances"]["service-instance"].forEach((item)=>{ + // this.templateSubTypes[service.Type].site.find((d)=>{ + // return d["model-invariant-id"] == item["model-invariant-id"] && d["model-version-id"] == item["model-version-id"] + // })?service["siteSer"].push(item):null; + // if(service.Type=="CCVPN"){ + // this.templateSubTypes[service.Type].sdwan.find((d)=>{ + // return d["model-invariant-id"] == item["model-invariant-id"] && d["model-version-id"] == item["model-version-id"] + // })?service["sdwanSer"].push(item):null; + // } + // }) + service["service-instance"].forEach((item)=>{ + this.templateSubTypes[service.sotnvpnSer.Type].site.find((d)=>{ + return d["model-invariant-id"] == item["model-invariant-id"] && d["model-version-id"] == item["model-version-id"] + })?service["siteSer"].push(item):null; + if(service.sotnvpnSer.Type=="CCVPN"){ + this.templateSubTypes[service.sotnvpnSer.Type].sdwan.find((d)=>{ + return d["model-invariant-id"] == item["model-invariant-id"] && d["model-version-id"] == item["model-version-id"] + })?service["sdwanSer"].push(item):null; + } + }) + this.detailshow = true; + this.detailData = service; + console.log(service); + } + // 删除 确认模态框 + deleteInstace(service){ + // 创建确认框 + this.modalService.confirm({ + nzTitle : 'Are you sure delete this instance?', + nzContent : `Instance ID: <b class="deleteModelContent"> ${service.sotnvpnSer["service-instance-id"]}</b>`, + nzOkText : 'Yes', + nzOkType : 'danger', + nzOnOk : () => { + console.log(service); + let allprogress = {}; //所有进度值,以operationId为键 + let querypros = []; //所有查询 + service.sotnvpnSer.rate = 0; + service.sotnvpnSer.status = "deleting"; + // let deletePros = service["service-subscription"]["service-instances"]["service-instance"].map((item)=>{ + // let id = item["service-instance-id"]; + // return new Promise((res,rej)=>{ + // this.myhttp.deleteInstance(id) + // .subscribe((data)=>{ + // let obj = {serviceId:id,operationId:data.operationId} + // let updata = (prodata)=>{ + // allprogress[prodata.operationId] = prodata.progress; + // let average = ((arr)=>{return eval(arr.join("+"))/arr.length})(Object.values(allprogress)); + // service.sotnvpnSer["rate"]=average; + // } + // querypros.push(this.queryProgress(obj,updata)); + // res(); + // }) + // }) + // }) + let deletePros = service["service-instance"].map((item)=>{ + let params = { + globalSubscriberId:this.customerSelected.id, + serviceType:this.serviceTypeSelected, + serviceInstanceId:item["service-instance-id"] + } + return new Promise((res,rej)=>{ + this.myhttp.deleteInstance(params) + .subscribe((data)=>{ + let obj = {serviceId:params.serviceInstanceId,operationId:data.operationId} + let updata = (prodata)=>{ + allprogress[prodata.operationId] = prodata.progress; + let average = ((arr)=>{return eval(arr.join("+"))/arr.length})(Object.values(allprogress)); + service.sotnvpnSer["rate"]=average; + } + querypros.push(this.queryProgress(obj,updata)); + res(); + }) + }) + }) + console.log(deletePros) + Promise.all(deletePros).then(()=>{ + Promise.all(querypros).then((data)=>{ + console.log(data); + service.sotnvpnSer.rate = 100; + service.sotnvpnSer.status = "deleted"; + setTimeout(()=>{ + this.getTableData(); + },1000) + }) + }) + + }, + nzCancelText: 'No', + nzOnCancel : () => console.log('Cancel') + }); + } + + + closeCreate(obj){ + if(!obj){ + this.createshow = false; //关闭创建窗口 + return false; + } + this.createshow = false; //关闭创建窗口 + console.log(obj); + let newData; //主表格中新创建的服务数据 + let stageNum = 0; //不同阶段进度,用于后续服务进度相加; + // -------------------------------------------------------------------------- + // obj.groupbody.map((group)=>{ //所有创建 + // return this.createService(group) + // }) + // obj.sitebody.map((group)=>{ //所有创建 + // console.log(group) + // return this.createService(group) + // }) + // ----------------------------------------------------------------------------- + this.createService(obj.vpnbody).then((data)=>{ + console.log(data) + newData = { //主表格中新创建的服务数据 + 'service-instance-id':data["serviceId"], + 'service-instance-name':obj.vpnbody.service.name, + description:obj.vpnbody.service.description, + status:"creating", + rate:0, + } + this.tableData2 = [{sotnvpnSer:newData},...this.tableData2]; + let updata = (prodata)=>{ + newData.rate = Math.floor(prodata.progress/3); + } + let queryParams = {serviceId:data["serviceId"],operationId:data["operationId"]}; + return this.queryProgress(queryParams,updata); + }).then((data)=>{ + console.log(data); + stageNum = newData.rate; //阶段进度值更新; + let allprogress = {}; //所有进度值,以operationId为键 + let querypros = []; //所有查询 + let createPros = obj.groupbody.map((group)=>{ //所有创建 + return this.createService(group).then((data)=>{ + console.log(data); + let updata = (prodata)=>{ + allprogress[prodata.operationId] = prodata.progress; + let average = ((arr)=>{return eval(arr.join("+"))/arr.length})(Object.values(allprogress)) + newData.rate = Math.floor(average/3) + stageNum; + } + let queryParams = {serviceId:data["serviceId"],operationId:data["operationId"]}; + querypros.push(this.queryProgress(queryParams,updata)) + }) + }) + + return new Promise((res)=>{ + Promise.all(createPros).then(()=>{ //所有创建好之后querypros中查询进度才全都添加完毕 + Promise.all(querypros).then((data)=>{ + console.log(data); + res("site--begin"); + }) + }) + }) + }).then((data)=>{ + console.log(data); + stageNum = newData.rate; //阶段进度值更新; + let allprogress = {}; + let querypros = []; //所有查询 + let createPros = obj.sitebody.map((group)=>{ //所有创建 + return this.createService(group).then((data)=>{ + console.log(data); + let updata = (prodata)=>{ + allprogress[prodata.operationId] = prodata.progress; + let average =((arr)=>{return eval(arr.join("+"))/arr.length})(Object.values(allprogress)) + newData.rate = Math.floor(average/3) + stageNum; + } + let queryParams = {serviceId:data["serviceId"],operationId:data["operationId"]}; + querypros.push(this.queryProgress(queryParams,updata)) + }) + }) + console.log(createPros); + Promise.all(createPros).then(()=>{ //所有创建好之后querypros中查询进度才全都添加完毕 + Promise.all(querypros).then((data)=>{ + console.log(data); + newData.rate = 100; + newData.status = "completed"; + setTimeout(()=>{ + this.getTableData(); + },1000) + }) + }) + }) + + } + + createService(params){ + let mypromise = new Promise((res,rej)=>{ + this.myhttp.createInstance(params) + .subscribe((data)=>{ + + res(data.service); + }) + }) + return mypromise; + } + + queryProgress(obj,callback){ + let mypromise = new Promise((res,rej)=>{ + // let data = { + // operationStatus:{ + // "operationId": "XXXXXX", + // "operation": "create|delete|update|scale", + // "result": "finished|error|processing", + // "reason": "", + // "userId": "", + // "operationContent": "Be creating pop.", + // "progress": 0, + // "operateAt": "", + // "finishedAt": "" + // } + // } + let requery = ()=>{ + this.myhttp.getProgress(obj) + .subscribe((data)=>{ + if(data.operationStatus.progress==undefined){ + console.log(data); + setTimeout(()=>{ + requery(); + },5000) + return false; + } + if(data.operationStatus.progress < 100){ + callback(data.operationStatus); + setTimeout(()=>{ + requery(); + },5000) + }else { + res(data.operationStatus); + } + }) + // setTimeout(()=>{ + // console.log(data.operationStatus.progress) + // data.operationStatus.progress++; + // if(data.operationStatus.progress<100){ + // callback(data.operationStatus); + // requery() + // }else{ + // callback(data.operationStatus); + // res(data.operationStatus) + // } + // },100) + } + requery(); + }) + return mypromise; + } + + + // 名字转换参数匹配 --> 传给子组件用 + namesTranslate:Object; + inputNamests(){ + this.myhttp.inputNamesTransform() + .subscribe((data)=>{ + this.namesTranslate = data; + }) + } + +} diff --git a/usecaseui-portal/src/app/services/services.component.html b/usecaseui-portal/src/app/services/services.component.html new file mode 100644 index 00000000..c4fddfc0 --- /dev/null +++ b/usecaseui-portal/src/app/services/services.component.html @@ -0,0 +1,18 @@ +<!-- + Copyright (C) 2018 CMCC, Inc. and others. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<p> + services works! +</p> diff --git a/usecaseui-portal/src/app/services/services.component.less b/usecaseui-portal/src/app/services/services.component.less new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/usecaseui-portal/src/app/services/services.component.less diff --git a/usecaseui-portal/src/app/services/services.component.spec.ts b/usecaseui-portal/src/app/services/services.component.spec.ts new file mode 100644 index 00000000..2e76b9f9 --- /dev/null +++ b/usecaseui-portal/src/app/services/services.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ServicesComponent } from './services.component'; + +describe('ServicesComponent', () => { + let component: ServicesComponent; + let fixture: ComponentFixture<ServicesComponent>; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ServicesComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ServicesComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/usecaseui-portal/src/app/services/services.component.ts b/usecaseui-portal/src/app/services/services.component.ts new file mode 100644 index 00000000..eec235b4 --- /dev/null +++ b/usecaseui-portal/src/app/services/services.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-services', + templateUrl: './services.component.html', + styleUrls: ['./services.component.less'] +}) +export class ServicesComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/usecaseui-portal/src/assets/i18n/en.json b/usecaseui-portal/src/assets/i18n/en.json new file mode 100644 index 00000000..9b191f8e --- /dev/null +++ b/usecaseui-portal/src/assets/i18n/en.json @@ -0,0 +1,22 @@ +{ + "Language":"--:", + "zh":"Chinese", + "en":"English", + + "app-component":"--:", + "Home":"Home", + "Services":"Services", + "Services List":"Services List", + "Alarm":"Alarm", + "Performance":"Performance", + "Monitor":"Monitor", + "Network":"Network", + + "home-component":"--:", + "Overall trend":"Overall trend", + "SERVICES":"SERVICES", + "services":"services", + "services has been created":"services has been created", + "PERFORMANCE":"PERFORMANCE", + "VM Performance":"VM Performance" +}
\ No newline at end of file diff --git a/usecaseui-portal/src/assets/i18n/zh.json b/usecaseui-portal/src/assets/i18n/zh.json new file mode 100644 index 00000000..c360c822 --- /dev/null +++ b/usecaseui-portal/src/assets/i18n/zh.json @@ -0,0 +1,22 @@ +{ + "Language":"--:", + "zh":"中文", + "en":"英文", + + "app-component":"--:", + "Home":"首页", + "Services":"服务", + "Services List":"服务列表", + "Alarm":"告警", + "Monitor":"监控", + "Performance":"性能", + "Network":"网云", + + "home-component":"--:", + "Overall trend":"总体趋势", + "SERVICES":"服务", + "services":"条服务", + "services has been created":"条已创建的服务", + "PERFORMANCE":"性能", + "VM Performance":"VM 性能" +}
\ No newline at end of file diff --git a/usecaseui-portal/src/assets/images/VM.png b/usecaseui-portal/src/assets/images/VM.png Binary files differnew file mode 100644 index 00000000..72b31a5d --- /dev/null +++ b/usecaseui-portal/src/assets/images/VM.png diff --git a/usecaseui-portal/src/assets/images/VNF.png b/usecaseui-portal/src/assets/images/VNF.png Binary files differnew file mode 100644 index 00000000..21b64db0 --- /dev/null +++ b/usecaseui-portal/src/assets/images/VNF.png diff --git a/usecaseui-portal/src/assets/images/VNF1.png b/usecaseui-portal/src/assets/images/VNF1.png Binary files differnew file mode 100644 index 00000000..0d37bebe --- /dev/null +++ b/usecaseui-portal/src/assets/images/VNF1.png diff --git a/usecaseui-portal/src/assets/images/VNF2.png b/usecaseui-portal/src/assets/images/VNF2.png Binary files differnew file mode 100644 index 00000000..70a43a7c --- /dev/null +++ b/usecaseui-portal/src/assets/images/VNF2.png diff --git a/usecaseui-portal/src/assets/images/VNF3.png b/usecaseui-portal/src/assets/images/VNF3.png Binary files differnew file mode 100644 index 00000000..e5904344 --- /dev/null +++ b/usecaseui-portal/src/assets/images/VNF3.png diff --git a/usecaseui-portal/src/assets/images/bigcloud.png b/usecaseui-portal/src/assets/images/bigcloud.png Binary files differnew file mode 100644 index 00000000..23bf7375 --- /dev/null +++ b/usecaseui-portal/src/assets/images/bigcloud.png diff --git a/usecaseui-portal/src/assets/images/cloud-city1.png b/usecaseui-portal/src/assets/images/cloud-city1.png Binary files differnew file mode 100644 index 00000000..051f7749 --- /dev/null +++ b/usecaseui-portal/src/assets/images/cloud-city1.png diff --git a/usecaseui-portal/src/assets/images/cloud-county1.png b/usecaseui-portal/src/assets/images/cloud-county1.png Binary files differnew file mode 100644 index 00000000..feb6a4a8 --- /dev/null +++ b/usecaseui-portal/src/assets/images/cloud-county1.png diff --git a/usecaseui-portal/src/assets/images/cloud-out.png b/usecaseui-portal/src/assets/images/cloud-out.png Binary files differnew file mode 100644 index 00000000..aeec4fdd --- /dev/null +++ b/usecaseui-portal/src/assets/images/cloud-out.png diff --git a/usecaseui-portal/src/assets/images/cloud-site.png b/usecaseui-portal/src/assets/images/cloud-site.png Binary files differnew file mode 100644 index 00000000..97db0518 --- /dev/null +++ b/usecaseui-portal/src/assets/images/cloud-site.png diff --git a/usecaseui-portal/src/assets/images/domain.png b/usecaseui-portal/src/assets/images/domain.png Binary files differnew file mode 100644 index 00000000..68027b23 --- /dev/null +++ b/usecaseui-portal/src/assets/images/domain.png diff --git a/usecaseui-portal/src/assets/images/icon.png b/usecaseui-portal/src/assets/images/icon.png Binary files differnew file mode 100644 index 00000000..3c6f04e4 --- /dev/null +++ b/usecaseui-portal/src/assets/images/icon.png diff --git a/usecaseui-portal/src/assets/images/loading.gif b/usecaseui-portal/src/assets/images/loading.gif Binary files differnew file mode 100644 index 00000000..57a6df2c --- /dev/null +++ b/usecaseui-portal/src/assets/images/loading.gif diff --git a/usecaseui-portal/src/assets/images/open-close.png b/usecaseui-portal/src/assets/images/open-close.png Binary files differnew file mode 100644 index 00000000..27e8f305 --- /dev/null +++ b/usecaseui-portal/src/assets/images/open-close.png diff --git a/usecaseui-portal/src/assets/images/open-close2.png b/usecaseui-portal/src/assets/images/open-close2.png Binary files differnew file mode 100644 index 00000000..0dd00861 --- /dev/null +++ b/usecaseui-portal/src/assets/images/open-close2.png diff --git a/usecaseui-portal/src/assets/images/out-domain.png b/usecaseui-portal/src/assets/images/out-domain.png Binary files differnew file mode 100644 index 00000000..6bcdd552 --- /dev/null +++ b/usecaseui-portal/src/assets/images/out-domain.png diff --git a/usecaseui-portal/src/assets/images/site.png b/usecaseui-portal/src/assets/images/site.png Binary files differnew file mode 100644 index 00000000..b63bc2ee --- /dev/null +++ b/usecaseui-portal/src/assets/images/site.png diff --git a/usecaseui-portal/src/assets/images/tildeimg.png b/usecaseui-portal/src/assets/images/tildeimg.png Binary files differnew file mode 100644 index 00000000..e39a315d --- /dev/null +++ b/usecaseui-portal/src/assets/images/tildeimg.png diff --git a/usecaseui-portal/src/assets/images/tp.png b/usecaseui-portal/src/assets/images/tp.png Binary files differnew file mode 100644 index 00000000..9daf005b --- /dev/null +++ b/usecaseui-portal/src/assets/images/tp.png diff --git a/usecaseui-portal/src/assets/json/LogicalLinksData.json b/usecaseui-portal/src/assets/json/LogicalLinksData.json new file mode 100644 index 00000000..99487f9d --- /dev/null +++ b/usecaseui-portal/src/assets/json/LogicalLinksData.json @@ -0,0 +1,168 @@ +{ + "logical-link": [ + { + "link-name": "cross-link-1", + "in-maint": false, + "link-type": "cross-link", + "resource-version": "1536029865021", + "operational-status": "up", + "relationship-list": { + "relationship": [ + { + "related-to": "p-interface", + "relationship-label": "tosca.relationships.network.LinksTo", + "related-link": "/aai/v13/network/pnfs/pnf/pnf2000/p-interfaces/p-interface/nodeId-78.78.78.78-ltpId-1", + "relationship-data": [ + { + "relationship-key": "pnf.pnf-name", + "relationship-value": "pnf2000" + }, + { + "relationship-key": "p-interface.interface-name", + "relationship-value": "nodeId-78.78.78.78-ltpId-1" + } + ], + "related-to-property": [ + { + "property-key": "p-interface.prov-status" + } + ] + }, + { + "related-to": "p-interface", + "relationship-label": "tosca.relationships.network.LinksTo", + "related-link": "/aai/v13/network/pnfs/pnf/pnf1000/p-interfaces/p-interface/nodeId-79.79.79.79-ltpId-1", + "relationship-data": [ + { + "relationship-key": "pnf.pnf-name", + "relationship-value": "pnf1000" + }, + { + "relationship-key": "p-interface.interface-name", + "relationship-value": "nodeId-79.79.79.79-ltpId-1" + } + ], + "related-to-property": [ + { + "property-key": "p-interface.prov-status" + } + ] + } + ] + } + }, + { + "link-name": "cross-link-3", + "in-maint": false, + "link-type": "cross-link", + "resource-version": "1536029865021", + "operational-status": "up", + "relationship-list": { + "relationship": [ + { + "related-to": "p-interface", + "relationship-label": "tosca.relationships.network.LinksTo", + "related-link": "/aai/v13/network/pnfs/pnf/pnf2000/p-interfaces/p-interface/nodeId-78.78.78.78-ltpId-3", + "relationship-data": [ + { + "relationship-key": "pnf.pnf-name", + "relationship-value": "pnf2000" + }, + { + "relationship-key": "p-interface.interface-name", + "relationship-value": "nodeId-78.78.78.78-ltpId-3" + } + ], + "related-to-property": [ + { + "property-key": "p-interface.prov-status" + } + ] + }, + { + "related-to": "p-interface", + "relationship-label": "tosca.relationships.network.LinksTo", + "related-link": "/aai/v13/network/pnfs/pnf/pnf1000/p-interfaces/p-interface/nodeId-79.79.79.79-ltpId-3", + "relationship-data": [ + { + "relationship-key": "pnf.pnf-name", + "relationship-value": "pnf1000" + }, + { + "relationship-key": "p-interface.interface-name", + "relationship-value": "nodeId-79.79.79.79-ltpId-3" + } + ], + "related-to-property": [ + { + "property-key": "p-interface.prov-status" + } + ] + } + ] + } + }, + { + "link-name": "cross-link-2", + "in-maint": false, + "link-type": "cross-link", + "resource-version": "1536029865021", + "operational-status": "up", + "relationship-list": { + "relationship": [ + { + "related-to": "p-interface", + "relationship-label": "tosca.relationships.network.LinksTo", + "related-link": "/aai/v13/network/pnfs/pnf/pnf3000/p-interfaces/p-interface/nodeId-80.80.80.80-ltpId-1", + "relationship-data": [ + { + "relationship-key": "pnf.pnf-name", + "relationship-value": "pnf3000" + }, + { + "relationship-key": "p-interface.interface-name", + "relationship-value": "nodeId-80.80.80.80-ltpId-1" + } + ], + "related-to-property": [ + { + "property-key": "p-interface.prov-status" + } + ] + }, + { + "related-to": "p-interface", + "relationship-label": "tosca.relationships.network.LinksTo", + "related-link": "/aai/v13/network/pnfs/pnf/pnf-cloud/p-interfaces/p-interface/cloud-tp", + "relationship-data": [ + { + "relationship-key": "pnf.pnf-name", + "relationship-value": "pnf-cloud" + }, + { + "relationship-key": "p-interface.interface-name", + "relationship-value": "cloud-tp" + } + ], + "related-to-property": [ + { + "property-key": "p-interface.prov-status" + } + ] + }, + { + "related-to": "ext-aai-network", + "relationship-label": "org.onap.relationships.inventory.BelongsTo", + "related-link": "/aai/v13/network/ext-aai-networks/ext-aai-network/gongjie666", + "relationship-data": [ + { + "relationship-key": "ext-aai-network.aai-id", + "relationship-value": "gongjie666" + } + ] + } + ] + } + } + ] +} diff --git a/usecaseui-portal/src/assets/json/alarmFormData.json b/usecaseui-portal/src/assets/json/alarmFormData.json new file mode 100644 index 00000000..fc97ae0c --- /dev/null +++ b/usecaseui-portal/src/assets/json/alarmFormData.json @@ -0,0 +1,371 @@ +{ + "totalRecolds": 22, + "list": [ + { + "id": 11, + "version": "3", + "eventName": "Fault_MultiCloud_VMFailureCleared", + "domain": "fault", + "eventId": "ab305d54-85b4-a31b-7db2-fb6b9e546015", + "eventType": null, + "nfcNamingCode": null, + "nfNamingCode": null, + "sourceId": "shentao-test-1001", + "sourceName": "shentao-test-1001", + "reportingEntityId": null, + "reportingEntityName": "Multi-Cloud", + "priority": "High", + "startEpochMicrosec": "1513630880000000", + "lastEpochMicroSec": "1513630880000000", + "startEpochMicrosecCleared": "112", + "lastEpochMicroSecCleared": "112", + "sequence": "0", + "faultFieldsVersion": "2", + "eventServrity": "CRITICAL", + "eventSourceType": "other", + "eventCategory": null, + "alarmCondition": "Guest_Os_Failure", + "specificProblem": "Fault_MultiCloud_VMFailure", + "vfStatus": "Active", + "alarmInterfaceA": "aaaa", + "status": "active" + }, + { + "id": 12, + "version": "3", + "eventName": "Fault_MultiCloud_VMFailureCleared", + "domain": "fault", + "eventId": "ab305d54-85b4-a31b-7db2-fb6b9e546015", + "eventType": null, + "nfcNamingCode": null, + "nfNamingCode": null, + "sourceId": "shentao-test-1002", + "sourceName": "shentao-test-1002", + "reportingEntityId": null, + "reportingEntityName": "Multi-Cloud", + "priority": "High", + "startEpochMicrosec": "1513630880000000", + "lastEpochMicroSec": "1513630880000000", + "startEpochMicrosecCleared": "112", + "lastEpochMicroSecCleared": "112", + "sequence": "0", + "faultFieldsVersion": "2", + "eventServrity": "CRITICAL", + "eventSourceType": "other", + "eventCategory": null, + "alarmCondition": "Guest_Os_Failure", + "specificProblem": "Fault_MultiCloud_VMFailure", + "vfStatus": "Active", + "alarmInterfaceA": "aaaa", + "status": "active" + }, + { + "id": 13, + "version": "3", + "eventName": "Fault_MultiCloud_VMFailureCleared", + "domain": "fault", + "eventId": "ab305d54-85b4-a31b-7db2-fb6b9e546015", + "eventType": null, + "nfcNamingCode": null, + "nfNamingCode": null, + "sourceId": "shentao-test-1003", + "sourceName": "shentao-test-1003", + "reportingEntityId": null, + "reportingEntityName": "Multi-Cloud", + "priority": "High", + "startEpochMicrosec": "1513630880000000", + "lastEpochMicroSec": "1513630880000000", + "startEpochMicrosecCleared": "112", + "lastEpochMicroSecCleared": "112", + "sequence": "0", + "faultFieldsVersion": "2", + "eventServrity": "CRITICAL", + "eventSourceType": "other", + "eventCategory": null, + "alarmCondition": "Guest_Os_Failure", + "specificProblem": "Fault_MultiCloud_VMFailure", + "vfStatus": "Active", + "alarmInterfaceA": "aaaa", + "status": "active" + }, + { + "id": 14, + "version": "3", + "eventName": "Fault_MultiCloud_VMFailureCleared", + "domain": "fault", + "eventId": "ab305d54-85b4-a31b-7db2-fb6b9e546015", + "eventType": null, + "nfcNamingCode": null, + "nfNamingCode": null, + "sourceId": "shentao-test-2001", + "sourceName": "shentao-test-2001", + "reportingEntityId": null, + "reportingEntityName": "Multi-Cloud", + "priority": "High", + "startEpochMicrosec": "1513630880000000", + "lastEpochMicroSec": "1513630880000000", + "startEpochMicrosecCleared": "112", + "lastEpochMicroSecCleared": "112", + "sequence": "0", + "faultFieldsVersion": "2", + "eventServrity": "CRITICAL", + "eventSourceType": "other", + "eventCategory": null, + "alarmCondition": "Guest_Os_Failure", + "specificProblem": "Fault_MultiCloud_VMFailure", + "vfStatus": "Active", + "alarmInterfaceA": "aaaa", + "status": "active" + }, + { + "id": 15, + "version": "3", + "eventName": "Fault_MultiCloud_VMFailureCleared", + "domain": "fault", + "eventId": "ab305d54-85b4-a31b-7db2-fb6b9e546015", + "eventType": null, + "nfcNamingCode": null, + "nfNamingCode": null, + "sourceId": "shentao-test-2002", + "sourceName": "shentao-test-2002", + "reportingEntityId": null, + "reportingEntityName": "Multi-Cloud", + "priority": "High", + "startEpochMicrosec": "1513630880000000", + "lastEpochMicroSec": "1513630880000000", + "startEpochMicrosecCleared": "112", + "lastEpochMicroSecCleared": "112", + "sequence": "0", + "faultFieldsVersion": "2", + "eventServrity": "CRITICAL", + "eventSourceType": "other", + "eventCategory": null, + "alarmCondition": "Guest_Os_Failure", + "specificProblem": "Fault_MultiCloud_VMFailure", + "vfStatus": "Active", + "alarmInterfaceA": "aaaa", + "status": "active" + }, + { + "id": 16, + "version": "3", + "eventName": "Fault_MultiCloud_VMFailureCleared", + "domain": "fault", + "eventId": "ab305d54-85b4-a31b-7db2-fb6b9e546015", + "eventType": null, + "nfcNamingCode": null, + "nfNamingCode": null, + "sourceId": "shentao-test-2003", + "sourceName": "shentao-test-2003", + "reportingEntityId": null, + "reportingEntityName": "Multi-Cloud", + "priority": "High", + "startEpochMicrosec": "1513630880000000", + "lastEpochMicroSec": "1513630880000000", + "startEpochMicrosecCleared": "112", + "lastEpochMicroSecCleared": "112", + "sequence": "0", + "faultFieldsVersion": "2", + "eventServrity": "CRITICAL", + "eventSourceType": "other", + "eventCategory": null, + "alarmCondition": "Guest_Os_Failure", + "specificProblem": "Fault_MultiCloud_VMFailure", + "vfStatus": "Active", + "alarmInterfaceA": "aaaa", + "status": "active" + }, + { + "id": 17, + "version": "3", + "eventName": "Fault_MultiCloud_VMFailureCleared", + "domain": "fault", + "eventId": "ab305d54-85b4-a31b-7db2-fb6b9e546015", + "eventType": null, + "nfcNamingCode": null, + "nfNamingCode": null, + "sourceId": "shentao-test-2004", + "sourceName": "vnf_a_1", + "reportingEntityId": null, + "reportingEntityName": "Multi-Cloud", + "priority": "High", + "startEpochMicrosec": "1516784364860", + "lastEpochMicroSec": "1516784364860", + "startEpochMicrosecCleared": "112", + "lastEpochMicroSecCleared": "112", + "sequence": "0", + "faultFieldsVersion": "2", + "eventServrity": "CRITICAL", + "eventSourceType": "other", + "eventCategory": null, + "alarmCondition": "Guest_Os_Failure", + "specificProblem": "Fault_MultiCloud_VMFailure", + "vfStatus": "Active", + "alarmInterfaceA": "aaaa", + "status": "active" + }, + { + "id": 18, + "version": "3", + "eventName": "Fault_MultiCloud_VMFailureCleared", + "domain": "fault", + "eventId": "ab305d54-85b4-a31b-7db2-fb6b9e546015", + "eventType": null, + "nfcNamingCode": null, + "nfNamingCode": null, + "sourceId": "shentao-test-2005", + "sourceName": "shentao-test-2005", + "reportingEntityId": null, + "reportingEntityName": "Multi-Cloud", + "priority": "High", + "startEpochMicrosec": "1516784364860", + "lastEpochMicroSec": "1516784364860", + "startEpochMicrosecCleared": "112", + "lastEpochMicroSecCleared": "112", + "sequence": "0", + "faultFieldsVersion": "2", + "eventServrity": "CRITICAL", + "eventSourceType": "other", + "eventCategory": null, + "alarmCondition": "Guest_Os_Failure", + "specificProblem": "Fault_MultiCloud_VMFailure", + "vfStatus": "Active", + "alarmInterfaceA": "aaaa", + "status": "active" + }, + { + "id": 19, + "version": "3", + "eventName": "Fault_MultiCloud_VMFailureCleared", + "domain": "fault", + "eventId": "ab305d54-85b4-a31b-7db2-fb6b9e546015", + "eventType": null, + "nfcNamingCode": null, + "nfNamingCode": null, + "sourceId": "shentao-test-3001", + "sourceName": "shentao-test-3001", + "reportingEntityId": null, + "reportingEntityName": "Multi-Cloud", + "priority": "High", + "startEpochMicrosec": "1516784364860", + "lastEpochMicroSec": "1516784364860", + "startEpochMicrosecCleared": "112", + "lastEpochMicroSecCleared": "112", + "sequence": "0", + "faultFieldsVersion": "2", + "eventServrity": "CRITICAL", + "eventSourceType": "other", + "eventCategory": null, + "alarmCondition": "Guest_Os_Failure", + "specificProblem": "Fault_MultiCloud_VMFailure", + "vfStatus": "Active", + "alarmInterfaceA": "aaaa", + "status": "active" + }, + { + "id": 20, + "version": "3", + "eventName": "Fault_MultiCloud_VMFailureCleared", + "domain": "fault", + "eventId": "ab305d54-85b4-a31b-7db2-fb6b9e546015", + "eventType": null, + "nfcNamingCode": null, + "nfNamingCode": null, + "sourceId": "shentao-test-3003", + "sourceName": "vnf_a_3", + "reportingEntityId": null, + "reportingEntityName": "Multi-Cloud", + "priority": "High", + "startEpochMicrosec": "1516784364860", + "lastEpochMicroSec": "1516784364860", + "startEpochMicrosecCleared": "112", + "lastEpochMicroSecCleared": "112", + "sequence": "0", + "faultFieldsVersion": "2", + "eventServrity": "CRITICAL", + "eventSourceType": "other", + "eventCategory": null, + "alarmCondition": "Guest_Os_Failure", + "specificProblem": "Fault_MultiCloud_VMFailure", + "vfStatus": "Active", + "alarmInterfaceA": "aaaa", + "status": "active" + }, + { + "id": 21, + "version": "3", + "eventName": "Fault_MultiCloud_VMFailureCleared", + "domain": "fault", + "eventId": "ab305d54-85b4-a31b-7db2-fb6b9e546015", + "eventType": null, + "nfcNamingCode": null, + "nfNamingCode": null, + "sourceId": "shentao-test-3004", + "sourceName": "vnf_a_3", + "reportingEntityId": null, + "reportingEntityName": "Multi-Cloud", + "priority": "High", + "startEpochMicrosec": "1516784364860", + "lastEpochMicroSec": "1516784364860", + "startEpochMicrosecCleared": "112", + "lastEpochMicroSecCleared": "112", + "sequence": "0", + "faultFieldsVersion": "2", + "eventServrity": "CRITICAL", + "eventSourceType": "other", + "eventCategory": null, + "alarmCondition": "Guest_Os_Failure", + "specificProblem": "Fault_MultiCloud_VMFailure", + "vfStatus": "Active", + "alarmInterfaceA": "aaaa", + "status": "active" + }, + { + "id": 22, + "version": "3", + "eventName": "Fault_MultiCloud_VMFailure", + "domain": "fault", + "eventId": "ab305d54-85b4-a31b-7db2-fb6b9e546015", + "eventType": null, + "nfcNamingCode": null, + "nfNamingCode": null, + "sourceId": "vnf_a_20180205_2", + "sourceName": "vnf_b_3", + "reportingEntityId": null, + "reportingEntityName": "vnf_a_20180205_2", + "priority": "High", + "startEpochMicrosec": "1516784364860", + "lastEpochMicroSec": "1516784364860", + "startEpochMicrosecCleared": "", + "lastEpochMicroSecCleared": "", + "sequence": "0", + "faultFieldsVersion": "2", + "eventServrity": "CRITICAL", + "eventSourceType": "other", + "eventCategory": null, + "alarmCondition": "Guest_Os_Failure", + "specificProblem": "Fault_MultiCloud_VMFailure", + "vfStatus": "Active", + "alarmInterfaceA": "aaaa", + "status": "active" + } + ], + "countActive": 12, + "reportingEntityNameList": [ + "vnf_a_20180205_2", + "Multi-Cloud" + ], + "sourceNameList": [ + "shentao-test-2001", + "shentao-test-3001", + "shentao-test-1001", + "shentao-test-2002", + "vnf_a_3", + "shentao-test-1002", + "shentao-test-2003", + "vnf_b_3", + "shentao-test-1003", + "vnf_a_1", + "shentao-test-2005" + ] +}
\ No newline at end of file diff --git a/usecaseui-portal/src/assets/json/allotted-resources.json b/usecaseui-portal/src/assets/json/allotted-resources.json new file mode 100644 index 00000000..0b39894c --- /dev/null +++ b/usecaseui-portal/src/assets/json/allotted-resources.json @@ -0,0 +1,122 @@ +{ + "allotted-resource": [ + { + "id": "1114feec-1aef-4890-abba-f8f3a906935f", + "description": "1114feec-1aef-4890-abba-f8f3a906935f", + "selflink": "", + "model-invariant-id": "f714feec-1aef-4890-abba-f8f3a906935f", + "model-version-id": "709919b7-75fd-4e49-8398-67853323ff55", + "resource-version": "1535708424249", + "orchestration-status": "", + "operational-status": "", + "type": "", + "role": "spoke", + "allotted-resource-name": "sdwan ar", + "access-provider-id": "", + "access-client-id": "", + "access-topology-id": "", + "access-node-id": "", + "access-ltp-id": "", + "cvlan": "", + "vpn-name": "SDWANVPNInfra", + "relationship-list": { + "relationship": [ + { + "related-to": "service-instance", + "relationship-label": "org.onap.relationships.inventory.Uses", + "related-link": "/aai/v13/business/customers/customer/Democcy/service-subscriptions/service-subscription/CCVPN/service-instances/service-instance/35e88f8e-473f-4d88-92f8-6739a42baa23", + "relationship-data": [ + { + "relationship-key": "customer.global-customer-id", + "relationship-value": "Democcy" + }, + { + "relationship-key": "service-subscription.service-type", + "relationship-value": "CCVPN" + }, + { + "relationship-key": "service-instance.service-instance-id", + "relationship-value": "35e88f8e-473f-4d88-92f8-6739a42baa23" + } + ], + "related-to-property": [ + { + "property-key": "service-instance.service-instance-name", + "property-value": "SDWANVPNInfra1" + } + ] + } + ] + } + }, + { + "id": "aa14feec-1aef-4890-abba-f8f3a906935f", + "description": "aa14feec-1aef-4890-abba-f8f3a906935f", + "selflink": "", + "model-invariant-id": "97c4a3c6-2943-41af-8717-2f3183f944be", + "model-version-id": "44b777ee-9793-465d-8053-d8e86d2e2362", + "resource-version": "1536135116833", + "orchestration-status": "", + "operational-status": "", + "type": "", + "role": "", + "allotted-resource-name": "ston ar", + "access-provider-id": "1000", + "access-client-id": "3333", + "access-topology-id": "100", + "access-node-id": "10.10.10.10", + "access-ltp-id": "1", + "cvlan": "", + "vpn-name": "SOTNVPNInfra", + "relationship-list": { + "relationship": [ + { + "related-to": "service-instance", + "relationship-label": "org.onap.relationships.inventory.Uses", + "related-link": "/aai/v13/business/customers/customer/Democcy/service-subscriptions/service-subscription/CCVPN/service-instances/service-instance/32cd906f-ee7a-4ecf-b1c3-2fce4d59f8c0", + "relationship-data": [ + { + "relationship-key": "customer.global-customer-id", + "relationship-value": "Democcy" + }, + { + "relationship-key": "service-subscription.service-type", + "relationship-value": "CCVPN" + }, + { + "relationship-key": "service-instance.service-instance-id", + "relationship-value": "32cd906f-ee7a-4ecf-b1c3-2fce4d59f8c0" + } + ], + "related-to-property": [ + { + "property-key": "service-instance.service-instance-name", + "property-value": "SOTNVPNInfra" + } + ] + }, + { + "related-to": "p-interface", + "relationship-label": "org.onap.relationships.inventory.Uses", + "related-link": "/aai/v13/network/pnfs/pnf/pnf1000/p-interfaces/p-interface/nodeId-79.79.79.79-ltpId-2", + "relationship-data": [ + { + "relationship-key": "pnf.pnf-name", + "relationship-value": "pnf1000" + }, + { + "relationship-key": "p-interface.interface-name", + "relationship-value": "nodeId-79.79.79.79-ltpId-2" + } + ], + "related-to-property": [ + { + "property-key": "p-interface.prov-status" + } + ] + } + ] + } + } + ] +}
\ No newline at end of file diff --git a/usecaseui-portal/src/assets/json/allotted-resources2.json b/usecaseui-portal/src/assets/json/allotted-resources2.json new file mode 100644 index 00000000..29262e5d --- /dev/null +++ b/usecaseui-portal/src/assets/json/allotted-resources2.json @@ -0,0 +1 @@ +{"allotted-resource":[{"id":"8beee9a7-abf0-4c98-8073-1d4d03e50033","description":"sdwan-attachment","selflink":"","model-invariant-id":"3d369bb8-5546-41d4-a3e7-a2557295ae40","model-version-id":"78ed8099-90a5-49b4-a400-89f38a7cbe6e","resource-version":"1537857961665","orchestration-status":"","operational-status":"","type":"","role":"spoke","allotted-resource-name":"sdwan ar","access-provider-id":"","access-client-id":"","access-topology-id":"","access-node-id":"","access-ltp-id":"","cvlan":"","vpn-name":"SDWANVPNInfra","relationship-list":{"relationship":[{"related-to":"service-instance","relationship-label":"org.onap.relationships.inventory.Uses","related-link":"/aai/v13/business/customers/customer/demo/service-subscriptions/service-subscription/ccvpn/service-instances/service-instance/15e88f8e-473f-4d88-92f8-6739a42baa2g","relationship-data":[{"relationship-key":"customer.global-customer-id","relationship-value":"demo"},{"relationship-key":"service-subscription.service-type","relationship-value":"ccvpn"},{"relationship-key":"service-instance.service-instance-id","relationship-value":"15e88f8e-473f-4d88-92f8-6739a42baa2g"}],"related-to-property":[{"property-key":"service-instance.service-instance-name","property-value":"SDWANVPNInfra"}]}]}},{"id":"28f2b69e-c489-48fa-b974-166104eb15c9","description":"sotn-attachment","selflink":"","model-invariant-id":"d92ce7ca-ca87-4830-972e-83ae9857ded7","model-version-id":"3704879e-b07e-4a15-b8fd-f047f966a261","resource-version":"1537858263268","orchestration-status":"","operational-status":"","type":"","role":"spoke","allotted-resource-name":"sotn ar","access-provider-id":"","access-client-id":"","access-topology-id":"","access-node-id":"","access-ltp-id":"","cvlan":"","vpn-name":"SOTNVPNInfra","relationship-list":{"relationship":[{"related-to":"service-instance","relationship-label":"org.onap.relationships.inventory.Uses","related-link":"/aai/v13/business/customers/customer/demo/service-subscriptions/service-subscription/ccvpn/service-instances/service-instance/32cd906f-ee7a-4ecf-b1c3-2fce4d59f8c0","relationship-data":[{"relationship-key":"customer.global-customer-id","relationship-value":"demo"},{"relationship-key":"service-subscription.service-type","relationship-value":"ccvpn"},{"relationship-key":"service-instance.service-instance-id","relationship-value":"32cd906f-ee7a-4ecf-b1c3-2fce4d59f8c0"}],"related-to-property":[{"property-key":"service-instance.service-instance-name","property-value":"SOTNVPNInfra"}]},{"related-to":"p-interface","relationship-label":"org.onap.relationships.inventory.Uses","related-link":"/aai/v13/network/pnfs/pnf/11.11.11.11/p-interfaces/p-interface/nodeId-11.11.11.11-ltpId-36","relationship-data":[{"relationship-key":"pnf.pnf-name","relationship-value":"11.11.11.11"},{"relationship-key":"p-interface.interface-name","relationship-value":"nodeId-79.79.79.79-ltpId-2"}],"related-to-property":[{"property-key":"p-interface.prov-status"}]}]}}]}
\ No newline at end of file diff --git a/usecaseui-portal/src/assets/json/configuration_files/inputNamesTranslate.json b/usecaseui-portal/src/assets/json/configuration_files/inputNamesTranslate.json new file mode 100644 index 00000000..9a91307f --- /dev/null +++ b/usecaseui-portal/src/assets/json/configuration_files/inputNamesTranslate.json @@ -0,0 +1,63 @@ +{ + "sotnNameTranslate":{ + "name":"sotnconnectivity_name", + "description":"sotnconnectivity_description", + "startTime":"sotnconnectivity_startTime", + "endTime":"sotnconnectivity_endTime", + "COS":"sotnconnectivity_COS", + "reroute":"sotnconnectivity_reroute", + "SLS":"sotnconnectivity_SLS", + "dualLink":"sotnconnectivity_dualLink", + "CIR":"sotnconnectivity_cir", + "EIR":"sotnconnectivity_eir", + "CBS":"sotnconnectivity_cbs", + "EBS":"sotnconnectivity_ebs", + "colorAware":"sotnconnectivity_colorAware", + "couplingFlag":"sotnconnectivity_couplingFlag" + }, + "siteNameTranslate":{ + "baseNames":{ + "name":"site_name", + "description":"site_description", + "type":"site_type", + "role":"site_role", + "postcode":"site_postcode", + "address":"site_address", + "vlan":"sotncondition_cVLAN", + "sotnVpnName":"sotncondition_sotnVpnName", + "controlPoint":"site_controlPoint", + "groupRole":"sdwancondition_role", + "groupName":"sdwancondition_sdwanVpnName", + "emails":"site_emails", + "latitude":"site_latitude", + "longitude":"site_longitude", + "clientSignal":"sotncondition_clientSignal" + }, + "cpeNames":{ + "device_name":"device_name", + "device_version":"device_version", + "device_esn":"device_esn", + "device_class":"device_class", + "device_systemIp":"device_systemIp", + "device_vendor":"device_vendor", + "device_type":"device_type" + }, + "wanportNames":{ + "sitewanport_name":"sitewanport_name", + "sitewanport_deviceName":"sitewanport_deviceName", + "sitewanport_description":"sitewanport_description", + "sitewanport_portType":"sitewanport_portType", + "sitewanport_portNumber":"sitewanport_portNumber", + "sitewanport_ipAddress":"sitewanport_ipAddress", + "sitewanport_providerIpAddress":"sitewanport_providerIpAddress", + "sitewanport_transportNetworkName":"sitewanport_transportNetworkName", + "sitewanport_inputBandwidth":"sitewanport_inputBandwidth", + "sitewanport_outputBandwidth":"sitewanport_outputBandwidth" + } + }, + "siteGroupNameTranslate":{ + "name":"sdwanconnectivity_name", + "topology":"sdwanconnectivity_topology" + } + +}
\ No newline at end of file diff --git a/usecaseui-portal/src/assets/json/configuration_files/servicesCategory.json b/usecaseui-portal/src/assets/json/configuration_files/servicesCategory.json new file mode 100644 index 00000000..574a8bb4 --- /dev/null +++ b/usecaseui-portal/src/assets/json/configuration_files/servicesCategory.json @@ -0,0 +1,34 @@ + +{ + "SOTN":{ + "sotnvpn":[ + {"model-invariant-id": "21886a96-0664-47a3-beae-766952f2059f","model-version-id": "4ca96a53-2e18-4297-8dc7-5776fdf6871b"} + ], + "site":[ + {"model-invariant-id": "342ff5e8-5592-4455-a537-a81172c9d541","model-version-id": "ea8bb4d2-00ea-4aeb-ad76-20ac8cb1c99c"}, + {"model-invariant-id": "a7029145-4294-4664-b619-00dc959a1ff6","model-version-id": "cb756ffb-8d91-49fb-86f7-12ceb2b13158"} + ] + }, + "CCVPN":{ + "sotnvpn":[ + {"model-invariant-id": "21886a96-0664-47a3-beae-766952f2059f","model-version-id": "54836196-c411-4690-af98-900c1c3aadd7"}, + {"model-invariant-id": "21886a96-0664-47a3-beae-766952f2059f","model-version-id": "4ca96a53-2e18-4297-8dc7-5776fdf6871b"}, + {"model-invariant-id": "35661c6e-4a15-4990-8d8a-d247ddcf0110","model-version-id": "f38e13a7-6ba6-4f06-901d-02206faa2687"}, + {"model-invariant-id": "bafa365f-4056-4ad3-a039-d6b3e3e0fd35","model-version-id": "fdbb8ddd-3325-4840-a156-9ad601b9366c"} + ], + "site":[ + {"model-invariant-id": "5c13f3fb-2744-4635-9f1f-c59c92dc8f70","model-version-id": "3a76b1f5-fb0d-4b6b-82d5-0e8a4ebc3838"}, + {"model-invariant-id": "5c13f3fb-2744-4635-9f1f-c59c92dc8f70","model-version-id": "4b4b3ef8-6747-4111-b9e0-81cf251c0068"}, + {"model-invariant-id": "a7029145-4294-4664-b619-00dc959a1ff6","model-version-id": "cb756ffb-8d91-49fb-86f7-12ceb2b13158"}, + {"model-invariant-id": "313abb16-d454-4a64-a39d-2ed4bb7713a3","model-version-id": "95f9c7aa-8a0e-4568-86f7-ab980a4556a1"}, + {"model-invariant-id": "499e5e60-c8b2-4ea6-8c4e-7739420673a9","model-version-id": "8ec97da1-1e0a-4198-9c9a-3da2c60d7974"} + ], + "sdwan":[ + {"model-invariant-id": "88dcb2f0-085b-4548-8b93-0882e37d25d8","model-version-id": "462f84e5-f0e5-44c5-ab95-38fb4bf77064"}, + {"model-invariant-id": "88dcb2f0-085b-4548-8b93-0882e37d25d8","model-version-id": "d0a4af63-570c-40b3-a26f-ef11366f0a03"}, + {"model-invariant-id": "2cefdc20-a29d-4792-a151-3653a6a20d45","model-version-id": "a306b8d6-3873-46fe-921a-623e279d5548"}, + {"model-invariant-id": "e2b217d6-7cac-4156-9f44-f9b010b350a6","model-version-id": "20d9e7dc-f030-4230-af79-ba0bde7cbe2e"} + ] + } +} + diff --git a/usecaseui-portal/src/assets/json/configuration_files/templateCategory.json b/usecaseui-portal/src/assets/json/configuration_files/templateCategory.json new file mode 100644 index 00000000..dca42795 --- /dev/null +++ b/usecaseui-portal/src/assets/json/configuration_files/templateCategory.json @@ -0,0 +1,6 @@ +{ + "sotnvpntypes":["uuidxxx","uuidxxxx"], + "sitetypes":["uuidaaa","uuidaaaa"], + "sdwantypes":["uuidbbb","uuidbbbb"] +} + diff --git a/usecaseui-portal/src/assets/json/createService.json b/usecaseui-portal/src/assets/json/createService.json new file mode 100644 index 00000000..f1d64485 --- /dev/null +++ b/usecaseui-portal/src/assets/json/createService.json @@ -0,0 +1,7 @@ + +{ + "service":{ + "serviceId":"044377e5-3dd4-4f84-86a0-02dab3c43bc5", + "operationId":"1e606677-7864-4bec-b50c-adcd858e4cd8" + } +}
\ No newline at end of file diff --git a/usecaseui-portal/src/assets/json/customers.json b/usecaseui-portal/src/assets/json/customers.json new file mode 100644 index 00000000..9c66eff4 --- /dev/null +++ b/usecaseui-portal/src/assets/json/customers.json @@ -0,0 +1,82 @@ + + +[ + { + "global-customer-id": "Democcy", + "subscriber-name": "Democcy", + "subscriber-type": "INFRA", + "resource-version": "1535601196964" + }, + { + "global-customer-id": "support", + "subscriber-name": "testccccccccsssssssssseeeeeeeeeee", + "subscriber-type": "CUST", + "resource-version": "1536069070995" + }, + { + "global-customer-id": "Demonstration", + "subscriber-name": "Demonstration", + "subscriber-type": "INFRA", + "resource-version": "1535080521665" + }, + { + "global-customer-id": "Orange", + "subscriber-name": "test", + "subscriber-type": "CUST", + "resource-version": "1535865156826" + }, + { + "global-customer-id": "Orange5", + "subscriber-name": "test", + "subscriber-type": "CUST", + "resource-version": "1529978907607" + }, + { + "global-customer-id": "wale", + "subscriber-name": "test", + "subscriber-type": "CUST", + "resource-version": "1536058660948" + }, + { + "global-customer-id": "kiwi", + "subscriber-name": "test", + "subscriber-type": "CUST", + "resource-version": "1536042103511" + }, + { + "global-customer-id": "Apple", + "subscriber-name": "test", + "subscriber-type": "CUST", + "resource-version": "1535971300786" + }, + { + "global-customer-id": "Tiger", + "subscriber-name": "test", + "subscriber-type": "CUST", + "resource-version": "1535977578133" + }, + { + "global-customer-id": "Deer", + "subscriber-name": "test", + "subscriber-type": "CUST", + "resource-version": "1535988232470" + }, + { + "global-customer-id": "Bear", + "subscriber-name": "test", + "subscriber-type": "CUST", + "resource-version": "1536041229105" + }, + { + "global-customer-id": "Panda", + "subscriber-name": "test", + "subscriber-type": "CUST", + "resource-version": "1536038628045" + }, + { + "global-customer-id": "Lion", + "subscriber-name": "test", + "subscriber-type": "CUST", + "resource-version": "1535986050695" + } +] diff --git a/usecaseui-portal/src/assets/json/deleteService.json b/usecaseui-portal/src/assets/json/deleteService.json new file mode 100644 index 00000000..19a7ab5e --- /dev/null +++ b/usecaseui-portal/src/assets/json/deleteService.json @@ -0,0 +1,4 @@ + +{ + "operationId":"1e606677-7864-4bec-b50c-adcd858e4cd8" +}
\ No newline at end of file diff --git a/usecaseui-portal/src/assets/json/detailsData.json b/usecaseui-portal/src/assets/json/detailsData.json new file mode 100644 index 00000000..41ee87b8 --- /dev/null +++ b/usecaseui-portal/src/assets/json/detailsData.json @@ -0,0 +1,19 @@ +{ + "sotnVpnInfo":{ + "name":"xdwgwe","description":"hahahah", + "startTime":"2017-07-03","endTime":"2018-07-05", + "COS":"premium","reroute":"Yes", + "SLS":"sfsadf","dualLink":"Yes", + "CIR":"dafdafd","EIR":"sddddddd", + "CBS":"dafdaf","EBS":"qqqqqqqwwwwwww", + "colorAware":"Yes","couplingFlag":"No" + }, + "siteList":[ + {"name":"xiaoming","description":"congming","postcode":"xxxx","address":"beijing","sotnVpnName":"buzhid","vlan":"aaa"}, + {"name":"xiaogang","description":"congming","postcode":"xxxx","address":"guangzhou","sotnVpnName":"buzhid","vlan":"aaa"} + ], + "siteGroupList":[ + {"id":"123","name":"sssiy","topology":"hahahha","sites":"xxxxx","rloe":"eeexxxx"}, + {"id":"3333","name":"sssiy","topology":"hahahha","sites":"xxxxx","rloe":"eeexxxx"} + ] +}
\ No newline at end of file diff --git a/usecaseui-portal/src/assets/json/homeAllData.json b/usecaseui-portal/src/assets/json/homeAllData.json new file mode 100644 index 00000000..ce4e5d6e --- /dev/null +++ b/usecaseui-portal/src/assets/json/homeAllData.json @@ -0,0 +1,23 @@ +{ + "services":{ + "number":200, + "chartdata":[ + {"value":125, "name":"user1"}, + {"value":290, "name":"user2"}, + {"value":220, "name":"user3"} + ] + }, + "performance":{ + "per_Vnf":154, + "per_VmPm":325 + }, + "alarm":{ + "chartdata":[ + {"value":325,"name":"Active"}, + {"value":200,"name":"Closed"} + ] + }, + "Vm_performance":{ + "names":["aaaaa","bbbbb","ccccc","ddddd","eeeee"] + } +} diff --git a/usecaseui-portal/src/assets/json/homePerformanceChartData.json b/usecaseui-portal/src/assets/json/homePerformanceChartData.json new file mode 100644 index 00000000..c3848893 --- /dev/null +++ b/usecaseui-portal/src/assets/json/homePerformanceChartData.json @@ -0,0 +1,4 @@ +{ + "CPU":[30,43,24,32,34,35,42,62,52,35,34,33,43], + "Memory":[24,23,24,12,34,15,22,22,32,15,24,13,23] +} diff --git a/usecaseui-portal/src/assets/json/instanceTableData.json b/usecaseui-portal/src/assets/json/instanceTableData.json new file mode 100644 index 00000000..73f12873 --- /dev/null +++ b/usecaseui-portal/src/assets/json/instanceTableData.json @@ -0,0 +1,505 @@ +{ + "service-instance": [ + { + "service-instance-id": "35e88f8e-473f-4d88-92f8-6739a42baa23", + "service-instance-name": "SDWANVPNInfra1", + "service-type": "E2E Service", + "service-role": "E2E Service", + "model-invariant-id": "88dcb2f0-085b-4548-8b93-0882e37d25d8", + "model-version-id": "462f84e5-f0e5-44c5-ab95-38fb4bf77064", + "resource-version": "1535687551051", + "input-parameters": "{\n \"service\":{\n \"name\":\"SDWANVPNInfra\",\n \"description\":\"SDWANVPNInfra\",\n \"serviceInvariantUuid\":\"88dcb2f0-085b-4548-8b93-0882e37d25d8\",\n \"serviceUuid\":\"462f84e5-f0e5-44c5-ab95-38fb4bf77064\",\n \"globalSubscriberId\":\"Demonstration\",\n \"serviceType\":\"CCVPN\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n {\n \"resourceName\":\"SDWANConnectivity 0\",\n \"resourceInvariantUuid\":\"f99a9a23-c88e-44ff-a4dc-22b88675d278\",\n \"resourceUuid\":\"7baa7742-3a13-4288-8330-868015adc340\",\n \"resourceCustomizationUuid\":\"94ec574b-2306-4cbd-8214-09662b040f73\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"SPPartnerVF 0\",\n \"resourceInvariantUuid\":\"072f9238-15b0-4bc5-a5f5-f18548739470\",\n \"resourceUuid\":\"81b9430b-8abe-45d6-8bf9-f41a8f5c735f\",\n \"resourceCustomizationUuid\":\"a7baba5d-6ac3-42b5-b47d-070841303ab1\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n }\n ],\n \"requestInputs\":{\n \"sdwanconnectivity0_name\":\"CMCCVPN\",\n \"sdwanconnectivity0_topology\":\"hub-spoke\"\n }\n }\n }\n}", + "relationship-list": { + "relationship": [ + { + "related-to": "sdwan-vpn", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/network/sdwan-vpns/sdwan-vpn/4efe6dff-acfc-4d13-a3fd-1177d3c08e89", + "relationship-data": [ + { + "relationship-key": "sdwan-vpn.sdwan-vpn-id", + "relationship-value": "4efe6dff-acfc-4d13-a3fd-1177d3c08e89" + } + ], + "related-to-property": [ + { + "property-key": "sdwan-vpn.sdwan-vpn-name", + "property-value": "vdfvpn" + } + ] + }, + { + "related-to": "sp-partner", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/business/sp-partners/sp-partner/1b9c677d-fddf-4b70-938b-925a7fa57d00", + "relationship-data": [ + { + "relationship-key": "sp-partner.sp-partner-id", + "relationship-value": "1b9c677d-fddf-4b70-938b-925a7fa57d00" + } + ], + "related-to-property": [ + { + "property-key": "sp-partner.sp-partner-id", + "property-value": "1b9c677d-fddf-4b70-938b-925a7fa57d00" + } + ] + }, + { + "related-to": "allotted-resource", + "relationship-label": "org.onap.relationships.inventory.Uses", + "related-link": "/aai/v13/business/customers/customer/Democcy/service-subscriptions/service-subscription/CCVPN/service-instances/service-instance/189b87a5-72fe-4197-a307-6929c3831f81/allotted-resources/allotted-resource/2214feec-1aef-4890-abba-f8f3a906935f", + "relationship-data": [ + { + "relationship-key": "customer.global-customer-id", + "relationship-value": "Democcy" + }, + { + "relationship-key": "service-subscription.service-type", + "relationship-value": "CCVPN" + }, + { + "relationship-key": "service-instance.service-instance-id", + "relationship-value": "189b87a5-72fe-4197-a307-6929c3831f81" + }, + { + "relationship-key": "allotted-resource.id", + "relationship-value": "2214feec-1aef-4890-abba-f8f3a906935f" + } + ], + "related-to-property": [ + { + "property-key": "allotted-resource.description", + "property-value": "2214feec-1aef-4890-abba-f8f3a906935f" + }, + { + "property-key": "allotted-resource.allotted-resource-name", + "property-value": "sdwan ar" + } + ] + }, + { + "related-to": "allotted-resource", + "relationship-label": "org.onap.relationships.inventory.Uses", + "related-link": "/aai/v13/business/customers/customer/Democcy/service-subscriptions/service-subscription/CCVPN/service-instances/service-instance/089b87a5-72fe-4197-a307-6929c3831f80/allotted-resources/allotted-resource/1114feec-1aef-4890-abba-f8f3a906935f", + "relationship-data": [ + { + "relationship-key": "customer.global-customer-id", + "relationship-value": "Democcy" + }, + { + "relationship-key": "service-subscription.service-type", + "relationship-value": "CCVPN" + }, + { + "relationship-key": "service-instance.service-instance-id", + "relationship-value": "089b87a5-72fe-4197-a307-6929c3831f80" + }, + { + "relationship-key": "allotted-resource.id", + "relationship-value": "1114feec-1aef-4890-abba-f8f3a906935f" + } + ], + "related-to-property": [ + { + "property-key": "allotted-resource.description", + "property-value": "1114feec-1aef-4890-abba-f8f3a906935f" + }, + { + "property-key": "allotted-resource.allotted-resource-name", + "property-value": "sdwan ar" + } + ] + } + ] + } + }, + { + "service-instance-id": "15e88f8e-473f-4d88-92f8-6739a42baa2g", + "service-instance-name": "SDWANVPNInfra", + "service-type": "E2E Service", + "service-role": "E2E Service", + "model-invariant-id": "88dcb2f0-085b-4548-8b93-0882e37d25d8", + "model-version-id": "462f84e5-f0e5-44c5-ab95-38fb4bf77064", + "resource-version": "1535687578298", + "input-parameters": "{\n \"service\":{\n \"name\":\"SDWANVPNInfra\",\n \"description\":\"SDWANVPNInfra\",\n \"serviceInvariantUuid\":\"88dcb2f0-085b-4548-8b93-0882e37d25d8\",\n \"serviceUuid\":\"462f84e5-f0e5-44c5-ab95-38fb4bf77064\",\n \"globalSubscriberId\":\"Demonstration\",\n \"serviceType\":\"CCVPN\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n {\n \"resourceName\":\"SDWANConnectivity 0\",\n \"resourceInvariantUuid\":\"f99a9a23-c88e-44ff-a4dc-22b88675d278\",\n \"resourceUuid\":\"7baa7742-3a13-4288-8330-868015adc340\",\n \"resourceCustomizationUuid\":\"94ec574b-2306-4cbd-8214-09662b040f73\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"SPPartnerVF 0\",\n \"resourceInvariantUuid\":\"072f9238-15b0-4bc5-a5f5-f18548739470\",\n \"resourceUuid\":\"81b9430b-8abe-45d6-8bf9-f41a8f5c735f\",\n \"resourceCustomizationUuid\":\"a7baba5d-6ac3-42b5-b47d-070841303ab1\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n }\n ],\n \"requestInputs\":{\n \"sdwanconnectivity0_name\":\"CMCCVPN\",\n \"sdwanconnectivity0_topology\":\"hub-spoke\"\n }\n }\n }\n}", + "relationship-list": { + "relationship": [ + { + "related-to": "sdwan-vpn", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/network/sdwan-vpns/sdwan-vpn/4efe6dff-acfc-4d13-a3fd-1177d3c08e86", + "relationship-data": [ + { + "relationship-key": "sdwan-vpn.sdwan-vpn-id", + "relationship-value": "4efe6dff-acfc-4d13-a3fd-1177d3c08e86" + } + ], + "related-to-property": [ + { + "property-key": "sdwan-vpn.sdwan-vpn-name", + "property-value": "cmccvpn" + } + ] + }, + { + "related-to": "sp-partner", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/business/sp-partners/sp-partner/1b9c677d-fddf-4b70-938b-925a7fa57d11", + "relationship-data": [ + { + "relationship-key": "sp-partner.sp-partner-id", + "relationship-value": "1b9c677d-fddf-4b70-938b-925a7fa57d11" + } + ], + "related-to-property": [ + { + "property-key": "sp-partner.sp-partner-id", + "property-value": "1b9c677d-fddf-4b70-938b-925a7fa57d11" + } + ] + } + ] + } + }, + { + "service-instance-id": "089b87a5-72fe-4197-a307-6929c3831f80", + "service-instance-name": "SiteBeijing", + "service-type": "E2E Service", + "service-role": "E2E Service", + "model-invariant-id": "5c13f3fb-2744-4635-9f1f-c59c92dc8f70", + "model-version-id": "3a76b1f5-fb0d-4b6b-82d5-0e8a4ebc3838", + "resource-version": "1535686434430", + "input-parameters": "{\n \"service\":{\n \"name\":\"SiteService\",\n \"description\":\"SiteService\",\n \"serviceInvariantUuid\":\"5c13f3fb-2744-4635-9f1f-c59c92dc8f70\",\n \"serviceUuid\":\"3a76b1f5-fb0d-4b6b-82d5-0e8a4ebc3838\",\n \"globalSubscriberId\":\"Demonstration\",\n \"serviceType\":\"CCVPN\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n {\n \"resourceName\":\"SiteVF\",\n \"resourceInvariantUuid\":\"0c0e1cbe-6e01-4f9e-8c45-a9700ebc14df\",\n \"resourceUuid\":\"4ad2d390-5c51-45f5-9710-b467a4ec7a73\",\n \"resourceCustomizationUuid\":\"66590e07-0777-415c-af44-36347cf3ddd3\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"mpls\",\n \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n \"resourceCustomizationUuid\":\"205456e7-3dc0-40c4-8cb0-28e6c1877042\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"deviceVF\",\n \"resourceInvariantUuid\":\"c726490a-0ce2-4bc7-abea-dade66bfb13d\",\n \"resourceUuid\":\"0e2de9d8-d76b-4134-b5f1-41e79056adbe\",\n \"resourceCustomizationUuid\":\"5bc1373e-9a36-4a00-8c62-784e0bc417ad\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"sdwanvpnattachmentVF\",\n \"resourceInvariantUuid\":\"f714feec-1aef-4890-abba-f8f3a906935f\",\n \"resourceUuid\":\"709919b7-75fd-4e49-8398-67853323ff55\",\n \"resourceCustomizationUuid\":\"debd988f-fe04-4940-a5cb-37f61d84eab4\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"internet\",\n \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n \"resourceCustomizationUuid\":\"64b8e8ba-62b9-4db6-b420-1ca7067d63e0\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"sotnvpnattachmentvF\",\n \"resourceInvariantUuid\":\"97c4a3c6-2943-41af-8717-2f3183f944be\",\n \"resourceUuid\":\"44b777ee-9793-465d-8053-d8e86d2e2362\",\n \"resourceCustomizationUuid\":\"37aeb073-c75d-4cf6-a7fa-a1af862ef58a\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"SPPartnerVF\",\n \"resourceInvariantUuid\":\"072f9238-15b0-4bc5-a5f5-f18548739470\",\n \"resourceUuid\":\"81b9430b-8abe-45d6-8bf9-f41a8f5c735f\",\n \"resourceCustomizationUuid\":\"cd0b4b9c-66c6-49c5-b346-7580e4b6c394\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n }\n ],\n \"requestInputs\":{\n \"devicevf_device_class\":\"PNF\",\n \"devicevf_device_esn\":\"2102351BTJ10HB000075\",\n \"devicevf_device_name\":\"50.47\",\n \"devicevf_device_systemIp\":\"192.168.1.47\",\n \"devicevf_device_type\":\"AR161EW\",\n \"devicevf_device_vendor\":\"huawei\",\n \"devicevf_device_version\":\"1.0\",\n \"internet_sitewanport_description\":\"internet\",\n \"internet_sitewanport_deviceName\":\"50.47\",\n \"internet_sitewanport_inputBandwidth\":\"100\",\n \"internet_sitewanport_ipAddress\":\"100.2.30.9\",\n \"internet_sitewanport_name\":\"internet\",\n \"internet_sitewanport_outputBandwidth\":\"100\",\n \"internet_sitewanport_portNumber\":\"0/0/2\",\n \"internet_sitewanport_portType\":\"GE\",\n \"internet_sitewanport_providerIpAddress\":\"100.2.30.10\",\n \"internet_sitewanport_transportNetworkName\":\"internet\",\n \"mpls_sitewanport_description\":\"mpls\",\n \"mpls_sitewanport_deviceName\":\"50.47\",\n \"mpls_sitewanport_inputBandwidth\":\"100\",\n \"mpls_sitewanport_ipAddress\":\"10.2.30.7\",\n \"mpls_sitewanport_name\":\"mpls\",\n \"mpls_sitewanport_outputBandwidth\":\"100\",\n \"mpls_sitewanport_portNumber\":\"0/0/1\",\n \"mpls_sitewanport_portType\":\"GE\",\n \"mpls_sitewanport_providerIpAddress\":\"10.2.30.8\",\n \"mpls_sitewanport_transportNetworkName\":\"internet\",\n \"sdwanvpnattachmentvf_sdwancondition_role\":\"spoke\",\n \"sdwanvpnattachmentvf_sdwancondition_sdwanVpnName\":\"CMCCVPN\",\n \"sitevf_site_address\":\"beijing beiqing road\",\n \"sitevf_site_controlPoint\":\"CMCC_VCPE\",\n \"sitevf_site_description\":\"CMCC_CPE\",\n \"sitevf_site_emails\":\"\",\n \"sitevf_site_latitude\":\"\",\n \"sitevf_site_longitude\":\"\",\n \"sitevf_site_name\":\"CMCC_CPE1\",\n \"sitevf_site_postcode\":\"100095\",\n \"sitevf_site_role\":\"sd-wan-edge\",\n \"sitevf_site_type\":\"single-gateway\",\n \"sotnvpnattachmentvf_sotncondition_clientSignal\":\"\",\n \"sotnvpnattachmentvf_sotncondition_cVLAN\":\"\",\n \"sotnvpnattachmentvf_sotncondition_sotnVpnName\":\"SOTN L2\"\n }\n }\n }\n}", + "relationship-list": { + "relationship": [ + { + "related-to": "sp-partner", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/business/sp-partners/sp-partner/1b9c677d-fddf-4b70-938b-925a7fa57d22", + "relationship-data": [ + { + "relationship-key": "sp-partner.sp-partner-id", + "relationship-value": "1b9c677d-fddf-4b70-938b-925a7fa57d22" + } + ], + "related-to-property": [ + { + "property-key": "sp-partner.sp-partner-id", + "property-value": "1b9c677d-fddf-4b70-938b-925a7fa57d22" + } + ] + }, + { + "related-to": "device", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/network/devices/device/6e0d83f3-f4f5-4a24-9462-712b52ac6700", + "relationship-data": [ + { + "relationship-key": "device.device-id", + "relationship-value": "6e0d83f3-f4f5-4a24-9462-712b52ac6700" + } + ], + "related-to-property": [ + { + "property-key": "device.device-name" + } + ] + }, + { + "related-to": "wan-port-config", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/network/wan-port-configs/wan-port-config/aaa3e552-08c4-4697-aeeb-d8d3e09ce58e", + "relationship-data": [ + { + "relationship-key": "wan-port-config.wan-port-config-id", + "relationship-value": "aaa3e552-08c4-4697-aeeb-d8d3e09ce58e" + } + ], + "related-to-property": [ + { + "property-key": "wan-port-config.wan-port-config-name", + "property-value": "mpls" + } + ] + }, + { + "related-to": "site-resource", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/network/site-resources/site-resource/aa2de9d8-d76b-4134-b5f1-41e79056adbe", + "relationship-data": [ + { + "relationship-key": "site-resource.site-resource-id", + "relationship-value": "aa2de9d8-d76b-4134-b5f1-41e79056adbe" + } + ], + "related-to-property": [ + { + "property-key": "site-resource.site-resource-name", + "property-value": "cmcc-spokesite" + } + ] + } + ] + } + }, + { + "service-instance-id": "189b87a5-72fe-4197-a307-6929c3831f81", + "service-instance-name": "SiteBeijingDC", + "service-type": "E2E Service", + "service-role": "E2E Service", + "model-invariant-id": "5c13f3fb-2744-4635-9f1f-c59c92dc8f70", + "model-version-id": "3a76b1f5-fb0d-4b6b-82d5-0e8a4ebc3838", + "resource-version": "1535686458510", + "input-parameters": "{\n \"service\":{\n \"name\":\"SiteService\",\n \"description\":\"SiteService\",\n \"serviceInvariantUuid\":\"5c13f3fb-2744-4635-9f1f-c59c92dc8f70\",\n \"serviceUuid\":\"3a76b1f5-fb0d-4b6b-82d5-0e8a4ebc3838\",\n \"globalSubscriberId\":\"Demonstration\",\n \"serviceType\":\"CCVPN\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n {\n \"resourceName\":\"SiteVF\",\n \"resourceInvariantUuid\":\"0c0e1cbe-6e01-4f9e-8c45-a9700ebc14df\",\n \"resourceUuid\":\"4ad2d390-5c51-45f5-9710-b467a4ec7a73\",\n \"resourceCustomizationUuid\":\"66590e07-0777-415c-af44-36347cf3ddd3\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"mpls\",\n \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n \"resourceCustomizationUuid\":\"205456e7-3dc0-40c4-8cb0-28e6c1877042\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"deviceVF\",\n \"resourceInvariantUuid\":\"c726490a-0ce2-4bc7-abea-dade66bfb13d\",\n \"resourceUuid\":\"0e2de9d8-d76b-4134-b5f1-41e79056adbe\",\n \"resourceCustomizationUuid\":\"5bc1373e-9a36-4a00-8c62-784e0bc417ad\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"sdwanvpnattachmentVF\",\n \"resourceInvariantUuid\":\"f714feec-1aef-4890-abba-f8f3a906935f\",\n \"resourceUuid\":\"709919b7-75fd-4e49-8398-67853323ff55\",\n \"resourceCustomizationUuid\":\"debd988f-fe04-4940-a5cb-37f61d84eab4\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"internet\",\n \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n \"resourceCustomizationUuid\":\"64b8e8ba-62b9-4db6-b420-1ca7067d63e0\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"sotnvpnattachmentvF\",\n \"resourceInvariantUuid\":\"97c4a3c6-2943-41af-8717-2f3183f944be\",\n \"resourceUuid\":\"44b777ee-9793-465d-8053-d8e86d2e2362\",\n \"resourceCustomizationUuid\":\"37aeb073-c75d-4cf6-a7fa-a1af862ef58a\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"SPPartnerVF\",\n \"resourceInvariantUuid\":\"072f9238-15b0-4bc5-a5f5-f18548739470\",\n \"resourceUuid\":\"81b9430b-8abe-45d6-8bf9-f41a8f5c735f\",\n \"resourceCustomizationUuid\":\"cd0b4b9c-66c6-49c5-b346-7580e4b6c394\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n }\n ],\n \"requestInputs\":{\n \"devicevf_device_class\":\"PNF\",\n \"devicevf_device_esn\":\"2102351BTJ10HB000075\",\n \"devicevf_device_name\":\"50.47\",\n \"devicevf_device_systemIp\":\"192.168.1.47\",\n \"devicevf_device_type\":\"AR161EW\",\n \"devicevf_device_vendor\":\"huawei\",\n \"devicevf_device_version\":\"1.0\",\n \"internet_sitewanport_description\":\"internet\",\n \"internet_sitewanport_deviceName\":\"50.47\",\n \"internet_sitewanport_inputBandwidth\":\"100\",\n \"internet_sitewanport_ipAddress\":\"100.2.30.9\",\n \"internet_sitewanport_name\":\"internet\",\n \"internet_sitewanport_outputBandwidth\":\"100\",\n \"internet_sitewanport_portNumber\":\"0/0/2\",\n \"internet_sitewanport_portType\":\"GE\",\n \"internet_sitewanport_providerIpAddress\":\"100.2.30.10\",\n \"internet_sitewanport_transportNetworkName\":\"internet\",\n \"mpls_sitewanport_description\":\"mpls\",\n \"mpls_sitewanport_deviceName\":\"50.47\",\n \"mpls_sitewanport_inputBandwidth\":\"100\",\n \"mpls_sitewanport_ipAddress\":\"10.2.30.7\",\n \"mpls_sitewanport_name\":\"mpls\",\n \"mpls_sitewanport_outputBandwidth\":\"100\",\n \"mpls_sitewanport_portNumber\":\"0/0/1\",\n \"mpls_sitewanport_portType\":\"GE\",\n \"mpls_sitewanport_providerIpAddress\":\"10.2.30.8\",\n \"mpls_sitewanport_transportNetworkName\":\"internet\",\n \"sdwanvpnattachmentvf_sdwancondition_role\":\"spoke\",\n \"sdwanvpnattachmentvf_sdwancondition_sdwanVpnName\":\"CMCCVPN\",\n \"sitevf_site_address\":\"beijing beiqing road\",\n \"sitevf_site_controlPoint\":\"CMCC_VCPE\",\n \"sitevf_site_description\":\"CMCC_CPE\",\n \"sitevf_site_emails\":\"\",\n \"sitevf_site_latitude\":\"\",\n \"sitevf_site_longitude\":\"\",\n \"sitevf_site_name\":\"CMCC_CPE2\",\n \"sitevf_site_postcode\":\"100095\",\n \"sitevf_site_role\":\"sd-wan-edge\",\n \"sitevf_site_type\":\"single-gateway\",\n \"sotnvpnattachmentvf_sotncondition_clientSignal\":\"\",\n \"sotnvpnattachmentvf_sotncondition_cVLAN\":\"\",\n \"sotnvpnattachmentvf_sotncondition_sotnVpnName\":\"SOTN L2\"\n }\n }\n }\n}", + "relationship-list": { + "relationship": [ + { + "related-to": "sp-partner", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/business/sp-partners/sp-partner/1b9c677d-fddf-4b70-938b-925a7fa57d33", + "relationship-data": [ + { + "relationship-key": "sp-partner.sp-partner-id", + "relationship-value": "1b9c677d-fddf-4b70-938b-925a7fa57d33" + } + ], + "related-to-property": [ + { + "property-key": "sp-partner.sp-partner-id", + "property-value": "1b9c677d-fddf-4b70-938b-925a7fa57d33" + } + ] + }, + { + "related-to": "site-resource", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/network/site-resources/site-resource/bb2de9d8-d76b-4134-b5f1-41e79056adbe", + "relationship-data": [ + { + "relationship-key": "site-resource.site-resource-id", + "relationship-value": "bb2de9d8-d76b-4134-b5f1-41e79056adbe" + } + ], + "related-to-property": [ + { + "property-key": "site-resource.site-resource-name", + "property-value": "cmcc-hubsite" + } + ] + }, + { + "related-to": "device", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/network/devices/device/6e0d83f3-f4f5-4a24-9462-712b52ac6711", + "relationship-data": [ + { + "relationship-key": "device.device-id", + "relationship-value": "6e0d83f3-f4f5-4a24-9462-712b52ac6711" + } + ], + "related-to-property": [ + { + "property-key": "device.device-name", + "property-value": "cmcc_hub" + } + ] + }, + { + "related-to": "wan-port-config", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/network/wan-port-configs/wan-port-config/bba3e552-08c4-4697-aeeb-d8d3e09ce58e", + "relationship-data": [ + { + "relationship-key": "wan-port-config.wan-port-config-id", + "relationship-value": "bba3e552-08c4-4697-aeeb-d8d3e09ce58e" + } + ], + "related-to-property": [ + { + "property-key": "wan-port-config.wan-port-config-name", + "property-value": "mpls" + } + ] + } + ] + } + }, + { + "service-instance-id": "289b87a5-72fe-4197-a307-6929c3831f82", + "service-instance-name": "SiteLondonDC", + "service-type": "E2E Service", + "service-role": "E2E Service", + "model-invariant-id": "5c13f3fb-2744-4635-9f1f-c59c92dc8f70", + "model-version-id": "3a76b1f5-fb0d-4b6b-82d5-0e8a4ebc3838", + "resource-version": "1535686481928", + "input-parameters": "{\n \"service\":{\n \"name\":\"SiteService\",\n \"description\":\"SiteService\",\n \"serviceInvariantUuid\":\"5c13f3fb-2744-4635-9f1f-c59c92dc8f70\",\n \"serviceUuid\":\"3a76b1f5-fb0d-4b6b-82d5-0e8a4ebc3838\",\n \"globalSubscriberId\":\"Demonstration\",\n \"serviceType\":\"CCVPN\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n {\n \"resourceName\":\"SiteVF\",\n \"resourceInvariantUuid\":\"0c0e1cbe-6e01-4f9e-8c45-a9700ebc14df\",\n \"resourceUuid\":\"4ad2d390-5c51-45f5-9710-b467a4ec7a73\",\n \"resourceCustomizationUuid\":\"66590e07-0777-415c-af44-36347cf3ddd3\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"mpls\",\n \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n \"resourceCustomizationUuid\":\"205456e7-3dc0-40c4-8cb0-28e6c1877042\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"deviceVF\",\n \"resourceInvariantUuid\":\"c726490a-0ce2-4bc7-abea-dade66bfb13d\",\n \"resourceUuid\":\"0e2de9d8-d76b-4134-b5f1-41e79056adbe\",\n \"resourceCustomizationUuid\":\"5bc1373e-9a36-4a00-8c62-784e0bc417ad\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"sdwanvpnattachmentVF\",\n \"resourceInvariantUuid\":\"f714feec-1aef-4890-abba-f8f3a906935f\",\n \"resourceUuid\":\"709919b7-75fd-4e49-8398-67853323ff55\",\n \"resourceCustomizationUuid\":\"debd988f-fe04-4940-a5cb-37f61d84eab4\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"internet\",\n \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n \"resourceCustomizationUuid\":\"64b8e8ba-62b9-4db6-b420-1ca7067d63e0\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"sotnvpnattachmentvF\",\n \"resourceInvariantUuid\":\"97c4a3c6-2943-41af-8717-2f3183f944be\",\n \"resourceUuid\":\"44b777ee-9793-465d-8053-d8e86d2e2362\",\n \"resourceCustomizationUuid\":\"37aeb073-c75d-4cf6-a7fa-a1af862ef58a\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"SPPartnerVF\",\n \"resourceInvariantUuid\":\"072f9238-15b0-4bc5-a5f5-f18548739470\",\n \"resourceUuid\":\"81b9430b-8abe-45d6-8bf9-f41a8f5c735f\",\n \"resourceCustomizationUuid\":\"cd0b4b9c-66c6-49c5-b346-7580e4b6c394\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n }\n ],\n \"requestInputs\":{\n \"devicevf_device_class\":\"PNF\",\n \"devicevf_device_esn\":\"2102351BTJ10HB000075\",\n \"devicevf_device_name\":\"50.47\",\n \"devicevf_device_systemIp\":\"192.168.1.47\",\n \"devicevf_device_type\":\"AR161EW\",\n \"devicevf_device_vendor\":\"huawei\",\n \"devicevf_device_version\":\"1.0\",\n \"internet_sitewanport_description\":\"internet\",\n \"internet_sitewanport_deviceName\":\"50.47\",\n \"internet_sitewanport_inputBandwidth\":\"100\",\n \"internet_sitewanport_ipAddress\":\"100.2.30.9\",\n \"internet_sitewanport_name\":\"internet\",\n \"internet_sitewanport_outputBandwidth\":\"100\",\n \"internet_sitewanport_portNumber\":\"0/0/2\",\n \"internet_sitewanport_portType\":\"GE\",\n \"internet_sitewanport_providerIpAddress\":\"100.2.30.10\",\n \"internet_sitewanport_transportNetworkName\":\"internet\",\n \"mpls_sitewanport_description\":\"mpls\",\n \"mpls_sitewanport_deviceName\":\"50.47\",\n \"mpls_sitewanport_inputBandwidth\":\"100\",\n \"mpls_sitewanport_ipAddress\":\"10.2.30.7\",\n \"mpls_sitewanport_name\":\"mpls\",\n \"mpls_sitewanport_outputBandwidth\":\"100\",\n \"mpls_sitewanport_portNumber\":\"0/0/1\",\n \"mpls_sitewanport_portType\":\"GE\",\n \"mpls_sitewanport_providerIpAddress\":\"10.2.30.8\",\n \"mpls_sitewanport_transportNetworkName\":\"internet\",\n \"sdwanvpnattachmentvf_sdwancondition_role\":\"spoke\",\n \"sdwanvpnattachmentvf_sdwancondition_sdwanVpnName\":\"CMCCVPN\",\n \"sitevf_site_address\":\"beijing beiqing road\",\n \"sitevf_site_controlPoint\":\"CMCC_VCPE\",\n \"sitevf_site_description\":\"CMCC_CPE\",\n \"sitevf_site_emails\":\"\",\n \"sitevf_site_latitude\":\"\",\n \"sitevf_site_longitude\":\"\",\n \"sitevf_site_name\":\"CMCC_CPE3\",\n \"sitevf_site_postcode\":\"100095\",\n \"sitevf_site_role\":\"sd-wan-edge\",\n \"sitevf_site_type\":\"single-gateway\",\n \"sotnvpnattachmentvf_sotncondition_clientSignal\":\"\",\n \"sotnvpnattachmentvf_sotncondition_cVLAN\":\"\",\n \"sotnvpnattachmentvf_sotncondition_sotnVpnName\":\"SOTN L2\"\n }\n }\n }\n}", + "relationship-list": { + "relationship": [ + { + "related-to": "sp-partner", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/business/sp-partners/sp-partner/1b9c677d-fddf-4b70-938b-925a7fa57d44", + "relationship-data": [ + { + "relationship-key": "sp-partner.sp-partner-id", + "relationship-value": "1b9c677d-fddf-4b70-938b-925a7fa57d44" + } + ], + "related-to-property": [ + { + "property-key": "sp-partner.sp-partner-id", + "property-value": "1b9c677d-fddf-4b70-938b-925a7fa57d44" + } + ] + } + ] + } + }, + { + "service-instance-id": "389b87a5-72fe-4197-a307-6929c3831f83", + "service-instance-name": "SiteLondon", + "service-type": "E2E Service", + "service-role": "E2E Service", + "model-invariant-id": "5c13f3fb-2744-4635-9f1f-c59c92dc8f70", + "model-version-id": "3a76b1f5-fb0d-4b6b-82d5-0e8a4ebc3838", + "resource-version": "1535686521672", + "input-parameters": "{\n \"service\":{\n \"name\":\"SiteService\",\n \"description\":\"SiteService\",\n \"serviceInvariantUuid\":\"5c13f3fb-2744-4635-9f1f-c59c92dc8f70\",\n \"serviceUuid\":\"3a76b1f5-fb0d-4b6b-82d5-0e8a4ebc3838\",\n \"globalSubscriberId\":\"Demonstration\",\n \"serviceType\":\"CCVPN\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n {\n \"resourceName\":\"SiteVF\",\n \"resourceInvariantUuid\":\"0c0e1cbe-6e01-4f9e-8c45-a9700ebc14df\",\n \"resourceUuid\":\"4ad2d390-5c51-45f5-9710-b467a4ec7a73\",\n \"resourceCustomizationUuid\":\"66590e07-0777-415c-af44-36347cf3ddd3\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"mpls\",\n \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n \"resourceCustomizationUuid\":\"205456e7-3dc0-40c4-8cb0-28e6c1877042\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"deviceVF\",\n \"resourceInvariantUuid\":\"c726490a-0ce2-4bc7-abea-dade66bfb13d\",\n \"resourceUuid\":\"0e2de9d8-d76b-4134-b5f1-41e79056adbe\",\n \"resourceCustomizationUuid\":\"5bc1373e-9a36-4a00-8c62-784e0bc417ad\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"sdwanvpnattachmentVF\",\n \"resourceInvariantUuid\":\"f714feec-1aef-4890-abba-f8f3a906935f\",\n \"resourceUuid\":\"709919b7-75fd-4e49-8398-67853323ff55\",\n \"resourceCustomizationUuid\":\"debd988f-fe04-4940-a5cb-37f61d84eab4\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"internet\",\n \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n \"resourceCustomizationUuid\":\"64b8e8ba-62b9-4db6-b420-1ca7067d63e0\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"sotnvpnattachmentvF\",\n \"resourceInvariantUuid\":\"97c4a3c6-2943-41af-8717-2f3183f944be\",\n \"resourceUuid\":\"44b777ee-9793-465d-8053-d8e86d2e2362\",\n \"resourceCustomizationUuid\":\"37aeb073-c75d-4cf6-a7fa-a1af862ef58a\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"SPPartnerVF\",\n \"resourceInvariantUuid\":\"072f9238-15b0-4bc5-a5f5-f18548739470\",\n \"resourceUuid\":\"81b9430b-8abe-45d6-8bf9-f41a8f5c735f\",\n \"resourceCustomizationUuid\":\"cd0b4b9c-66c6-49c5-b346-7580e4b6c394\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n }\n ],\n \"requestInputs\":{\n \"devicevf_device_class\":\"PNF\",\n \"devicevf_device_esn\":\"2102351BTJ10HB000075\",\n \"devicevf_device_name\":\"50.47\",\n \"devicevf_device_systemIp\":\"192.168.1.47\",\n \"devicevf_device_type\":\"AR161EW\",\n \"devicevf_device_vendor\":\"huawei\",\n \"devicevf_device_version\":\"1.0\",\n \"internet_sitewanport_description\":\"internet\",\n \"internet_sitewanport_deviceName\":\"50.47\",\n \"internet_sitewanport_inputBandwidth\":\"100\",\n \"internet_sitewanport_ipAddress\":\"100.2.30.9\",\n \"internet_sitewanport_name\":\"internet\",\n \"internet_sitewanport_outputBandwidth\":\"100\",\n \"internet_sitewanport_portNumber\":\"0/0/2\",\n \"internet_sitewanport_portType\":\"GE\",\n \"internet_sitewanport_providerIpAddress\":\"100.2.30.10\",\n \"internet_sitewanport_transportNetworkName\":\"internet\",\n \"mpls_sitewanport_description\":\"mpls\",\n \"mpls_sitewanport_deviceName\":\"50.47\",\n \"mpls_sitewanport_inputBandwidth\":\"100\",\n \"mpls_sitewanport_ipAddress\":\"10.2.30.7\",\n \"mpls_sitewanport_name\":\"mpls\",\n \"mpls_sitewanport_outputBandwidth\":\"100\",\n \"mpls_sitewanport_portNumber\":\"0/0/1\",\n \"mpls_sitewanport_portType\":\"GE\",\n \"mpls_sitewanport_providerIpAddress\":\"10.2.30.8\",\n \"mpls_sitewanport_transportNetworkName\":\"internet\",\n \"sdwanvpnattachmentvf_sdwancondition_role\":\"spoke\",\n \"sdwanvpnattachmentvf_sdwancondition_sdwanVpnName\":\"CMCCVPN\",\n \"sitevf_site_address\":\"beijing beiqing road\",\n \"sitevf_site_controlPoint\":\"CMCC_VCPE\",\n \"sitevf_site_description\":\"CMCC_CPE\",\n \"sitevf_site_emails\":\"\",\n \"sitevf_site_latitude\":\"\",\n \"sitevf_site_longitude\":\"\",\n \"sitevf_site_name\":\"CMCC_CPE4\",\n \"sitevf_site_postcode\":\"100095\",\n \"sitevf_site_role\":\"sd-wan-edge\",\n \"sitevf_site_type\":\"single-gateway\",\n \"sotnvpnattachmentvf_sotncondition_clientSignal\":\"\",\n \"sotnvpnattachmentvf_sotncondition_cVLAN\":\"\",\n \"sotnvpnattachmentvf_sotncondition_sotnVpnName\":\"SOTN L2\"\n }\n }\n }\n}", + "relationship-list": { + "relationship": [ + { + "related-to": "sp-partner", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/business/sp-partners/sp-partner/1b9c677d-fddf-4b70-938b-925a7fa57d55", + "relationship-data": [ + { + "relationship-key": "sp-partner.sp-partner-id", + "relationship-value": "1b9c677d-fddf-4b70-938b-925a7fa57d55" + } + ], + "related-to-property": [ + { + "property-key": "sp-partner.sp-partner-id", + "property-value": "1b9c677d-fddf-4b70-938b-925a7fa57d55" + } + ] + } + ] + } + }, + { + "service-instance-id": "32cd906f-ee7a-4ecf-b1c3-2fce4d59f8c0", + "service-instance-name": "SOTNVPNInfra", + "service-type": "E2E Service", + "service-role": "E2E Service", + "model-invariant-id": "21886a96-0664-47a3-beae-766952f2059f", + "model-version-id": "54836196-c411-4690-af98-900c1c3aadd7", + "resource-version": "1535685742159", + "input-parameters": "{\n \"service\":{\n \"name\":\"SOTNVPNInfra\",\n \"description\":\"SOTNVPNInfra\",\n \"serviceInvariantUuid\":\"21886a96-0664-47a3-beae-766952f2059f\",\n \"serviceUuid\":\"54836196-c411-4690-af98-900c1c3aadd7\",\n \"globalSubscriberId\":\"Demonstration\",\n \"serviceType\":\"CCVPN\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n {\n \"resourceName\":\"SOTNConnectivity 0\",\n \"resourceInvariantUuid\":\"1b9c677d-fddf-4b70-938b-925a7fa57d43\",\n \"resourceUuid\":\"218df3c3-50dd-4c26-9e36-4771387bb771\",\n \"resourceCustomizationUuid\":\"b44071c8-04fd-4d6b-b6af-772cbfaa1129\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"SPPartnerVF 0\",\n \"resourceInvariantUuid\":\"072f9238-15b0-4bc5-a5f5-f18548739470\",\n \"resourceUuid\":\"81b9430b-8abe-45d6-8bf9-f41a8f5c735f\",\n \"resourceCustomizationUuid\":\"c3612284-6c67-4d8c-8b41-b699cc90e76d\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n }\n ],\n \"requestInputs\":{\n \"sotnconnectivity0_eir\":\"1000\",\n \"sotnconnectivity0_cir\":\"1000\",\n \"sotnconnectivity0_endTime\":\"2018-8-8 10:00\",\n \"sotnconnectivity0_ebs\":\"1000\",\n \"sotnconnectivity0_startTime\":\"2018-8-1 10:00\",\n \"sotnconnectivity0_dualLink\":\"true\",\n \"sotnconnectivity0_reroute\":\"false\",\n \"sotnconnectivity0_cbs\":\"1000\",\n \"sotnconnectivity0_name\":\"SOTN L2\",\n \"sotnconnectivity0_SLS\":\"\",\n \"sotnconnectivity0_description\":\"\",\n \"sotnconnectivity0_couplingFlag\":\"\",\n \"sotnconnectivity0_colorAware\":\"\",\n \"sotnconnectivity0_COS\":\"standard\"\n }\n }\n }\n}", + "relationship-list": { + "relationship": [ + { + "related-to": "sp-partner", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/business/sp-partners/sp-partner/1b9c677d-fddf-4b70-938b-925a7fa57d99", + "relationship-data": [ + { + "relationship-key": "sp-partner.sp-partner-id", + "relationship-value": "1b9c677d-fddf-4b70-938b-925a7fa57d99" + } + ], + "related-to-property": [ + { + "property-key": "sp-partner.sp-partner-id", + "property-value": "1b9c677d-fddf-4b70-938b-925a7fa57d99" + } + ] + }, + { + "related-to": "connectivity", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/network/connectivities/connectivity/4efe6dff-acfc-4d13-a3fd-1177d3c08e84", + "relationship-data": [ + { + "relationship-key": "connectivity.connectivity-id", + "relationship-value": "4efe6dff-acfc-4d13-a3fd-1177d3c08e84" + } + ], + "related-to-property": [ + { + "property-key": "connectivity.etht-svc-name", + "property-value": "SOTNVPNInfra" + } + ] + }, + { + "related-to": "allotted-resource", + "relationship-label": "org.onap.relationships.inventory.Uses", + "related-link": "/aai/v13/business/customers/customer/Democcy/service-subscriptions/service-subscription/CCVPN/service-instances/service-instance/189b87a5-72fe-4197-a307-6929c3831f81/allotted-resources/allotted-resource/bb14feec-1aef-4890-abba-f8f3a906935f", + "relationship-data": [ + { + "relationship-key": "customer.global-customer-id", + "relationship-value": "Democcy" + }, + { + "relationship-key": "service-subscription.service-type", + "relationship-value": "CCVPN" + }, + { + "relationship-key": "service-instance.service-instance-id", + "relationship-value": "189b87a5-72fe-4197-a307-6929c3831f81" + }, + { + "relationship-key": "allotted-resource.id", + "relationship-value": "bb14feec-1aef-4890-abba-f8f3a906935f" + } + ], + "related-to-property": [ + { + "property-key": "allotted-resource.description", + "property-value": "bb14feec-1aef-4890-abba-f8f3a906935f" + }, + { + "property-key": "allotted-resource.allotted-resource-name", + "property-value": "ston ar" + } + ] + }, + { + "related-to": "allotted-resource", + "relationship-label": "org.onap.relationships.inventory.Uses", + "related-link": "/aai/v13/business/customers/customer/Democcy/service-subscriptions/service-subscription/CCVPN/service-instances/service-instance/089b87a5-72fe-4197-a307-6929c3831f80/allotted-resources/allotted-resource/aa14feec-1aef-4890-abba-f8f3a906935f", + "relationship-data": [ + { + "relationship-key": "customer.global-customer-id", + "relationship-value": "Democcy" + }, + { + "relationship-key": "service-subscription.service-type", + "relationship-value": "CCVPN" + }, + { + "relationship-key": "service-instance.service-instance-id", + "relationship-value": "089b87a5-72fe-4197-a307-6929c3831f80" + }, + { + "relationship-key": "allotted-resource.id", + "relationship-value": "aa14feec-1aef-4890-abba-f8f3a906935f" + } + ], + "related-to-property": [ + { + "property-key": "allotted-resource.description", + "property-value": "aa14feec-1aef-4890-abba-f8f3a906935f" + }, + { + "property-key": "allotted-resource.allotted-resource-name", + "property-value": "ston ar" + } + ] + } + ] + } + } + ] +}
\ No newline at end of file diff --git a/usecaseui-portal/src/assets/json/instanceTableData2.json b/usecaseui-portal/src/assets/json/instanceTableData2.json new file mode 100644 index 00000000..d29f5f59 --- /dev/null +++ b/usecaseui-portal/src/assets/json/instanceTableData2.json @@ -0,0 +1,388 @@ +{ + "results": [ + { + "service-subscription": { + "service-type": "{service-type}", + "temp-ub-sub-account-id": "some sub account", + "service-type-id":"sotn", + "service-instances": { + "service-instance": [ + { + "service-instance-id": "uuidxxx", + "service-instance-name": "dddd1", + "environment-context": "some context 1", + "workload-context": "some workload 1", + "input-parameters": "request parameters 1", + "relationship-list": { + "relationship" : [ + ] + } + }, + { + "service-instance-id": "some id 2", + "service-instance-name": "some name 2", + "environment-context": "some context 2", + "workload-context": "some workload 2", + "input-parameters": "request parameters 2", + "relationship-list": { + "relationship" : [ + ] + } + }, + { + "service-instance-id": "some id 3", + "service-instance-name": "some name 3", + "environment-context": "some context 3", + "workload-context": "some workload 3", + "input-parameters": "request parameters 3", + "relationship-list": { + "relationship" : [ + ] + } + } + ] + }, + "relationship-list": { + "relationship" : [ + ] + } + } + }, + { + "service-subscription": { + "service-type": "{service-type}", + "temp-ub-sub-account-id": "some sub account", + "service-type-id":"sotn", + "service-instances": { + "service-instance": [ + { + "service-instance-id": "some id 1", + "service-instance-name": "some name 1", + "environment-context": "some context 1", + "workload-context": "some workload 1", + "input-parameters": "request parameters 1", + "relationship-list": { + "relationship" : [ + ] + } + }, + { + "service-instance-id": "some id 2", + "service-instance-name": "some name 2", + "environment-context": "some context 2", + "workload-context": "some workload 2", + "input-parameters": "request parameters 2", + "relationship-list": { + "relationship" : [ + ] + } + }, + { + "service-instance-id": "some id 3", + "service-instance-name": "some name 3", + "environment-context": "some context 3", + "workload-context": "some workload 3", + "input-parameters": "request parameters 3", + "relationship-list": { + "relationship" : [ + ] + } + } + ] + }, + "relationship-list": { + "relationship" : [ + ] + } + } + }, + { + "service-subscription": { + "service-type": "{service-type}", + "temp-ub-sub-account-id": "some sub account", + "service-type-id":"sotn", + "service-instances": { + "service-instance": [ + { + "service-instance-id": "some id 1", + "service-instance-name": "some name 1", + "environment-context": "some context 1", + "workload-context": "some workload 1", + "input-parameters": "request parameters 1", + "relationship-list": { + "relationship" : [ + ] + } + }, + { + "service-instance-id": "uuidaaaa", + "service-instance-name": "dddd6", + "environment-context": "some context 2", + "workload-context": "some workload 2", + "input-parameters": "request parameters 2", + "relationship-list": { + "relationship" : [ + ] + } + }, + { + "service-instance-id": "some id 3", + "service-instance-name": "some name 3", + "environment-context": "some context 3", + "workload-context": "some workload 3", + "input-parameters": "request parameters 3", + "relationship-list": { + "relationship" : [ + ] + } + } + ] + }, + "relationship-list": { + "relationship" : [ + ] + } + } + }, + { + "service-subscription": { + "service-type": "{service-type}", + "temp-ub-sub-account-id": "some sub account", + "service-type-id":"ccvpn", + "service-instances": { + "service-instance": [ + { + "service-instance-id": "some id 1", + "service-instance-name": "some name 1", + "environment-context": "some context 1", + "workload-context": "some workload 1", + "input-parameters": "request parameters 1", + "relationship-list": { + "relationship" : [ + ] + } + }, + { + "service-instance-id": "some id 2", + "service-instance-name": "some name 2", + "environment-context": "some context 2", + "workload-context": "some workload 2", + "input-parameters": "request parameters 2", + "relationship-list": { + "relationship" : [ + ] + } + }, + { + "service-instance-id": "some id 3", + "service-instance-name": "some name 3", + "environment-context": "some context 3", + "workload-context": "some workload 3", + "input-parameters": "request parameters 3", + "relationship-list": { + "relationship" : [ + ] + } + } + ] + }, + "relationship-list": { + "relationship" : [ + ] + } + } + }, + { + "service-subscription": { + "service-type": "{service-type}", + "temp-ub-sub-account-id": "some sub account", + "service-type-id":"ccvpn", + "service-instances": { + "service-instance": [ + { + "service-instance-id": "some id 1", + "service-instance-name": "some name 1", + "environment-context": "some context 1", + "workload-context": "some workload 1", + "input-parameters": "request parameters 1", + "relationship-list": { + "relationship" : [ + ] + } + }, + { + "service-instance-id": "some id 2", + "service-instance-name": "some name 2", + "environment-context": "some context 2", + "workload-context": "some workload 2", + "input-parameters": "request parameters 2", + "relationship-list": { + "relationship" : [ + ] + } + }, + { + "service-instance-id": "some id 3", + "service-instance-name": "some name 3", + "environment-context": "some context 3", + "workload-context": "some workload 3", + "input-parameters": "request parameters 3", + "relationship-list": { + "relationship" : [ + ] + } + } + ] + }, + "relationship-list": { + "relationship" : [ + ] + } + } + }, + { + "service-subscription": { + "service-type": "{service-type}", + "temp-ub-sub-account-id": "some sub account", + "service-type-id":"ccvpn", + "service-instances": { + "service-instance": [ + { + "service-instance-id": "some id 1", + "service-instance-name": "some name 1", + "environment-context": "some context 1", + "workload-context": "some workload 1", + "input-parameters": "request parameters 1", + "relationship-list": { + "relationship" : [ + ] + } + }, + { + "service-instance-id": "some id 2", + "service-instance-name": "some name 2", + "environment-context": "some context 2", + "workload-context": "some workload 2", + "input-parameters": "request parameters 2", + "relationship-list": { + "relationship" : [ + ] + } + }, + { + "service-instance-id": "some id 3", + "service-instance-name": "some name 3", + "environment-context": "some context 3", + "workload-context": "some workload 3", + "input-parameters": "request parameters 3", + "relationship-list": { + "relationship" : [ + ] + } + } + ] + }, + "relationship-list": { + "relationship" : [ + ] + } + } + }, + { + "service-subscription": { + "service-type": "{service-type}", + "temp-ub-sub-account-id": "some sub account", + "service-type-id":"ccvpn", + "service-instances": { + "service-instance": [ + { + "service-instance-id": "some id 1", + "service-instance-name": "some name 1", + "environment-context": "some context 1", + "workload-context": "some workload 1", + "input-parameters": "request parameters 1", + "relationship-list": { + "relationship" : [ + ] + } + }, + { + "service-instance-id": "some id 2", + "service-instance-name": "some name 2", + "environment-context": "some context 2", + "workload-context": "some workload 2", + "input-parameters": "request parameters 2", + "relationship-list": { + "relationship" : [ + ] + } + }, + { + "service-instance-id": "some id 3", + "service-instance-name": "some name 3", + "environment-context": "some context 3", + "workload-context": "some workload 3", + "input-parameters": "request parameters 3", + "relationship-list": { + "relationship" : [ + ] + } + } + ] + }, + "relationship-list": { + "relationship" : [ + ] + } + } + }, + { + "service-subscription": { + "service-type": "{service-type}", + "temp-ub-sub-account-id": "some sub account", + "service-type-id":"ccvpn", + "service-instances": { + "service-instance": [ + { + "service-instance-id": "some id 1", + "service-instance-name": "some name 1", + "environment-context": "some context 1", + "workload-context": "some workload 1", + "input-parameters": "request parameters 1", + "relationship-list": { + "relationship" : [ + ] + } + }, + { + "service-instance-id": "some id 2", + "service-instance-name": "some name 2", + "environment-context": "some context 2", + "workload-context": "some workload 2", + "input-parameters": "request parameters 2", + "relationship-list": { + "relationship" : [ + ] + } + }, + { + "service-instance-id": "some id 3", + "service-instance-name": "some name 3", + "environment-context": "some context 3", + "workload-context": "some workload 3", + "input-parameters": "request parameters 3", + "relationship-list": { + "relationship" : [ + ] + } + } + ] + }, + "relationship-list": { + "relationship" : [ + ] + } + } + } + ] +}
\ No newline at end of file diff --git a/usecaseui-portal/src/assets/json/instanceTableData3.json b/usecaseui-portal/src/assets/json/instanceTableData3.json new file mode 100644 index 00000000..98777289 --- /dev/null +++ b/usecaseui-portal/src/assets/json/instanceTableData3.json @@ -0,0 +1,2 @@ + +{"service-instance":[{"service-instance-id":"8e07f832-3f50-4657-9b44-010049e8b488","service-instance-name":"SOTNVPNInfra","service-type":"E2E Service","service-role":"E2E Service","model-invariant-id":"bafa365f-4056-4ad3-a039-d6b3e3e0fd35","model-version-id":"fdbb8ddd-3325-4840-a156-9ad601b9366c","resource-version":"1537769390960","input-parameters":"{\n \"service\":{\n \"name\":\"SOTNVPNInfra\",\n \"description\":\"SOTNVPNInfra\",\n \"serviceInvariantUuid\":\"bafa365f-4056-4ad3-a039-d6b3e3e0fd35\",\n \"serviceUuid\":\"fdbb8ddd-3325-4840-a156-9ad601b9366c\",\n \"globalSubscriberId\":\"demo\",\n \"serviceType\":\"ccvpn\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n {\n \"resourceName\":\"SOTNConnectivity 0\",\n \"resourceInvariantUuid\":\"1b9c677d-fddf-4b70-938b-925a7fa57d43\",\n \"resourceUuid\":\"218df3c3-50dd-4c26-9e36-4771387bb771\",\n \"resourceCustomizationUuid\":\"b44071c8-04fd-4d6b-b6af-772cbfaa1129\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"SPPartnerVF 0\",\n \"resourceInvariantUuid\":\"072f9238-15b0-4bc5-a5f5-f18548739470\",\n \"resourceUuid\":\"81b9430b-8abe-45d6-8bf9-f41a8f5c735f\",\n \"resourceCustomizationUuid\":\"c3612284-6c67-4d8c-8b41-b699cc90e76d\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n }\n ],\n \"requestInputs\":{\n \"sotnconnectivity0_eir\":\"1000\",\n \"sotnconnectivity0_cir\":\"1000\",\n \"sotnconnectivity0_endTime\":\"2018-8-8 10:00\",\n \"sotnconnectivity0_ebs\":\"1000\",\n \"sotnconnectivity0_startTime\":\"2018-8-1 10:00\",\n \"sotnconnectivity0_dualLink\":\"true\",\n \"sotnconnectivity0_reroute\":\"false\",\n \"sotnconnectivity0_cbs\":\"1000\",\n \"sotnconnectivity0_name\":\"SOTN L2\",\n \"sotnconnectivity0_SLS\":\"\",\n \"sotnconnectivity0_description\":\"\",\n \"sotnconnectivity0_couplingFlag\":\"\",\n \"sotnconnectivity0_colorAware\":\"\",\n \"sotnconnectivity0_COS\":\"standard\"\n }\n }\n }\n}","relationship-list":{"relationship":[{"related-to":"connectivity","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/network/connectivities/connectivity/2e359c75-2af3-4fea-9550-a893edeab8b5","relationship-data":[{"relationship-key":"connectivity.connectivity-id","relationship-value":"2e359c75-2af3-4fea-9550-a893edeab8b5"}],"related-to-property":[{"property-key":"connectivity.etht-svc-name","property-value":"vpn1"}]},{"related-to":"sp-partner","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/business/sp-partners/sp-partner/32cd906f-ee7a-4ecf-b1c3-2fce4d59f8c0","relationship-data":[{"relationship-key":"sp-partner.sp-partner-id","relationship-value":"32cd906f-ee7a-4ecf-b1c3-2fce4d59f8c0"}],"related-to-property":[{"property-key":"sp-partner.sp-partner-id","property-value":"32cd906f-ee7a-4ecf-b1c3-2fce4d59f8c0"}]}]}},{"service-instance-id":"a6d69c62-75b5-4f04-8cd7-9ca5dfcc4205","service-instance-name":"DcLondon","service-type":"E2E Service","service-role":"E2E Service","model-invariant-id":"499e5e60-c8b2-4ea6-8c4e-7739420673a9","model-version-id":"8ec97da1-1e0a-4198-9c9a-3da2c60d7974","resource-version":"1537769721422","input-parameters":"{\n \"service\":{\n \"name\":\"DcLondon\",\n \"description\":\"SiteService\",\n \"serviceInvariantUuid\":\"499e5e60-c8b2-4ea6-8c4e-7739420673a9\",\n \"serviceUuid\":\"8ec97da1-1e0a-4198-9c9a-3da2c60d7974\",\n \"globalSubscriberId\":\"demo\",\n \"serviceType\":\"ccvpn\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n {\n \"resourceName\":\"SiteVF\",\n \"resourceInvariantUuid\":\"0c0e1cbe-6e01-4f9e-8c45-a9700ebc14df\",\n \"resourceUuid\":\"4ad2d390-5c51-45f5-9710-b467a4ec7a73\",\n \"resourceCustomizationUuid\":\"66590e07-0777-415c-af44-36347cf3ddd3\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"mpls\",\n \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n \"resourceCustomizationUuid\":\"205456e7-3dc0-40c4-8cb0-28e6c1877042\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"deviceVF\",\n \"resourceInvariantUuid\":\"c726490a-0ce2-4bc7-abea-dade66bfb13d\",\n \"resourceUuid\":\"0e2de9d8-d76b-4134-b5f1-41e79056adbe\",\n \"resourceCustomizationUuid\":\"5bc1373e-9a36-4a00-8c62-784e0bc417ad\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"sdwanvpnattachmentVF\",\n \"resourceInvariantUuid\":\"f714feec-1aef-4890-abba-f8f3a906935f\",\n \"resourceUuid\":\"709919b7-75fd-4e49-8398-67853323ff55\",\n \"resourceCustomizationUuid\":\"debd988f-fe04-4940-a5cb-37f61d84eab4\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"internet\",\n \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n \"resourceCustomizationUuid\":\"64b8e8ba-62b9-4db6-b420-1ca7067d63e0\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"sotnvpnattachmentvF\",\n \"resourceInvariantUuid\":\"97c4a3c6-2943-41af-8717-2f3183f944be\",\n \"resourceUuid\":\"44b777ee-9793-465d-8053-d8e86d2e2362\",\n \"resourceCustomizationUuid\":\"37aeb073-c75d-4cf6-a7fa-a1af862ef58a\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"SPPartnerVF\",\n \"resourceInvariantUuid\":\"072f9238-15b0-4bc5-a5f5-f18548739470\",\n \"resourceUuid\":\"81b9430b-8abe-45d6-8bf9-f41a8f5c735f\",\n \"resourceCustomizationUuid\":\"cd0b4b9c-66c6-49c5-b346-7580e4b6c394\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n }\n ],\n \"requestInputs\":{\n \"devicevf_device_class\":\"PNF\",\n \"devicevf_device_esn\":\"2102351BTJ10HB000075\",\n \"devicevf_device_name\":\"50.47\",\n \"devicevf_device_systemIp\":\"192.168.1.47\",\n \"devicevf_device_type\":\"AR161EW\",\n \"devicevf_device_vendor\":\"huawei\",\n \"devicevf_device_version\":\"1.0\",\n \"internet_sitewanport_description\":\"internet\",\n \"internet_sitewanport_deviceName\":\"50.47\",\n \"internet_sitewanport_inputBandwidth\":\"100\",\n \"internet_sitewanport_ipAddress\":\"100.2.30.9\",\n \"internet_sitewanport_name\":\"internet\",\n \"internet_sitewanport_outputBandwidth\":\"100\",\n \"internet_sitewanport_portNumber\":\"0/0/2\",\n \"internet_sitewanport_portType\":\"GE\",\n \"internet_sitewanport_providerIpAddress\":\"100.2.30.10\",\n \"internet_sitewanport_transportNetworkName\":\"internet\",\n \"mpls_sitewanport_description\":\"mpls\",\n \"mpls_sitewanport_deviceName\":\"50.47\",\n \"mpls_sitewanport_inputBandwidth\":\"100\",\n \"mpls_sitewanport_ipAddress\":\"10.2.30.7\",\n \"mpls_sitewanport_name\":\"mpls\",\n \"mpls_sitewanport_outputBandwidth\":\"100\",\n \"mpls_sitewanport_portNumber\":\"0/0/1\",\n \"mpls_sitewanport_portType\":\"GE\",\n \"mpls_sitewanport_providerIpAddress\":\"10.2.30.8\",\n \"mpls_sitewanport_transportNetworkName\":\"internet\",\n \"sdwanvpnattachmentvf_sdwancondition_role\":\"spoke\",\n \"sdwanvpnattachmentvf_sdwancondition_sdwanVpnName\":\"CMCCVPN\",\n \"sitevf_site_address\":\"beijing beiqing road\",\n \"sitevf_site_controlPoint\":\"CMCC_VCPE\",\n \"sitevf_site_description\":\"CMCC_CPE\",\n \"sitevf_site_emails\":\"\",\n \"sitevf_site_latitude\":\"\",\n \"sitevf_site_longitude\":\"\",\n \"sitevf_site_name\":\"CMCC_CPE\",\n \"sitevf_site_postcode\":\"100095\",\n \"sitevf_site_role\":\"sd-wan-edge\",\n \"sitevf_site_type\":\"single-gateway\",\n \"sotnvpnattachmentvf_sotncondition_clientSignal\":\"\",\n \"sotnvpnattachmentvf_sotncondition_cVLAN\":\"\",\n \"sotnvpnattachmentvf_sotncondition_sotnVpnName\":\"SOTN L2\"\n }\n }\n }\n}","relationship-list":{"relationship":[{"related-to":"device","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/network/devices/device/2cacf49c-7c09-4155-b18a-4468dce34083","relationship-data":[{"relationship-key":"device.device-id","relationship-value":"2cacf49c-7c09-4155-b18a-4468dce34083"}],"related-to-property":[{"property-key":"device.device-name","property-value":"TravelDevice"}]},{"related-to":"site-resource","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/network/site-resources/site-resource/f288d54e-be09-46d3-bb1f-38729ec74bb5","relationship-data":[{"relationship-key":"site-resource.site-resource-id","relationship-value":"f288d54e-be09-46d3-bb1f-38729ec74bb5"}],"related-to-property":[{"property-key":"site-resource.site-resource-name","property-value":"travelSite"}]},{"related-to":"wan-port-config","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/network/wan-port-configs/wan-port-config/99866f05-9749-456e-8909-61eebf08373e","relationship-data":[{"relationship-key":"wan-port-config.wan-port-config-id","relationship-value":"99866f05-9749-456e-8909-61eebf08373e"}],"related-to-property":[{"property-key":"wan-port-config.wan-port-config-name","property-value":"intenet"}]},{"related-to":"wan-port-config","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/network/wan-port-configs/wan-port-config/afab2cc0-28c9-4fd3-bf03-01c8034f8191","relationship-data":[{"relationship-key":"wan-port-config.wan-port-config-id","relationship-value":"afab2cc0-28c9-4fd3-bf03-01c8034f8191"}],"related-to-property":[{"property-key":"wan-port-config.wan-port-config-name","property-value":"mpls"}]},{"related-to":"sp-partner","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/business/sp-partners/sp-partner/167a285b-0875-41ff-8ed1-1178db6f3133","relationship-data":[{"relationship-key":"sp-partner.sp-partner-id","relationship-value":"167a285b-0875-41ff-8ed1-1178db6f3133"}],"related-to-property":[{"property-key":"sp-partner.sp-partner-id","property-value":"167a285b-0875-41ff-8ed1-1178db6f3133"}]},{"related-to":"allotted-resource","relationship-label":"org.onap.relationships.inventory.Uses","related-link":"/aai/v13/business/customers/customer/demo/service-subscriptions/service-subscription/ccvpn/service-instances/service-instance/0ea94797-3772-40ff-b6fb-69f06c533be3/allotted-resources/allotted-resource/d519761d-c89c-4164-86c7-8f74952eea65","relationship-data":[{"relationship-key":"customer.global-customer-id","relationship-value":"demo"},{"relationship-key":"service-subscription.service-type","relationship-value":"ccvpn"},{"relationship-key":"service-instance.service-instance-id","relationship-value":"0ea94797-3772-40ff-b6fb-69f06c533be3"},{"relationship-key":"allotted-resource.id","relationship-value":"d519761d-c89c-4164-86c7-8f74952eea65"}],"related-to-property":[{"property-key":"allotted-resource.description","property-value":"sdwan-attachment"},{"property-key":"allotted-resource.allotted-resource-name","property-value":"sdwan ar"}]},{"related-to":"allotted-resource","relationship-label":"org.onap.relationships.inventory.Uses","related-link":"/aai/v13/business/customers/customer/demo/service-subscriptions/service-subscription/ccvpn/service-instances/service-instance/8e07f832-3f50-4657-9b44-010049e8b488/allotted-resources/allotted-resource/65f21c28-8b19-4769-8f08-174e2afa5488","relationship-data":[{"relationship-key":"customer.global-customer-id","relationship-value":"demo"},{"relationship-key":"service-subscription.service-type","relationship-value":"ccvpn"},{"relationship-key":"service-instance.service-instance-id","relationship-value":"8e07f832-3f50-4657-9b44-010049e8b488"},{"relationship-key":"allotted-resource.id","relationship-value":"65f21c28-8b19-4769-8f08-174e2afa5488"}],"related-to-property":[{"property-key":"allotted-resource.description","property-value":"sotn attachment"},{"property-key":"allotted-resource.allotted-resource-name","property-value":"ston ar"}]}]}},{"service-instance-id":"0ea94797-3772-40ff-b6fb-69f06c533be3","service-instance-name":"SDWANVPNInfra","service-type":"E2E Service","service-role":"E2E Service","model-invariant-id":"e2b217d6-7cac-4156-9f44-f9b010b350a6","model-version-id":"20d9e7dc-f030-4230-af79-ba0bde7cbe2e","resource-version":"1537769801383","input-parameters":"{\n \"service\":{\n \"name\":\"SDWANVPNInfra\",\n \"description\":\"SDWANVPNInfra\",\n \"serviceInvariantUuid\":\"e2b217d6-7cac-4156-9f44-f9b010b350a6\",\n \"serviceUuid\":\"20d9e7dc-f030-4230-af79-ba0bde7cbe2e\",\n \"globalSubscriberId\":\"demo\",\n \"serviceType\":\"ccvpn\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n {\n \"resourceName\":\"SDWANConnectivity 0\",\n \"resourceInvariantUuid\":\"f99a9a23-c88e-44ff-a4dc-22b88675d278\",\n \"resourceUuid\":\"7baa7742-3a13-4288-8330-868015adc340\",\n \"resourceCustomizationUuid\":\"94ec574b-2306-4cbd-8214-09662b040f73\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"SPPartnerVF 0\",\n \"resourceInvariantUuid\":\"072f9238-15b0-4bc5-a5f5-f18548739470\",\n \"resourceUuid\":\"81b9430b-8abe-45d6-8bf9-f41a8f5c735f\",\n \"resourceCustomizationUuid\":\"a7baba5d-6ac3-42b5-b47d-070841303ab1\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n }\n ],\n \"requestInputs\":{\n \"sdwanconnectivity0_name\":\"CMCCVPN\",\n \"sdwanconnectivity0_topology\":\"hub-spoke\"\n }\n }\n }\n}","relationship-list":{"relationship":[{"related-to":"sdwan-vpn","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/network/sdwan-vpns/sdwan-vpn/0d8707cd-9d27-4503-a0b0-e9b1b1a83b1e","relationship-data":[{"relationship-key":"sdwan-vpn.sdwan-vpn-id","relationship-value":"0d8707cd-9d27-4503-a0b0-e9b1b1a83b1e"}],"related-to-property":[{"property-key":"sdwan-vpn.sdwan-vpn-name"}]},{"related-to":"sp-partner","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/business/sp-partners/sp-partner/15e88f8e-473f-4d88-92f8-6739a42baa2g","relationship-data":[{"relationship-key":"sp-partner.sp-partner-id","relationship-value":"15e88f8e-473f-4d88-92f8-6739a42baa2g"}],"related-to-property":[{"property-key":"sp-partner.sp-partner-id","property-value":"15e88f8e-473f-4d88-92f8-6739a42baa2g"}]}]}},{"service-instance-id":"f08067b8-a07b-4c41-b750-5f9b35281e67","service-instance-name":"siteFangshanQu","service-type":"E2E Service","service-role":"E2E Service","model-invariant-id":"499e5e60-c8b2-4ea6-8c4e-7739420673a9","model-version-id":"8ec97da1-1e0a-4198-9c9a-3da2c60d7974","resource-version":"1537779181775","selflink":"restconf/config/GENERIC-RESOURCE-API:services/service/506b87a5-72fe-4197-a307-6929c3871ab2/service-data/service-topology/","input-parameters":"{\n \"service\":{\n \"name\":\"siteFangshanQu\",\n \"description\":\"SiteService\",\n \"serviceInvariantUuid\":\"499e5e60-c8b2-4ea6-8c4e-7739420673a9\",\n \"serviceUuid\":\"8ec97da1-1e0a-4198-9c9a-3da2c60d7974\",\n \"globalSubscriberId\":\"demo\",\n \"serviceType\":\"ccvpn\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n {\n \"resourceName\":\"SiteVF\",\n \"resourceInvariantUuid\":\"0c0e1cbe-6e01-4f9e-8c45-a9700ebc14df\",\n \"resourceUuid\":\"4ad2d390-5c51-45f5-9710-b467a4ec7a73\",\n \"resourceCustomizationUuid\":\"66590e07-0777-415c-af44-36347cf3ddd3\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"mpls\",\n \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n \"resourceCustomizationUuid\":\"205456e7-3dc0-40c4-8cb0-28e6c1877042\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"deviceVF\",\n \"resourceInvariantUuid\":\"c726490a-0ce2-4bc7-abea-dade66bfb13d\",\n \"resourceUuid\":\"0e2de9d8-d76b-4134-b5f1-41e79056adbe\",\n \"resourceCustomizationUuid\":\"5bc1373e-9a36-4a00-8c62-784e0bc417ad\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"sdwanvpnattachmentVF\",\n \"resourceInvariantUuid\":\"f714feec-1aef-4890-abba-f8f3a906935f\",\n \"resourceUuid\":\"709919b7-75fd-4e49-8398-67853323ff55\",\n \"resourceCustomizationUuid\":\"debd988f-fe04-4940-a5cb-37f61d84eab4\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"internet\",\n \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n \"resourceCustomizationUuid\":\"64b8e8ba-62b9-4db6-b420-1ca7067d63e0\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"sotnvpnattachmentvF\",\n \"resourceInvariantUuid\":\"97c4a3c6-2943-41af-8717-2f3183f944be\",\n \"resourceUuid\":\"44b777ee-9793-465d-8053-d8e86d2e2362\",\n \"resourceCustomizationUuid\":\"37aeb073-c75d-4cf6-a7fa-a1af862ef58a\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"SPPartnerVF\",\n \"resourceInvariantUuid\":\"072f9238-15b0-4bc5-a5f5-f18548739470\",\n \"resourceUuid\":\"81b9430b-8abe-45d6-8bf9-f41a8f5c735f\",\n \"resourceCustomizationUuid\":\"cd0b4b9c-66c6-49c5-b346-7580e4b6c394\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n }\n ],\n \"requestInputs\":{\n \"devicevf_device_class\":\"PNF\",\n \"devicevf_device_esn\":\"2102351BTJ10HB000075\",\n \"devicevf_device_name\":\"50.47\",\n \"devicevf_device_systemIp\":\"192.168.1.47\",\n \"devicevf_device_type\":\"AR161EW\",\n \"devicevf_device_vendor\":\"huawei\",\n \"devicevf_device_version\":\"1.0\",\n \"internet_sitewanport_description\":\"internet\",\n \"internet_sitewanport_deviceName\":\"50.47\",\n \"internet_sitewanport_inputBandwidth\":\"100\",\n \"internet_sitewanport_ipAddress\":\"100.2.30.9\",\n \"internet_sitewanport_name\":\"internet\",\n \"internet_sitewanport_outputBandwidth\":\"100\",\n \"internet_sitewanport_portNumber\":\"0/0/2\",\n \"internet_sitewanport_portType\":\"GE\",\n \"internet_sitewanport_providerIpAddress\":\"100.2.30.10\",\n \"internet_sitewanport_transportNetworkName\":\"internet\",\n \"mpls_sitewanport_description\":\"mpls\",\n \"mpls_sitewanport_deviceName\":\"50.47\",\n \"mpls_sitewanport_inputBandwidth\":\"100\",\n \"mpls_sitewanport_ipAddress\":\"10.2.30.7\",\n \"mpls_sitewanport_name\":\"mpls\",\n \"mpls_sitewanport_outputBandwidth\":\"100\",\n \"mpls_sitewanport_portNumber\":\"0/0/1\",\n \"mpls_sitewanport_portType\":\"GE\",\n \"mpls_sitewanport_providerIpAddress\":\"10.2.30.8\",\n \"mpls_sitewanport_transportNetworkName\":\"internet\",\n \"sdwanvpnattachmentvf_sdwancondition_role\":\"spoke\",\n \"sdwanvpnattachmentvf_sdwancondition_sdwanVpnName\":\"CMCCVPN\",\n \"sitevf_site_address\":\"beijing beiqing road\",\n \"sitevf_site_controlPoint\":\"CMCC_VCPE\",\n \"sitevf_site_description\":\"CMCC_CPE\",\n \"sitevf_site_emails\":\"\",\n \"sitevf_site_latitude\":\"\",\n \"sitevf_site_longitude\":\"\",\n \"sitevf_site_name\":\"CMCC_CPE\",\n \"sitevf_site_postcode\":\"100095\",\n \"sitevf_site_role\":\"sd-wan-edge\",\n \"sitevf_site_type\":\"single-gateway\",\n \"sotnvpnattachmentvf_sotncondition_clientSignal\":\"\",\n \"sotnvpnattachmentvf_sotncondition_cVLAN\":\"\",\n \"sotnvpnattachmentvf_sotncondition_sotnVpnName\":\"SOTN L2\"\n }\n }\n }\n}","relationship-list":{"relationship":[{"related-to":"sp-partner","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/business/sp-partners/sp-partner/506b87a5-72fe-4197-a307-6929c3871ab2","relationship-data":[{"relationship-key":"sp-partner.sp-partner-id","relationship-value":"506b87a5-72fe-4197-a307-6929c3871ab2"}],"related-to-property":[{"property-key":"sp-partner.sp-partner-id","property-value":"506b87a5-72fe-4197-a307-6929c3871ab2"}]}]}},{"service-instance-id":"6a6478d1-f62f-439c-8f16-6038a44af8c3","service-instance-name":"SDWANVPNInfra-2","service-type":"E2E Service","service-role":"E2E Service","model-invariant-id":"e2b217d6-7cac-4156-9f44-f9b010b350a6","model-version-id":"20d9e7dc-f030-4230-af79-ba0bde7cbe2e","resource-version":"1537779569094","input-parameters":"{\n \"service\":{\n \"name\":\"SDWANVPNInfra-2\",\n \"description\":\"SDWANVPNInfra\",\n \"serviceInvariantUuid\":\"e2b217d6-7cac-4156-9f44-f9b010b350a6\",\n \"serviceUuid\":\"20d9e7dc-f030-4230-af79-ba0bde7cbe2e\",\n \"globalSubscriberId\":\"demo\",\n \"serviceType\":\"ccvpn\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n {\n \"resourceName\":\"SDWANConnectivity 0\",\n \"resourceInvariantUuid\":\"f99a9a23-c88e-44ff-a4dc-22b88675d278\",\n \"resourceUuid\":\"7baa7742-3a13-4288-8330-868015adc340\",\n \"resourceCustomizationUuid\":\"94ec574b-2306-4cbd-8214-09662b040f73\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"SPPartnerVF 0\",\n \"resourceInvariantUuid\":\"072f9238-15b0-4bc5-a5f5-f18548739470\",\n \"resourceUuid\":\"81b9430b-8abe-45d6-8bf9-f41a8f5c735f\",\n \"resourceCustomizationUuid\":\"a7baba5d-6ac3-42b5-b47d-070841303ab1\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n }\n ],\n \"requestInputs\":{\n \"sdwanconnectivity0_name\":\"CMCCVPN\",\n \"sdwanconnectivity0_topology\":\"hub-spoke\"\n }\n }\n }\n}","relationship-list":{"relationship":[{"related-to":"sp-partner","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/business/sp-partners/sp-partner/de888731-eac8-454c-bbb2-927a85ba2d1c","relationship-data":[{"relationship-key":"sp-partner.sp-partner-id","relationship-value":"de888731-eac8-454c-bbb2-927a85ba2d1c"}],"related-to-property":[{"property-key":"sp-partner.sp-partner-id","property-value":"de888731-eac8-454c-bbb2-927a85ba2d1c"}]}]}},{"service-instance-id":"fd0b9f0a-0d5c-4f69-a3dc-fb9cabde9db8","service-instance-name":"DcXichengQuBeijing","service-type":"E2E Service","service-role":"E2E Service","model-invariant-id":"499e5e60-c8b2-4ea6-8c4e-7739420673a9","model-version-id":"8ec97da1-1e0a-4198-9c9a-3da2c60d7974","resource-version":"1537779392307","selflink":"restconf/config/GENERIC-RESOURCE-API:services/service/289b87a5-72fe-4197-a307-6929c3831f82/service-data/service-topology/","input-parameters":"{\n \"service\":{\n \"name\":\"DcXichengQuBeijing\",\n \"description\":\"SiteService\",\n \"serviceInvariantUuid\":\"499e5e60-c8b2-4ea6-8c4e-7739420673a9\",\n \"serviceUuid\":\"8ec97da1-1e0a-4198-9c9a-3da2c60d7974\",\n \"globalSubscriberId\":\"demo\",\n \"serviceType\":\"ccvpn\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n {\n \"resourceName\":\"SiteVF\",\n \"resourceInvariantUuid\":\"0c0e1cbe-6e01-4f9e-8c45-a9700ebc14df\",\n \"resourceUuid\":\"4ad2d390-5c51-45f5-9710-b467a4ec7a73\",\n \"resourceCustomizationUuid\":\"66590e07-0777-415c-af44-36347cf3ddd3\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"mpls\",\n \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n \"resourceCustomizationUuid\":\"205456e7-3dc0-40c4-8cb0-28e6c1877042\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"deviceVF\",\n \"resourceInvariantUuid\":\"c726490a-0ce2-4bc7-abea-dade66bfb13d\",\n \"resourceUuid\":\"0e2de9d8-d76b-4134-b5f1-41e79056adbe\",\n \"resourceCustomizationUuid\":\"5bc1373e-9a36-4a00-8c62-784e0bc417ad\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"sdwanvpnattachmentVF\",\n \"resourceInvariantUuid\":\"f714feec-1aef-4890-abba-f8f3a906935f\",\n \"resourceUuid\":\"709919b7-75fd-4e49-8398-67853323ff55\",\n \"resourceCustomizationUuid\":\"debd988f-fe04-4940-a5cb-37f61d84eab4\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"internet\",\n \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n \"resourceCustomizationUuid\":\"64b8e8ba-62b9-4db6-b420-1ca7067d63e0\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"sotnvpnattachmentvF\",\n \"resourceInvariantUuid\":\"97c4a3c6-2943-41af-8717-2f3183f944be\",\n \"resourceUuid\":\"44b777ee-9793-465d-8053-d8e86d2e2362\",\n \"resourceCustomizationUuid\":\"37aeb073-c75d-4cf6-a7fa-a1af862ef58a\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"SPPartnerVF\",\n \"resourceInvariantUuid\":\"072f9238-15b0-4bc5-a5f5-f18548739470\",\n \"resourceUuid\":\"81b9430b-8abe-45d6-8bf9-f41a8f5c735f\",\n \"resourceCustomizationUuid\":\"cd0b4b9c-66c6-49c5-b346-7580e4b6c394\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n }\n ],\n \"requestInputs\":{\n \"devicevf_device_class\":\"PNF\",\n \"devicevf_device_esn\":\"2102351BTJ10HB000075\",\n \"devicevf_device_name\":\"50.47\",\n \"devicevf_device_systemIp\":\"192.168.1.47\",\n \"devicevf_device_type\":\"AR161EW\",\n \"devicevf_device_vendor\":\"huawei\",\n \"devicevf_device_version\":\"1.0\",\n \"internet_sitewanport_description\":\"internet\",\n \"internet_sitewanport_deviceName\":\"50.47\",\n \"internet_sitewanport_inputBandwidth\":\"100\",\n \"internet_sitewanport_ipAddress\":\"100.2.30.9\",\n \"internet_sitewanport_name\":\"internet\",\n \"internet_sitewanport_outputBandwidth\":\"100\",\n \"internet_sitewanport_portNumber\":\"0/0/2\",\n \"internet_sitewanport_portType\":\"GE\",\n \"internet_sitewanport_providerIpAddress\":\"100.2.30.10\",\n \"internet_sitewanport_transportNetworkName\":\"internet\",\n \"mpls_sitewanport_description\":\"mpls\",\n \"mpls_sitewanport_deviceName\":\"50.47\",\n \"mpls_sitewanport_inputBandwidth\":\"100\",\n \"mpls_sitewanport_ipAddress\":\"10.2.30.7\",\n \"mpls_sitewanport_name\":\"mpls\",\n \"mpls_sitewanport_outputBandwidth\":\"100\",\n \"mpls_sitewanport_portNumber\":\"0/0/1\",\n \"mpls_sitewanport_portType\":\"GE\",\n \"mpls_sitewanport_providerIpAddress\":\"10.2.30.8\",\n \"mpls_sitewanport_transportNetworkName\":\"internet\",\n \"sdwanvpnattachmentvf_sdwancondition_role\":\"spoke\",\n \"sdwanvpnattachmentvf_sdwancondition_sdwanVpnName\":\"CMCCVPN\",\n \"sitevf_site_address\":\"beijing beiqing road\",\n \"sitevf_site_controlPoint\":\"CMCC_VCPE\",\n \"sitevf_site_description\":\"CMCC_CPE\",\n \"sitevf_site_emails\":\"\",\n \"sitevf_site_latitude\":\"\",\n \"sitevf_site_longitude\":\"\",\n \"sitevf_site_name\":\"CMCC_CPE\",\n \"sitevf_site_postcode\":\"100095\",\n \"sitevf_site_role\":\"sd-wan-edge\",\n \"sitevf_site_type\":\"single-gateway\",\n \"sotnvpnattachmentvf_sotncondition_clientSignal\":\"\",\n \"sotnvpnattachmentvf_sotncondition_cVLAN\":\"\",\n \"sotnvpnattachmentvf_sotncondition_sotnVpnName\":\"SOTN L2\"\n }\n }\n }\n}","relationship-list":{"relationship":[{"related-to":"sp-partner","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/business/sp-partners/sp-partner/289b87a5-72fe-4197-a307-6929c3831f82","relationship-data":[{"relationship-key":"sp-partner.sp-partner-id","relationship-value":"289b87a5-72fe-4197-a307-6929c3831f82"}],"related-to-property":[{"property-key":"sp-partner.sp-partner-id","property-value":"289b87a5-72fe-4197-a307-6929c3831f82"}]}]}},{"service-instance-id":"2d55a540-f6d3-4108-9bb4-290574b87a6c","service-instance-name":"siteLondon","service-type":"E2E Service","service-role":"E2E Service","model-invariant-id":"499e5e60-c8b2-4ea6-8c4e-7739420673a9","model-version-id":"8ec97da1-1e0a-4198-9c9a-3da2c60d7974","resource-version":"1537770265132","input-parameters":"{\n \"service\":{\n \"name\":\"siteLondon\",\n \"description\":\"SiteService\",\n \"serviceInvariantUuid\":\"499e5e60-c8b2-4ea6-8c4e-7739420673a9\",\n \"serviceUuid\":\"8ec97da1-1e0a-4198-9c9a-3da2c60d7974\",\n \"globalSubscriberId\":\"demo\",\n \"serviceType\":\"ccvpn\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n {\n \"resourceName\":\"SiteVF\",\n \"resourceInvariantUuid\":\"0c0e1cbe-6e01-4f9e-8c45-a9700ebc14df\",\n \"resourceUuid\":\"4ad2d390-5c51-45f5-9710-b467a4ec7a73\",\n \"resourceCustomizationUuid\":\"66590e07-0777-415c-af44-36347cf3ddd3\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"mpls\",\n \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n \"resourceCustomizationUuid\":\"205456e7-3dc0-40c4-8cb0-28e6c1877042\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"deviceVF\",\n \"resourceInvariantUuid\":\"c726490a-0ce2-4bc7-abea-dade66bfb13d\",\n \"resourceUuid\":\"0e2de9d8-d76b-4134-b5f1-41e79056adbe\",\n \"resourceCustomizationUuid\":\"5bc1373e-9a36-4a00-8c62-784e0bc417ad\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"sdwanvpnattachmentVF\",\n \"resourceInvariantUuid\":\"f714feec-1aef-4890-abba-f8f3a906935f\",\n \"resourceUuid\":\"709919b7-75fd-4e49-8398-67853323ff55\",\n \"resourceCustomizationUuid\":\"debd988f-fe04-4940-a5cb-37f61d84eab4\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"internet\",\n \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n \"resourceCustomizationUuid\":\"64b8e8ba-62b9-4db6-b420-1ca7067d63e0\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"sotnvpnattachmentvF\",\n \"resourceInvariantUuid\":\"97c4a3c6-2943-41af-8717-2f3183f944be\",\n \"resourceUuid\":\"44b777ee-9793-465d-8053-d8e86d2e2362\",\n \"resourceCustomizationUuid\":\"37aeb073-c75d-4cf6-a7fa-a1af862ef58a\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"SPPartnerVF\",\n \"resourceInvariantUuid\":\"072f9238-15b0-4bc5-a5f5-f18548739470\",\n \"resourceUuid\":\"81b9430b-8abe-45d6-8bf9-f41a8f5c735f\",\n \"resourceCustomizationUuid\":\"cd0b4b9c-66c6-49c5-b346-7580e4b6c394\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n }\n ],\n \"requestInputs\":{\n \"devicevf_device_class\":\"PNF\",\n \"devicevf_device_esn\":\"2102351BTJ10HB000075\",\n \"devicevf_device_name\":\"50.47\",\n \"devicevf_device_systemIp\":\"192.168.1.47\",\n \"devicevf_device_type\":\"AR161EW\",\n \"devicevf_device_vendor\":\"huawei\",\n \"devicevf_device_version\":\"1.0\",\n \"internet_sitewanport_description\":\"internet\",\n \"internet_sitewanport_deviceName\":\"50.47\",\n \"internet_sitewanport_inputBandwidth\":\"100\",\n \"internet_sitewanport_ipAddress\":\"100.2.30.9\",\n \"internet_sitewanport_name\":\"internet\",\n \"internet_sitewanport_outputBandwidth\":\"100\",\n \"internet_sitewanport_portNumber\":\"0/0/2\",\n \"internet_sitewanport_portType\":\"GE\",\n \"internet_sitewanport_providerIpAddress\":\"100.2.30.10\",\n \"internet_sitewanport_transportNetworkName\":\"internet\",\n \"mpls_sitewanport_description\":\"mpls\",\n \"mpls_sitewanport_deviceName\":\"50.47\",\n \"mpls_sitewanport_inputBandwidth\":\"100\",\n \"mpls_sitewanport_ipAddress\":\"10.2.30.7\",\n \"mpls_sitewanport_name\":\"mpls\",\n \"mpls_sitewanport_outputBandwidth\":\"100\",\n \"mpls_sitewanport_portNumber\":\"0/0/1\",\n \"mpls_sitewanport_portType\":\"GE\",\n \"mpls_sitewanport_providerIpAddress\":\"10.2.30.8\",\n \"mpls_sitewanport_transportNetworkName\":\"internet\",\n \"sdwanvpnattachmentvf_sdwancondition_role\":\"spoke\",\n \"sdwanvpnattachmentvf_sdwancondition_sdwanVpnName\":\"CMCCVPN\",\n \"sitevf_site_address\":\"beijing beiqing road\",\n \"sitevf_site_controlPoint\":\"CMCC_VCPE\",\n \"sitevf_site_description\":\"CMCC_CPE\",\n \"sitevf_site_emails\":\"\",\n \"sitevf_site_latitude\":\"\",\n \"sitevf_site_longitude\":\"\",\n \"sitevf_site_name\":\"CMCC_CPE\",\n \"sitevf_site_postcode\":\"100095\",\n \"sitevf_site_role\":\"sd-wan-edge\",\n \"sitevf_site_type\":\"single-gateway\",\n \"sotnvpnattachmentvf_sotncondition_clientSignal\":\"\",\n \"sotnvpnattachmentvf_sotncondition_cVLAN\":\"\",\n \"sotnvpnattachmentvf_sotncondition_sotnVpnName\":\"SOTN L2\"\n }\n }\n }\n}","relationship-list":{"relationship":[{"related-to":"wan-port-config","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/network/wan-port-configs/wan-port-config/52ae7944-12b3-4766-848e-e43088947af9","relationship-data":[{"relationship-key":"wan-port-config.wan-port-config-id","relationship-value":"52ae7944-12b3-4766-848e-e43088947af9"}],"related-to-property":[{"property-key":"wan-port-config.wan-port-config-name","property-value":"intenet"}]},{"related-to":"site-resource","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/network/site-resources/site-resource/a22193fc-d1b5-41a7-9033-14339838b0c5","relationship-data":[{"relationship-key":"site-resource.site-resource-id","relationship-value":"a22193fc-d1b5-41a7-9033-14339838b0c5"}],"related-to-property":[{"property-key":"site-resource.site-resource-name","property-value":"travelSite"}]},{"related-to":"wan-port-config","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/network/wan-port-configs/wan-port-config/9fc7c231-1b71-49e6-8390-e92b707e7615","relationship-data":[{"relationship-key":"wan-port-config.wan-port-config-id","relationship-value":"9fc7c231-1b71-49e6-8390-e92b707e7615"}],"related-to-property":[{"property-key":"wan-port-config.wan-port-config-name","property-value":"mpls"}]},{"related-to":"device","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/network/devices/device/f0cf1e06-7be8-4602-83cb-60d87d8e7ef3","relationship-data":[{"relationship-key":"device.device-id","relationship-value":"f0cf1e06-7be8-4602-83cb-60d87d8e7ef3"}],"related-to-property":[{"property-key":"device.device-name","property-value":"CentSpokeDevice"}]},{"related-to":"sp-partner","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/business/sp-partners/sp-partner/3addd6b9-b05f-4841-881c-1ce2c753513f","relationship-data":[{"relationship-key":"sp-partner.sp-partner-id","relationship-value":"3addd6b9-b05f-4841-881c-1ce2c753513f"}],"related-to-property":[{"property-key":"sp-partner.sp-partner-id","property-value":"3addd6b9-b05f-4841-881c-1ce2c753513f"}]},{"related-to":"allotted-resource","relationship-label":"org.onap.relationships.inventory.Uses","related-link":"/aai/v13/business/customers/customer/demo/service-subscriptions/service-subscription/ccvpn/service-instances/service-instance/0ea94797-3772-40ff-b6fb-69f06c533be3/allotted-resources/allotted-resource/f1523ca9-6b56-482e-b3a4-a2f8dcbfba12","relationship-data":[{"relationship-key":"customer.global-customer-id","relationship-value":"demo"},{"relationship-key":"service-subscription.service-type","relationship-value":"ccvpn"},{"relationship-key":"service-instance.service-instance-id","relationship-value":"0ea94797-3772-40ff-b6fb-69f06c533be3"},{"relationship-key":"allotted-resource.id","relationship-value":"f1523ca9-6b56-482e-b3a4-a2f8dcbfba12"}],"related-to-property":[{"property-key":"allotted-resource.description","property-value":"sdwan-attachment"},{"property-key":"allotted-resource.allotted-resource-name","property-value":"sdwan ar"}]},{"related-to":"allotted-resource","relationship-label":"org.onap.relationships.inventory.Uses","related-link":"/aai/v13/business/customers/customer/demo/service-subscriptions/service-subscription/ccvpn/service-instances/service-instance/8e07f832-3f50-4657-9b44-010049e8b488/allotted-resources/allotted-resource/d1a6b573-0595-4468-bab9-02465c295618","relationship-data":[{"relationship-key":"customer.global-customer-id","relationship-value":"demo"},{"relationship-key":"service-subscription.service-type","relationship-value":"ccvpn"},{"relationship-key":"service-instance.service-instance-id","relationship-value":"8e07f832-3f50-4657-9b44-010049e8b488"},{"relationship-key":"allotted-resource.id","relationship-value":"d1a6b573-0595-4468-bab9-02465c295618"}],"related-to-property":[{"property-key":"allotted-resource.description","property-value":"sotn attachment"},{"property-key":"allotted-resource.allotted-resource-name","property-value":"sotn ar"}]}]}}]}
\ No newline at end of file diff --git a/usecaseui-portal/src/assets/json/instanceTableData4.json b/usecaseui-portal/src/assets/json/instanceTableData4.json new file mode 100644 index 00000000..ad8767e0 --- /dev/null +++ b/usecaseui-portal/src/assets/json/instanceTableData4.json @@ -0,0 +1 @@ +{"service-instance":[{"service-instance-id":"8e07f832-3f50-4657-9b44-010049e8b488","service-instance-name":"SOTNVPNInfra","service-type":"E2E Service","service-role":"E2E Service","model-invariant-id":"bafa365f-4056-4ad3-a039-d6b3e3e0fd35","model-version-id":"fdbb8ddd-3325-4840-a156-9ad601b9366c","resource-version":"1537769390960","input-parameters":"{\n \"service\":{\n \"name\":\"SOTNVPNInfra\",\n \"description\":\"SOTNVPNInfra\",\n \"serviceInvariantUuid\":\"bafa365f-4056-4ad3-a039-d6b3e3e0fd35\",\n \"serviceUuid\":\"fdbb8ddd-3325-4840-a156-9ad601b9366c\",\n \"globalSubscriberId\":\"demo\",\n \"serviceType\":\"ccvpn\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n {\n \"resourceName\":\"SOTNConnectivity 0\",\n \"resourceInvariantUuid\":\"1b9c677d-fddf-4b70-938b-925a7fa57d43\",\n \"resourceUuid\":\"218df3c3-50dd-4c26-9e36-4771387bb771\",\n \"resourceCustomizationUuid\":\"b44071c8-04fd-4d6b-b6af-772cbfaa1129\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"SPPartnerVF 0\",\n \"resourceInvariantUuid\":\"072f9238-15b0-4bc5-a5f5-f18548739470\",\n \"resourceUuid\":\"81b9430b-8abe-45d6-8bf9-f41a8f5c735f\",\n \"resourceCustomizationUuid\":\"c3612284-6c67-4d8c-8b41-b699cc90e76d\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n }\n ],\n \"requestInputs\":{\n \"sotnconnectivity0_eir\":\"1000\",\n \"sotnconnectivity0_cir\":\"1000\",\n \"sotnconnectivity0_endTime\":\"2018-8-8 10:00\",\n \"sotnconnectivity0_ebs\":\"1000\",\n \"sotnconnectivity0_startTime\":\"2018-8-1 10:00\",\n \"sotnconnectivity0_dualLink\":\"true\",\n \"sotnconnectivity0_reroute\":\"false\",\n \"sotnconnectivity0_cbs\":\"1000\",\n \"sotnconnectivity0_name\":\"SOTN L2\",\n \"sotnconnectivity0_SLS\":\"\",\n \"sotnconnectivity0_description\":\"\",\n \"sotnconnectivity0_couplingFlag\":\"\",\n \"sotnconnectivity0_colorAware\":\"\",\n \"sotnconnectivity0_COS\":\"standard\"\n }\n }\n }\n}","relationship-list":{"relationship":[{"related-to":"connectivity","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/network/connectivities/connectivity/2e359c75-2af3-4fea-9550-a893edeab8b5","relationship-data":[{"relationship-key":"connectivity.connectivity-id","relationship-value":"2e359c75-2af3-4fea-9550-a893edeab8b5"}],"related-to-property":[{"property-key":"connectivity.etht-svc-name","property-value":"vpn1"}]},{"related-to":"sp-partner","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/business/sp-partners/sp-partner/32cd906f-ee7a-4ecf-b1c3-2fce4d59f8c0","relationship-data":[{"relationship-key":"sp-partner.sp-partner-id","relationship-value":"32cd906f-ee7a-4ecf-b1c3-2fce4d59f8c0"}],"related-to-property":[{"property-key":"sp-partner.sp-partner-id","property-value":"32cd906f-ee7a-4ecf-b1c3-2fce4d59f8c0"}]},{"related-to":"allotted-resource","relationship-label":"org.onap.relationships.inventory.Uses","related-link":"/aai/v13/business/customers/customer/demo/service-subscriptions/service-subscription/ccvpn/service-instances/service-instance/2d55a540-f6d3-4108-9bb4-290574b87a6c/allotted-resources/allotted-resource/666085a7-132e-4a32-b9de-e58ecea3476a","relationship-data":[{"relationship-key":"customer.global-customer-id","relationship-value":"demo"},{"relationship-key":"service-subscription.service-type","relationship-value":"ccvpn"},{"relationship-key":"service-instance.service-instance-id","relationship-value":"2d55a540-f6d3-4108-9bb4-290574b87a6c"},{"relationship-key":"allotted-resource.id","relationship-value":"666085a7-132e-4a32-b9de-e58ecea3476a"}],"related-to-property":[{"property-key":"allotted-resource.description","property-value":"sotn-attachment"},{"property-key":"allotted-resource.allotted-resource-name","property-value":"sotn ar"}]},{"related-to":"allotted-resource","relationship-label":"org.onap.relationships.inventory.Uses","related-link":"/aai/v13/business/customers/customer/demo/service-subscriptions/service-subscription/ccvpn/service-instances/service-instance/a6d69c62-75b5-4f04-8cd7-9ca5dfcc4205/allotted-resources/allotted-resource/562adc96-7fbe-435e-bd6d-ff4b8a0a7920","relationship-data":[{"relationship-key":"customer.global-customer-id","relationship-value":"demo"},{"relationship-key":"service-subscription.service-type","relationship-value":"ccvpn"},{"relationship-key":"service-instance.service-instance-id","relationship-value":"a6d69c62-75b5-4f04-8cd7-9ca5dfcc4205"},{"relationship-key":"allotted-resource.id","relationship-value":"562adc96-7fbe-435e-bd6d-ff4b8a0a7920"}],"related-to-property":[{"property-key":"allotted-resource.description","property-value":"sotn-attachment"},{"property-key":"allotted-resource.allotted-resource-name","property-value":"sotn ar"}]}]}},{"service-instance-id":"a6d69c62-75b5-4f04-8cd7-9ca5dfcc4205","service-instance-name":"DcLondon","service-type":"E2E Service","service-role":"E2E Service","model-invariant-id":"499e5e60-c8b2-4ea6-8c4e-7739420673a9","model-version-id":"8ec97da1-1e0a-4198-9c9a-3da2c60d7974","resource-version":"1537866016457","input-parameters":"{\n \"service\":{\n \"name\":\"DcLondon\",\n \"description\":\"SiteService\",\n \"serviceInvariantUuid\":\"499e5e60-c8b2-4ea6-8c4e-7739420673a9\",\n \"serviceUuid\":\"8ec97da1-1e0a-4198-9c9a-3da2c60d7974\",\n \"globalSubscriberId\":\"demo\",\n \"serviceType\":\"ccvpn\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n {\n \"resourceName\":\"SiteVF\",\n \"resourceInvariantUuid\":\"0c0e1cbe-6e01-4f9e-8c45-a9700ebc14df\",\n \"resourceUuid\":\"4ad2d390-5c51-45f5-9710-b467a4ec7a73\",\n \"resourceCustomizationUuid\":\"66590e07-0777-415c-af44-36347cf3ddd3\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"mpls\",\n \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n \"resourceCustomizationUuid\":\"205456e7-3dc0-40c4-8cb0-28e6c1877042\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"deviceVF\",\n \"resourceInvariantUuid\":\"c726490a-0ce2-4bc7-abea-dade66bfb13d\",\n \"resourceUuid\":\"0e2de9d8-d76b-4134-b5f1-41e79056adbe\",\n \"resourceCustomizationUuid\":\"5bc1373e-9a36-4a00-8c62-784e0bc417ad\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"sdwanvpnattachmentVF\",\n \"resourceInvariantUuid\":\"f714feec-1aef-4890-abba-f8f3a906935f\",\n \"resourceUuid\":\"709919b7-75fd-4e49-8398-67853323ff55\",\n \"resourceCustomizationUuid\":\"debd988f-fe04-4940-a5cb-37f61d84eab4\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"internet\",\n \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n \"resourceCustomizationUuid\":\"64b8e8ba-62b9-4db6-b420-1ca7067d63e0\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"sotnvpnattachmentvF\",\n \"resourceInvariantUuid\":\"97c4a3c6-2943-41af-8717-2f3183f944be\",\n \"resourceUuid\":\"44b777ee-9793-465d-8053-d8e86d2e2362\",\n \"resourceCustomizationUuid\":\"37aeb073-c75d-4cf6-a7fa-a1af862ef58a\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"SPPartnerVF\",\n \"resourceInvariantUuid\":\"072f9238-15b0-4bc5-a5f5-f18548739470\",\n \"resourceUuid\":\"81b9430b-8abe-45d6-8bf9-f41a8f5c735f\",\n \"resourceCustomizationUuid\":\"cd0b4b9c-66c6-49c5-b346-7580e4b6c394\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n }\n ],\n \"requestInputs\":{\n \"devicevf_device_class\":\"PNF\",\n \"devicevf_device_esn\":\"2102351BTJ10HB000075\",\n \"devicevf_device_name\":\"50.47\",\n \"devicevf_device_systemIp\":\"192.168.1.47\",\n \"devicevf_device_type\":\"AR161EW\",\n \"devicevf_device_vendor\":\"huawei\",\n \"devicevf_device_version\":\"1.0\",\n \"internet_sitewanport_description\":\"internet\",\n \"internet_sitewanport_deviceName\":\"50.47\",\n \"internet_sitewanport_inputBandwidth\":\"100\",\n \"internet_sitewanport_ipAddress\":\"100.2.30.9\",\n \"internet_sitewanport_name\":\"internet\",\n \"internet_sitewanport_outputBandwidth\":\"100\",\n \"internet_sitewanport_portNumber\":\"0/0/2\",\n \"internet_sitewanport_portType\":\"GE\",\n \"internet_sitewanport_providerIpAddress\":\"100.2.30.10\",\n \"internet_sitewanport_transportNetworkName\":\"internet\",\n \"mpls_sitewanport_description\":\"mpls\",\n \"mpls_sitewanport_deviceName\":\"50.47\",\n \"mpls_sitewanport_inputBandwidth\":\"100\",\n \"mpls_sitewanport_ipAddress\":\"10.2.30.7\",\n \"mpls_sitewanport_name\":\"mpls\",\n \"mpls_sitewanport_outputBandwidth\":\"100\",\n \"mpls_sitewanport_portNumber\":\"0/0/1\",\n \"mpls_sitewanport_portType\":\"GE\",\n \"mpls_sitewanport_providerIpAddress\":\"10.2.30.8\",\n \"mpls_sitewanport_transportNetworkName\":\"internet\",\n \"sdwanvpnattachmentvf_sdwancondition_role\":\"spoke\",\n \"sdwanvpnattachmentvf_sdwancondition_sdwanVpnName\":\"SDWANVPNInfra\",\n \"sitevf_site_address\":\"University College London,Gower Street,London\",\n \"sitevf_site_controlPoint\":\"VDF_VCPE\",\n \"sitevf_site_description\":\"VDF_vGW\",\n \"sitevf_site_emails\":\"\",\n \"sitevf_site_latitude\":\"\",\n \"sitevf_site_longitude\":\"\",\n \"sitevf_site_name\":\"DcLondon\",\n \"sitevf_site_postcode\":\"N200095\",\n \"sitevf_site_role\":\"sd-wan-edge\",\n \"sitevf_site_type\":\"single-gateway\",\n \"sotnvpnattachmentvf_sotncondition_clientSignal\":\"\",\n \"sotnvpnattachmentvf_sotncondition_cVLAN\":\"\",\n \"sotnvpnattachmentvf_sotncondition_sotnVpnName\":\"SOTN L2\"\n }\n }\n }\n}","relationship-list":{"relationship":[{"related-to":"device","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/network/devices/device/2cacf49c-7c09-4155-b18a-4468dce34083","relationship-data":[{"relationship-key":"device.device-id","relationship-value":"2cacf49c-7c09-4155-b18a-4468dce34083"}],"related-to-property":[{"property-key":"device.device-name","property-value":"TravelDevice"}]},{"related-to":"site-resource","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/network/site-resources/site-resource/f288d54e-be09-46d3-bb1f-38729ec74bb5","relationship-data":[{"relationship-key":"site-resource.site-resource-id","relationship-value":"f288d54e-be09-46d3-bb1f-38729ec74bb5"}],"related-to-property":[{"property-key":"site-resource.site-resource-name","property-value":"travelSite"}]},{"related-to":"wan-port-config","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/network/wan-port-configs/wan-port-config/99866f05-9749-456e-8909-61eebf08373e","relationship-data":[{"relationship-key":"wan-port-config.wan-port-config-id","relationship-value":"99866f05-9749-456e-8909-61eebf08373e"}],"related-to-property":[{"property-key":"wan-port-config.wan-port-config-name","property-value":"intenet"}]},{"related-to":"wan-port-config","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/network/wan-port-configs/wan-port-config/afab2cc0-28c9-4fd3-bf03-01c8034f8191","relationship-data":[{"relationship-key":"wan-port-config.wan-port-config-id","relationship-value":"afab2cc0-28c9-4fd3-bf03-01c8034f8191"}],"related-to-property":[{"property-key":"wan-port-config.wan-port-config-name","property-value":"mpls"}]},{"related-to":"sp-partner","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/business/sp-partners/sp-partner/167a285b-0875-41ff-8ed1-1178db6f3133","relationship-data":[{"relationship-key":"sp-partner.sp-partner-id","relationship-value":"167a285b-0875-41ff-8ed1-1178db6f3133"}],"related-to-property":[{"property-key":"sp-partner.sp-partner-id","property-value":"167a285b-0875-41ff-8ed1-1178db6f3133"}]},{"related-to":"allotted-resource","relationship-label":"org.onap.relationships.inventory.Uses","related-link":"/aai/v13/business/customers/customer/demo/service-subscriptions/service-subscription/ccvpn/service-instances/service-instance/0ea94797-3772-40ff-b6fb-69f06c533be3/allotted-resources/allotted-resource/d519761d-c89c-4164-86c7-8f74952eea65","relationship-data":[{"relationship-key":"customer.global-customer-id","relationship-value":"demo"},{"relationship-key":"service-subscription.service-type","relationship-value":"ccvpn"},{"relationship-key":"service-instance.service-instance-id","relationship-value":"0ea94797-3772-40ff-b6fb-69f06c533be3"},{"relationship-key":"allotted-resource.id","relationship-value":"d519761d-c89c-4164-86c7-8f74952eea65"}],"related-to-property":[{"property-key":"allotted-resource.description","property-value":"sdwan-attachment"},{"property-key":"allotted-resource.allotted-resource-name","property-value":"sdwan ar"}]},{"related-to":"allotted-resource","relationship-label":"org.onap.relationships.inventory.Uses","related-link":"/aai/v13/business/customers/customer/demo/service-subscriptions/service-subscription/ccvpn/service-instances/service-instance/8e07f832-3f50-4657-9b44-010049e8b488/allotted-resources/allotted-resource/65f21c28-8b19-4769-8f08-174e2afa5488","relationship-data":[{"relationship-key":"customer.global-customer-id","relationship-value":"demo"},{"relationship-key":"service-subscription.service-type","relationship-value":"ccvpn"},{"relationship-key":"service-instance.service-instance-id","relationship-value":"8e07f832-3f50-4657-9b44-010049e8b488"},{"relationship-key":"allotted-resource.id","relationship-value":"65f21c28-8b19-4769-8f08-174e2afa5488"}],"related-to-property":[{"property-key":"allotted-resource.description","property-value":"sotn attachment"},{"property-key":"allotted-resource.allotted-resource-name","property-value":"ston ar"}]}]}},{"service-instance-id":"0ea94797-3772-40ff-b6fb-69f06c533be3","service-instance-name":"SDWANVPNInfra","service-type":"E2E Service","service-role":"E2E Service","model-invariant-id":"e2b217d6-7cac-4156-9f44-f9b010b350a6","model-version-id":"20d9e7dc-f030-4230-af79-ba0bde7cbe2e","resource-version":"1537864894560","input-parameters":"{\n \"service\":{\n \"name\":\"SDWANVPNInfra\",\n \"description\":\"SDWANVPNInfra\",\n \"serviceInvariantUuid\":\"e2b217d6-7cac-4156-9f44-f9b010b350a6\",\n \"serviceUuid\":\"20d9e7dc-f030-4230-af79-ba0bde7cbe2e\",\n \"globalSubscriberId\":\"demo\",\n \"serviceType\":\"ccvpn\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n {\n \"resourceName\":\"SDWANConnectivity 0\",\n \"resourceInvariantUuid\":\"f99a9a23-c88e-44ff-a4dc-22b88675d278\",\n \"resourceUuid\":\"7baa7742-3a13-4288-8330-868015adc340\",\n \"resourceCustomizationUuid\":\"94ec574b-2306-4cbd-8214-09662b040f73\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"SPPartnerVF 0\",\n \"resourceInvariantUuid\":\"072f9238-15b0-4bc5-a5f5-f18548739470\",\n \"resourceUuid\":\"81b9430b-8abe-45d6-8bf9-f41a8f5c735f\",\n \"resourceCustomizationUuid\":\"a7baba5d-6ac3-42b5-b47d-070841303ab1\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n }\n ],\n \"requestInputs\":{\n \"sdwanconnectivity0_name\":\"SDWANVPNInfra\",\n \"sdwanconnectivity0_topology\":\"hub-spoke\"\n }\n }\n }\n}","relationship-list":{"relationship":[{"related-to":"sdwan-vpn","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/network/sdwan-vpns/sdwan-vpn/0d8707cd-9d27-4503-a0b0-e9b1b1a83b1e","relationship-data":[{"relationship-key":"sdwan-vpn.sdwan-vpn-id","relationship-value":"0d8707cd-9d27-4503-a0b0-e9b1b1a83b1e"}],"related-to-property":[{"property-key":"sdwan-vpn.sdwan-vpn-name"}]},{"related-to":"sp-partner","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/business/sp-partners/sp-partner/15e88f8e-473f-4d88-92f8-6739a42baa2g","relationship-data":[{"relationship-key":"sp-partner.sp-partner-id","relationship-value":"15e88f8e-473f-4d88-92f8-6739a42baa2g"}],"related-to-property":[{"property-key":"sp-partner.sp-partner-id","property-value":"15e88f8e-473f-4d88-92f8-6739a42baa2g"}]},{"related-to":"allotted-resource","relationship-label":"org.onap.relationships.inventory.Uses","related-link":"/aai/v13/business/customers/customer/demo/service-subscriptions/service-subscription/ccvpn/service-instances/service-instance/2d55a540-f6d3-4108-9bb4-290574b87a6c/allotted-resources/allotted-resource/c797bba9-eb90-4825-b1c2-adbd1a31101f","relationship-data":[{"relationship-key":"customer.global-customer-id","relationship-value":"demo"},{"relationship-key":"service-subscription.service-type","relationship-value":"ccvpn"},{"relationship-key":"service-instance.service-instance-id","relationship-value":"2d55a540-f6d3-4108-9bb4-290574b87a6c"},{"relationship-key":"allotted-resource.id","relationship-value":"c797bba9-eb90-4825-b1c2-adbd1a31101f"}],"related-to-property":[{"property-key":"allotted-resource.description","property-value":"sdwan-attachment"},{"property-key":"allotted-resource.allotted-resource-name","property-value":"sdwan ar"}]},{"related-to":"allotted-resource","relationship-label":"org.onap.relationships.inventory.Uses","related-link":"/aai/v13/business/customers/customer/demo/service-subscriptions/service-subscription/ccvpn/service-instances/service-instance/a6d69c62-75b5-4f04-8cd7-9ca5dfcc4205/allotted-resources/allotted-resource/9a7329e6-8961-4008-9dbe-adeacfcd20da","relationship-data":[{"relationship-key":"customer.global-customer-id","relationship-value":"demo"},{"relationship-key":"service-subscription.service-type","relationship-value":"ccvpn"},{"relationship-key":"service-instance.service-instance-id","relationship-value":"a6d69c62-75b5-4f04-8cd7-9ca5dfcc4205"},{"relationship-key":"allotted-resource.id","relationship-value":"9a7329e6-8961-4008-9dbe-adeacfcd20da"}],"related-to-property":[{"property-key":"allotted-resource.description","property-value":"sdwan-attachment"},{"property-key":"allotted-resource.allotted-resource-name","property-value":"sdwan ar"}]}]}},{"service-instance-id":"f08067b8-a07b-4c41-b750-5f9b35281e67","service-instance-name":"siteFangshanQu","service-type":"E2E Service","service-role":"E2E Service","model-invariant-id":"499e5e60-c8b2-4ea6-8c4e-7739420673a9","model-version-id":"8ec97da1-1e0a-4198-9c9a-3da2c60d7974","resource-version":"1537867265890","selflink":"restconf/config/GENERIC-RESOURCE-API:services/service/506b87a5-72fe-4197-a307-6929c3871ab2/service-data/service-topology/","input-parameters":"{\n \"service\":{\n \"name\":\"siteFangshanQu\",\n \"description\":\"SiteService\",\n \"serviceInvariantUuid\":\"499e5e60-c8b2-4ea6-8c4e-7739420673a9\",\n \"serviceUuid\":\"8ec97da1-1e0a-4198-9c9a-3da2c60d7974\",\n \"globalSubscriberId\":\"demo\",\n \"serviceType\":\"ccvpn\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n {\n \"resourceName\":\"SiteVF\",\n \"resourceInvariantUuid\":\"0c0e1cbe-6e01-4f9e-8c45-a9700ebc14df\",\n \"resourceUuid\":\"4ad2d390-5c51-45f5-9710-b467a4ec7a73\",\n \"resourceCustomizationUuid\":\"66590e07-0777-415c-af44-36347cf3ddd3\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"mpls\",\n \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n \"resourceCustomizationUuid\":\"205456e7-3dc0-40c4-8cb0-28e6c1877042\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"deviceVF\",\n \"resourceInvariantUuid\":\"c726490a-0ce2-4bc7-abea-dade66bfb13d\",\n \"resourceUuid\":\"0e2de9d8-d76b-4134-b5f1-41e79056adbe\",\n \"resourceCustomizationUuid\":\"5bc1373e-9a36-4a00-8c62-784e0bc417ad\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"sdwanvpnattachmentVF\",\n \"resourceInvariantUuid\":\"f714feec-1aef-4890-abba-f8f3a906935f\",\n \"resourceUuid\":\"709919b7-75fd-4e49-8398-67853323ff55\",\n \"resourceCustomizationUuid\":\"debd988f-fe04-4940-a5cb-37f61d84eab4\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"internet\",\n \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n \"resourceCustomizationUuid\":\"64b8e8ba-62b9-4db6-b420-1ca7067d63e0\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"sotnvpnattachmentvF\",\n \"resourceInvariantUuid\":\"97c4a3c6-2943-41af-8717-2f3183f944be\",\n \"resourceUuid\":\"44b777ee-9793-465d-8053-d8e86d2e2362\",\n \"resourceCustomizationUuid\":\"37aeb073-c75d-4cf6-a7fa-a1af862ef58a\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"SPPartnerVF\",\n \"resourceInvariantUuid\":\"072f9238-15b0-4bc5-a5f5-f18548739470\",\n \"resourceUuid\":\"81b9430b-8abe-45d6-8bf9-f41a8f5c735f\",\n \"resourceCustomizationUuid\":\"cd0b4b9c-66c6-49c5-b346-7580e4b6c394\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n }\n ],\n \"requestInputs\":{\n \"devicevf_device_class\":\"PNF\",\n \"devicevf_device_esn\":\"2102351BTJ10HB000075\",\n \"devicevf_device_name\":\"50.47\",\n \"devicevf_device_systemIp\":\"192.168.1.47\",\n \"devicevf_device_type\":\"AR161EW\",\n \"devicevf_device_vendor\":\"huawei\",\n \"devicevf_device_version\":\"1.0\",\n \"internet_sitewanport_description\":\"internet\",\n \"internet_sitewanport_deviceName\":\"50.47\",\n \"internet_sitewanport_inputBandwidth\":\"100\",\n \"internet_sitewanport_ipAddress\":\"100.2.30.9\",\n \"internet_sitewanport_name\":\"internet\",\n \"internet_sitewanport_outputBandwidth\":\"100\",\n \"internet_sitewanport_portNumber\":\"0/0/2\",\n \"internet_sitewanport_portType\":\"GE\",\n \"internet_sitewanport_providerIpAddress\":\"100.2.30.10\",\n \"internet_sitewanport_transportNetworkName\":\"internet\",\n \"mpls_sitewanport_description\":\"mpls\",\n \"mpls_sitewanport_deviceName\":\"50.47\",\n \"mpls_sitewanport_inputBandwidth\":\"100\",\n \"mpls_sitewanport_ipAddress\":\"10.2.30.7\",\n \"mpls_sitewanport_name\":\"mpls\",\n \"mpls_sitewanport_outputBandwidth\":\"100\",\n \"mpls_sitewanport_portNumber\":\"0/0/1\",\n \"mpls_sitewanport_portType\":\"GE\",\n \"mpls_sitewanport_providerIpAddress\":\"10.2.30.8\",\n \"mpls_sitewanport_transportNetworkName\":\"internet\",\n \"sdwanvpnattachmentvf_sdwancondition_role\":\"spoke\",\n \"sdwanvpnattachmentvf_sdwancondition_sdwanVpnName\":\"SDWANVPNInfra-2\",\n \"sitevf_site_address\":\"CMCC International Data Center,Hongkong\",\n \"sitevf_site_controlPoint\":\"CMCC_VCPE\",\n \"sitevf_site_description\":\"CMCC_vGW\",\n \"sitevf_site_emails\":\"\",\n \"sitevf_site_latitude\":\"\",\n \"sitevf_site_longitude\":\"\",\n \"sitevf_site_name\":\"siteFangshanQu\",\n \"sitevf_site_postcode\":\"999077\",\n \"sitevf_site_role\":\"sd-wan-edge\",\n \"sitevf_site_type\":\"single-gateway\",\n \"sotnvpnattachmentvf_sotncondition_clientSignal\":\"\",\n \"sotnvpnattachmentvf_sotncondition_cVLAN\":\"\",\n \"sotnvpnattachmentvf_sotncondition_sotnVpnName\":\"SOTN L2\"\n }\n }\n }\n}","relationship-list":{"relationship":[{"related-to":"sp-partner","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/business/sp-partners/sp-partner/506b87a5-72fe-4197-a307-6929c3871ab2","relationship-data":[{"relationship-key":"sp-partner.sp-partner-id","relationship-value":"506b87a5-72fe-4197-a307-6929c3871ab2"}],"related-to-property":[{"property-key":"sp-partner.sp-partner-id","property-value":"506b87a5-72fe-4197-a307-6929c3871ab2"}]}]}},{"service-instance-id":"6a6478d1-f62f-439c-8f16-6038a44af8c3","service-instance-name":"SDWANVPNInfra-2","service-type":"E2E Service","service-role":"E2E Service","model-invariant-id":"e2b217d6-7cac-4156-9f44-f9b010b350a6","model-version-id":"20d9e7dc-f030-4230-af79-ba0bde7cbe2e","resource-version":"1537779569094","input-parameters":"{\n \"service\":{\n \"name\":\"SDWANVPNInfra-2\",\n \"description\":\"SDWANVPNInfra\",\n \"serviceInvariantUuid\":\"e2b217d6-7cac-4156-9f44-f9b010b350a6\",\n \"serviceUuid\":\"20d9e7dc-f030-4230-af79-ba0bde7cbe2e\",\n \"globalSubscriberId\":\"demo\",\n \"serviceType\":\"ccvpn\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n {\n \"resourceName\":\"SDWANConnectivity 0\",\n \"resourceInvariantUuid\":\"f99a9a23-c88e-44ff-a4dc-22b88675d278\",\n \"resourceUuid\":\"7baa7742-3a13-4288-8330-868015adc340\",\n \"resourceCustomizationUuid\":\"94ec574b-2306-4cbd-8214-09662b040f73\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"SPPartnerVF 0\",\n \"resourceInvariantUuid\":\"072f9238-15b0-4bc5-a5f5-f18548739470\",\n \"resourceUuid\":\"81b9430b-8abe-45d6-8bf9-f41a8f5c735f\",\n \"resourceCustomizationUuid\":\"a7baba5d-6ac3-42b5-b47d-070841303ab1\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n }\n ],\n \"requestInputs\":{\n \"sdwanconnectivity0_name\":\"CMCCVPN\",\n \"sdwanconnectivity0_topology\":\"hub-spoke\"\n }\n }\n }\n}","relationship-list":{"relationship":[{"related-to":"sp-partner","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/business/sp-partners/sp-partner/de888731-eac8-454c-bbb2-927a85ba2d1c","relationship-data":[{"relationship-key":"sp-partner.sp-partner-id","relationship-value":"de888731-eac8-454c-bbb2-927a85ba2d1c"}],"related-to-property":[{"property-key":"sp-partner.sp-partner-id","property-value":"de888731-eac8-454c-bbb2-927a85ba2d1c"}]}]}},{"service-instance-id":"fd0b9f0a-0d5c-4f69-a3dc-fb9cabde9db8","service-instance-name":"DcXichengQuBeijing","service-type":"E2E Service","service-role":"E2E Service","model-invariant-id":"499e5e60-c8b2-4ea6-8c4e-7739420673a9","model-version-id":"8ec97da1-1e0a-4198-9c9a-3da2c60d7974","resource-version":"1537867379064","selflink":"restconf/config/GENERIC-RESOURCE-API:services/service/289b87a5-72fe-4197-a307-6929c3831f82/service-data/service-topology/","input-parameters":"{\n \"service\":{\n \"name\":\"DcXichengQuBeijing\",\n \"description\":\"SiteService\",\n \"serviceInvariantUuid\":\"499e5e60-c8b2-4ea6-8c4e-7739420673a9\",\n \"serviceUuid\":\"8ec97da1-1e0a-4198-9c9a-3da2c60d7974\",\n \"globalSubscriberId\":\"demo\",\n \"serviceType\":\"ccvpn\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n {\n \"resourceName\":\"SiteVF\",\n \"resourceInvariantUuid\":\"0c0e1cbe-6e01-4f9e-8c45-a9700ebc14df\",\n \"resourceUuid\":\"4ad2d390-5c51-45f5-9710-b467a4ec7a73\",\n \"resourceCustomizationUuid\":\"66590e07-0777-415c-af44-36347cf3ddd3\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"mpls\",\n \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n \"resourceCustomizationUuid\":\"205456e7-3dc0-40c4-8cb0-28e6c1877042\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"deviceVF\",\n \"resourceInvariantUuid\":\"c726490a-0ce2-4bc7-abea-dade66bfb13d\",\n \"resourceUuid\":\"0e2de9d8-d76b-4134-b5f1-41e79056adbe\",\n \"resourceCustomizationUuid\":\"5bc1373e-9a36-4a00-8c62-784e0bc417ad\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"sdwanvpnattachmentVF\",\n \"resourceInvariantUuid\":\"f714feec-1aef-4890-abba-f8f3a906935f\",\n \"resourceUuid\":\"709919b7-75fd-4e49-8398-67853323ff55\",\n \"resourceCustomizationUuid\":\"debd988f-fe04-4940-a5cb-37f61d84eab4\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"internet\",\n \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n \"resourceCustomizationUuid\":\"64b8e8ba-62b9-4db6-b420-1ca7067d63e0\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"sotnvpnattachmentvF\",\n \"resourceInvariantUuid\":\"97c4a3c6-2943-41af-8717-2f3183f944be\",\n \"resourceUuid\":\"44b777ee-9793-465d-8053-d8e86d2e2362\",\n \"resourceCustomizationUuid\":\"37aeb073-c75d-4cf6-a7fa-a1af862ef58a\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"SPPartnerVF\",\n \"resourceInvariantUuid\":\"072f9238-15b0-4bc5-a5f5-f18548739470\",\n \"resourceUuid\":\"81b9430b-8abe-45d6-8bf9-f41a8f5c735f\",\n \"resourceCustomizationUuid\":\"cd0b4b9c-66c6-49c5-b346-7580e4b6c394\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n }\n ],\n \"requestInputs\":{\n \"devicevf_device_class\":\"PNF\",\n \"devicevf_device_esn\":\"2102351BTJ10HB000075\",\n \"devicevf_device_name\":\"50.47\",\n \"devicevf_device_systemIp\":\"192.168.1.47\",\n \"devicevf_device_type\":\"AR161EW\",\n \"devicevf_device_vendor\":\"huawei\",\n \"devicevf_device_version\":\"1.0\",\n \"internet_sitewanport_description\":\"internet\",\n \"internet_sitewanport_deviceName\":\"50.47\",\n \"internet_sitewanport_inputBandwidth\":\"100\",\n \"internet_sitewanport_ipAddress\":\"100.2.30.9\",\n \"internet_sitewanport_name\":\"internet\",\n \"internet_sitewanport_outputBandwidth\":\"100\",\n \"internet_sitewanport_portNumber\":\"0/0/2\",\n \"internet_sitewanport_portType\":\"GE\",\n \"internet_sitewanport_providerIpAddress\":\"100.2.30.10\",\n \"internet_sitewanport_transportNetworkName\":\"internet\",\n \"mpls_sitewanport_description\":\"mpls\",\n \"mpls_sitewanport_deviceName\":\"50.47\",\n \"mpls_sitewanport_inputBandwidth\":\"100\",\n \"mpls_sitewanport_ipAddress\":\"10.2.30.7\",\n \"mpls_sitewanport_name\":\"mpls\",\n \"mpls_sitewanport_outputBandwidth\":\"100\",\n \"mpls_sitewanport_portNumber\":\"0/0/1\",\n \"mpls_sitewanport_portType\":\"GE\",\n \"mpls_sitewanport_providerIpAddress\":\"10.2.30.8\",\n \"mpls_sitewanport_transportNetworkName\":\"internet\",\n \"sdwanvpnattachmentvf_sdwancondition_role\":\"spoke\",\n \"sdwanvpnattachmentvf_sdwancondition_sdwanVpnName\":\"SDWANVPNInfra\",\n \"sitevf_site_address\":\"Chuangxin Building,Tianningsi,Xicheng,Beijing\",\n \"sitevf_site_controlPoint\":\"CMCC_VCPE\",\n \"sitevf_site_description\":\"CMCC_vGW\",\n \"sitevf_site_emails\":\"\",\n \"sitevf_site_latitude\":\"\",\n \"sitevf_site_longitude\":\"\",\n \"sitevf_site_name\":\"DcXichengQuBeijing\",\n \"sitevf_site_postcode\":\"100095\",\n \"sitevf_site_role\":\"sd-wan-edge\",\n \"sitevf_site_type\":\"single-gateway\",\n \"sotnvpnattachmentvf_sotncondition_clientSignal\":\"\",\n \"sotnvpnattachmentvf_sotncondition_cVLAN\":\"\",\n \"sotnvpnattachmentvf_sotncondition_sotnVpnName\":\"SOTN L2\"\n }\n }\n }\n}","relationship-list":{"relationship":[{"related-to":"sp-partner","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/business/sp-partners/sp-partner/289b87a5-72fe-4197-a307-6929c3831f82","relationship-data":[{"relationship-key":"sp-partner.sp-partner-id","relationship-value":"289b87a5-72fe-4197-a307-6929c3831f82"}],"related-to-property":[{"property-key":"sp-partner.sp-partner-id","property-value":"289b87a5-72fe-4197-a307-6929c3831f82"}]}]}},{"service-instance-id":"2d55a540-f6d3-4108-9bb4-290574b87a6c","service-instance-name":"siteLondon","service-type":"E2E Service","service-role":"E2E Service","model-invariant-id":"499e5e60-c8b2-4ea6-8c4e-7739420673a9","model-version-id":"8ec97da1-1e0a-4198-9c9a-3da2c60d7974","resource-version":"1537866122803","input-parameters":"{\n \"service\":{\n \"name\":\"siteLondon\",\n \"description\":\"SiteService\",\n \"serviceInvariantUuid\":\"499e5e60-c8b2-4ea6-8c4e-7739420673a9\",\n \"serviceUuid\":\"8ec97da1-1e0a-4198-9c9a-3da2c60d7974\",\n \"globalSubscriberId\":\"demo\",\n \"serviceType\":\"ccvpn\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n {\n \"resourceName\":\"SiteVF\",\n \"resourceInvariantUuid\":\"0c0e1cbe-6e01-4f9e-8c45-a9700ebc14df\",\n \"resourceUuid\":\"4ad2d390-5c51-45f5-9710-b467a4ec7a73\",\n \"resourceCustomizationUuid\":\"66590e07-0777-415c-af44-36347cf3ddd3\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"mpls\",\n \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n \"resourceCustomizationUuid\":\"205456e7-3dc0-40c4-8cb0-28e6c1877042\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"deviceVF\",\n \"resourceInvariantUuid\":\"c726490a-0ce2-4bc7-abea-dade66bfb13d\",\n \"resourceUuid\":\"0e2de9d8-d76b-4134-b5f1-41e79056adbe\",\n \"resourceCustomizationUuid\":\"5bc1373e-9a36-4a00-8c62-784e0bc417ad\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"sdwanvpnattachmentVF\",\n \"resourceInvariantUuid\":\"f714feec-1aef-4890-abba-f8f3a906935f\",\n \"resourceUuid\":\"709919b7-75fd-4e49-8398-67853323ff55\",\n \"resourceCustomizationUuid\":\"debd988f-fe04-4940-a5cb-37f61d84eab4\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"internet\",\n \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n \"resourceCustomizationUuid\":\"64b8e8ba-62b9-4db6-b420-1ca7067d63e0\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"sotnvpnattachmentvF\",\n \"resourceInvariantUuid\":\"97c4a3c6-2943-41af-8717-2f3183f944be\",\n \"resourceUuid\":\"44b777ee-9793-465d-8053-d8e86d2e2362\",\n \"resourceCustomizationUuid\":\"37aeb073-c75d-4cf6-a7fa-a1af862ef58a\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"SPPartnerVF\",\n \"resourceInvariantUuid\":\"072f9238-15b0-4bc5-a5f5-f18548739470\",\n \"resourceUuid\":\"81b9430b-8abe-45d6-8bf9-f41a8f5c735f\",\n \"resourceCustomizationUuid\":\"cd0b4b9c-66c6-49c5-b346-7580e4b6c394\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n }\n ],\n \"requestInputs\":{\n \"devicevf_device_class\":\"PNF\",\n \"devicevf_device_esn\":\"2102351BTJ10HB000075\",\n \"devicevf_device_name\":\"50.47\",\n \"devicevf_device_systemIp\":\"192.168.1.47\",\n \"devicevf_device_type\":\"AR161EW\",\n \"devicevf_device_vendor\":\"huawei\",\n \"devicevf_device_version\":\"1.0\",\n \"internet_sitewanport_description\":\"internet\",\n \"internet_sitewanport_deviceName\":\"50.47\",\n \"internet_sitewanport_inputBandwidth\":\"100\",\n \"internet_sitewanport_ipAddress\":\"100.2.30.9\",\n \"internet_sitewanport_name\":\"internet\",\n \"internet_sitewanport_outputBandwidth\":\"100\",\n \"internet_sitewanport_portNumber\":\"0/0/2\",\n \"internet_sitewanport_portType\":\"GE\",\n \"internet_sitewanport_providerIpAddress\":\"100.2.30.10\",\n \"internet_sitewanport_transportNetworkName\":\"internet\",\n \"mpls_sitewanport_description\":\"mpls\",\n \"mpls_sitewanport_deviceName\":\"50.47\",\n \"mpls_sitewanport_inputBandwidth\":\"100\",\n \"mpls_sitewanport_ipAddress\":\"10.2.30.7\",\n \"mpls_sitewanport_name\":\"mpls\",\n \"mpls_sitewanport_outputBandwidth\":\"100\",\n \"mpls_sitewanport_portNumber\":\"0/0/1\",\n \"mpls_sitewanport_portType\":\"GE\",\n \"mpls_sitewanport_providerIpAddress\":\"10.2.30.8\",\n \"mpls_sitewanport_transportNetworkName\":\"internet\",\n \"sdwanvpnattachmentvf_sdwancondition_role\":\"spoke\",\n \"sdwanvpnattachmentvf_sdwancondition_sdwanVpnName\":\"SDWANVPNInfra-2\",\n \"sitevf_site_address\":\"VDF International Data Center,Hongkong\",\n \"sitevf_site_controlPoint\":\"VDF_VCPE\",\n \"sitevf_site_description\":\"VDF_vGW\",\n \"sitevf_site_emails\":\"\",\n \"sitevf_site_latitude\":\"\",\n \"sitevf_site_longitude\":\"\",\n \"sitevf_site_name\":\"siteLondon\",\n \"sitevf_site_postcode\":\"999077\",\n \"sitevf_site_role\":\"sd-wan-edge\",\n \"sitevf_site_type\":\"single-gateway\",\n \"sotnvpnattachmentvf_sotncondition_clientSignal\":\"\",\n \"sotnvpnattachmentvf_sotncondition_cVLAN\":\"\",\n \"sotnvpnattachmentvf_sotncondition_sotnVpnName\":\"SOTN L2\"\n }\n }\n }\n}","relationship-list":{"relationship":[{"related-to":"wan-port-config","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/network/wan-port-configs/wan-port-config/52ae7944-12b3-4766-848e-e43088947af9","relationship-data":[{"relationship-key":"wan-port-config.wan-port-config-id","relationship-value":"52ae7944-12b3-4766-848e-e43088947af9"}],"related-to-property":[{"property-key":"wan-port-config.wan-port-config-name","property-value":"intenet"}]},{"related-to":"site-resource","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/network/site-resources/site-resource/a22193fc-d1b5-41a7-9033-14339838b0c5","relationship-data":[{"relationship-key":"site-resource.site-resource-id","relationship-value":"a22193fc-d1b5-41a7-9033-14339838b0c5"}],"related-to-property":[{"property-key":"site-resource.site-resource-name","property-value":"travelSite"}]},{"related-to":"wan-port-config","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/network/wan-port-configs/wan-port-config/9fc7c231-1b71-49e6-8390-e92b707e7615","relationship-data":[{"relationship-key":"wan-port-config.wan-port-config-id","relationship-value":"9fc7c231-1b71-49e6-8390-e92b707e7615"}],"related-to-property":[{"property-key":"wan-port-config.wan-port-config-name","property-value":"mpls"}]},{"related-to":"device","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/network/devices/device/f0cf1e06-7be8-4602-83cb-60d87d8e7ef3","relationship-data":[{"relationship-key":"device.device-id","relationship-value":"f0cf1e06-7be8-4602-83cb-60d87d8e7ef3"}],"related-to-property":[{"property-key":"device.device-name","property-value":"CentSpokeDevice"}]},{"related-to":"sp-partner","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/business/sp-partners/sp-partner/3addd6b9-b05f-4841-881c-1ce2c753513f","relationship-data":[{"relationship-key":"sp-partner.sp-partner-id","relationship-value":"3addd6b9-b05f-4841-881c-1ce2c753513f"}],"related-to-property":[{"property-key":"sp-partner.sp-partner-id","property-value":"3addd6b9-b05f-4841-881c-1ce2c753513f"}]},{"related-to":"allotted-resource","relationship-label":"org.onap.relationships.inventory.Uses","related-link":"/aai/v13/business/customers/customer/demo/service-subscriptions/service-subscription/ccvpn/service-instances/service-instance/0ea94797-3772-40ff-b6fb-69f06c533be3/allotted-resources/allotted-resource/f1523ca9-6b56-482e-b3a4-a2f8dcbfba12","relationship-data":[{"relationship-key":"customer.global-customer-id","relationship-value":"demo"},{"relationship-key":"service-subscription.service-type","relationship-value":"ccvpn"},{"relationship-key":"service-instance.service-instance-id","relationship-value":"0ea94797-3772-40ff-b6fb-69f06c533be3"},{"relationship-key":"allotted-resource.id","relationship-value":"f1523ca9-6b56-482e-b3a4-a2f8dcbfba12"}],"related-to-property":[{"property-key":"allotted-resource.description","property-value":"sdwan-attachment"},{"property-key":"allotted-resource.allotted-resource-name","property-value":"sdwan ar"}]},{"related-to":"allotted-resource","relationship-label":"org.onap.relationships.inventory.Uses","related-link":"/aai/v13/business/customers/customer/demo/service-subscriptions/service-subscription/ccvpn/service-instances/service-instance/8e07f832-3f50-4657-9b44-010049e8b488/allotted-resources/allotted-resource/d1a6b573-0595-4468-bab9-02465c295618","relationship-data":[{"relationship-key":"customer.global-customer-id","relationship-value":"demo"},{"relationship-key":"service-subscription.service-type","relationship-value":"ccvpn"},{"relationship-key":"service-instance.service-instance-id","relationship-value":"8e07f832-3f50-4657-9b44-010049e8b488"},{"relationship-key":"allotted-resource.id","relationship-value":"d1a6b573-0595-4468-bab9-02465c295618"}],"related-to-property":[{"property-key":"allotted-resource.description","property-value":"sotn attachment"},{"property-key":"allotted-resource.allotted-resource-name","property-value":"sotn ar"}]}]}}]}
\ No newline at end of file diff --git a/usecaseui-portal/src/assets/json/netWorkD3Data.json b/usecaseui-portal/src/assets/json/netWorkD3Data.json new file mode 100644 index 00000000..0dbfd939 --- /dev/null +++ b/usecaseui-portal/src/assets/json/netWorkD3Data.json @@ -0,0 +1,94 @@ +[ + { + "networkId": "1000", + "pnfs": [ + { + "pnfName": "pnf1000" + } + ], + "tps": [ + { + "interface-name": "nodeId-78.78.78.78-ltpId-5" + }, + { + "interface-name": "nodeId-78.78.78.78-ltpId-4" + }, + { + "interface-name": "nodeId-78.78.78.78-ltpId-1" + }, + { + "interface-name": "nodeId-78.78.78.78-ltpId-3" + }, + { + "interface-name": "nodeId-78.78.78.78-ltpId-2" + } + ], + "aaiId":"" + }, + { + "networkId": "2000", + "pnfs": [ + { + "pnfName": "pnf2000" + } + ], + "tps": [ + { + "interface-name": "nodeId-79.79.79.79-ltpId-5" + }, + { + "interface-name": "nodeId-79.79.79.79-ltpId-4" + }, + { + "interface-name": "nodeId-79.79.79.79-ltpId-1" + }, + { + "interface-name": "nodeId-79.79.79.79-ltpId-3" + }, + { + "interface-name": "nodeId-79.79.79.79-ltpId-2" + } + ], + "aaiId":"" + }, + { + "networkId": "3000", + "pnfs": [ + { + "pnfName": "pnf3000" + } + ], + "tps": [ + { + "interface-name": "nodeId-80.80.80.80-ltpId-5" + }, + { + "interface-name": "nodeId-80.80.80.80-ltpId-4" + }, + { + "interface-name": "nodeId-80.80.80.80-ltpId-1" + }, + { + "interface-name": "nodeId-80.80.80.80-ltpId-3" + }, + { + "interface-name": "nodeId-80.80.80.80-ltpId-2" + } + ], + "aaiId":"" + }, + { + "networkId": "cloud-network", + "pnfs": [ + { + "pnfName": "pnf-cloud" + } + ], + "tps": [ + { + "interface-name": "cloud-tp" + } + ], + "aaiId":"gongjie666" + } +] diff --git a/usecaseui-portal/src/assets/json/netWorkD3Data2.json b/usecaseui-portal/src/assets/json/netWorkD3Data2.json new file mode 100644 index 00000000..1ab07822 --- /dev/null +++ b/usecaseui-portal/src/assets/json/netWorkD3Data2.json @@ -0,0 +1,246 @@ +[ + { + "network-resource": { + "network-id": "成都市", + "pnfs": { + "pnf": [ + { + "pnf-name": "双流区" + }, + { + "pnf-name": "武侯区" + }, + { + "pnf-name": "金牛区" + } + ] + }, + "tp": [ + { + "p-interface": { + "interface-name": "东升街", + "network-ref": "some ref", + "transparent": "some value", + "speed-value": "some speed", + "relationship-list": { + "relationship": [ + { + "related-to": "logical-link", + "related-link": "url of logical-link", + "relationship-data": { + "relationship-key": "logical-link.link-name", + "relationship-value": "some name" + } + } + ] + } + } + }, + { + "p-interface": { + "interface-name": "浆洗街", + "network-ref": "some ref", + "transparent": "some value", + "speed-value": "some speed", + "relationship-list": { + "relationship": [ + { + "related-to": "logical-link", + "related-link": "url of logical-link", + "relationship-data": { + "relationship-key": "logical-link.link-name", + "relationship-value": "some name" + } + } + ] + } + } + }, + { + "p-interface": { + "interface-name": "抚琴街", + "network-ref": "some ref", + "transparent": "some value", + "speed-value": "some speed", + "relationship-list": { + "relationship": [ + { + "related-to": "logical-link", + "related-link": "url of logical-link", + "relationship-data": { + "relationship-key": "logical-link.link-name", + "relationship-value": "some name" + } + } + ] + } + } + } + ], + "relationship-list": { + "relationship": [ + { + "related-to": "vpn-binding", + "related-link": "url of vpn-binding", + "relationship-data": { + "relationship-key": "vpn-binding.vpn-id", + "relationship-value": "some id" + } + } + ] + } + } + }, + { + "network-resource": { + "network-id": "重庆市", + "pnfs": { + "pnf": [ + { + "pnf-name": "沙坪坝区" + }, + { + "pnf-name": "南岸区" + }, + { + "pnf-name": "江北区" + } + ] + }, + "tp": [ + { + "p-interface": { + "interface-name": "万州", + "network-ref": "some ref", + "transparent": "some value", + "speed-value": "some speed", + "relationship-list": { + "relationship": [ + { + "related-to": "logical-link", + "related-link": "url of logical-link", + "relationship-data": { + "relationship-key": "logical-link.link-name", + "relationship-value": "some name" + } + } + ] + } + } + }, + { + "p-interface": { + "interface-name": "南川", + "network-ref": "some ref", + "transparent": "some value", + "speed-value": "some speed", + "relationship-list": { + "relationship": [ + { + "related-to": "logical-link", + "related-link": "url of logical-link", + "relationship-data": { + "relationship-key": "logical-link.link-name", + "relationship-value": "some name" + } + } + ] + } + } + }, + { + "p-interface": { + "interface-name": "武隆", + "network-ref": "some ref", + "transparent": "some value", + "speed-value": "some speed", + "relationship-list": { + "relationship": [ + { + "related-to": "logical-link", + "related-link": "url of logical-link", + "relationship-data": { + "relationship-key": "logical-link.link-name", + "relationship-value": "some name" + } + } + ] + } + } + }, + { + "p-interface": { + "interface-name": "江津", + "network-ref": "some ref", + "transparent": "some value", + "speed-value": "some speed", + "relationship-list": { + "relationship": [ + { + "related-to": "logical-link", + "related-link": "url of logical-link", + "relationship-data": { + "relationship-key": "logical-link.link-name", + "relationship-value": "some name" + } + } + ] + } + } + }, + { + "p-interface": { + "interface-name": "合川", + "network-ref": "some ref", + "transparent": "some value", + "speed-value": "some speed", + "relationship-list": { + "relationship": [ + { + "related-to": "logical-link", + "related-link": "url of logical-link", + "relationship-data": { + "relationship-key": "logical-link.link-name", + "relationship-value": "some name" + } + } + ] + } + } + }, + { + "p-interface": { + "interface-name": "巫山", + "network-ref": "some ref", + "transparent": "some value", + "speed-value": "some speed", + "relationship-list": { + "relationship": [ + { + "related-to": "logical-link", + "related-link": "url of logical-link", + "relationship-data": { + "relationship-key": "logical-link.link-name", + "relationship-value": "some name" + } + } + ] + } + } + } + ], + "relationship-list": { + "relationship": [ + { + "related-to": "vpn-binding", + "related-link": "url of vpn-binding", + "relationship-data": { + "relationship-key": "vpn-binding.vpn-id", + "relationship-value": "some id" + } + } + ] + } + } + } + ] diff --git a/usecaseui-portal/src/assets/json/onboardTableData.json b/usecaseui-portal/src/assets/json/onboardTableData.json new file mode 100644 index 00000000..56e5b323 --- /dev/null +++ b/usecaseui-portal/src/assets/json/onboardTableData.json @@ -0,0 +1,103 @@ +{ + "total":245, + "tableList":[ + { + "name":"Demo_vims_zte", + "type":"NS", + "version":"1.0", + "status":"Onboarding", + "progress": 35 + }, + { + "name":"Demo_vims_zte", + "type":"NS", + "version":"1.0", + "status":"Onboarding", + "progress": 86 + }, + { + "name":"Demo_vims_zte", + "type":"NS", + "version":"1.0", + "status":"Invalid", + "progress": 100 + }, + { + "name":"Demo_vims_zte", + "type":"NS", + "version":"1.0", + "status":"Onboarded", + "progress": 100 + }, + { + "name":"Demo_vims_zte", + "type":"NS", + "version":"1.0", + "status":"Onboarded", + "progress": 100 + }, + { + "name":"Demo_vims_zte", + "type":"NS", + "version":"1.0", + "status":"Invalid", + "progress": 100 + }, + { + "name":"Demo_vims_zte", + "type":"NS", + "version":"1.0", + "status":"Invalid", + "progress": 100 + }, + { + "name":"Demo_vims_zte", + "type":"NS", + "version":"1.0", + "status":"Invalid", + "progress": 100 + }, + { + "name":"Demo_vims_zte", + "type":"NS", + "version":"1.0", + "status":"Invalid", + "progress": 100 + }, + { + "name":"Demo_vims_zte", + "type":"NS", + "version":"1.0", + "status":"Invalid", + "progress": 100 + }, + { + "name":"Demo_vims_zte", + "type":"NS", + "version":"1.0", + "status":"Invalid", + "progress": 100 + }, + { + "name":"Demo_vims_zte", + "type":"NS", + "version":"1.0", + "status":"Invalid", + "progress": 100 + }, + { + "name":"Demo_vims_zte", + "type":"NS", + "version":"1.0", + "status":"Invalid", + "progress": 100 + }, + { + "name":"Demo_vims_zte", + "type":"NS", + "version":"1.0", + "status":"Invalid", + "progress": 100 + } + ] +} diff --git a/usecaseui-portal/src/assets/json/p_interfaces1.json b/usecaseui-portal/src/assets/json/p_interfaces1.json new file mode 100644 index 00000000..399c21b9 --- /dev/null +++ b/usecaseui-portal/src/assets/json/p_interfaces1.json @@ -0,0 +1,17 @@ +[ + { + "interface-name": "nodeId-78.78.78.78-ltpId-5" + }, + { + "interface-name": "nodeId-78.78.78.78-ltpId-4" + }, + { + "interface-name": "nodeId-78.78.78.78-ltpId-3" + }, + { + "interface-name": "nodeId-78.78.78.78-ltpId-2" + }, + { + "interface-name": "nodeId-78.78.78.78-ltpId-1" + } +] diff --git a/usecaseui-portal/src/assets/json/p_interfaces2.json b/usecaseui-portal/src/assets/json/p_interfaces2.json new file mode 100644 index 00000000..4baf8b85 --- /dev/null +++ b/usecaseui-portal/src/assets/json/p_interfaces2.json @@ -0,0 +1,17 @@ +[ + { + "interface-name": "nodeId-79.79.79.79-ltpId-5" + }, + { + "interface-name": "nodeId-79.79.79.79-ltpId-4" + }, + { + "interface-name": "nodeId-79.79.79.79-ltpId-3" + }, + { + "interface-name": "nodeId-79.79.79.79-ltpId-2" + }, + { + "interface-name": "nodeId-79.79.79.79-ltpId-1" + } +] diff --git a/usecaseui-portal/src/assets/json/pnfdetail-domain.json b/usecaseui-portal/src/assets/json/pnfdetail-domain.json new file mode 100644 index 00000000..c337bd97 --- /dev/null +++ b/usecaseui-portal/src/assets/json/pnfdetail-domain.json @@ -0,0 +1,29 @@ +{ + "pnf-name": "pnf1000", + "pnf-id": "79.79.79.79", + "in-maint": true, + "resource-version": "1536028638695", + "admin-status": "up", + "operational-status": "up", + "relationship-list": { + "relationship": [ + { + "related-to": "network-resource", + "relationship-label": "tosca.relationships.network.LinksTo", + "related-link": "/aai/v13/network/network-resources/network-resource/1000", + "relationship-data": [ + { + "relationship-key": "network-resource.network-id", + "relationship-value": "1000" + } + ], + "related-to-property": [ + { + "property-key": "network-resource.network-id", + "property-value": "1000" + } + ] + } + ] + } +}
\ No newline at end of file diff --git a/usecaseui-portal/src/assets/json/progress.json b/usecaseui-portal/src/assets/json/progress.json new file mode 100644 index 00000000..1a36c1e2 --- /dev/null +++ b/usecaseui-portal/src/assets/json/progress.json @@ -0,0 +1,13 @@ +{ + "operationStatus":{ + "operationId": "XXXXXX", + "operation": "create|delete|update|scale", + "result": "finished|error|processing", + "reason": "", + "userId": "", + "operationContent": "Be creating pop.", + "progress": 0, + "operateAt": "", + "finishedAt": "" + } +} diff --git a/usecaseui-portal/src/assets/json/sdwanvpnServiceTemplateParameters.json b/usecaseui-portal/src/assets/json/sdwanvpnServiceTemplateParameters.json new file mode 100644 index 00000000..cabf0e12 --- /dev/null +++ b/usecaseui-portal/src/assets/json/sdwanvpnServiceTemplateParameters.json @@ -0,0 +1,57 @@ +{ + "invariantUUID": "88dcb2f0-085b-4548-8b93-0882e37d25d8", + "uuid": "462f84e5-f0e5-44c5-ab95-38fb4bf77064", + "name": "SDWANVPNInfraService", + "type": "Service", + "version": "null", + "description": "SDWAN VPN Infra", + "category": "E2E Service", + "subcategory": "null", + "customizationUuid": "null", + "inputs": [ + { + "name": "sdwanconnectivity0_topology", + "type": "string", + "description": "full mesh, hub-spoke", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sdwanconnectivity0_name", + "type": "string", + "description": "the name of this VPM object", + "isRequired": "true", + "defaultValue": "null" + } + ], + "nestedTemplates": [ + { + "invariantUUID": "f99a9a23-c88e-44ff-a4dc-22b88675d278", + "uuid": "7baa7742-3a13-4288-8330-868015adc340", + "name": "SDWANConnectivity", + "type": "VL", + "version": "1.0", + "description": "Represents SDWAN Connectivity.", + "category": "Generic", + "subcategory": "Infrastructure", + "customizationUuid": "94ec574b-2306-4cbd-8214-09662b040f73", + "inputs": [ + { + "name": "sdwanconnectivity0_topology", + "type": "string", + "description": "full mesh, hub-spoke", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sdwanconnectivity0_name", + "type": "string", + "description": "the name of this VPM object", + "isRequired": "true", + "defaultValue": "null" + } + ], + "nestedTemplates": [] + } + ] +}
\ No newline at end of file diff --git a/usecaseui-portal/src/assets/json/serviceTemplates.json b/usecaseui-portal/src/assets/json/serviceTemplates.json new file mode 100644 index 00000000..8de26a7d --- /dev/null +++ b/usecaseui-portal/src/assets/json/serviceTemplates.json @@ -0,0 +1,19 @@ + +[ + {"name":"template1","uuid":"uuidxxx","invariantUUID":"dddd1","version":"1.20"}, + {"name":"template2","uuid":"uuidxxx","invariantUUID":"dddd2","version":"1.20"}, + {"name":"template3","uuid":"uuidxxxx","invariantUUID":"dddd3","version":"1.20"}, + {"name":"template4","uuid":"uuidaaa","invariantUUID":"dddd4","version":"1.20"}, + {"name":"template5","uuid":"uuidaaa","invariantUUID":"dddd5","version":"1.20"}, + {"name":"template6","uuid":"uuidaaaa","invariantUUID":"dddd6","version":"1.20"}, + {"name":"template7","uuid":"uuidbbb","invariantUUID":"dddd7","version":"1.20"}, + {"name":"template8","uuid":"uuidbbb","invariantUUID":"dddd8","version":"1.20"}, + {"name":"template9","uuid":"uuidbbbb","invariantUUID":"dddd9","version":"1.20"}, + {"name":"template10","uuid":"uuidaaaa","invariantUUID":"dddd10","version":"1.20"}, + {"name":"template11","uuid":"uuidxxx","invariantUUID":"dddd11","version":"1.20"}, + {"name":"template12","uuid":"uuidccc","invariantUUID":"dddd12","version":"1.20"}, + {"name":"template13","uuid":"uuidccc","invariantUUID":"dddd13","version":"1.20"}, + {"name":"template14","uuid":"uuidccc","invariantUUID":"dddd14","version":"1.20"}, + {"name":"template15","uuid":"uuidxxx","invariantUUID":"dddd15","version":"1.20"}, + {"name":"template16","uuid":"uuidbbbb","invariantUUID":"dddd16","version":"1.20"} +] diff --git a/usecaseui-portal/src/assets/json/serviceTemplates2.json b/usecaseui-portal/src/assets/json/serviceTemplates2.json new file mode 100644 index 00000000..93202786 --- /dev/null +++ b/usecaseui-portal/src/assets/json/serviceTemplates2.json @@ -0,0 +1,43 @@ + +[ + { + "uuid": "d0a4af63-570c-40b3-a26f-ef11366f0a03", + "invariantUUID": "88dcb2f0-085b-4548-8b93-0882e37d25d8", + "name": "SDWANVPNInfraService", + "version": "2.0", + "toscaModelURL": "/sdc/v1/catalog/services/d0a4af63-570c-40b3-a26f-ef11366f0a03/toscaModel", + "category": "E2E Service" + }, + { + "uuid": "4ca96a53-2e18-4297-8dc7-5776fdf6871b", + "invariantUUID": "21886a96-0664-47a3-beae-766952f2059f", + "name": "SOTNVPNInfraService", + "version": "2.0", + "toscaModelURL": "/sdc/v1/catalog/services/4ca96a53-2e18-4297-8dc7-5776fdf6871b/toscaModel", + "category": "E2E Service" + }, + { + "uuid": "ea8bb4d2-00ea-4aeb-ad76-20ac8cb1c99c", + "invariantUUID": "342ff5e8-5592-4455-a537-a81172c9d541", + "name": "sowsiteservice", + "version": "3.0", + "toscaModelURL": "/sdc/v1/catalog/services/ea8bb4d2-00ea-4aeb-ad76-20ac8cb1c99c/toscaModel", + "category": "E2E Service" + }, + { + "uuid": "cb756ffb-8d91-49fb-86f7-12ceb2b13158", + "invariantUUID": "a7029145-4294-4664-b619-00dc959a1ff6", + "name": "SiteServiceV3", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/services/cb756ffb-8d91-49fb-86f7-12ceb2b13158/toscaModel", + "category": "E2E Service" + }, + { + "uuid": "4b4b3ef8-6747-4111-b9e0-81cf251c0068", + "invariantUUID": "5c13f3fb-2744-4635-9f1f-c59c92dc8f70", + "name": "SiteService", + "version": "2.0", + "toscaModelURL": "/sdc/v1/catalog/services/4b4b3ef8-6747-4111-b9e0-81cf251c0068/toscaModel", + "category": "E2E Service" + } +] diff --git a/usecaseui-portal/src/assets/json/serviceTypes.json b/usecaseui-portal/src/assets/json/serviceTypes.json new file mode 100644 index 00000000..cb1c20a5 --- /dev/null +++ b/usecaseui-portal/src/assets/json/serviceTypes.json @@ -0,0 +1,18 @@ + +[ + { + "service-type": "CCVPN", + "temp-ub-sub-account-id": "sotnaccount", + "resource-version": "1535601345780" + }, + { + "service-type": "SOTN", + "temp-ub-sub-account-id": "sotnaccount", + "resource-version": "1535601330040" + }, + { + "service-type": "CCVPN1", + "temp-ub-sub-account-id": "sotnaccount", + "resource-version": "1536111036667" + } +]
\ No newline at end of file diff --git a/usecaseui-portal/src/assets/json/servicesList.json b/usecaseui-portal/src/assets/json/servicesList.json new file mode 100644 index 00000000..61ddb7a5 --- /dev/null +++ b/usecaseui-portal/src/assets/json/servicesList.json @@ -0,0 +1,4 @@ +{ + "customer":["aaaaa","bbbbb","ccccc","ddddd"], + "serviceType":["aaaaa","bbbbbb","cccc","ddddddd"] +} diff --git a/usecaseui-portal/src/assets/json/servicesTableData.json b/usecaseui-portal/src/assets/json/servicesTableData.json new file mode 100644 index 00000000..07d4cbe2 --- /dev/null +++ b/usecaseui-portal/src/assets/json/servicesTableData.json @@ -0,0 +1,127 @@ +{ + "total":365, + "tableList":[ + { + "serviceId":"foeigiaaegaf", + "name":"demo-test5", + "type":"voLTE type", + "status":"Active", + "progress": 100, + "expand": false, + "children":[ + {"serviceId":"aaasageafefdafda","name":"demo-test5","type":"Network Service"}, + {"serviceId":"aaasageafefdafda","name":"demo-test5","type":"Network Service"} + ] + }, + { + "serviceId":"foeigiaaegaf", + "name":"demo-test5", + "type":"voLTE type", + "status":"Closed", + "progress": 100, + "expand" : false, + "children":[ + {"serviceId":"aaasageafefdafda","name":"demo-test5","type":"Network Service"}, + {"serviceId":"aaasageafefdafda","name":"demo-test5","type":"Network Service"}, + {"serviceId":"aaasageafefdafda","name":"demo-test5","type":"Network Service"} + ] + }, + { + "serviceId":"foeigiaaegaf", + "name":"demo-test5", + "type":"voLTE type", + "status":"Onboarding", + "progress": 50, + "expand" : false, + "children":[ + {"serviceId":"aaasageafefdafda","name":"demo-test5","type":"Network Service"}, + {"serviceId":"aaasageafefdafda","name":"demo-test5","type":"Network Service"}, + {"serviceId":"aaasageafefdafda","name":"demo-test5","type":"Network Service"}, + {"serviceId":"aaasageafefdafda","name":"demo-test5","type":"Network Service"} + ] + }, + { + "serviceId":"foeigiaaegaf", + "name":"demo-test5", + "type":"voLTE type", + "status":"Deleting", + "progress": 25, + "expand": false, + "children":[ + {"serviceId":"aaasageafefdafda","name":"demo-test5","type":"Network Service"}, + {"serviceId":"aaasageafefdafda","name":"demo-test5","type":"Network Service"} + ] + }, + { + "serviceId":"foeigiaaegaf", + "name":"demo-test5", + "type":"voLTE type", + "status":"Updating", + "progress": 45, + "expand": false, + "children":[ + + ] + }, + { + "serviceId":"foeigiaaegaf", + "name":"demo-test5", + "type":"voLTE type", + "status":"Creating", + "progress": 60, + "expand": false, + "children":[ + {"serviceId":"aaasageafefdafda","name":"demo-test5","type":"Network Service"}, + {"serviceId":"aaasageafefdafda","name":"demo-test5","type":"Network Service"} + ] + }, + { + "serviceId":"foeigiaaegaf", + "name":"demo-test5", + "type":"voLTE type", + "status":"Creating", + "progress": 60, + "expand": false, + "children":[ + {"serviceId":"aaasageafefdafda","name":"demo-test5","type":"Network Service"}, + {"serviceId":"aaasageafefdafda","name":"demo-test5","type":"Network Service"} + ] + }, + { + "serviceId":"foeigiaaegaf", + "name":"demo-test5", + "type":"voLTE type", + "status":"Creating", + "progress": 60, + "expand": false, + "children":[ + {"serviceId":"aaasageafefdafda","name":"demo-test5","type":"Network Service"}, + {"serviceId":"aaasageafefdafda","name":"demo-test5","type":"Network Service"} + ] + }, + { + "serviceId":"foeigiaaegaf", + "name":"demo-test5", + "type":"voLTE type", + "status":"Creating", + "progress": 60, + "expand": false, + "children":[ + {"serviceId":"aaasageafefdafda","name":"demo-test5","type":"Network Service"}, + {"serviceId":"aaasageafefdafda","name":"demo-test5","type":"Network Service"} + ] + }, + { + "serviceId":"foeigiaaegaf", + "name":"demo-test5", + "type":"voLTE type", + "status":"Creating", + "progress": 60, + "expand": false, + "children":[ + {"serviceId":"aaasageafefdafda","name":"demo-test5","type":"Network Service"}, + {"serviceId":"aaasageafefdafda","name":"demo-test5","type":"Network Service"} + ] + } + ] +} diff --git a/usecaseui-portal/src/assets/json/siteAddressData.json b/usecaseui-portal/src/assets/json/siteAddressData.json new file mode 100644 index 00000000..4b080f50 --- /dev/null +++ b/usecaseui-portal/src/assets/json/siteAddressData.json @@ -0,0 +1,39 @@ +[ + { + "location" : "Chuangxin Building,Tianningsi,Xicheng,Beijing", + "access-provider-id": "3333", + "access-client-id": "4444", + "access-topology-id": "11", + "access-node-id": "10.10.10.10", + "access-ltp-id": "1", + "host" : "" + }, + { + "location" : "CMCC International Data Center,Hongkong", + "access-provider-id": "3333", + "access-client-id": "4444", + "access-topology-id": "11", + "access-node-id": "10.10.10.10", + "access-ltp-id": "2", + "host" : "" + }, + { + "location" : "VDF International Data Center,Hongkong", + "access-provider-id": "pid000", + "access-client-id": "cid000", + "access-topology-id": "tid000", + "access-node-id": "11.11.11.11", + "access-ltp-id": "2", + "host" : "http://10.10.10.10" + }, + { + "location" : "University College London,Gower Street,London", + "access-provider-id": "5555", + "access-client-id": "6666", + "access-topology-id": "22", + "access-node-id": "11.11.11.11", + "access-ltp-id": "2", + "host" : "http://10.10.10.10" + } +] + diff --git a/usecaseui-portal/src/assets/json/siteServiceTemplateParameters.json b/usecaseui-portal/src/assets/json/siteServiceTemplateParameters.json new file mode 100644 index 00000000..53368e32 --- /dev/null +++ b/usecaseui-portal/src/assets/json/siteServiceTemplateParameters.json @@ -0,0 +1,308 @@ +{ + "invariantUUID": "5c13f3fb-2744-4635-9f1f-c59c92dc8f70", + "uuid": "3a76b1f5-fb0d-4b6b-82d5-0e8a4ebc3838", + "name": "SiteService", + "type": "Service", + "version": "null", + "description": "Site Service", + "category": "E2E Service", + "subcategory": "null", + "customizationUuid": "null", + "inputs": [ + { + "name": "internet_sitewanport_deviceName", + "type": "string", + "description": "The device name in the site", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "mpls_sitewanport_description", + "type": "string", + "description": "The description of the WAN port", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sitevf_site_type", + "type": "string", + "description": "The gateway option is used for SDWAN connectivity", + "isRequired": "true", + "defaultValue": "Single Gateway" + }, + { + "name": "sitevf_site_longitude", + "type": "string", + "description": "The longitude of the site", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "mpls_sitewanport_outputBandwidth", + "type": "string", + "description": "The output bandwidth of the WAN port", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "devicevf_device_esn", + "type": "string", + "description": "Device serial number", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sitevf_site_role", + "type": "string", + "description": "This is used for SDWAN only", + "isRequired": "true", + "defaultValue": "dsvpn-hub" + }, + { + "name": "internet_sitewanport_providerIpAddress", + "type": "string", + "description": "The provider IP address of the provider CE", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnvpnattachmentvf_sotncondition_cVLAN", + "type": "string", + "description": "The cvlan for the site used for ethernet type connectivity.", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sitevf_site_address", + "type": "string", + "description": "the address of this site", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "mpls_sitewanport_portType", + "type": "string", + "description": "the port type of the device.1 GE, 2 FE, 3 XGE, 4 LTE, 5 xDSL(ATM), 6 xSDL(PTM)", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "mpls_sitewanport_transportNetworkName", + "type": "string", + "description": "The transport network of the WAN port", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "internet_sitewanport_inputBandwidth", + "type": "string", + "description": "The input bandwidth of the WAN port", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "mpls_sitewanport_portNumber", + "type": "string", + "description": "the port number of the device", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "internet_sitewanport_description", + "type": "string", + "description": "The description of the WAN port", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "internet_sitewanport_transportNetworkName", + "type": "string", + "description": "The transport network of the WAN port", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sitevf_site_latitude", + "type": "string", + "description": "The latitude of the site", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sitevf_site_controlPoint", + "type": "string", + "description": "The control point of the site,only for sd-wan-edge", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "internet_sitewanport_outputBandwidth", + "type": "string", + "description": "The output bandwidth of the WAN port", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sitevf_site_name", + "type": "string", + "description": "the name of this site", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sitevf_site_description", + "type": "string", + "description": "The description of the site", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnvpnattachmentvf_sotncondition_clientSignal", + "type": "string", + "description": "The client signal for the site used for client type connectivity.", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "internet_sitewanport_portType", + "type": "string", + "description": "the port type of the device.1 GE, 2 FE, 3 XGE, 4 LTE, 5 xDSL(ATM), 6 xSDL(PTM)", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "internet_sitewanport_name", + "type": "string", + "description": "The name of the WAN port", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "mpls_sitewanport_deviceName", + "type": "string", + "description": "The device name in the site", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "mpls_sitewanport_providerIpAddress", + "type": "string", + "description": "The provider IP address of the provider CE", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "mpls_sitewanport_inputBandwidth", + "type": "string", + "description": "The input bandwidth of the WAN port", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sitevf_site_emails", + "type": "string", + "description": "the emails of this site", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "devicevf_device_class", + "type": "string", + "description": "The class should be VNF/PNF", + "isRequired": "true", + "defaultValue": "PNF" + }, + { + "name": "sdwanvpnattachmentvf_sdwancondition_role", + "type": "string", + "description": "the role of the site.hub/spoke.", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "mpls_sitewanport_ipAddress", + "type": "string", + "description": "The public IP of the WAN Port", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "devicevf_device_name", + "type": "string", + "description": "the name of the device", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sdwanvpnattachmentvf_sdwancondition_sdwanVpnName", + "type": "string", + "description": "The device Id of the site", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "internet_sitewanport_portNumber", + "type": "string", + "description": "the port number of the device", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnvpnattachmentvf_sotncondition_sotnVpnName", + "type": "string", + "description": "References the SOTN VPN Infra service", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "devicevf_device_type", + "type": "string", + "description": "The type of the device", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sitevf_site_postcode", + "type": "string", + "description": "The postcode of the site", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "devicevf_device_version", + "type": "string", + "description": "The version of the device", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "devicevf_device_vendor", + "type": "string", + "description": "The vendor of the device", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "mpls_sitewanport_name", + "type": "string", + "description": "The name of the WAN port", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "devicevf_device_systemIp", + "type": "string", + "description": "The system ip of the device", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "internet_sitewanport_ipAddress", + "type": "string", + "description": "The public IP of the WAN Port", + "isRequired": "true", + "defaultValue": "null" + } + ], + "nestedTemplates": [] +}
\ No newline at end of file diff --git a/usecaseui-portal/src/assets/json/sotn-connectivity.json b/usecaseui-portal/src/assets/json/sotn-connectivity.json new file mode 100644 index 00000000..6ac0a453 --- /dev/null +++ b/usecaseui-portal/src/assets/json/sotn-connectivity.json @@ -0,0 +1,94 @@ +{ + "connectivity": [ + { + "connectivity-id": "4efe6dff-acfc-4d13-a3fd-1177d3c08e84", + "bandwidth-profile-name": "vpn1", + "vpn-type": "ethernet", + "color-aware": "c1", + "coupling-flag": "c2", + "etht-svc-name": "SOTNVPNInfra", + "access-provider-id": "10", + "access-client-id": "10", + "access-topology-id": "10", + "access-node-id": "10.10.10.10", + "access-ltp-id": "14", + "connectivity-selflink": "restconf/config/GENERIC-RESOURCE-API:services/service/10/service-data/networks/network/3efe6dff-acfc-4d13-a3fd-1177d3c08e88/network-data/", + "operational-status": "Created", + "model-customization-id": "b44071c8-04fd-4d6b-b6af-772cbfaa1129", + "model-invariant-id": "1b9c677d-fddf-4b70-938b-925a7fa57d43", + "model-version-id": "218df3c3-50dd-4c26-9e36-4771387bb771", + "resource-version": "1535684533349", + "relationship-list": { + "relationship": [ + { + "related-to": "vpn-binding", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/network/vpn-bindings/vpn-binding/pnf1000-vpn1", + "relationship-data": [ + { + "relationship-key": "vpn-binding.vpn-id", + "relationship-value": "pnf1000-vpn1" + } + ], + "related-to-property": [ + { + "property-key": "vpn-binding.vpn-name", + "property-value": "pnf1000-vpn1" + }, + { + "property-key": "vpn-binding.vpn-type", + "property-value": "ethernet" + } + ] + }, + { + "related-to": "service-instance", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/business/customers/customer/Democcy/service-subscriptions/service-subscription/CCVPN/service-instances/service-instance/32cd906f-ee7a-4ecf-b1c3-2fce4d59f8c0", + "relationship-data": [ + { + "relationship-key": "customer.global-customer-id", + "relationship-value": "Democcy" + }, + { + "relationship-key": "service-subscription.service-type", + "relationship-value": "CCVPN" + }, + { + "relationship-key": "service-instance.service-instance-id", + "relationship-value": "32cd906f-ee7a-4ecf-b1c3-2fce4d59f8c0" + } + ], + "related-to-property": [ + { + "property-key": "service-instance.service-instance-name", + "property-value": "SOTNVPNInfra" + } + ] + }, + { + "related-to": "vpn-binding", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/network/vpn-bindings/vpn-binding/pnf2000-vpn1", + "relationship-data": [ + { + "relationship-key": "vpn-binding.vpn-id", + "relationship-value": "pnf2000-vpn1" + } + ], + "related-to-property": [ + { + "property-key": "vpn-binding.vpn-name", + "property-value": "pnf2000-vpn1" + }, + { + "property-key": "vpn-binding.vpn-type", + "property-value": "ethernet" + } + ] + } + ] + } + } + ] +}
\ No newline at end of file diff --git a/usecaseui-portal/src/assets/json/sotn-connectivity2.json b/usecaseui-portal/src/assets/json/sotn-connectivity2.json new file mode 100644 index 00000000..7bd55bf0 --- /dev/null +++ b/usecaseui-portal/src/assets/json/sotn-connectivity2.json @@ -0,0 +1 @@ +{"connectivity":[{"connectivity-id":"4424ea5a-3603-4040-baa9-4046ed533fe5","bandwidth-profile-name":"vpn1","vpn-type":"ethernet","color-aware":"true","coupling-flag":"true","etht-svc-name":"vpn1","access-provider-id":"","access-client-id":"","access-topology-id":"","access-node-id":"","access-ltp-id":"","connectivity-selflink":"restconf/config/GENERIC-RESOURCE-API:services/service/32cd906f-ee7a-4ecf-b1c3-2fce4d59f8c0/service-data/networks/network/4424ea5a-3603-4040-baa9-4046ed533fe5/network-data/","operational-status":"Active","model-customization-id":"2bafc8aa-c60c-4a17-a658-db4cbca07fac","model-invariant-id":"5d0ada6b-de04-4624-9410-3baab839cd6f","model-version-id":"15e21930-3248-4148-b071-a2a9be1f9889","resource-version":"1537623789475","relationship-list":{"relationship":[{"related-to":"vpn-binding","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/network/vpn-bindings/vpn-binding/11.11.11.11-vpn1","relationship-data":[{"relationship-key":"vpn-binding.vpn-id","relationship-value":"11.11.11.11-vpn1"}],"related-to-property":[{"property-key":"vpn-binding.vpn-name","property-value":"11.11.11.11-vpn1"},{"property-key":"vpn-binding.vpn-type","property-value":"ethernet"}]},{"related-to":"service-instance","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/business/customers/customer/demo/service-subscriptions/service-subscription/ccvpn/service-instances/service-instance/32cd906f-ee7a-4ecf-b1c3-2fce4d59f8c0","relationship-data":[{"relationship-key":"customer.global-customer-id","relationship-value":"demo"},{"relationship-key":"service-subscription.service-type","relationship-value":"ccvpn"},{"relationship-key":"service-instance.service-instance-id","relationship-value":"32cd906f-ee7a-4ecf-b1c3-2fce4d59f8c0"}],"related-to-property":[{"property-key":"service-instance.service-instance-name","property-value":"SOTNVPNInfra"}]},{"related-to":"vpn-binding","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/network/vpn-bindings/vpn-binding/12.12.12.12-vpn1","relationship-data":[{"relationship-key":"vpn-binding.vpn-id","relationship-value":"12.12.12.12-vpn1"}],"related-to-property":[{"property-key":"vpn-binding.vpn-name","property-value":"12.12.12.12-vpn1"},{"property-key":"vpn-binding.vpn-type","property-value":"ethernet"}]}]}}]}
\ No newline at end of file diff --git a/usecaseui-portal/src/assets/json/sotnvpnServiceTemplateParameters.json b/usecaseui-portal/src/assets/json/sotnvpnServiceTemplateParameters.json new file mode 100644 index 00000000..21abcda1 --- /dev/null +++ b/usecaseui-portal/src/assets/json/sotnvpnServiceTemplateParameters.json @@ -0,0 +1,225 @@ +{ + "invariantUUID": "21886a96-0664-47a3-beae-766952f2059f", + "uuid": "54836196-c411-4690-af98-900c1c3aadd7", + "name": "SOTNVPNInfraService", + "type": "Service", + "version": "null", + "description": "SOTN VPN Infra Service", + "category": "E2E Service", + "subcategory": "null", + "customizationUuid": "null", + "inputs": [ + { + "name": "sotnconnectivity0_eir", + "type": "string", + "description": "The eir for SOTN connectivity. Only for Ethernet type", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_cir", + "type": "string", + "description": "The cir for SOTN connectivity. Only for Ethernet type", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_endTime", + "type": "string", + "description": "End Time", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_ebs", + "type": "string", + "description": "The ebs for SOTN connectivity. Only for Ethernet type", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_startTime", + "type": "string", + "description": "Start Time", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_dualLink", + "type": "boolean", + "description": "is Active/standby enabled", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_reroute", + "type": "boolean", + "description": "Whether to support automatic rerouting", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_cbs", + "type": "string", + "description": "The cbs for SOTN connectivity. Only for Ethernet type", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_name", + "type": "string", + "description": "the name of the SOTN connectivity", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_SLS", + "type": "string", + "description": "Business Service Level", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_description", + "type": "string", + "description": "The description of the SOTN connectivity", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_couplingFlag", + "type": "boolean", + "description": "The couplingFlag for SOTN connectivity. Only for Ethernet type", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_colorAware", + "type": "boolean", + "description": "The colorAware of the SOTN connectivity. Only for Ethernet type", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_COS", + "type": "string", + "description": "Business Class of Service of VPN", + "isRequired": "true", + "defaultValue": "standard" + } + ], + "nestedTemplates": [ + { + "invariantUUID": "1b9c677d-fddf-4b70-938b-925a7fa57d43", + "uuid": "218df3c3-50dd-4c26-9e36-4771387bb771", + "name": "SOTNConnectivity", + "type": "VL", + "version": "1.0", + "description": "Represents a sotn Connectivity", + "category": "Generic", + "subcategory": "Infrastructure", + "customizationUuid": "b44071c8-04fd-4d6b-b6af-772cbfaa1129", + "inputs": [ + { + "name": "sotnconnectivity0_eir", + "type": "string", + "description": "The eir for SOTN connectivity. Only for Ethernet type", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_cir", + "type": "string", + "description": "The cir for SOTN connectivity. Only for Ethernet type", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_endTime", + "type": "string", + "description": "End Time", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_ebs", + "type": "string", + "description": "The ebs for SOTN connectivity. Only for Ethernet type", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_startTime", + "type": "string", + "description": "Start Time", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_dualLink", + "type": "boolean", + "description": "is Active/standby enabled", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_reroute", + "type": "boolean", + "description": "Whether to support automatic rerouting", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_cbs", + "type": "string", + "description": "The cbs for SOTN connectivity. Only for Ethernet type", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_name", + "type": "string", + "description": "the name of the SOTN connectivity", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_SLS", + "type": "string", + "description": "Business Service Level", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_description", + "type": "string", + "description": "The description of the SOTN connectivity", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_couplingFlag", + "type": "boolean", + "description": "The couplingFlag for SOTN connectivity. Only for Ethernet type", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_colorAware", + "type": "boolean", + "description": "The colorAware of the SOTN connectivity. Only for Ethernet type", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_COS", + "type": "string", + "description": "Business Class of Service of VPN", + "isRequired": "true", + "defaultValue": "standard" + } + ], + "nestedTemplates": [] + } + ] +}
\ No newline at end of file diff --git a/usecaseui-portal/src/assets/json/specific_link _nfo.json b/usecaseui-portal/src/assets/json/specific_link _nfo.json new file mode 100644 index 00000000..e9911409 --- /dev/null +++ b/usecaseui-portal/src/assets/json/specific_link _nfo.json @@ -0,0 +1,52 @@ +{ + "link-name": "nodeId-79.79.79.79-ltpId-4_nodeId-78.78.78.78-ltpId-4", + "in-maint": false, + "link-type": "some type", + "speed-value": "some speed", + "resource-version": "1536212883031", + "operational-status": "up", + "relationship-list": { + "relationship": [ + { + "related-to": "p-interface", + "relationship-label": "tosca.relationships.network.LinksTo", + "related-link": "/aai/v13/network/pnfs/pnf/pnf1000/p-interfaces/p-interface/nodeId-79.79.79.79-ltpId-4", + "relationship-data": [ + { + "relationship-key": "pnf.pnf-name", + "relationship-value": "pnf1000" + }, + { + "relationship-key": "p-interface.interface-name", + "relationship-value": "nodeId-79.79.79.79-ltpId-4" + } + ], + "related-to-property": [ + { + "property-key": "p-interface.prov-status" + } + ] + }, + { + "related-to": "p-interface", + "relationship-label": "tosca.relationships.network.LinksTo", + "related-link": "/aai/v13/network/pnfs/pnf/pnf2000/p-interfaces/p-interface/nodeId-78.78.78.78-ltpId-4", + "relationship-data": [ + { + "relationship-key": "pnf.pnf-name", + "relationship-value": "pnf2000" + }, + { + "relationship-key": "p-interface.interface-name", + "relationship-value": "nodeId-78.78.78.78-ltpId-4" + } + ], + "related-to-property": [ + { + "property-key": "p-interface.prov-status" + } + ] + } + ] + } +} diff --git a/usecaseui-portal/src/assets/json/status.json b/usecaseui-portal/src/assets/json/status.json new file mode 100644 index 00000000..eeff6f35 --- /dev/null +++ b/usecaseui-portal/src/assets/json/status.json @@ -0,0 +1,3 @@ +{ + "status":"SUCCESS" +} diff --git a/usecaseui-portal/src/assets/json/status2.json b/usecaseui-portal/src/assets/json/status2.json new file mode 100644 index 00000000..05e0a4fc --- /dev/null +++ b/usecaseui-portal/src/assets/json/status2.json @@ -0,0 +1 @@ +"fail" diff --git a/usecaseui-portal/src/assets/json/url.json b/usecaseui-portal/src/assets/json/url.json new file mode 100644 index 00000000..e84b42d8 --- /dev/null +++ b/usecaseui-portal/src/assets/json/url.json @@ -0,0 +1,8 @@ +{ + "esr-system-info-id": "gongjie666", + "service-url": "http://10.10.10.10:8080/", + "user-name": "demo", + "password": "demo123456!", + "system-type": "ONAP", + "resource-version": "1536221798873" +} diff --git a/usecaseui-portal/src/assets/json/vpnbinding.json b/usecaseui-portal/src/assets/json/vpnbinding.json new file mode 100644 index 00000000..04ff2a6d --- /dev/null +++ b/usecaseui-portal/src/assets/json/vpnbinding.json @@ -0,0 +1,82 @@ +{ + "vpn-binding": [ + { + "vpn-id": "pnf1000-vpn1", + "vpn-name": "pnf1000-vpn1", + "vpn-type": "ethernet", + "access-provider-id": "5555", + "access-client-id": "6666", + "access-topology-id": "100", + "src-access-node-id": "10.10.10.10", + "src-access-ltp-id": "14", + "dst-access-node-id": "10.10.10.10", + "dst-access-ltp-id": "2", + "operational-status": "Created", + "model-customization-id": "", + "model-invariant-id": "", + "model-version-id": "", + "resource-version": "1536135677693", + "relationship-list": { + "relationship": [ + { + "related-to": "connectivity", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/network/connectivities/connectivity/4efe6dff-acfc-4d13-a3fd-1177d3c08e84", + "relationship-data": [ + { + "relationship-key": "connectivity.connectivity-id", + "relationship-value": "4efe6dff-acfc-4d13-a3fd-1177d3c08e84" + } + ], + "related-to-property": [ + { + "property-key": "connectivity.etht-svc-name", + "property-value": "SOTNVPNInfra" + } + ] + }, + { + "related-to": "p-interface", + "relationship-label": "org.onap.relationships.inventory.BindsTo", + "related-link": "/aai/v13/network/pnfs/pnf/pnf1000/p-interfaces/p-interface/nodeId-79.79.79.79-ltpId-2", + "relationship-data": [ + { + "relationship-key": "pnf.pnf-name", + "relationship-value": "pnf1000" + }, + { + "relationship-key": "p-interface.interface-name", + "relationship-value": "nodeId-79.79.79.79-ltpId-2" + } + ], + "related-to-property": [ + { + "property-key": "p-interface.prov-status" + } + ] + }, + { + "related-to": "p-interface", + "relationship-label": "org.onap.relationships.inventory.BindsTo", + "related-link": "/aai/v13/network/pnfs/pnf/pnf1000/p-interfaces/p-interface/nodeId-79.79.79.79-ltpId-1", + "relationship-data": [ + { + "relationship-key": "pnf.pnf-name", + "relationship-value": "pnf1000" + }, + { + "relationship-key": "p-interface.interface-name", + "relationship-value": "nodeId-79.79.79.79-ltpId-1" + } + ], + "related-to-property": [ + { + "property-key": "p-interface.prov-status" + } + ] + } + ] + } + } + ] +}
\ No newline at end of file diff --git a/usecaseui-portal/src/environments/environment.prod.ts b/usecaseui-portal/src/environments/environment.prod.ts new file mode 100644 index 00000000..3612073b --- /dev/null +++ b/usecaseui-portal/src/environments/environment.prod.ts @@ -0,0 +1,3 @@ +export const environment = { + production: true +}; diff --git a/usecaseui-portal/src/environments/environment.ts b/usecaseui-portal/src/environments/environment.ts new file mode 100644 index 00000000..b7f639ae --- /dev/null +++ b/usecaseui-portal/src/environments/environment.ts @@ -0,0 +1,8 @@ +// The file contents for the current environment will overwrite these during build. +// The build system defaults to the dev environment which uses `environment.ts`, but if you do +// `ng build --env=prod` then `environment.prod.ts` will be used instead. +// The list of which env maps to which file can be found in `.angular-cli.json`. + +export const environment = { + production: false +}; diff --git a/usecaseui-portal/src/favicon.ico b/usecaseui-portal/src/favicon.ico Binary files differnew file mode 100644 index 00000000..8081c7ce --- /dev/null +++ b/usecaseui-portal/src/favicon.ico diff --git a/usecaseui-portal/src/index.html b/usecaseui-portal/src/index.html new file mode 100644 index 00000000..f8281491 --- /dev/null +++ b/usecaseui-portal/src/index.html @@ -0,0 +1,29 @@ +<!-- + Copyright (C) 2018 CMCC, Inc. and others. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<!doctype html> +<html lang="en"> +<head> + <meta charset="utf-8"> + <title>Uui2</title> + <base href="/"> + + <meta name="viewport" content="width=device-width, initial-scale=1"> + <link rel="icon" type="image/x-icon" href="favicon.ico"> +</head> +<body> + <app-root></app-root> +</body> +</html> diff --git a/usecaseui-portal/src/main.ts b/usecaseui-portal/src/main.ts new file mode 100644 index 00000000..91ec6da5 --- /dev/null +++ b/usecaseui-portal/src/main.ts @@ -0,0 +1,12 @@ +import { enableProdMode } from '@angular/core'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; + +import { AppModule } from './app/app.module'; +import { environment } from './environments/environment'; + +if (environment.production) { + enableProdMode(); +} + +platformBrowserDynamic().bootstrapModule(AppModule) + .catch(err => console.log(err)); diff --git a/usecaseui-portal/src/my-theme.css b/usecaseui-portal/src/my-theme.css new file mode 100644 index 00000000..ac66bcc9 --- /dev/null +++ b/usecaseui-portal/src/my-theme.css @@ -0,0 +1,18190 @@ +/* + Copyright (C) 2018 CMCC, Inc. and others. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ +/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ +/* stylelint-disable no-duplicate-selectors */ +/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors */ +/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors */ +/* stylelint-disable at-rule-no-unknown */ +@font-face { + font-family: "Monospaced Number"; + src: local("Tahoma"); + unicode-range: U+30-39; +} +@font-face { + font-family: "Chinese Quote"; + src: local("PingFang SC"), local("SimSun"); + unicode-range: U+2018, U+2019, U+201c, U+201d; +} +html, +body { + width: 100%; + height: 100%; +} +input::-ms-clear, +input::-ms-reveal { + display: none; +} +*, +*::before, +*::after { + box-sizing: border-box; +} +html { + font-family: sans-serif; + line-height: 1.15; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; + -ms-overflow-style: scrollbar; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} +article, +aside, +dialog, +figcaption, +figure, +footer, +header, +hgroup, +main, +nav, +section { + display: block; +} +body { + margin: 0; + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + background-color: #fff; +} +[tabindex="-1"]:focus { + outline: none !important; +} +hr { + box-sizing: content-box; + height: 0; + overflow: visible; +} +h1, +h2, +h3, +h4, +h5, +h6 { + margin-top: 0; + margin-bottom: .5em; + color: rgba(0, 0, 0, 0.85); + font-weight: 500; +} +p { + margin-top: 0; + margin-bottom: 1em; +} +abbr[title], +abbr[data-original-title] { + text-decoration: underline; + text-decoration: underline dotted; + cursor: help; + border-bottom: 0; +} +address { + margin-bottom: 1em; + font-style: normal; + line-height: inherit; +} +input[type="text"], +input[type="password"], +input[type="number"], +textarea { + -webkit-appearance: none; +} +ol, +ul, +dl { + margin-top: 0; + margin-bottom: 1em; +} +ol ol, +ul ul, +ol ul, +ul ol { + margin-bottom: 0; +} +dt { + font-weight: 500; +} +dd { + margin-bottom: .5em; + margin-left: 0; +} +blockquote { + margin: 0 0 1em; +} +dfn { + font-style: italic; +} +b, +strong { + font-weight: bolder; +} +small { + font-size: 80%; +} +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} +sub { + bottom: -0.25em; +} +sup { + top: -0.5em; +} +a { + color: #1890ff; + background-color: transparent; + text-decoration: none; + outline: none; + cursor: pointer; + transition: color .3s; + -webkit-text-decoration-skip: objects; +} +a:focus { + text-decoration: underline; + text-decoration-skip: ink; +} +a:hover { + color: #40a9ff; +} +a:active { + color: #096dd9; +} +a:active, +a:hover { + outline: 0; + text-decoration: none; +} +a[disabled] { + color: rgba(0, 0, 0, 0.25); + cursor: not-allowed; + pointer-events: none; +} +pre, +code, +kbd, +samp { + font-family: Consolas, Menlo, Courier, monospace; + font-size: 1em; +} +pre { + margin-top: 0; + margin-bottom: 1em; + overflow: auto; +} +figure { + margin: 0 0 1em; +} +img { + vertical-align: middle; + border-style: none; +} +svg:not(:root) { + overflow: hidden; +} +a, +area, +button, +[role="button"], +input:not([type=range]), +label, +select, +summary, +textarea { + touch-action: manipulation; +} +table { + border-collapse: collapse; +} +caption { + padding-top: .75em; + padding-bottom: .3em; + color: rgba(0, 0, 0, 0.45); + text-align: left; + caption-side: bottom; +} +th { + text-align: inherit; +} +input, +button, +select, +optgroup, +textarea { + margin: 0; + font-family: inherit; + font-size: inherit; + line-height: inherit; + color: inherit; +} +button, +input { + overflow: visible; +} +button, +select { + text-transform: none; +} +button, +html [type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + padding: 0; + border-style: none; +} +input[type="radio"], +input[type="checkbox"] { + box-sizing: border-box; + padding: 0; +} +input[type="date"], +input[type="time"], +input[type="datetime-local"], +input[type="month"] { + -webkit-appearance: listbox; +} +textarea { + overflow: auto; + resize: vertical; +} +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; +} +legend { + display: block; + width: 100%; + max-width: 100%; + padding: 0; + margin-bottom: .5em; + font-size: 1.5em; + line-height: inherit; + color: inherit; + white-space: normal; +} +progress { + vertical-align: baseline; +} +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} +[type="search"] { + outline-offset: -2px; + -webkit-appearance: none; +} +[type="search"]::-webkit-search-cancel-button, +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} +::-webkit-file-upload-button { + font: inherit; + -webkit-appearance: button; +} +output { + display: inline-block; +} +summary { + display: list-item; +} +template { + display: none; +} +[hidden] { + display: none !important; +} +mark { + padding: .2em; + background-color: #feffe6; +} +::selection { + background: #1890ff; + color: #fff; +} +.clearfix { + zoom: 1; +} +.clearfix:before, +.clearfix:after { + content: " "; + display: table; +} +.clearfix:after { + clear: both; + visibility: hidden; + font-size: 0; + height: 0; +} +@font-face { + font-family: 'anticon'; + src: url('https://at.alicdn.com/t/font_148784_v4ggb6wrjmkotj4i.eot'); + /* IE9*/ + src: url('https://at.alicdn.com/t/font_148784_v4ggb6wrjmkotj4i.woff') format('woff'), /* chrome、firefox、opera、Safari, Android, iOS 4.2+*/ url('https://at.alicdn.com/t/font_148784_v4ggb6wrjmkotj4i.ttf') format('truetype'), /* iOS 4.1- */ url('https://at.alicdn.com/t/font_148784_v4ggb6wrjmkotj4i.svg#iconfont') format('svg'); +} +.anticon { + display: inline-block; + font-style: normal; + vertical-align: baseline; + text-align: center; + text-transform: none; + line-height: 1; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.anticon:before { + display: block; + font-family: "anticon" !important; +} +.anticon-step-forward:before { + content: "\e600"; +} +.anticon-step-backward:before { + content: "\e601"; +} +.anticon-forward:before { + content: "\e602"; +} +.anticon-backward:before { + content: "\e603"; +} +.anticon-caret-right:before { + content: "\e604"; +} +.anticon-caret-left:before { + content: "\e605"; +} +.anticon-caret-down:before { + content: "\e606"; +} +.anticon-caret-up:before { + content: "\e607"; +} +.anticon-right-circle:before { + content: "\e608"; +} +.anticon-circle-right:before { + content: "\e608"; +} +.anticon-caret-circle-right:before { + content: "\e608"; +} +.anticon-left-circle:before { + content: "\e609"; +} +.anticon-circle-left:before { + content: "\e609"; +} +.anticon-caret-circle-left:before { + content: "\e609"; +} +.anticon-up-circle:before { + content: "\e60a"; +} +.anticon-circle-up:before { + content: "\e60a"; +} +.anticon-caret-circle-up:before { + content: "\e60a"; +} +.anticon-down-circle:before { + content: "\e60b"; +} +.anticon-circle-down:before { + content: "\e60b"; +} +.anticon-caret-circle-down:before { + content: "\e60b"; +} +.anticon-right-circle-o:before { + content: "\e60c"; +} +.anticon-circle-o-right:before { + content: "\e60c"; +} +.anticon-caret-circle-o-right:before { + content: "\e60c"; +} +.anticon-left-circle-o:before { + content: "\e60d"; +} +.anticon-circle-o-left:before { + content: "\e60d"; +} +.anticon-caret-circle-o-left:before { + content: "\e60d"; +} +.anticon-up-circle-o:before { + content: "\e60e"; +} +.anticon-circle-o-up:before { + content: "\e60e"; +} +.anticon-caret-circle-o-up:before { + content: "\e60e"; +} +.anticon-down-circle-o:before { + content: "\e60f"; +} +.anticon-circle-o-down:before { + content: "\e60f"; +} +.anticon-caret-circle-o-down:before { + content: "\e60f"; +} +.anticon-verticle-left:before { + content: "\e610"; +} +.anticon-verticle-right:before { + content: "\e611"; +} +.anticon-rollback:before { + content: "\e612"; +} +.anticon-retweet:before { + content: "\e613"; +} +.anticon-shrink:before { + content: "\e614"; +} +.anticon-arrows-alt:before { + content: "\e615"; +} +.anticon-arrow-salt:before { + content: "\e615"; +} +.anticon-reload:before { + content: "\e616"; +} +.anticon-double-right:before { + content: "\e617"; +} +.anticon-double-left:before { + content: "\e618"; +} +.anticon-arrow-down:before { + content: "\e619"; +} +.anticon-arrow-up:before { + content: "\e61a"; +} +.anticon-arrow-right:before { + content: "\e61b"; +} +.anticon-arrow-left:before { + content: "\e61c"; +} +.anticon-down:before { + content: "\e61d"; +} +.anticon-up:before { + content: "\e61e"; +} +.anticon-right:before { + content: "\e61f"; +} +.anticon-left:before { + content: "\e620"; +} +.anticon-minus-square-o:before { + content: "\e621"; +} +.anticon-minus-circle:before { + content: "\e622"; +} +.anticon-minus-circle-o:before { + content: "\e623"; +} +.anticon-minus:before { + content: "\e624"; +} +.anticon-plus-circle-o:before { + content: "\e625"; +} +.anticon-plus-circle:before { + content: "\e626"; +} +.anticon-plus:before { + content: "\e627"; +} +.anticon-info-circle:before { + content: "\e628"; +} +.anticon-info-circle-o:before { + content: "\e629"; +} +.anticon-info:before { + content: "\e62a"; +} +.anticon-exclamation:before { + content: "\e62b"; +} +.anticon-exclamation-circle:before { + content: "\e62c"; +} +.anticon-exclamation-circle-o:before { + content: "\e62d"; +} +.anticon-close-circle:before { + content: "\e62e"; +} +.anticon-cross-circle:before { + content: "\e62e"; +} +.anticon-close-circle-o:before { + content: "\e62f"; +} +.anticon-cross-circle-o:before { + content: "\e62f"; +} +.anticon-check-circle:before { + content: "\e630"; +} +.anticon-check-circle-o:before { + content: "\e631"; +} +.anticon-check:before { + content: "\e632"; +} +.anticon-close:before { + content: "\e633"; +} +.anticon-cross:before { + content: "\e633"; +} +.anticon-customer-service:before { + content: "\e634"; +} +.anticon-customerservice:before { + content: "\e634"; +} +.anticon-credit-card:before { + content: "\e635"; +} +.anticon-code-o:before { + content: "\e636"; +} +.anticon-book:before { + content: "\e637"; +} +.anticon-bars:before { + content: "\e639"; +} +.anticon-question:before { + content: "\e63a"; +} +.anticon-question-circle:before { + content: "\e63b"; +} +.anticon-question-circle-o:before { + content: "\e63c"; +} +.anticon-pause:before { + content: "\e63d"; +} +.anticon-pause-circle:before { + content: "\e63e"; +} +.anticon-pause-circle-o:before { + content: "\e63f"; +} +.anticon-clock-circle:before { + content: "\e640"; +} +.anticon-clock-circle-o:before { + content: "\e641"; +} +.anticon-swap:before { + content: "\e642"; +} +.anticon-swap-left:before { + content: "\e643"; +} +.anticon-swap-right:before { + content: "\e644"; +} +.anticon-plus-square-o:before { + content: "\e645"; +} +.anticon-frown:before { + content: "\e646"; +} +.anticon-frown-circle:before { + content: "\e646"; +} +.anticon-ellipsis:before { + content: "\e647"; +} +.anticon-copy:before { + content: "\e648"; +} +.anticon-menu-fold:before { + content: "\e9ac"; +} +.anticon-mail:before { + content: "\e659"; +} +.anticon-logout:before { + content: "\e65a"; +} +.anticon-link:before { + content: "\e65b"; +} +.anticon-area-chart:before { + content: "\e65c"; +} +.anticon-line-chart:before { + content: "\e65d"; +} +.anticon-home:before { + content: "\e65e"; +} +.anticon-laptop:before { + content: "\e65f"; +} +.anticon-star:before { + content: "\e660"; +} +.anticon-star-o:before { + content: "\e661"; +} +.anticon-folder:before { + content: "\e662"; +} +.anticon-filter:before { + content: "\e663"; +} +.anticon-file:before { + content: "\e664"; +} +.anticon-exception:before { + content: "\e665"; +} +.anticon-meh:before { + content: "\e666"; +} +.anticon-meh-circle:before { + content: "\e666"; +} +.anticon-meh-o:before { + content: "\e667"; +} +.anticon-shopping-cart:before { + content: "\e668"; +} +.anticon-save:before { + content: "\e669"; +} +.anticon-user:before { + content: "\e66a"; +} +.anticon-video-camera:before { + content: "\e66b"; +} +.anticon-to-top:before { + content: "\e66c"; +} +.anticon-team:before { + content: "\e66d"; +} +.anticon-tablet:before { + content: "\e66e"; +} +.anticon-solution:before { + content: "\e66f"; +} +.anticon-search:before { + content: "\e670"; +} +.anticon-share-alt:before { + content: "\e671"; +} +.anticon-setting:before { + content: "\e672"; +} +.anticon-poweroff:before { + content: "\e6d5"; +} +.anticon-picture:before { + content: "\e674"; +} +.anticon-phone:before { + content: "\e675"; +} +.anticon-paper-clip:before { + content: "\e676"; +} +.anticon-notification:before { + content: "\e677"; +} +.anticon-mobile:before { + content: "\e678"; +} +.anticon-menu-unfold:before { + content: "\e9ad"; +} +.anticon-inbox:before { + content: "\e67a"; +} +.anticon-lock:before { + content: "\e67b"; +} +.anticon-qrcode:before { + content: "\e67c"; +} +.anticon-play-circle:before { + content: "\e6d0"; +} +.anticon-play-circle-o:before { + content: "\e6d1"; +} +.anticon-tag:before { + content: "\e6d2"; +} +.anticon-tag-o:before { + content: "\e6d3"; +} +.anticon-tags:before { + content: "\e67d"; +} +.anticon-tags-o:before { + content: "\e67e"; +} +.anticon-cloud-o:before { + content: "\e67f"; +} +.anticon-cloud:before { + content: "\e680"; +} +.anticon-cloud-upload:before { + content: "\e681"; +} +.anticon-cloud-download:before { + content: "\e682"; +} +.anticon-cloud-download-o:before { + content: "\e683"; +} +.anticon-cloud-upload-o:before { + content: "\e684"; +} +.anticon-environment:before { + content: "\e685"; +} +.anticon-environment-o:before { + content: "\e686"; +} +.anticon-eye:before { + content: "\e687"; +} +.anticon-eye-o:before { + content: "\e688"; +} +.anticon-camera:before { + content: "\e689"; +} +.anticon-camera-o:before { + content: "\e68a"; +} +.anticon-windows:before { + content: "\e68b"; +} +.anticon-apple:before { + content: "\e68c"; +} +.anticon-apple-o:before { + content: "\e6d4"; +} +.anticon-android:before { + content: "\e938"; +} +.anticon-android-o:before { + content: "\e68d"; +} +.anticon-aliwangwang:before { + content: "\e68e"; +} +.anticon-aliwangwang-o:before { + content: "\e68f"; +} +.anticon-export:before { + content: "\e691"; +} +.anticon-edit:before { + content: "\e692"; +} +.anticon-circle-down-o:before { + content: "\e693"; +} +.anticon-circle-down-:before { + content: "\e694"; +} +.anticon-appstore-o:before { + content: "\e695"; +} +.anticon-appstore:before { + content: "\e696"; +} +.anticon-scan:before { + content: "\e697"; +} +.anticon-file-text:before { + content: "\e698"; +} +.anticon-folder-open:before { + content: "\e699"; +} +.anticon-hdd:before { + content: "\e69a"; +} +.anticon-ie:before { + content: "\e69b"; +} +.anticon-file-jpg:before { + content: "\e69c"; +} +.anticon-like:before { + content: "\e64c"; +} +.anticon-like-o:before { + content: "\e69d"; +} +.anticon-dislike:before { + content: "\e64b"; +} +.anticon-dislike-o:before { + content: "\e69e"; +} +.anticon-delete:before { + content: "\e69f"; +} +.anticon-enter:before { + content: "\e6a0"; +} +.anticon-pushpin-o:before { + content: "\e6a1"; +} +.anticon-pushpin:before { + content: "\e6a2"; +} +.anticon-heart:before { + content: "\e6a3"; +} +.anticon-heart-o:before { + content: "\e6a4"; +} +.anticon-pay-circle:before { + content: "\e6a5"; +} +.anticon-pay-circle-o:before { + content: "\e6a6"; +} +.anticon-smile:before { + content: "\e6a7"; +} +.anticon-smile-circle:before { + content: "\e6a7"; +} +.anticon-smile-o:before { + content: "\e6a8"; +} +.anticon-frown-o:before { + content: "\e6a9"; +} +.anticon-calculator:before { + content: "\e6aa"; +} +.anticon-message:before { + content: "\e6ab"; +} +.anticon-chrome:before { + content: "\e6ac"; +} +.anticon-github:before { + content: "\e6ad"; +} +.anticon-file-unknown:before { + content: "\e6af"; +} +.anticon-file-excel:before { + content: "\e6b0"; +} +.anticon-file-ppt:before { + content: "\e6b1"; +} +.anticon-file-word:before { + content: "\e6b2"; +} +.anticon-file-pdf:before { + content: "\e6b3"; +} +.anticon-desktop:before { + content: "\e6b4"; +} +.anticon-upload:before { + content: "\e6b6"; +} +.anticon-download:before { + content: "\e6b7"; +} +.anticon-pie-chart:before { + content: "\e6b8"; +} +.anticon-unlock:before { + content: "\e6ba"; +} +.anticon-calendar:before { + content: "\e6bb"; +} +.anticon-windows-o:before { + content: "\e6bc"; +} +.anticon-dot-chart:before { + content: "\e6bd"; +} +.anticon-bar-chart:before { + content: "\e6be"; +} +.anticon-code:before { + content: "\e6bf"; +} +.anticon-api:before { + content: "\e951"; +} +.anticon-plus-square:before { + content: "\e6c0"; +} +.anticon-minus-square:before { + content: "\e6c1"; +} +.anticon-close-square:before { + content: "\e6c2"; +} +.anticon-close-square-o:before { + content: "\e6c3"; +} +.anticon-check-square:before { + content: "\e6c4"; +} +.anticon-check-square-o:before { + content: "\e6c5"; +} +.anticon-fast-backward:before { + content: "\e6c6"; +} +.anticon-fast-forward:before { + content: "\e6c7"; +} +.anticon-up-square:before { + content: "\e6c8"; +} +.anticon-down-square:before { + content: "\e6c9"; +} +.anticon-left-square:before { + content: "\e6ca"; +} +.anticon-right-square:before { + content: "\e6cb"; +} +.anticon-right-square-o:before { + content: "\e6cc"; +} +.anticon-left-square-o:before { + content: "\e6cd"; +} +.anticon-down-square-o:before { + content: "\e6ce"; +} +.anticon-up-square-o:before { + content: "\e6cf"; +} +.anticon-loading:before { + content: "\e64d"; +} +.anticon-loading-3-quarters:before { + content: "\e6ae"; +} +.anticon-bulb:before { + content: "\e649"; +} +.anticon-select:before { + content: "\e64a"; +} +.anticon-addfile:before, +.anticon-file-add:before { + content: "\e910"; +} +.anticon-addfolder:before, +.anticon-folder-add:before { + content: "\e914"; +} +.anticon-switcher:before { + content: "\e913"; +} +.anticon-rocket:before { + content: "\e90f"; +} +.anticon-dingding:before { + content: "\e923"; +} +.anticon-dingding-o:before { + content: "\e925"; +} +.anticon-bell:before { + content: "\e64e"; +} +.anticon-disconnect:before { + content: "\e64f"; +} +.anticon-database:before { + content: "\e650"; +} +.anticon-compass:before { + content: "\e6db"; +} +.anticon-barcode:before { + content: "\e652"; +} +.anticon-hourglass:before { + content: "\e653"; +} +.anticon-key:before { + content: "\e654"; +} +.anticon-flag:before { + content: "\e655"; +} +.anticon-layout:before { + content: "\e656"; +} +.anticon-login:before { + content: "\e657"; +} +.anticon-printer:before { + content: "\e673"; +} +.anticon-sound:before { + content: "\e6e9"; +} +.anticon-usb:before { + content: "\e6d7"; +} +.anticon-skin:before { + content: "\e6d8"; +} +.anticon-tool:before { + content: "\e6d9"; +} +.anticon-sync:before { + content: "\e6da"; +} +.anticon-wifi:before { + content: "\e6d6"; +} +.anticon-car:before { + content: "\e6dc"; +} +.anticon-copyright:before { + content: "\e6de"; +} +.anticon-schedule:before { + content: "\e6df"; +} +.anticon-user-add:before { + content: "\e6ed"; +} +.anticon-user-delete:before { + content: "\e6e0"; +} +.anticon-usergroup-add:before { + content: "\e6dd"; +} +.anticon-usergroup-delete:before { + content: "\e6e1"; +} +.anticon-man:before { + content: "\e6e2"; +} +.anticon-woman:before { + content: "\e6ec"; +} +.anticon-shop:before { + content: "\e6e3"; +} +.anticon-gift:before { + content: "\e6e4"; +} +.anticon-idcard:before { + content: "\e6e5"; +} +.anticon-medicine-box:before { + content: "\e6e6"; +} +.anticon-red-envelope:before { + content: "\e6e7"; +} +.anticon-coffee:before { + content: "\e6e8"; +} +.anticon-trademark:before { + content: "\e651"; +} +.anticon-safety:before { + content: "\e6ea"; +} +.anticon-wallet:before { + content: "\e6eb"; +} +.anticon-bank:before { + content: "\e6ee"; +} +.anticon-trophy:before { + content: "\e6ef"; +} +.anticon-contacts:before { + content: "\e6f0"; +} +.anticon-global:before { + content: "\e6f1"; +} +.anticon-shake:before { + content: "\e94f"; +} +.anticon-fork:before { + content: "\e6f2"; +} +.anticon-dashboard:before { + content: "\e99a"; +} +.anticon-profile:before { + content: "\e999"; +} +.anticon-table:before { + content: "\e998"; +} +.anticon-warning:before { + content: "\e997"; +} +.anticon-form:before { + content: "\e996"; +} +.anticon-spin:before { + display: inline-block; + animation: loadingCircle 1s infinite linear; +} +.anticon-weibo-square:before { + content: "\e6f5"; +} +.anticon-weibo-circle:before { + content: "\e6f4"; +} +.anticon-taobao-circle:before { + content: "\e6f3"; +} +.anticon-html5:before { + content: "\e9c7"; +} +.anticon-weibo:before { + content: "\e9c6"; +} +.anticon-twitter:before { + content: "\e9c5"; +} +.anticon-wechat:before { + content: "\e9c4"; +} +.anticon-youtube:before { + content: "\e9c3"; +} +.anticon-alipay-circle:before { + content: "\e9c2"; +} +.anticon-taobao:before { + content: "\e9c1"; +} +.anticon-skype:before { + content: "\e9c0"; +} +.anticon-qq:before { + content: "\e9bf"; +} +.anticon-medium-workmark:before { + content: "\e9be"; +} +.anticon-gitlab:before { + content: "\e9bd"; +} +.anticon-medium:before { + content: "\e9bc"; +} +.anticon-linkedin:before { + content: "\e9bb"; +} +.anticon-google-plus:before { + content: "\e9ba"; +} +.anticon-dropbox:before { + content: "\e9b9"; +} +.anticon-facebook:before { + content: "\e9b8"; +} +.anticon-codepen:before { + content: "\e9b7"; +} +.anticon-amazon:before { + content: "\e9b6"; +} +.anticon-google:before { + content: "\e9b5"; +} +.anticon-codepen-circle:before { + content: "\e9b4"; +} +.anticon-alipay:before { + content: "\e9b3"; +} +.anticon-ant-design:before { + content: "\e9b2"; +} +.anticon-aliyun:before { + content: "\e9f4"; +} +.anticon-zhihu:before { + content: "\e703"; +} +.anticon-file-markdown:before { + content: "\e704"; +} +.anticon-slack:before { + content: "\e705"; +} +.anticon-slack-square:before { + content: "\e706"; +} +.anticon-behance:before { + content: "\e707"; +} +.anticon-behance-square:before { + content: "\e708"; +} +.anticon-dribbble:before { + content: "\e709"; +} +.anticon-dribbble-square:before { + content: "\e70a"; +} +.anticon-instagram:before { + content: "\e70b"; +} +.anticon-yuque:before { + content: "\e70c"; +} +.fade-enter, +.fade-appear { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.fade-leave { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.fade-enter.fade-enter-active, +.fade-appear.fade-appear-active { + animation-name: antFadeIn; + animation-play-state: running; +} +.fade-leave.fade-leave-active { + animation-name: antFadeOut; + animation-play-state: running; + pointer-events: none; +} +.fade-enter, +.fade-appear { + opacity: 0; + animation-timing-function: linear; +} +.fade-leave { + animation-timing-function: linear; +} +@keyframes antFadeIn { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +@keyframes antFadeOut { + 0% { + opacity: 1; + } + 100% { + opacity: 0; + } +} +.move-up-enter, +.move-up-appear { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.move-up-leave { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.move-up-enter.move-up-enter-active, +.move-up-appear.move-up-appear-active { + animation-name: antMoveUpIn; + animation-play-state: running; +} +.move-up-leave.move-up-leave-active { + animation-name: antMoveUpOut; + animation-play-state: running; + pointer-events: none; +} +.move-up-enter, +.move-up-appear { + opacity: 0; + animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); +} +.move-up-leave { + animation-timing-function: cubic-bezier(0.6, 0.04, 0.98, 0.34); +} +.move-down-enter, +.move-down-appear { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.move-down-leave { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.move-down-enter.move-down-enter-active, +.move-down-appear.move-down-appear-active { + animation-name: antMoveDownIn; + animation-play-state: running; +} +.move-down-leave.move-down-leave-active { + animation-name: antMoveDownOut; + animation-play-state: running; + pointer-events: none; +} +.move-down-enter, +.move-down-appear { + opacity: 0; + animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); +} +.move-down-leave { + animation-timing-function: cubic-bezier(0.6, 0.04, 0.98, 0.34); +} +.move-left-enter, +.move-left-appear { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.move-left-leave { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.move-left-enter.move-left-enter-active, +.move-left-appear.move-left-appear-active { + animation-name: antMoveLeftIn; + animation-play-state: running; +} +.move-left-leave.move-left-leave-active { + animation-name: antMoveLeftOut; + animation-play-state: running; + pointer-events: none; +} +.move-left-enter, +.move-left-appear { + opacity: 0; + animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); +} +.move-left-leave { + animation-timing-function: cubic-bezier(0.6, 0.04, 0.98, 0.34); +} +.move-right-enter, +.move-right-appear { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.move-right-leave { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.move-right-enter.move-right-enter-active, +.move-right-appear.move-right-appear-active { + animation-name: antMoveRightIn; + animation-play-state: running; +} +.move-right-leave.move-right-leave-active { + animation-name: antMoveRightOut; + animation-play-state: running; + pointer-events: none; +} +.move-right-enter, +.move-right-appear { + opacity: 0; + animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); +} +.move-right-leave { + animation-timing-function: cubic-bezier(0.6, 0.04, 0.98, 0.34); +} +@keyframes antMoveDownIn { + 0% { + transform-origin: 0 0; + transform: translateY(100%); + opacity: 0; + } + 100% { + transform-origin: 0 0; + transform: translateY(0%); + opacity: 1; + } +} +@keyframes antMoveDownOut { + 0% { + transform-origin: 0 0; + transform: translateY(0%); + opacity: 1; + } + 100% { + transform-origin: 0 0; + transform: translateY(100%); + opacity: 0; + } +} +@keyframes antMoveLeftIn { + 0% { + transform-origin: 0 0; + transform: translateX(-100%); + opacity: 0; + } + 100% { + transform-origin: 0 0; + transform: translateX(0%); + opacity: 1; + } +} +@keyframes antMoveLeftOut { + 0% { + transform-origin: 0 0; + transform: translateX(0%); + opacity: 1; + } + 100% { + transform-origin: 0 0; + transform: translateX(-100%); + opacity: 0; + } +} +@keyframes antMoveRightIn { + 0% { + opacity: 0; + transform-origin: 0 0; + transform: translateX(100%); + } + 100% { + opacity: 1; + transform-origin: 0 0; + transform: translateX(0%); + } +} +@keyframes antMoveRightOut { + 0% { + transform-origin: 0 0; + transform: translateX(0%); + opacity: 1; + } + 100% { + transform-origin: 0 0; + transform: translateX(100%); + opacity: 0; + } +} +@keyframes antMoveUpIn { + 0% { + transform-origin: 0 0; + transform: translateY(-100%); + opacity: 0; + } + 100% { + transform-origin: 0 0; + transform: translateY(0%); + opacity: 1; + } +} +@keyframes antMoveUpOut { + 0% { + transform-origin: 0 0; + transform: translateY(0%); + opacity: 1; + } + 100% { + transform-origin: 0 0; + transform: translateY(-100%); + opacity: 0; + } +} +@keyframes loadingCircle { + 0% { + transform-origin: 50% 50%; + transform: rotate(0deg); + } + 100% { + transform-origin: 50% 50%; + transform: rotate(360deg); + } +} +.slide-up-enter, +.slide-up-appear { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.slide-up-leave { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.slide-up-enter.slide-up-enter-active, +.slide-up-appear.slide-up-appear-active { + animation-name: antSlideUpIn; + animation-play-state: running; +} +.slide-up-leave.slide-up-leave-active { + animation-name: antSlideUpOut; + animation-play-state: running; + pointer-events: none; +} +.slide-up-enter, +.slide-up-appear { + opacity: 0; + animation-timing-function: cubic-bezier(0.23, 1, 0.32, 1); +} +.slide-up-leave { + animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); +} +.slide-down-enter, +.slide-down-appear { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.slide-down-leave { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.slide-down-enter.slide-down-enter-active, +.slide-down-appear.slide-down-appear-active { + animation-name: antSlideDownIn; + animation-play-state: running; +} +.slide-down-leave.slide-down-leave-active { + animation-name: antSlideDownOut; + animation-play-state: running; + pointer-events: none; +} +.slide-down-enter, +.slide-down-appear { + opacity: 0; + animation-timing-function: cubic-bezier(0.23, 1, 0.32, 1); +} +.slide-down-leave { + animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); +} +.slide-left-enter, +.slide-left-appear { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.slide-left-leave { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.slide-left-enter.slide-left-enter-active, +.slide-left-appear.slide-left-appear-active { + animation-name: antSlideLeftIn; + animation-play-state: running; +} +.slide-left-leave.slide-left-leave-active { + animation-name: antSlideLeftOut; + animation-play-state: running; + pointer-events: none; +} +.slide-left-enter, +.slide-left-appear { + opacity: 0; + animation-timing-function: cubic-bezier(0.23, 1, 0.32, 1); +} +.slide-left-leave { + animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); +} +.slide-right-enter, +.slide-right-appear { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.slide-right-leave { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.slide-right-enter.slide-right-enter-active, +.slide-right-appear.slide-right-appear-active { + animation-name: antSlideRightIn; + animation-play-state: running; +} +.slide-right-leave.slide-right-leave-active { + animation-name: antSlideRightOut; + animation-play-state: running; + pointer-events: none; +} +.slide-right-enter, +.slide-right-appear { + opacity: 0; + animation-timing-function: cubic-bezier(0.23, 1, 0.32, 1); +} +.slide-right-leave { + animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); +} +@keyframes antSlideUpIn { + 0% { + opacity: 0; + transform-origin: 0% 0%; + transform: scaleY(0.8); + } + 100% { + opacity: 1; + transform-origin: 0% 0%; + transform: scaleY(1); + } +} +@keyframes antSlideUpOut { + 0% { + opacity: 1; + transform-origin: 0% 0%; + transform: scaleY(1); + } + 100% { + opacity: 0; + transform-origin: 0% 0%; + transform: scaleY(0.8); + } +} +@keyframes antSlideDownIn { + 0% { + opacity: 0; + transform-origin: 100% 100%; + transform: scaleY(0.8); + } + 100% { + opacity: 1; + transform-origin: 100% 100%; + transform: scaleY(1); + } +} +@keyframes antSlideDownOut { + 0% { + opacity: 1; + transform-origin: 100% 100%; + transform: scaleY(1); + } + 100% { + opacity: 0; + transform-origin: 100% 100%; + transform: scaleY(0.8); + } +} +@keyframes antSlideLeftIn { + 0% { + opacity: 0; + transform-origin: 0% 0%; + transform: scaleX(0.8); + } + 100% { + opacity: 1; + transform-origin: 0% 0%; + transform: scaleX(1); + } +} +@keyframes antSlideLeftOut { + 0% { + opacity: 1; + transform-origin: 0% 0%; + transform: scaleX(1); + } + 100% { + opacity: 0; + transform-origin: 0% 0%; + transform: scaleX(0.8); + } +} +@keyframes antSlideRightIn { + 0% { + opacity: 0; + transform-origin: 100% 0%; + transform: scaleX(0.8); + } + 100% { + opacity: 1; + transform-origin: 100% 0%; + transform: scaleX(1); + } +} +@keyframes antSlideRightOut { + 0% { + opacity: 1; + transform-origin: 100% 0%; + transform: scaleX(1); + } + 100% { + opacity: 0; + transform-origin: 100% 0%; + transform: scaleX(0.8); + } +} +.swing-enter, +.swing-appear { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.swing-enter.swing-enter-active, +.swing-appear.swing-appear-active { + animation-name: antSwingIn; + animation-play-state: running; +} +@keyframes antSwingIn { + 0%, + 100% { + transform: translateX(0); + } + 20% { + transform: translateX(-10px); + } + 40% { + transform: translateX(10px); + } + 60% { + transform: translateX(-5px); + } + 80% { + transform: translateX(5px); + } +} +.zoom-enter, +.zoom-appear { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.zoom-leave { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.zoom-enter.zoom-enter-active, +.zoom-appear.zoom-appear-active { + animation-name: antZoomIn; + animation-play-state: running; +} +.zoom-leave.zoom-leave-active { + animation-name: antZoomOut; + animation-play-state: running; + pointer-events: none; +} +.zoom-enter, +.zoom-appear { + transform: scale(0); + animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); +} +.zoom-leave { + animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86); +} +.zoom-big-enter, +.zoom-big-appear { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.zoom-big-leave { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.zoom-big-enter.zoom-big-enter-active, +.zoom-big-appear.zoom-big-appear-active { + animation-name: antZoomBigIn; + animation-play-state: running; +} +.zoom-big-leave.zoom-big-leave-active { + animation-name: antZoomBigOut; + animation-play-state: running; + pointer-events: none; +} +.zoom-big-enter, +.zoom-big-appear { + transform: scale(0); + animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); +} +.zoom-big-leave { + animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86); +} +.zoom-big-fast-enter, +.zoom-big-fast-appear { + animation-duration: 0.1s; + animation-fill-mode: both; + animation-play-state: paused; +} +.zoom-big-fast-leave { + animation-duration: 0.1s; + animation-fill-mode: both; + animation-play-state: paused; +} +.zoom-big-fast-enter.zoom-big-fast-enter-active, +.zoom-big-fast-appear.zoom-big-fast-appear-active { + animation-name: antZoomBigIn; + animation-play-state: running; +} +.zoom-big-fast-leave.zoom-big-fast-leave-active { + animation-name: antZoomBigOut; + animation-play-state: running; + pointer-events: none; +} +.zoom-big-fast-enter, +.zoom-big-fast-appear { + transform: scale(0); + animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); +} +.zoom-big-fast-leave { + animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86); +} +.zoom-up-enter, +.zoom-up-appear { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.zoom-up-leave { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.zoom-up-enter.zoom-up-enter-active, +.zoom-up-appear.zoom-up-appear-active { + animation-name: antZoomUpIn; + animation-play-state: running; +} +.zoom-up-leave.zoom-up-leave-active { + animation-name: antZoomUpOut; + animation-play-state: running; + pointer-events: none; +} +.zoom-up-enter, +.zoom-up-appear { + transform: scale(0); + animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); +} +.zoom-up-leave { + animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86); +} +.zoom-down-enter, +.zoom-down-appear { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.zoom-down-leave { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.zoom-down-enter.zoom-down-enter-active, +.zoom-down-appear.zoom-down-appear-active { + animation-name: antZoomDownIn; + animation-play-state: running; +} +.zoom-down-leave.zoom-down-leave-active { + animation-name: antZoomDownOut; + animation-play-state: running; + pointer-events: none; +} +.zoom-down-enter, +.zoom-down-appear { + transform: scale(0); + animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); +} +.zoom-down-leave { + animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86); +} +.zoom-left-enter, +.zoom-left-appear { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.zoom-left-leave { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.zoom-left-enter.zoom-left-enter-active, +.zoom-left-appear.zoom-left-appear-active { + animation-name: antZoomLeftIn; + animation-play-state: running; +} +.zoom-left-leave.zoom-left-leave-active { + animation-name: antZoomLeftOut; + animation-play-state: running; + pointer-events: none; +} +.zoom-left-enter, +.zoom-left-appear { + transform: scale(0); + animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); +} +.zoom-left-leave { + animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86); +} +.zoom-right-enter, +.zoom-right-appear { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.zoom-right-leave { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.zoom-right-enter.zoom-right-enter-active, +.zoom-right-appear.zoom-right-appear-active { + animation-name: antZoomRightIn; + animation-play-state: running; +} +.zoom-right-leave.zoom-right-leave-active { + animation-name: antZoomRightOut; + animation-play-state: running; + pointer-events: none; +} +.zoom-right-enter, +.zoom-right-appear { + transform: scale(0); + animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); +} +.zoom-right-leave { + animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86); +} +@keyframes antZoomIn { + 0% { + opacity: 0; + transform: scale(0.2); + } + 100% { + opacity: 1; + transform: scale(1); + } +} +@keyframes antZoomOut { + 0% { + transform: scale(1); + } + 100% { + opacity: 0; + transform: scale(0.2); + } +} +@keyframes antZoomBigIn { + 0% { + opacity: 0; + transform: scale(0.8); + } + 100% { + transform: scale(1); + } +} +@keyframes antZoomBigOut { + 0% { + transform: scale(1); + } + 100% { + opacity: 0; + transform: scale(0.8); + } +} +@keyframes antZoomUpIn { + 0% { + opacity: 0; + transform-origin: 50% 0%; + transform: scale(0.8); + } + 100% { + transform-origin: 50% 0%; + transform: scale(1); + } +} +@keyframes antZoomUpOut { + 0% { + transform-origin: 50% 0%; + transform: scale(1); + } + 100% { + opacity: 0; + transform-origin: 50% 0%; + transform: scale(0.8); + } +} +@keyframes antZoomLeftIn { + 0% { + opacity: 0; + transform-origin: 0% 50%; + transform: scale(0.8); + } + 100% { + transform-origin: 0% 50%; + transform: scale(1); + } +} +@keyframes antZoomLeftOut { + 0% { + transform-origin: 0% 50%; + transform: scale(1); + } + 100% { + opacity: 0; + transform-origin: 0% 50%; + transform: scale(0.8); + } +} +@keyframes antZoomRightIn { + 0% { + opacity: 0; + transform-origin: 100% 50%; + transform: scale(0.8); + } + 100% { + transform-origin: 100% 50%; + transform: scale(1); + } +} +@keyframes antZoomRightOut { + 0% { + transform-origin: 100% 50%; + transform: scale(1); + } + 100% { + opacity: 0; + transform-origin: 100% 50%; + transform: scale(0.8); + } +} +@keyframes antZoomDownIn { + 0% { + opacity: 0; + transform-origin: 50% 100%; + transform: scale(0.8); + } + 100% { + transform-origin: 50% 100%; + transform: scale(1); + } +} +@keyframes antZoomDownOut { + 0% { + transform-origin: 50% 100%; + transform: scale(1); + } + 100% { + opacity: 0; + transform-origin: 50% 100%; + transform: scale(0.8); + } +} +.ant-motion-collapse { + overflow: hidden; +} +.ant-motion-collapse-active { + transition: height 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), opacity 0.15s cubic-bezier(0.645, 0.045, 0.355, 1) !important; +} +nz-affix { + display: block; +} +.ant-affix { + position: fixed; + z-index: 10; +} +.ant-alert { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; + position: relative; + padding: 8px 15px 8px 37px; + border-radius: 4px; +} +.ant-alert.ant-alert-no-icon { + padding: 8px 15px; +} +.ant-alert-icon { + top: 12.5px; + left: 16px; + position: absolute; +} +.ant-alert-description { + font-size: 14px; + line-height: 22px; + display: none; +} +.ant-alert-success { + border: 1px solid #b7eb8f; + background-color: #f6ffed; +} +.ant-alert-success .ant-alert-icon { + color: #52c41a; +} +.ant-alert-info { + border: 1px solid #91d5ff; + background-color: #e6f7ff; +} +.ant-alert-info .ant-alert-icon { + color: #1890ff; +} +.ant-alert-warning { + border: 1px solid #ffe58f; + background-color: #fffbe6; +} +.ant-alert-warning .ant-alert-icon { + color: #faad14; +} +.ant-alert-error { + border: 1px solid #ffa39e; + background-color: #fff1f0; +} +.ant-alert-error .ant-alert-icon { + color: #f5222d; +} +.ant-alert-close-icon { + font-size: 12px; + position: absolute; + right: 16px; + top: 8px; + line-height: 22px; + overflow: hidden; + cursor: pointer; +} +.ant-alert-close-icon .anticon-cross { + color: rgba(0, 0, 0, 0.45); + transition: color .3s; +} +.ant-alert-close-icon .anticon-cross:hover { + color: #404040; +} +.ant-alert-close-text { + position: absolute; + right: 16px; +} +.ant-alert-with-description { + padding: 15px 15px 15px 64px; + position: relative; + border-radius: 4px; + color: #54657e; + line-height: 1.5; +} +.ant-alert-with-description.ant-alert-no-icon { + padding: 15px; +} +.ant-alert-with-description .ant-alert-icon { + position: absolute; + top: 16px; + left: 24px; + font-size: 24px; +} +.ant-alert-with-description .ant-alert-close-icon { + position: absolute; + top: 16px; + right: 16px; + cursor: pointer; + font-size: 14px; +} +.ant-alert-with-description .ant-alert-message { + font-size: 16px; + color: rgba(0, 0, 0, 0.85); + display: block; + margin-bottom: 4px; +} +.ant-alert-with-description .ant-alert-description { + display: block; +} +.ant-alert.ant-alert-close { + height: 0 !important; + margin: 0; + padding-top: 0; + padding-bottom: 0; + transition: all 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); + transform-origin: 50% 0; +} +.ant-alert-slide-up-leave { + animation: antAlertSlideUpOut 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); + animation-fill-mode: both; +} +.ant-alert-banner { + border-radius: 0; + border: 0; + margin-bottom: 0; +} +@keyframes antAlertSlideUpIn { + 0% { + opacity: 0; + transform-origin: 0% 0%; + transform: scaleY(0); + } + 100% { + opacity: 1; + transform-origin: 0% 0%; + transform: scaleY(1); + } +} +@keyframes antAlertSlideUpOut { + 0% { + opacity: 1; + transform-origin: 0% 0%; + transform: scaleY(1); + } + 100% { + opacity: 0; + transform-origin: 0% 0%; + transform: scaleY(0); + } +} +.ant-anchor { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; + position: relative; + padding-left: 2px; +} +.ant-anchor-wrapper { + background-color: #fff; + overflow: auto; + padding-left: 4px; + margin-left: -4px; +} +.ant-anchor-ink { + position: absolute; + height: 100%; + left: 0; + top: 0; +} +.ant-anchor-ink:before { + content: ' '; + position: relative; + width: 2px; + height: 100%; + display: block; + background-color: #e8e8e8; + margin: 0 auto; +} +.ant-anchor-ink-ball { + display: none; + position: absolute; + width: 8px; + height: 8px; + border-radius: 8px; + border: 2px solid #1890ff; + background-color: #fff; + left: 50%; + transition: top 0.3s ease-in-out; + transform: translateX(-50%); +} +.ant-anchor-ink-ball.visible { + display: inline-block; +} +.ant-anchor.fixed .ant-anchor-ink .ant-anchor-ink-ball { + display: none; +} +.ant-anchor-link { + padding: 8px 0 8px 16px; + line-height: 1; +} +.ant-anchor-link-title { + display: block; + position: relative; + transition: all .3s; + color: #54657e; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + margin-bottom: 8px; +} +.ant-anchor-link-title:only-child { + margin-bottom: 0; +} +.ant-anchor-link-active > .ant-anchor-link-title { + color: #1890ff; +} +.ant-anchor-link .ant-anchor-link { + padding-top: 6px; + padding-bottom: 6px; +} +.ant-select-auto-complete { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; +} +.ant-select-auto-complete.ant-select .ant-select-selection { + border: 0; + box-shadow: none; +} +.ant-select-auto-complete.ant-select .ant-select-selection__rendered { + margin-left: 0; + margin-right: 0; + height: 100%; + line-height: 32px; +} +.ant-select-auto-complete.ant-select .ant-select-selection__placeholder { + margin-left: 12px; + margin-right: 12px; +} +.ant-select-auto-complete.ant-select .ant-select-selection--single { + height: auto; +} +.ant-select-auto-complete.ant-select .ant-select-search--inline { + position: static; + float: left; +} +.ant-select-auto-complete.ant-select-allow-clear .ant-select-selection:hover .ant-select-selection__rendered { + margin-right: 0 !important; +} +.ant-select-auto-complete.ant-select .ant-input { + background: transparent; + border-width: 1px; + line-height: 1.5; + height: 32px; +} +.ant-select-auto-complete.ant-select .ant-input:focus, +.ant-select-auto-complete.ant-select .ant-input:hover { + border-color: #40a9ff; +} +.ant-select-auto-complete.ant-select-lg .ant-select-selection__rendered { + line-height: 40px; +} +.ant-select-auto-complete.ant-select-lg .ant-input { + padding-top: 6px; + padding-bottom: 6px; + height: 40px; +} +.ant-select-auto-complete.ant-select-sm .ant-select-selection__rendered { + line-height: 24px; +} +.ant-select-auto-complete.ant-select-sm .ant-input { + padding-top: 1px; + padding-bottom: 1px; + height: 24px; +} +.ant-avatar { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; + display: inline-block; + text-align: center; + background: #ccc; + color: #fff; + white-space: nowrap; + position: relative; + overflow: hidden; + vertical-align: middle; + width: 32px; + height: 32px; + line-height: 32px; + border-radius: 16px; +} +.ant-avatar-image { + background: transparent; +} +.ant-avatar > * { + line-height: 32px; +} +.ant-avatar.ant-avatar-icon { + font-size: 18px; +} +.ant-avatar-lg { + width: 40px; + height: 40px; + line-height: 40px; + border-radius: 20px; +} +.ant-avatar-lg > * { + line-height: 40px; +} +.ant-avatar-lg.ant-avatar-icon { + font-size: 24px; +} +.ant-avatar-sm { + width: 24px; + height: 24px; + line-height: 24px; + border-radius: 12px; +} +.ant-avatar-sm > * { + line-height: 24px; +} +.ant-avatar-sm.ant-avatar-icon { + font-size: 14px; +} +.ant-avatar-square { + border-radius: 4px; +} +.ant-avatar > img { + width: 100%; + height: 100%; + display: block; +} +.ant-back-top { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; + z-index: 10; + position: fixed; + right: 100px; + bottom: 50px; + height: 40px; + width: 40px; + cursor: pointer; +} +.ant-back-top-content { + height: 40px; + width: 40px; + border-radius: 20px; + background-color: rgba(0, 0, 0, 0.45); + color: #fff; + text-align: center; + transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); + overflow: hidden; +} +.ant-back-top-content:hover { + background-color: #54657e; + transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); +} +.ant-back-top-icon { + margin: 12px auto; + width: 14px; + height: 16px; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAoCAYAAACWwljjAAAABGdBTUEAALGPC/xhBQAAAbtJREFUWAntmMtKw0AUhhMvS5cuxILgQlRUpIggIoKIIoigG1eC+AA+jo+i6FIXBfeuXIgoeKVeitVWJX5HWhhDksnUpp3FDPyZk3Nm5nycmZKkXhAEOXSA3lG7muTeRzmfy6HneUvIhnYkQK+Q9NhAA0Opg0vBEhjBKHiyb8iGMyQMOYuK41BcBSypAL+MYXSKjtFAW7EAGEO3qN4uMQbbAkXiSfRQJ1H6a+yhlkKRcAoVFYiweYNjtCVQJJpBz2GCiPt7fBOZQpFgDpUikse5HgnkM4Fi4QX0Fpc5wf9EbLqpUCy4jMoJSXWhFwbMNgWKhVbRhy5jirhs9fy/oFhgHVVTJEs7RLZ8sSEoJm6iz7SZDMbJ+/OKERQTttCXQRLToRUmrKWCYuA2+jbN0MB4OQobYShfdTCgn/sL1K36M7TLrN3n+758aPy2rrpR6+/od5E8tf/A1uLS9aId5T7J3CNYihkQ4D9PiMdMC7mp4rjB9kjFjZp8BlnVHJBuO1yFXIV0FdDF3RlyFdJVQBdv5AxVdIsq8apiZ2PyYO1EVykesGfZEESsCkweyR8MUW+V8uJ1gkYipmpdP1pm2aJVPEGzAAAAAElFTkSuQmCC) 100%/100% no-repeat; +} +@media screen and (max-width: 768px) { + .ant-back-top { + right: 60px; + } +} +@media screen and (max-width: 480px) { + .ant-back-top { + right: 20px; + } +} +.ant-badge { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; + position: relative; + display: inline-block; + line-height: 1; + vertical-align: middle; +} +.ant-badge-count { + position: absolute; + transform: translateX(-50%); + top: -10px; + height: 20px; + border-radius: 10px; + min-width: 20px; + background: #f5222d; + color: #fff; + line-height: 20px; + text-align: center; + padding: 0 6px; + font-size: 12px; + font-weight: normal; + white-space: nowrap; + transform-origin: -10% center; + box-shadow: 0 0 0 1px #fff; +} +.ant-badge-count a, +.ant-badge-count a:hover { + color: #fff; +} +.ant-badge-multiple-words { + padding: 0 8px; +} +.ant-badge-dot { + position: absolute; + transform: translateX(-50%); + transform-origin: 0 center; + top: -3px; + height: 6px; + width: 6px; + border-radius: 100%; + background: #f5222d; + z-index: 10; + box-shadow: 0 0 0 1px #fff; +} +.ant-badge-status { + line-height: inherit; + vertical-align: baseline; +} +.ant-badge-status-dot { + width: 6px; + height: 6px; + display: inline-block; + border-radius: 50%; + vertical-align: middle; + position: relative; + top: -1px; +} +.ant-badge-status-success { + background-color: #52c41a; +} +.ant-badge-status-processing { + background-color: #1890ff; + position: relative; +} +.ant-badge-status-processing:after { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + border-radius: 50%; + border: 1px solid #1890ff; + content: ''; + animation: antStatusProcessing 1.2s infinite ease-in-out; +} +.ant-badge-status-default { + background-color: #d9d9d9; +} +.ant-badge-status-error { + background-color: #f5222d; +} +.ant-badge-status-warning { + background-color: #faad14; +} +.ant-badge-status-text { + color: #54657e; + font-size: 14px; + margin-left: 8px; +} +.ant-badge-zoom-appear, +.ant-badge-zoom-enter { + animation: antZoomBadgeIn 0.3s cubic-bezier(0.12, 0.4, 0.29, 1.46); + animation-fill-mode: both; +} +.ant-badge-zoom-leave { + animation: antZoomBadgeOut 0.3s cubic-bezier(0.71, -0.46, 0.88, 0.6); + animation-fill-mode: both; +} +.ant-badge-not-a-wrapper .ant-scroll-number { + top: auto; + display: block; + position: relative; + transform: none !important; +} +@keyframes antStatusProcessing { + 0% { + transform: scale(0.8); + opacity: 0.5; + } + 100% { + transform: scale(2.4); + opacity: 0; + } +} +.ant-scroll-number { + overflow: hidden; +} +.ant-scroll-number-only { + display: inline-block; + transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); + height: 20px; +} +.ant-scroll-number-only > p { + height: 20px; + margin: 0; +} +@keyframes antZoomBadgeIn { + 0% { + opacity: 0; + transform: scale(0) translateX(-50%); + } + 100% { + transform: scale(1) translateX(-50%); + } +} +@keyframes antZoomBadgeOut { + 0% { + transform: scale(1) translateX(-50%); + } + 100% { + opacity: 0; + transform: scale(0) translateX(-50%); + } +} +.ant-breadcrumb { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; + color: rgba(0, 0, 0, 0.45); + font-size: 14px; +} +.ant-breadcrumb .anticon { + font-size: 12px; +} +.ant-breadcrumb a { + color: rgba(0, 0, 0, 0.45); + transition: color .3s; +} +.ant-breadcrumb a:hover { + color: #40a9ff; +} +.ant-breadcrumb > span:last-child { + color: #54657e; +} +.ant-breadcrumb > span:last-child .ant-breadcrumb-separator { + display: none; +} +.ant-breadcrumb-separator { + margin: 0 8px; + color: rgba(0, 0, 0, 0.45); +} +.ant-breadcrumb-link > .anticon + span { + margin-left: 4px; +} +.ant-btn { + line-height: 1.5; + display: inline-block; + font-weight: 400; + text-align: center; + touch-action: manipulation; + cursor: pointer; + background-image: none; + border: 1px solid transparent; + white-space: nowrap; + padding: 0 15px; + font-size: 14px; + border-radius: 4px; + height: 32px; + user-select: none; + transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); + position: relative; + color: #54657e; + background-color: #fff; + border-color: #d9d9d9; +} +.ant-btn > .anticon { + line-height: 1; +} +.ant-btn, +.ant-btn:active, +.ant-btn:focus { + outline: 0; +} +.ant-btn:not([disabled]):hover { + text-decoration: none; +} +.ant-btn:not([disabled]):active { + outline: 0; + transition: none; +} +.ant-btn.disabled, +.ant-btn[disabled] { + cursor: not-allowed; +} +.ant-btn.disabled > *, +.ant-btn[disabled] > * { + pointer-events: none; +} +.ant-btn-lg { + padding: 0 15px; + font-size: 16px; + border-radius: 4px; + height: 40px; +} +.ant-btn-sm { + padding: 0 7px; + font-size: 14px; + border-radius: 4px; + height: 24px; +} +.ant-btn > a:only-child { + color: currentColor; +} +.ant-btn > a:only-child:after { + content: ''; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: transparent; +} +.ant-btn:hover, +.ant-btn:focus { + color: #40a9ff; + background-color: #fff; + border-color: #40a9ff; +} +.ant-btn:hover > a:only-child, +.ant-btn:focus > a:only-child { + color: currentColor; +} +.ant-btn:hover > a:only-child:after, +.ant-btn:focus > a:only-child:after { + content: ''; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: transparent; +} +.ant-btn:active, +.ant-btn.active { + color: #096dd9; + background-color: #fff; + border-color: #096dd9; +} +.ant-btn:active > a:only-child, +.ant-btn.active > a:only-child { + color: currentColor; +} +.ant-btn:active > a:only-child:after, +.ant-btn.active > a:only-child:after { + content: ''; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: transparent; +} +.ant-btn.disabled, +.ant-btn[disabled], +.ant-btn.disabled:hover, +.ant-btn[disabled]:hover, +.ant-btn.disabled:focus, +.ant-btn[disabled]:focus, +.ant-btn.disabled:active, +.ant-btn[disabled]:active, +.ant-btn.disabled.active, +.ant-btn[disabled].active { + color: rgba(0, 0, 0, 0.25); + background-color: #f5f5f5; + border-color: #d9d9d9; +} +.ant-btn.disabled > a:only-child, +.ant-btn[disabled] > a:only-child, +.ant-btn.disabled:hover > a:only-child, +.ant-btn[disabled]:hover > a:only-child, +.ant-btn.disabled:focus > a:only-child, +.ant-btn[disabled]:focus > a:only-child, +.ant-btn.disabled:active > a:only-child, +.ant-btn[disabled]:active > a:only-child, +.ant-btn.disabled.active > a:only-child, +.ant-btn[disabled].active > a:only-child { + color: currentColor; +} +.ant-btn.disabled > a:only-child:after, +.ant-btn[disabled] > a:only-child:after, +.ant-btn.disabled:hover > a:only-child:after, +.ant-btn[disabled]:hover > a:only-child:after, +.ant-btn.disabled:focus > a:only-child:after, +.ant-btn[disabled]:focus > a:only-child:after, +.ant-btn.disabled:active > a:only-child:after, +.ant-btn[disabled]:active > a:only-child:after, +.ant-btn.disabled.active > a:only-child:after, +.ant-btn[disabled].active > a:only-child:after { + content: ''; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: transparent; +} +.ant-btn:hover, +.ant-btn:focus, +.ant-btn:active, +.ant-btn.active { + background: #fff; +} +.ant-btn > i, +.ant-btn > span { + pointer-events: none; +} +.ant-btn-primary { + color: #fff; + background-color: #1890ff; + border-color: #1890ff; +} +.ant-btn-primary > a:only-child { + color: currentColor; +} +.ant-btn-primary > a:only-child:after { + content: ''; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: transparent; +} +.ant-btn-primary:hover, +.ant-btn-primary:focus { + color: #fff; + background-color: #40a9ff; + border-color: #40a9ff; +} +.ant-btn-primary:hover > a:only-child, +.ant-btn-primary:focus > a:only-child { + color: currentColor; +} +.ant-btn-primary:hover > a:only-child:after, +.ant-btn-primary:focus > a:only-child:after { + content: ''; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: transparent; +} +.ant-btn-primary:active, +.ant-btn-primary.active { + color: #fff; + background-color: #096dd9; + border-color: #096dd9; +} +.ant-btn-primary:active > a:only-child, +.ant-btn-primary.active > a:only-child { + color: currentColor; +} +.ant-btn-primary:active > a:only-child:after, +.ant-btn-primary.active > a:only-child:after { + content: ''; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: transparent; +} +.ant-btn-primary.disabled, +.ant-btn-primary[disabled], +.ant-btn-primary.disabled:hover, +.ant-btn-primary[disabled]:hover, +.ant-btn-primary.disabled:focus, +.ant-btn-primary[disabled]:focus, +.ant-btn-primary.disabled:active, +.ant-btn-primary[disabled]:active, +.ant-btn-primary.disabled.active, +.ant-btn-primary[disabled].active { + color: rgba(0, 0, 0, 0.25); + background-color: #f5f5f5; + border-color: #d9d9d9; +} +.ant-btn-primary.disabled > a:only-child, +.ant-btn-primary[disabled] > a:only-child, +.ant-btn-primary.disabled:hover > a:only-child, +.ant-btn-primary[disabled]:hover > a:only-child, +.ant-btn-primary.disabled:focus > a:only-child, +.ant-btn-primary[disabled]:focus > a:only-child, +.ant-btn-primary.disabled:active > a:only-child, +.ant-btn-primary[disabled]:active > a:only-child, +.ant-btn-primary.disabled.active > a:only-child, +.ant-btn-primary[disabled].active > a:only-child { + color: currentColor; +} +.ant-btn-primary.disabled > a:only-child:after, +.ant-btn-primary[disabled] > a:only-child:after, +.ant-btn-primary.disabled:hover > a:only-child:after, +.ant-btn-primary[disabled]:hover > a:only-child:after, +.ant-btn-primary.disabled:focus > a:only-child:after, +.ant-btn-primary[disabled]:focus > a:only-child:after, +.ant-btn-primary.disabled:active > a:only-child:after, +.ant-btn-primary[disabled]:active > a:only-child:after, +.ant-btn-primary.disabled.active > a:only-child:after, +.ant-btn-primary[disabled].active > a:only-child:after { + content: ''; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: transparent; +} +.ant-btn-group .ant-btn-primary:not(:first-child):not(:last-child) { + border-right-color: #40a9ff; + border-left-color: #40a9ff; +} +.ant-btn-group .ant-btn-primary:not(:first-child):not(:last-child):disabled { + border-color: #d9d9d9; +} +.ant-btn-group .ant-btn-primary:first-child:not(:last-child) { + border-right-color: #40a9ff; +} +.ant-btn-group .ant-btn-primary:first-child:not(:last-child)[disabled] { + border-right-color: #d9d9d9; +} +.ant-btn-group .ant-btn-primary:last-child:not(:first-child), +.ant-btn-group .ant-btn-primary + .ant-btn-primary { + border-left-color: #40a9ff; +} +.ant-btn-group .ant-btn-primary:last-child:not(:first-child)[disabled], +.ant-btn-group .ant-btn-primary + .ant-btn-primary[disabled] { + border-left-color: #d9d9d9; +} +.ant-btn-ghost { + color: #54657e; + background-color: transparent; + border-color: #d9d9d9; +} +.ant-btn-ghost > a:only-child { + color: currentColor; +} +.ant-btn-ghost > a:only-child:after { + content: ''; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: transparent; +} +.ant-btn-ghost:hover, +.ant-btn-ghost:focus { + color: #40a9ff; + background-color: transparent; + border-color: #40a9ff; +} +.ant-btn-ghost:hover > a:only-child, +.ant-btn-ghost:focus > a:only-child { + color: currentColor; +} +.ant-btn-ghost:hover > a:only-child:after, +.ant-btn-ghost:focus > a:only-child:after { + content: ''; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: transparent; +} +.ant-btn-ghost:active, +.ant-btn-ghost.active { + color: #096dd9; + background-color: transparent; + border-color: #096dd9; +} +.ant-btn-ghost:active > a:only-child, +.ant-btn-ghost.active > a:only-child { + color: currentColor; +} +.ant-btn-ghost:active > a:only-child:after, +.ant-btn-ghost.active > a:only-child:after { + content: ''; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: transparent; +} +.ant-btn-ghost.disabled, +.ant-btn-ghost[disabled], +.ant-btn-ghost.disabled:hover, +.ant-btn-ghost[disabled]:hover, +.ant-btn-ghost.disabled:focus, +.ant-btn-ghost[disabled]:focus, +.ant-btn-ghost.disabled:active, +.ant-btn-ghost[disabled]:active, +.ant-btn-ghost.disabled.active, +.ant-btn-ghost[disabled].active { + color: rgba(0, 0, 0, 0.25); + background-color: #f5f5f5; + border-color: #d9d9d9; +} +.ant-btn-ghost.disabled > a:only-child, +.ant-btn-ghost[disabled] > a:only-child, +.ant-btn-ghost.disabled:hover > a:only-child, +.ant-btn-ghost[disabled]:hover > a:only-child, +.ant-btn-ghost.disabled:focus > a:only-child, +.ant-btn-ghost[disabled]:focus > a:only-child, +.ant-btn-ghost.disabled:active > a:only-child, +.ant-btn-ghost[disabled]:active > a:only-child, +.ant-btn-ghost.disabled.active > a:only-child, +.ant-btn-ghost[disabled].active > a:only-child { + color: currentColor; +} +.ant-btn-ghost.disabled > a:only-child:after, +.ant-btn-ghost[disabled] > a:only-child:after, +.ant-btn-ghost.disabled:hover > a:only-child:after, +.ant-btn-ghost[disabled]:hover > a:only-child:after, +.ant-btn-ghost.disabled:focus > a:only-child:after, +.ant-btn-ghost[disabled]:focus > a:only-child:after, +.ant-btn-ghost.disabled:active > a:only-child:after, +.ant-btn-ghost[disabled]:active > a:only-child:after, +.ant-btn-ghost.disabled.active > a:only-child:after, +.ant-btn-ghost[disabled].active > a:only-child:after { + content: ''; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: transparent; +} +.ant-btn-dashed { + color: #54657e; + background-color: #fff; + border-color: #d9d9d9; + border-style: dashed; +} +.ant-btn-dashed > a:only-child { + color: currentColor; +} +.ant-btn-dashed > a:only-child:after { + content: ''; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: transparent; +} +.ant-btn-dashed:hover, +.ant-btn-dashed:focus { + color: #40a9ff; + background-color: #fff; + border-color: #40a9ff; +} +.ant-btn-dashed:hover > a:only-child, +.ant-btn-dashed:focus > a:only-child { + color: currentColor; +} +.ant-btn-dashed:hover > a:only-child:after, +.ant-btn-dashed:focus > a:only-child:after { + content: ''; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: transparent; +} +.ant-btn-dashed:active, +.ant-btn-dashed.active { + color: #096dd9; + background-color: #fff; + border-color: #096dd9; +} +.ant-btn-dashed:active > a:only-child, +.ant-btn-dashed.active > a:only-child { + color: currentColor; +} +.ant-btn-dashed:active > a:only-child:after, +.ant-btn-dashed.active > a:only-child:after { + content: ''; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: transparent; +} +.ant-btn-dashed.disabled, +.ant-btn-dashed[disabled], +.ant-btn-dashed.disabled:hover, +.ant-btn-dashed[disabled]:hover, +.ant-btn-dashed.disabled:focus, +.ant-btn-dashed[disabled]:focus, +.ant-btn-dashed.disabled:active, +.ant-btn-dashed[disabled]:active, +.ant-btn-dashed.disabled.active, +.ant-btn-dashed[disabled].active { + color: rgba(0, 0, 0, 0.25); + background-color: #f5f5f5; + border-color: #d9d9d9; +} +.ant-btn-dashed.disabled > a:only-child, +.ant-btn-dashed[disabled] > a:only-child, +.ant-btn-dashed.disabled:hover > a:only-child, +.ant-btn-dashed[disabled]:hover > a:only-child, +.ant-btn-dashed.disabled:focus > a:only-child, +.ant-btn-dashed[disabled]:focus > a:only-child, +.ant-btn-dashed.disabled:active > a:only-child, +.ant-btn-dashed[disabled]:active > a:only-child, +.ant-btn-dashed.disabled.active > a:only-child, +.ant-btn-dashed[disabled].active > a:only-child { + color: currentColor; +} +.ant-btn-dashed.disabled > a:only-child:after, +.ant-btn-dashed[disabled] > a:only-child:after, +.ant-btn-dashed.disabled:hover > a:only-child:after, +.ant-btn-dashed[disabled]:hover > a:only-child:after, +.ant-btn-dashed.disabled:focus > a:only-child:after, +.ant-btn-dashed[disabled]:focus > a:only-child:after, +.ant-btn-dashed.disabled:active > a:only-child:after, +.ant-btn-dashed[disabled]:active > a:only-child:after, +.ant-btn-dashed.disabled.active > a:only-child:after, +.ant-btn-dashed[disabled].active > a:only-child:after { + content: ''; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: transparent; +} +.ant-btn-danger { + color: #f5222d; + background-color: #f5f5f5; + border-color: #d9d9d9; +} +.ant-btn-danger > a:only-child { + color: currentColor; +} +.ant-btn-danger > a:only-child:after { + content: ''; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: transparent; +} +.ant-btn-danger:hover { + color: #fff; + background-color: #ff4d4f; + border-color: #ff4d4f; +} +.ant-btn-danger:hover > a:only-child { + color: currentColor; +} +.ant-btn-danger:hover > a:only-child:after { + content: ''; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: transparent; +} +.ant-btn-danger:focus { + color: #ff4d4f; + background-color: #fff; + border-color: #ff4d4f; +} +.ant-btn-danger:focus > a:only-child { + color: currentColor; +} +.ant-btn-danger:focus > a:only-child:after { + content: ''; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: transparent; +} +.ant-btn-danger:active, +.ant-btn-danger.active { + color: #fff; + background-color: #cf1322; + border-color: #cf1322; +} +.ant-btn-danger:active > a:only-child, +.ant-btn-danger.active > a:only-child { + color: currentColor; +} +.ant-btn-danger:active > a:only-child:after, +.ant-btn-danger.active > a:only-child:after { + content: ''; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: transparent; +} +.ant-btn-danger.disabled, +.ant-btn-danger[disabled], +.ant-btn-danger.disabled:hover, +.ant-btn-danger[disabled]:hover, +.ant-btn-danger.disabled:focus, +.ant-btn-danger[disabled]:focus, +.ant-btn-danger.disabled:active, +.ant-btn-danger[disabled]:active, +.ant-btn-danger.disabled.active, +.ant-btn-danger[disabled].active { + color: rgba(0, 0, 0, 0.25); + background-color: #f5f5f5; + border-color: #d9d9d9; +} +.ant-btn-danger.disabled > a:only-child, +.ant-btn-danger[disabled] > a:only-child, +.ant-btn-danger.disabled:hover > a:only-child, +.ant-btn-danger[disabled]:hover > a:only-child, +.ant-btn-danger.disabled:focus > a:only-child, +.ant-btn-danger[disabled]:focus > a:only-child, +.ant-btn-danger.disabled:active > a:only-child, +.ant-btn-danger[disabled]:active > a:only-child, +.ant-btn-danger.disabled.active > a:only-child, +.ant-btn-danger[disabled].active > a:only-child { + color: currentColor; +} +.ant-btn-danger.disabled > a:only-child:after, +.ant-btn-danger[disabled] > a:only-child:after, +.ant-btn-danger.disabled:hover > a:only-child:after, +.ant-btn-danger[disabled]:hover > a:only-child:after, +.ant-btn-danger.disabled:focus > a:only-child:after, +.ant-btn-danger[disabled]:focus > a:only-child:after, +.ant-btn-danger.disabled:active > a:only-child:after, +.ant-btn-danger[disabled]:active > a:only-child:after, +.ant-btn-danger.disabled.active > a:only-child:after, +.ant-btn-danger[disabled].active > a:only-child:after { + content: ''; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: transparent; +} +.ant-btn-circle, +.ant-btn-circle-outline { + width: 32px; + padding: 0; + font-size: 16px; + border-radius: 50%; + height: 32px; +} +.ant-btn-circle.ant-btn-lg, +.ant-btn-circle-outline.ant-btn-lg { + width: 40px; + padding: 0; + font-size: 18px; + border-radius: 50%; + height: 40px; +} +.ant-btn-circle.ant-btn-sm, +.ant-btn-circle-outline.ant-btn-sm { + width: 24px; + padding: 0; + font-size: 14px; + border-radius: 50%; + height: 24px; +} +.ant-btn:before { + position: absolute; + top: -1px; + left: -1px; + bottom: -1px; + right: -1px; + background: #fff; + opacity: 0.35; + content: ''; + border-radius: inherit; + z-index: 1; + transition: opacity .2s; + pointer-events: none; + display: none; +} +.ant-btn .anticon { + transition: margin-left 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); +} +.ant-btn.ant-btn-loading:before { + display: block; +} +.ant-btn.ant-btn-loading:not(.ant-btn-circle):not(.ant-btn-circle-outline):not(.ant-btn-icon-only) { + padding-left: 29px; + pointer-events: none; + position: relative; +} +.ant-btn.ant-btn-loading:not(.ant-btn-circle):not(.ant-btn-circle-outline):not(.ant-btn-icon-only) .anticon { + margin-left: -14px; +} +.ant-btn-sm.ant-btn-loading:not(.ant-btn-circle):not(.ant-btn-circle-outline):not(.ant-btn-icon-only) { + padding-left: 24px; +} +.ant-btn-sm.ant-btn-loading:not(.ant-btn-circle):not(.ant-btn-circle-outline):not(.ant-btn-icon-only) .anticon { + margin-left: -17px; +} +.ant-btn-group { + position: relative; + display: inline-block; +} +.ant-btn-group > .ant-btn { + position: relative; + line-height: 30px; +} +.ant-btn-group > .ant-btn:hover, +.ant-btn-group > .ant-btn:focus, +.ant-btn-group > .ant-btn:active, +.ant-btn-group > .ant-btn.active { + z-index: 2; +} +.ant-btn-group > .ant-btn:disabled { + z-index: 0; +} +.ant-btn-group-lg > .ant-btn { + padding: 0 15px; + font-size: 16px; + border-radius: 4px; + height: 40px; + line-height: 38px; +} +.ant-btn-group-sm > .ant-btn { + padding: 0 7px; + font-size: 14px; + border-radius: 4px; + height: 24px; + line-height: 22px; +} +.ant-btn-group-sm > .ant-btn > .anticon { + font-size: 14px; +} +.ant-btn-group .ant-btn + .ant-btn, +.ant-btn + .ant-btn-group, +.ant-btn-group span + .ant-btn, +.ant-btn-group .ant-btn + span, +.ant-btn-group + .ant-btn, +.ant-btn-group + .ant-btn-group { + margin-left: -1px; +} +.ant-btn-group .ant-btn:not(:first-child):not(:last-child) { + border-radius: 0; +} +.ant-btn-group > .ant-btn:first-child, +.ant-btn-group > span:first-child > .ant-btn { + margin-left: 0; +} +.ant-btn-group > .ant-btn:first-child:not(:last-child), +.ant-btn-group > span:first-child:not(:last-child) > .ant-btn { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.ant-btn-group > .ant-btn:last-child:not(:first-child), +.ant-btn-group > span:last-child:not(:first-child) > .ant-btn { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.ant-btn-group > .ant-btn-group { + float: left; +} +.ant-btn-group > .ant-btn-group:not(:first-child):not(:last-child) > .ant-btn { + border-radius: 0; +} +.ant-btn-group > .ant-btn-group:first-child:not(:last-child) > .ant-btn:last-child { + border-bottom-right-radius: 0; + border-top-right-radius: 0; + padding-right: 8px; +} +.ant-btn-group > .ant-btn-group:last-child:not(:first-child) > .ant-btn:first-child { + border-bottom-left-radius: 0; + border-top-left-radius: 0; + padding-left: 8px; +} +.ant-btn:not(.ant-btn-circle):not(.ant-btn-circle-outline).ant-btn-icon-only { + padding-left: 8px; + padding-right: 8px; +} +.ant-btn:focus > span, +.ant-btn:active > span { + position: relative; +} +.ant-btn > .anticon + span, +.ant-btn > span + .anticon { + margin-left: 8px; +} +.ant-btn-clicked:after { + content: ''; + position: absolute; + top: -1px; + left: -1px; + bottom: -1px; + right: -1px; + border-radius: inherit; + border: 0 solid #1890ff; + opacity: 0.4; + animation: buttonEffect .4s; + display: block; +} +.ant-btn-danger.ant-btn-clicked:after { + border-color: #f5222d; +} +.ant-btn-background-ghost { + background: transparent !important; + border-color: #fff; + color: #fff; +} +.ant-btn-background-ghost.ant-btn-primary { + color: #1890ff; + background-color: transparent; + border-color: #1890ff; +} +.ant-btn-background-ghost.ant-btn-primary > a:only-child { + color: currentColor; +} +.ant-btn-background-ghost.ant-btn-primary > a:only-child:after { + content: ''; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: transparent; +} +.ant-btn-background-ghost.ant-btn-primary:hover, +.ant-btn-background-ghost.ant-btn-primary:focus { + color: #40a9ff; + background-color: transparent; + border-color: #40a9ff; +} +.ant-btn-background-ghost.ant-btn-primary:hover > a:only-child, +.ant-btn-background-ghost.ant-btn-primary:focus > a:only-child { + color: currentColor; +} +.ant-btn-background-ghost.ant-btn-primary:hover > a:only-child:after, +.ant-btn-background-ghost.ant-btn-primary:focus > a:only-child:after { + content: ''; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: transparent; +} +.ant-btn-background-ghost.ant-btn-primary:active, +.ant-btn-background-ghost.ant-btn-primary.active { + color: #096dd9; + background-color: transparent; + border-color: #096dd9; +} +.ant-btn-background-ghost.ant-btn-primary:active > a:only-child, +.ant-btn-background-ghost.ant-btn-primary.active > a:only-child { + color: currentColor; +} +.ant-btn-background-ghost.ant-btn-primary:active > a:only-child:after, +.ant-btn-background-ghost.ant-btn-primary.active > a:only-child:after { + content: ''; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: transparent; +} +.ant-btn-background-ghost.ant-btn-primary.disabled, +.ant-btn-background-ghost.ant-btn-primary[disabled], +.ant-btn-background-ghost.ant-btn-primary.disabled:hover, +.ant-btn-background-ghost.ant-btn-primary[disabled]:hover, +.ant-btn-background-ghost.ant-btn-primary.disabled:focus, +.ant-btn-background-ghost.ant-btn-primary[disabled]:focus, +.ant-btn-background-ghost.ant-btn-primary.disabled:active, +.ant-btn-background-ghost.ant-btn-primary[disabled]:active, +.ant-btn-background-ghost.ant-btn-primary.disabled.active, +.ant-btn-background-ghost.ant-btn-primary[disabled].active { + color: rgba(0, 0, 0, 0.25); + background-color: #f5f5f5; + border-color: #d9d9d9; +} +.ant-btn-background-ghost.ant-btn-primary.disabled > a:only-child, +.ant-btn-background-ghost.ant-btn-primary[disabled] > a:only-child, +.ant-btn-background-ghost.ant-btn-primary.disabled:hover > a:only-child, +.ant-btn-background-ghost.ant-btn-primary[disabled]:hover > a:only-child, +.ant-btn-background-ghost.ant-btn-primary.disabled:focus > a:only-child, +.ant-btn-background-ghost.ant-btn-primary[disabled]:focus > a:only-child, +.ant-btn-background-ghost.ant-btn-primary.disabled:active > a:only-child, +.ant-btn-background-ghost.ant-btn-primary[disabled]:active > a:only-child, +.ant-btn-background-ghost.ant-btn-primary.disabled.active > a:only-child, +.ant-btn-background-ghost.ant-btn-primary[disabled].active > a:only-child { + color: currentColor; +} +.ant-btn-background-ghost.ant-btn-primary.disabled > a:only-child:after, +.ant-btn-background-ghost.ant-btn-primary[disabled] > a:only-child:after, +.ant-btn-background-ghost.ant-btn-primary.disabled:hover > a:only-child:after, +.ant-btn-background-ghost.ant-btn-primary[disabled]:hover > a:only-child:after, +.ant-btn-background-ghost.ant-btn-primary.disabled:focus > a:only-child:after, +.ant-btn-background-ghost.ant-btn-primary[disabled]:focus > a:only-child:after, +.ant-btn-background-ghost.ant-btn-primary.disabled:active > a:only-child:after, +.ant-btn-background-ghost.ant-btn-primary[disabled]:active > a:only-child:after, +.ant-btn-background-ghost.ant-btn-primary.disabled.active > a:only-child:after, +.ant-btn-background-ghost.ant-btn-primary[disabled].active > a:only-child:after { + content: ''; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: transparent; +} +.ant-btn-background-ghost.ant-btn-danger { + color: #f5222d; + background-color: transparent; + border-color: #f5222d; +} +.ant-btn-background-ghost.ant-btn-danger > a:only-child { + color: currentColor; +} +.ant-btn-background-ghost.ant-btn-danger > a:only-child:after { + content: ''; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: transparent; +} +.ant-btn-background-ghost.ant-btn-danger:hover, +.ant-btn-background-ghost.ant-btn-danger:focus { + color: #ff4d4f; + background-color: transparent; + border-color: #ff4d4f; +} +.ant-btn-background-ghost.ant-btn-danger:hover > a:only-child, +.ant-btn-background-ghost.ant-btn-danger:focus > a:only-child { + color: currentColor; +} +.ant-btn-background-ghost.ant-btn-danger:hover > a:only-child:after, +.ant-btn-background-ghost.ant-btn-danger:focus > a:only-child:after { + content: ''; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: transparent; +} +.ant-btn-background-ghost.ant-btn-danger:active, +.ant-btn-background-ghost.ant-btn-danger.active { + color: #cf1322; + background-color: transparent; + border-color: #cf1322; +} +.ant-btn-background-ghost.ant-btn-danger:active > a:only-child, +.ant-btn-background-ghost.ant-btn-danger.active > a:only-child { + color: currentColor; +} +.ant-btn-background-ghost.ant-btn-danger:active > a:only-child:after, +.ant-btn-background-ghost.ant-btn-danger.active > a:only-child:after { + content: ''; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: transparent; +} +.ant-btn-background-ghost.ant-btn-danger.disabled, +.ant-btn-background-ghost.ant-btn-danger[disabled], +.ant-btn-background-ghost.ant-btn-danger.disabled:hover, +.ant-btn-background-ghost.ant-btn-danger[disabled]:hover, +.ant-btn-background-ghost.ant-btn-danger.disabled:focus, +.ant-btn-background-ghost.ant-btn-danger[disabled]:focus, +.ant-btn-background-ghost.ant-btn-danger.disabled:active, +.ant-btn-background-ghost.ant-btn-danger[disabled]:active, +.ant-btn-background-ghost.ant-btn-danger.disabled.active, +.ant-btn-background-ghost.ant-btn-danger[disabled].active { + color: rgba(0, 0, 0, 0.25); + background-color: #f5f5f5; + border-color: #d9d9d9; +} +.ant-btn-background-ghost.ant-btn-danger.disabled > a:only-child, +.ant-btn-background-ghost.ant-btn-danger[disabled] > a:only-child, +.ant-btn-background-ghost.ant-btn-danger.disabled:hover > a:only-child, +.ant-btn-background-ghost.ant-btn-danger[disabled]:hover > a:only-child, +.ant-btn-background-ghost.ant-btn-danger.disabled:focus > a:only-child, +.ant-btn-background-ghost.ant-btn-danger[disabled]:focus > a:only-child, +.ant-btn-background-ghost.ant-btn-danger.disabled:active > a:only-child, +.ant-btn-background-ghost.ant-btn-danger[disabled]:active > a:only-child, +.ant-btn-background-ghost.ant-btn-danger.disabled.active > a:only-child, +.ant-btn-background-ghost.ant-btn-danger[disabled].active > a:only-child { + color: currentColor; +} +.ant-btn-background-ghost.ant-btn-danger.disabled > a:only-child:after, +.ant-btn-background-ghost.ant-btn-danger[disabled] > a:only-child:after, +.ant-btn-background-ghost.ant-btn-danger.disabled:hover > a:only-child:after, +.ant-btn-background-ghost.ant-btn-danger[disabled]:hover > a:only-child:after, +.ant-btn-background-ghost.ant-btn-danger.disabled:focus > a:only-child:after, +.ant-btn-background-ghost.ant-btn-danger[disabled]:focus > a:only-child:after, +.ant-btn-background-ghost.ant-btn-danger.disabled:active > a:only-child:after, +.ant-btn-background-ghost.ant-btn-danger[disabled]:active > a:only-child:after, +.ant-btn-background-ghost.ant-btn-danger.disabled.active > a:only-child:after, +.ant-btn-background-ghost.ant-btn-danger[disabled].active > a:only-child:after { + content: ''; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: transparent; +} +.ant-btn-two-chinese-chars:first-letter { + letter-spacing: .34em; +} +.ant-btn-two-chinese-chars > * { + letter-spacing: .34em; + margin-right: -0.34em; +} +@keyframes buttonEffect { + to { + opacity: 0; + top: -6px; + left: -6px; + bottom: -6px; + right: -6px; + border-width: 6px; + } +} +a.ant-btn { + line-height: 30px; +} +a.ant-btn-lg { + line-height: 38px; +} +a.ant-btn-sm { + line-height: 22px; +} +.ant-fullcalendar { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; + outline: none; + border-top: 1px solid #d9d9d9; +} +.ant-fullcalendar-month-select { + margin-left: 5px; +} +.ant-fullcalendar-header { + padding: 11px 16px 11px 0; + text-align: right; +} +.ant-fullcalendar-header .ant-select-dropdown { + text-align: left; +} +.ant-fullcalendar-header .ant-radio-group { + margin-left: 8px; + text-align: left; +} +.ant-fullcalendar-header label.ant-radio-button { + height: 22px; + line-height: 20px; + padding: 0 10px; +} +.ant-fullcalendar-date-panel { + position: relative; + outline: none; +} +.ant-fullcalendar-calendar-body { + padding: 8px 12px; +} +.ant-fullcalendar table { + border-collapse: collapse; + max-width: 100%; + background-color: transparent; + width: 100%; + height: 256px; +} +.ant-fullcalendar table, +.ant-fullcalendar th, +.ant-fullcalendar td { + border: 0; +} +.ant-fullcalendar td { + position: relative; +} +.ant-fullcalendar-calendar-table { + border-spacing: 0; + margin-bottom: 0; +} +.ant-fullcalendar-column-header { + line-height: 18px; + padding: 0; + width: 33px; + text-align: center; +} +.ant-fullcalendar-column-header .ant-fullcalendar-column-header-inner { + display: block; + font-weight: normal; +} +.ant-fullcalendar-week-number-header .ant-fullcalendar-column-header-inner { + display: none; +} +.ant-fullcalendar-month, +.ant-fullcalendar-date { + text-align: center; + transition: all .3s; +} +.ant-fullcalendar-value { + display: block; + margin: 0 auto; + color: #54657e; + border-radius: 2px; + width: 24px; + height: 24px; + padding: 0; + background: transparent; + line-height: 24px; + transition: all .3s; +} +.ant-fullcalendar-value:hover { + background: #e6f7ff; + cursor: pointer; +} +.ant-fullcalendar-value:active { + background: #1890ff; + color: #fff; +} +.ant-fullcalendar-month-panel-cell .ant-fullcalendar-value { + width: 48px; +} +.ant-fullcalendar-today .ant-fullcalendar-value, +.ant-fullcalendar-month-panel-current-cell .ant-fullcalendar-value { + box-shadow: 0 0 0 1px #1890ff inset; +} +.ant-fullcalendar-selected-day .ant-fullcalendar-value, +.ant-fullcalendar-month-panel-selected-cell .ant-fullcalendar-value { + background: #1890ff; + color: #fff; +} +.ant-fullcalendar-disabled-cell-first-of-row .ant-fullcalendar-value { + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; +} +.ant-fullcalendar-disabled-cell-last-of-row .ant-fullcalendar-value { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} +.ant-fullcalendar-last-month-cell .ant-fullcalendar-value, +.ant-fullcalendar-next-month-btn-day .ant-fullcalendar-value { + color: rgba(0, 0, 0, 0.25); +} +.ant-fullcalendar-month-panel-table { + table-layout: fixed; + width: 100%; + border-collapse: separate; +} +.ant-fullcalendar-content { + position: absolute; + width: 100%; + left: 0; + bottom: -9px; +} +.ant-fullcalendar-fullscreen { + border-top: 0; +} +.ant-fullcalendar-fullscreen .ant-fullcalendar-table { + table-layout: fixed; +} +.ant-fullcalendar-fullscreen .ant-fullcalendar-header .ant-radio-group { + margin-left: 16px; +} +.ant-fullcalendar-fullscreen .ant-fullcalendar-header label.ant-radio-button { + height: 32px; + line-height: 30px; +} +.ant-fullcalendar-fullscreen .ant-fullcalendar-month, +.ant-fullcalendar-fullscreen .ant-fullcalendar-date { + text-align: left; + margin: 0 4px; + display: block; + color: #54657e; + height: 116px; + padding: 4px 8px; + border-top: 2px solid #e8e8e8; + transition: background .3s; +} +.ant-fullcalendar-fullscreen .ant-fullcalendar-month:hover, +.ant-fullcalendar-fullscreen .ant-fullcalendar-date:hover { + background: #e6f7ff; + cursor: pointer; +} +.ant-fullcalendar-fullscreen .ant-fullcalendar-month:active, +.ant-fullcalendar-fullscreen .ant-fullcalendar-date:active { + background: #bae7ff; +} +.ant-fullcalendar-fullscreen .ant-fullcalendar-column-header { + text-align: right; + padding-right: 12px; + padding-bottom: 5px; +} +.ant-fullcalendar-fullscreen .ant-fullcalendar-value { + text-align: right; + background: transparent; + width: auto; +} +.ant-fullcalendar-fullscreen .ant-fullcalendar-today .ant-fullcalendar-value { + color: #54657e; +} +.ant-fullcalendar-fullscreen .ant-fullcalendar-month-panel-current-cell .ant-fullcalendar-month, +.ant-fullcalendar-fullscreen .ant-fullcalendar-today .ant-fullcalendar-date { + border-top-color: #1890ff; + background: transparent; +} +.ant-fullcalendar-fullscreen .ant-fullcalendar-month-panel-current-cell .ant-fullcalendar-value, +.ant-fullcalendar-fullscreen .ant-fullcalendar-today .ant-fullcalendar-value { + box-shadow: none; +} +.ant-fullcalendar-fullscreen .ant-fullcalendar-month-panel-selected-cell .ant-fullcalendar-month, +.ant-fullcalendar-fullscreen .ant-fullcalendar-selected-day .ant-fullcalendar-date { + background: #e6f7ff; +} +.ant-fullcalendar-fullscreen .ant-fullcalendar-month-panel-selected-cell .ant-fullcalendar-value, +.ant-fullcalendar-fullscreen .ant-fullcalendar-selected-day .ant-fullcalendar-value { + color: #1890ff; +} +.ant-fullcalendar-fullscreen .ant-fullcalendar-last-month-cell .ant-fullcalendar-date, +.ant-fullcalendar-fullscreen .ant-fullcalendar-next-month-btn-day .ant-fullcalendar-date { + color: rgba(0, 0, 0, 0.25); +} +.ant-fullcalendar-fullscreen .ant-fullcalendar-content { + height: 90px; + overflow-y: auto; + position: static; + width: auto; + left: auto; + bottom: auto; +} +.ant-fullcalendar-disabled-cell .ant-fullcalendar-date, +.ant-fullcalendar-disabled-cell .ant-fullcalendar-date:hover { + cursor: not-allowed; +} +.ant-fullcalendar-disabled-cell:not(.ant-fullcalendar-today) .ant-fullcalendar-date, +.ant-fullcalendar-disabled-cell:not(.ant-fullcalendar-today) .ant-fullcalendar-date:hover { + background: transparent; +} +.ant-fullcalendar-disabled-cell .ant-fullcalendar-value { + color: rgba(0, 0, 0, 0.25); + border-radius: 0; + width: auto; + cursor: not-allowed; +} +.ant-card { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; + background: #fff; + border-radius: 2px; + position: relative; + transition: all .3s; +} +.ant-card-hoverable { + cursor: pointer; +} +.ant-card-hoverable:hover { + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.09); + border-color: rgba(0, 0, 0, 0.09); +} +.ant-card-bordered { + border: 1px solid #e8e8e8; +} +.ant-card-head { + background: #fff; + border-bottom: 1px solid #e8e8e8; + padding: 0 24px; + border-radius: 2px 2px 0 0; + zoom: 1; + margin-bottom: -1px; + min-height: 48px; +} +.ant-card-head:before, +.ant-card-head:after { + content: " "; + display: table; +} +.ant-card-head:after { + clear: both; + visibility: hidden; + font-size: 0; + height: 0; +} +.ant-card-head:before, +.ant-card-head:after { + content: " "; + display: table; +} +.ant-card-head:after { + clear: both; + visibility: hidden; + font-size: 0; + height: 0; +} +.ant-card-head-wrapper { + display: flex; +} +.ant-card-head-title { + font-size: 16px; + padding: 16px 0; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + color: rgba(0, 0, 0, 0.85); + font-weight: 500; + display: inline-block; + flex: 1; +} +.ant-card-head .ant-tabs { + margin-bottom: -17px; + clear: both; +} +.ant-card-head .ant-tabs-bar { + border-bottom: 1px solid #e8e8e8; +} +.ant-card-extra { + float: right; + padding: 17.5px 0; + text-align: right; + margin-left: auto; +} +.ant-card-body { + padding: 24px; + zoom: 1; +} +.ant-card-body:before, +.ant-card-body:after { + content: " "; + display: table; +} +.ant-card-body:after { + clear: both; + visibility: hidden; + font-size: 0; + height: 0; +} +.ant-card-body:before, +.ant-card-body:after { + content: " "; + display: table; +} +.ant-card-body:after { + clear: both; + visibility: hidden; + font-size: 0; + height: 0; +} +.ant-card-contain-grid .ant-card-body { + margin: -1px 0 0 -1px; + padding: 0; +} +.ant-card-grid { + border-radius: 0; + border: 0; + box-shadow: 1px 0 0 0 #e8e8e8, 0 1px 0 0 #e8e8e8, 1px 1px 0 0 #e8e8e8, 1px 0 0 0 #e8e8e8 inset, 0 1px 0 0 #e8e8e8 inset; + width: 33.33%; + float: left; + padding: 24px; + transition: all .3s; +} +.ant-card-grid:hover { + position: relative; + z-index: 1; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); +} +.ant-card-contain-tabs .ant-card-head-title { + padding-bottom: 0; + min-height: 32px; +} +.ant-card-contain-tabs .ant-card-extra { + padding-bottom: 0; +} +.ant-card-cover > * { + width: 100%; + display: block; +} +.ant-card-actions { + border-top: 1px solid #e8e8e8; + background: #fafafa; + zoom: 1; + list-style: none; + margin: 0; + padding: 0; +} +.ant-card-actions:before, +.ant-card-actions:after { + content: " "; + display: table; +} +.ant-card-actions:after { + clear: both; + visibility: hidden; + font-size: 0; + height: 0; +} +.ant-card-actions:before, +.ant-card-actions:after { + content: " "; + display: table; +} +.ant-card-actions:after { + clear: both; + visibility: hidden; + font-size: 0; + height: 0; +} +.ant-card-actions > li { + float: left; + text-align: center; + margin: 12px 0; + color: rgba(0, 0, 0, 0.45); +} +.ant-card-actions > li > span { + display: inline-block; + font-size: 14px; + cursor: pointer; + line-height: 22px; + min-width: 32px; + position: relative; +} +.ant-card-actions > li > span:hover { + color: #1890ff; + transition: color .3s; +} +.ant-card-actions > li > span > .anticon { + font-size: 16px; +} +.ant-card-actions > li > span a { + color: rgba(0, 0, 0, 0.45); +} +.ant-card-actions > li > span a:hover { + color: #1890ff; +} +.ant-card-actions > li:not(:last-child) { + border-right: 1px solid #e8e8e8; +} +.ant-card-wider-padding .ant-card-head { + padding: 0 32px; +} +.ant-card-wider-padding .ant-card-body { + padding: 24px 32px; +} +.ant-card-padding-transition .ant-card-head, +.ant-card-padding-transition .ant-card-body { + transition: padding .3s; +} +.ant-card-padding-transition .ant-card-extra { + transition: right .3s; +} +.ant-card-type-inner .ant-card-head { + padding: 0 24px; + background: #fafafa; +} +.ant-card-type-inner .ant-card-head-title { + padding: 12px 0; + font-size: 14px; +} +.ant-card-type-inner .ant-card-body { + padding: 16px 24px; +} +.ant-card-type-inner .ant-card-extra { + padding: 13.5px 0; +} +.ant-card-meta { + margin: -4px 0; + zoom: 1; +} +.ant-card-meta:before, +.ant-card-meta:after { + content: " "; + display: table; +} +.ant-card-meta:after { + clear: both; + visibility: hidden; + font-size: 0; + height: 0; +} +.ant-card-meta:before, +.ant-card-meta:after { + content: " "; + display: table; +} +.ant-card-meta:after { + clear: both; + visibility: hidden; + font-size: 0; + height: 0; +} +.ant-card-meta-avatar { + padding-right: 16px; + float: left; +} +.ant-card-meta-detail { + overflow: hidden; +} +.ant-card-meta-detail > div:not(:last-child) { + margin-bottom: 8px; +} +.ant-card-meta-title { + font-size: 16px; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + color: rgba(0, 0, 0, 0.85); + font-weight: 500; +} +.ant-card-meta-description { + color: rgba(0, 0, 0, 0.45); +} +.ant-card-loading .ant-card-body { + user-select: none; + padding: 0; +} +.ant-card-loading-content { + padding: 24px; +} +.ant-card-loading-content p { + margin: 0; +} +.ant-card-loading-block { + display: inline-block; + margin: 5px 2% 0 0; + height: 14px; + border-radius: 2px; + background: linear-gradient(90deg, rgba(207, 216, 220, 0.2), rgba(207, 216, 220, 0.4), rgba(207, 216, 220, 0.2)); + animation: card-loading 1.4s ease infinite; + background-size: 600% 600%; +} +@keyframes card-loading { + 0%, + 100% { + background-position: 0 50%; + } + 50% { + background-position: 100% 50%; + } +} +.ant-carousel { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; +} +.ant-carousel .slick-slider { + position: relative; + display: block; + box-sizing: border-box; + -webkit-touch-callout: none; + -ms-touch-action: pan-y; + touch-action: pan-y; + -webkit-tap-highlight-color: transparent; +} +.ant-carousel .slick-list { + position: relative; + overflow: hidden; + display: block; + margin: 0; + padding: 0; +} +.ant-carousel .slick-list:focus { + outline: none; +} +.ant-carousel .slick-list.dragging { + cursor: pointer; +} +.ant-carousel .slick-slider .slick-track, +.ant-carousel .slick-slider .slick-list { + transform: translate3d(0, 0, 0); +} +.ant-carousel .slick-track { + position: relative; + left: 0; + top: 0; + display: block; +} +.ant-carousel .slick-track:before, +.ant-carousel .slick-track:after { + content: ""; + display: table; +} +.ant-carousel .slick-track:after { + clear: both; +} +.slick-loading .ant-carousel .slick-track { + visibility: hidden; +} +.ant-carousel .slick-slide { + float: left; + height: 100%; + min-height: 1px; + display: none; +} +[dir="rtl"] .ant-carousel .slick-slide { + float: right; +} +.ant-carousel .slick-slide img { + display: block; +} +.ant-carousel .slick-slide.slick-loading img { + display: none; +} +.ant-carousel .slick-slide.dragging img { + pointer-events: none; +} +.ant-carousel .slick-initialized .slick-slide { + display: block; +} +.ant-carousel .slick-loading .slick-slide { + visibility: hidden; +} +.ant-carousel .slick-vertical .slick-slide { + display: block; + height: auto; + border: 1px solid transparent; +} +.ant-carousel .slick-arrow.slick-hidden { + display: none; +} +.ant-carousel .slick-prev, +.ant-carousel .slick-next { + position: absolute; + display: block; + height: 20px; + width: 20px; + line-height: 0; + font-size: 0; + cursor: pointer; + background: transparent; + color: transparent; + top: 50%; + margin-top: -10px; + padding: 0; + border: 0; + outline: none; +} +.ant-carousel .slick-prev:hover, +.ant-carousel .slick-next:hover, +.ant-carousel .slick-prev:focus, +.ant-carousel .slick-next:focus { + outline: none; + background: transparent; + color: transparent; +} +.ant-carousel .slick-prev:hover:before, +.ant-carousel .slick-next:hover:before, +.ant-carousel .slick-prev:focus:before, +.ant-carousel .slick-next:focus:before { + opacity: 1; +} +.ant-carousel .slick-prev.slick-disabled:before, +.ant-carousel .slick-next.slick-disabled:before { + opacity: 0.25; +} +.ant-carousel .slick-prev { + left: -25px; +} +.ant-carousel .slick-prev:before { + content: "←"; +} +.ant-carousel .slick-next { + right: -25px; +} +.ant-carousel .slick-next:before { + content: "→"; +} +.ant-carousel .slick-dots { + position: absolute; + bottom: 12px; + list-style: none; + display: block; + text-align: center; + margin: 0; + padding: 0; + width: 100%; + height: 3px; +} +.ant-carousel .slick-dots li { + position: relative; + display: inline-block; + vertical-align: top; + text-align: center; + margin: 0 2px; + padding: 0; +} +.ant-carousel .slick-dots li button { + border: 0; + cursor: pointer; + background: #fff; + opacity: 0.3; + display: block; + width: 16px; + height: 3px; + border-radius: 1px; + outline: none; + font-size: 0; + color: transparent; + transition: all .5s; + padding: 0; +} +.ant-carousel .slick-dots li button:hover, +.ant-carousel .slick-dots li button:focus { + opacity: 0.75; +} +.ant-carousel .slick-dots li.slick-active button { + background: #fff; + opacity: 1; + width: 24px; +} +.ant-carousel .slick-dots li.slick-active button:hover, +.ant-carousel .slick-dots li.slick-active button:focus { + opacity: 1; +} +.ant-carousel-vertical .slick-dots { + width: 3px; + bottom: auto; + right: 12px; + top: 50%; + transform: translateY(-50%); + height: auto; +} +.ant-carousel-vertical .slick-dots li { + margin: 0 2px; + vertical-align: baseline; +} +.ant-carousel-vertical .slick-dots li button { + width: 3px; + height: 16px; +} +.ant-carousel-vertical .slick-dots li.slick-active button { + width: 3px; + height: 24px; +} +.ant-cascader { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; +} +.ant-cascader-input.ant-input { + background-color: transparent !important; + cursor: pointer; + width: 100%; + display: block; +} +.ant-cascader-picker { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; + position: relative; + display: inline-block; + cursor: pointer; + background-color: #fff; + border-radius: 4px; + outline: 0; +} +.ant-cascader-picker-with-value .ant-cascader-picker-label { + color: transparent; +} +.ant-cascader-picker-disabled { + cursor: not-allowed; + background: #f5f5f5; + color: rgba(0, 0, 0, 0.25); +} +.ant-cascader-picker-disabled .ant-cascader-input { + cursor: not-allowed; +} +.ant-cascader-picker:focus .ant-cascader-input { + border-color: #40a9ff; + outline: 0; + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); +} +.ant-cascader-picker-label { + position: absolute; + left: 0; + height: 20px; + line-height: 20px; + top: 50%; + margin-top: -10px; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + width: 100%; + padding: 0 12px; +} +.ant-cascader-picker-clear { + opacity: 0; + position: absolute; + right: 12px; + z-index: 2; + background: #fff; + top: 50%; + font-size: 12px; + color: rgba(0, 0, 0, 0.25); + width: 12px; + height: 12px; + margin-top: -6px; + line-height: 12px; + cursor: pointer; + transition: color 0.3s ease, opacity 0.15s ease; +} +.ant-cascader-picker-clear:hover { + color: rgba(0, 0, 0, 0.45); +} +.ant-cascader-picker:hover .ant-cascader-picker-clear { + opacity: 1; +} +.ant-cascader-picker-arrow { + position: absolute; + z-index: 1; + top: 50%; + right: 12px; + width: 12px; + height: 12px; + font-size: 12px; + margin-top: -6px; + line-height: 12px; + color: rgba(0, 0, 0, 0.25); +} +.ant-cascader-picker-arrow:before { + transition: transform .2s; +} +.ant-cascader-picker-arrow.ant-cascader-picker-arrow-expand:before { + transform: rotate(180deg); +} +.ant-cascader-picker-small .ant-cascader-picker-clear, +.ant-cascader-picker-small .ant-cascader-picker-arrow { + right: 8px; +} +.ant-cascader-menus { + font-size: 14px; + background: #fff; + position: absolute; + z-index: 1050; + border-radius: 4px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); + white-space: nowrap; +} +.ant-cascader-menus ul, +.ant-cascader-menus ol { + list-style: none; + margin: 0; + padding: 0; +} +.ant-cascader-menus-empty, +.ant-cascader-menus-hidden { + display: none; +} +.ant-cascader-menus.slide-up-enter.slide-up-enter-active.ant-cascader-menus-placement-bottomLeft, +.ant-cascader-menus.slide-up-appear.slide-up-appear-active.ant-cascader-menus-placement-bottomLeft { + animation-name: antSlideUpIn; +} +.ant-cascader-menus.slide-up-enter.slide-up-enter-active.ant-cascader-menus-placement-topLeft, +.ant-cascader-menus.slide-up-appear.slide-up-appear-active.ant-cascader-menus-placement-topLeft { + animation-name: antSlideDownIn; +} +.ant-cascader-menus.slide-up-leave.slide-up-leave-active.ant-cascader-menus-placement-bottomLeft { + animation-name: antSlideUpOut; +} +.ant-cascader-menus.slide-up-leave.slide-up-leave-active.ant-cascader-menus-placement-topLeft { + animation-name: antSlideDownOut; +} +.ant-cascader-menu { + display: inline-block; + vertical-align: top; + min-width: 111px; + height: 180px; + list-style: none; + margin: 0; + padding: 0; + border-right: 1px solid #e8e8e8; + overflow: auto; +} +.ant-cascader-menu:first-child { + border-radius: 4px 0 0 4px; +} +.ant-cascader-menu:last-child { + border-right-color: transparent; + margin-right: -1px; + border-radius: 0 4px 4px 0; +} +.ant-cascader-menu:only-child { + border-radius: 4px; +} +.ant-cascader-menu-item { + padding: 5px 12px; + line-height: 22px; + cursor: pointer; + white-space: nowrap; + transition: all 0.3s; +} +.ant-cascader-menu-item:hover { + background: #e6f7ff; +} +.ant-cascader-menu-item-disabled { + cursor: not-allowed; + color: rgba(0, 0, 0, 0.25); +} +.ant-cascader-menu-item-disabled:hover { + background: transparent; +} +.ant-cascader-menu-item-active:not(.ant-cascader-menu-item-disabled), +.ant-cascader-menu-item-active:not(.ant-cascader-menu-item-disabled):hover { + background: #f5f5f5; + font-weight: 600; +} +.ant-cascader-menu-item-expand { + position: relative; + padding-right: 24px; +} +.ant-cascader-menu-item-expand:after { + font-family: 'anticon'; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\e61f"; + display: inline-block; + font-size: 12px; + font-size: 8px \9; + transform: scale(0.66666667) rotate(0deg); + color: rgba(0, 0, 0, 0.45); + position: absolute; + right: 12px; +} +:root .ant-cascader-menu-item-expand:after { + font-size: 12px; +} +.ant-cascader-menu-item-loading:after { + font-family: 'anticon'; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\e64d"; + animation: loadingCircle 1s infinite linear; +} +.ant-cascader-menu-item .ant-cascader-menu-item-keyword { + color: #f5222d; +} +@keyframes antCheckboxEffect { + 0% { + transform: scale(1); + opacity: 0.5; + } + 100% { + transform: scale(1.6); + opacity: 0; + } +} +.ant-checkbox { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; + white-space: nowrap; + cursor: pointer; + outline: none; + display: inline-block; + line-height: 1; + position: relative; + vertical-align: middle; + top: -0.09em; +} +.ant-checkbox-wrapper:hover .ant-checkbox-inner, +.ant-checkbox:hover .ant-checkbox-inner, +.ant-checkbox-input:focus + .ant-checkbox-inner { + border-color: #1890ff; +} +.ant-checkbox-checked:after { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + border-radius: 2px; + border: 1px solid #1890ff; + content: ''; + animation: antCheckboxEffect 0.36s ease-in-out; + animation-fill-mode: both; + visibility: hidden; +} +.ant-checkbox:hover:after, +.ant-checkbox-wrapper:hover .ant-checkbox:after { + visibility: visible; +} +.ant-checkbox-inner { + position: relative; + top: 0; + left: 0; + display: block; + width: 16px; + height: 16px; + border: 1px solid #d9d9d9; + border-radius: 2px; + background-color: #fff; + transition: all .3s; +} +.ant-checkbox-inner:after { + transform: rotate(45deg) scale(0); + position: absolute; + left: 4.57142857px; + top: 1.14285714px; + display: table; + width: 5.71428571px; + height: 9.14285714px; + border: 2px solid #fff; + border-top: 0; + border-left: 0; + content: ' '; + transition: all 0.1s cubic-bezier(0.71, -0.46, 0.88, 0.6); +} +.ant-checkbox-input { + position: absolute; + left: 0; + z-index: 1; + cursor: pointer; + opacity: 0; + top: 0; + bottom: 0; + right: 0; + width: 100%; + height: 100%; +} +.ant-checkbox-indeterminate .ant-checkbox-inner:after { + content: ' '; + transform: scale(1); + position: absolute; + left: 2.42857143px; + top: 5.92857143px; + width: 9.14285714px; + height: 1.14285714px; +} +.ant-checkbox-indeterminate.ant-checkbox-disabled .ant-checkbox-inner:after { + border-color: rgba(0, 0, 0, 0.25); +} +.ant-checkbox-checked .ant-checkbox-inner:after { + transform: rotate(45deg) scale(1); + position: absolute; + display: table; + border: 2px solid #fff; + border-top: 0; + border-left: 0; + content: ' '; + transition: all 0.2s cubic-bezier(0.12, 0.4, 0.29, 1.46) 0.1s; +} +.ant-checkbox-checked .ant-checkbox-inner, +.ant-checkbox-indeterminate .ant-checkbox-inner { + background-color: #1890ff; + border-color: #1890ff; +} +.ant-checkbox-disabled { + cursor: not-allowed; +} +.ant-checkbox-disabled.ant-checkbox-checked .ant-checkbox-inner:after { + animation-name: none; + border-color: rgba(0, 0, 0, 0.25); +} +.ant-checkbox-disabled .ant-checkbox-input { + cursor: not-allowed; +} +.ant-checkbox-disabled .ant-checkbox-inner { + border-color: #d9d9d9 !important; + background-color: #f5f5f5; +} +.ant-checkbox-disabled .ant-checkbox-inner:after { + animation-name: none; + border-color: #f5f5f5; +} +.ant-checkbox-disabled + span { + color: rgba(0, 0, 0, 0.25); + cursor: not-allowed; +} +.ant-checkbox-wrapper { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; + line-height: unset; + cursor: pointer; + display: inline-block; +} +.ant-checkbox-wrapper + .ant-checkbox-wrapper { + margin-left: 8px; +} +.ant-checkbox-wrapper + span, +.ant-checkbox + span { + padding-left: 8px; + padding-right: 8px; +} +.ant-checkbox-group { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; + display: inline-block; +} +.ant-checkbox-group-item { + display: inline-block; + margin-right: 8px; +} +.ant-checkbox-group-item:last-child { + margin-right: 0; +} +.ant-checkbox-group-item + .ant-checkbox-group-item { + margin-left: 0; +} +.ant-collapse { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; + background-color: #fafafa; + border-radius: 4px; + border: 1px solid #d9d9d9; + border-bottom: 0; +} +.ant-collapse > .ant-collapse-item { + border-bottom: 1px solid #d9d9d9; +} +.ant-collapse > .ant-collapse-item:last-child, +.ant-collapse > .ant-collapse-item:last-child > .ant-collapse-header { + border-radius: 0 0 4px 4px; +} +.ant-collapse > .ant-collapse-item > .ant-collapse-header { + line-height: 22px; + padding: 12px 0 12px 40px; + color: rgba(0, 0, 0, 0.85); + cursor: pointer; + position: relative; + transition: all .3s; +} +.ant-collapse > .ant-collapse-item > .ant-collapse-header .arrow { + font-style: normal; + vertical-align: baseline; + text-align: center; + text-transform: none; + line-height: 1; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + transform: rotate(0); + font-size: 12px; + position: absolute; + display: inline-block; + line-height: 46px; + vertical-align: top; + transition: transform 0.24s; + top: 0; + left: 16px; +} +.ant-collapse > .ant-collapse-item > .ant-collapse-header .arrow:before { + display: block; + font-family: "anticon" !important; +} +.ant-collapse > .ant-collapse-item > .ant-collapse-header .arrow:before { + content: "\E61F"; +} +.ant-collapse > .ant-collapse-item.ant-collapse-no-arrow > .ant-collapse-header { + padding-left: 12px; +} +.ant-collapse-anim-active { + transition: height 0.2s cubic-bezier(0.215, 0.61, 0.355, 1); +} +.ant-collapse-content { + overflow: hidden; + color: #54657e; + padding: 0 16px; + background-color: #fff; + border-top: 1px solid #d9d9d9; +} +.ant-collapse-content > .ant-collapse-content-box { + padding-top: 16px; + padding-bottom: 16px; +} +.ant-collapse-content-inactive { + display: none; +} +.ant-collapse-item:last-child > .ant-collapse-content { + border-radius: 0 0 4px 4px; +} +.ant-collapse > .ant-collapse-item > .ant-collapse-header[aria-expanded="true"] .arrow { + transform: rotate(90deg); +} +.ant-collapse-borderless { + background-color: #fff; + border: 0; +} +.ant-collapse-borderless > .ant-collapse-item { + border-bottom: 1px solid #d9d9d9; +} +.ant-collapse-borderless > .ant-collapse-item:last-child, +.ant-collapse-borderless > .ant-collapse-item:last-child .ant-collapse-header { + border-radius: 0; +} +.ant-collapse-borderless > .ant-collapse-item > .ant-collapse-content { + background-color: transparent; + border-top: 0; +} +.ant-collapse-borderless > .ant-collapse-item > .ant-collapse-content > .ant-collapse-content-box { + padding-top: 4px; +} +.ant-collapse .ant-collapse-item-disabled > .ant-collapse-header, +.ant-collapse .ant-collapse-item-disabled > .ant-collapse-header > .arrow { + cursor: not-allowed; + color: rgba(0, 0, 0, 0.25); +} +.cdk-overlay-container { + pointer-events: none; + top: 0; + left: 0; + height: 100%; + width: 100%; + position: fixed; + z-index: 1000; +} +.cdk-overlay-backdrop { + top: 0; + bottom: 0; + left: 0; + right: 0; + -webkit-tap-highlight-color: transparent; + transition: opacity 0.4s cubic-bezier(0.25, 0.8, 0.25, 1); + opacity: 0; + position: absolute; + pointer-events: auto; + z-index: 1000; +} +.cdk-overlay-pane { + position: absolute; + pointer-events: auto; + z-index: 1000; +} +.ant-table-td-right-sticky + .ant-table-td-right-sticky { + box-shadow: none; +} +.ant-table-th-right-sticky + .ant-table-th-right-sticky { + box-shadow: none; +} +.ant-table-th-left-sticky, +.ant-table-th-right-sticky, +.ant-table-td-right-sticky, +.ant-table-td-left-sticky { + position: sticky; + z-index: 1; +} +.ant-table-td-left-sticky, +.ant-table-td-right-sticky { + background: #fff; +} +.ant-table-scroll-position-middle .ant-table-th-left-sticky, +.ant-table-scroll-position-middle .ant-table-td-left-sticky { + box-shadow: 6px 0 6px 0px rgba(0, 0, 0, 0.05); +} +.ant-table-scroll-position-middle .ant-table-th-right-sticky, +.ant-table-scroll-position-middle .ant-table-td-right-sticky { + box-shadow: -6px 0 6px 0px rgba(0, 0, 0, 0.05); +} +.ant-table-scroll-position-left .ant-table-th-right-sticky, +.ant-table-scroll-position-left .ant-table-td-right-sticky { + box-shadow: -6px 0 6px 0px rgba(0, 0, 0, 0.05); +} +.ant-table-scroll-position-right .ant-table-th-left-sticky, +.ant-table-scroll-position-right .ant-table-td-left-sticky { + box-shadow: 6px 0 6px 0px rgba(0, 0, 0, 0.05); +} +.ant-table-bordered.ant-table-scroll-position-middle .ant-table-th-left-sticky, +.ant-table-bordered.ant-table-scroll-position-middle .ant-table-td-left-sticky { + border-left: 1px solid #e8e8e8; +} +.ant-table-bordered.ant-table-scroll-position-middle .ant-table-th-right-sticky, +.ant-table-bordered.ant-table-scroll-position-middle .ant-table-td-right-sticky { + border-right: 1px solid #e8e8e8; +} +.ant-table-bordered.ant-table-scroll-position-left .ant-table-th-right-sticky, +.ant-table-bordered.ant-table-scroll-position-left .ant-table-td-right-sticky { + border-right: 1px solid #e8e8e8; +} +.ant-table-bordered.ant-table-scroll-position-right .ant-table-th-left-sticky, +.ant-table-bordered.ant-table-scroll-position-right .ant-table-td-left-sticky { + border-left: 1px solid #e8e8e8; +} +.ant-calendar-picker-container { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; + position: absolute; + z-index: 1050; +} +.ant-calendar-picker-container.slide-up-enter.slide-up-enter-active.ant-calendar-picker-container-placement-topLeft, +.ant-calendar-picker-container.slide-up-enter.slide-up-enter-active.ant-calendar-picker-container-placement-topRight, +.ant-calendar-picker-container.slide-up-appear.slide-up-appear-active.ant-calendar-picker-container-placement-topLeft, +.ant-calendar-picker-container.slide-up-appear.slide-up-appear-active.ant-calendar-picker-container-placement-topRight { + animation-name: antSlideDownIn; +} +.ant-calendar-picker-container.slide-up-enter.slide-up-enter-active.ant-calendar-picker-container-placement-bottomLeft, +.ant-calendar-picker-container.slide-up-enter.slide-up-enter-active.ant-calendar-picker-container-placement-bottomRight, +.ant-calendar-picker-container.slide-up-appear.slide-up-appear-active.ant-calendar-picker-container-placement-bottomLeft, +.ant-calendar-picker-container.slide-up-appear.slide-up-appear-active.ant-calendar-picker-container-placement-bottomRight { + animation-name: antSlideUpIn; +} +.ant-calendar-picker-container.slide-up-leave.slide-up-leave-active.ant-calendar-picker-container-placement-topLeft, +.ant-calendar-picker-container.slide-up-leave.slide-up-leave-active.ant-calendar-picker-container-placement-topRight { + animation-name: antSlideDownOut; +} +.ant-calendar-picker-container.slide-up-leave.slide-up-leave-active.ant-calendar-picker-container-placement-bottomLeft, +.ant-calendar-picker-container.slide-up-leave.slide-up-leave-active.ant-calendar-picker-container-placement-bottomRight { + animation-name: antSlideUpOut; +} +.ant-calendar-picker { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; + position: relative; + display: inline-block; + outline: none; + transition: opacity 0.3s; +} +.ant-calendar-picker-input { + outline: none; + display: block; +} +.ant-calendar-picker:hover .ant-calendar-picker-input:not(.ant-input-disabled) { + border-color: #1890ff; +} +.ant-calendar-picker:focus .ant-calendar-picker-input:not(.ant-input-disabled) { + border-color: #40a9ff; + outline: 0; + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); +} +.ant-calendar-picker-clear, +.ant-calendar-picker-icon { + position: absolute; + width: 14px; + height: 14px; + right: 12px; + top: 50%; + margin-top: -7px; + line-height: 14px; + font-size: 12px; + transition: all .3s; + user-select: none; +} +.ant-calendar-picker-clear { + opacity: 0; + z-index: 1; + color: rgba(0, 0, 0, 0.25); + background: #fff; + pointer-events: none; + cursor: pointer; +} +.ant-calendar-picker-clear:hover { + color: rgba(0, 0, 0, 0.45); +} +.ant-calendar-picker:hover .ant-calendar-picker-clear { + opacity: 1; + pointer-events: auto; +} +.ant-calendar-picker-icon { + color: rgba(0, 0, 0, 0.25); +} +.ant-calendar-picker-icon:after { + content: "\e6bb"; + font-family: "anticon"; + font-size: 14px; + color: rgba(0, 0, 0, 0.25); + display: inline-block; + line-height: 1; +} +.ant-calendar-picker-small .ant-calendar-picker-clear, +.ant-calendar-picker-small .ant-calendar-picker-icon { + right: 8px; +} +.ant-calendar { + position: relative; + outline: none; + width: 280px; + border: 1px solid #fff; + list-style: none; + font-size: 14px; + text-align: left; + background-color: #fff; + border-radius: 4px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); + background-clip: padding-box; + line-height: 1.5; +} +.ant-calendar-input-wrap { + height: 34px; + padding: 6px 10px; + border-bottom: 1px solid #e8e8e8; +} +.ant-calendar-input { + border: 0; + width: 100%; + cursor: auto; + outline: 0; + height: 22px; + color: #54657e; + background: #fff; +} +.ant-calendar-input::-moz-placeholder { + color: #bfbfbf; + opacity: 1; +} +.ant-calendar-input:-ms-input-placeholder { + color: #bfbfbf; +} +.ant-calendar-input::-webkit-input-placeholder { + color: #bfbfbf; +} +.ant-calendar-week-number { + width: 286px; +} +.ant-calendar-week-number-cell { + text-align: center; +} +.ant-calendar-header { + height: 40px; + line-height: 40px; + text-align: center; + user-select: none; + border-bottom: 1px solid #e8e8e8; +} +.ant-calendar-header a:hover { + color: #40a9ff; +} +.ant-calendar-header .ant-calendar-century-select, +.ant-calendar-header .ant-calendar-decade-select, +.ant-calendar-header .ant-calendar-year-select, +.ant-calendar-header .ant-calendar-month-select { + padding: 0 2px; + font-weight: 500; + display: inline-block; + color: rgba(0, 0, 0, 0.85); + line-height: 40px; +} +.ant-calendar-header .ant-calendar-century-select-arrow, +.ant-calendar-header .ant-calendar-decade-select-arrow, +.ant-calendar-header .ant-calendar-year-select-arrow, +.ant-calendar-header .ant-calendar-month-select-arrow { + display: none; +} +.ant-calendar-header .ant-calendar-prev-century-btn, +.ant-calendar-header .ant-calendar-next-century-btn, +.ant-calendar-header .ant-calendar-prev-decade-btn, +.ant-calendar-header .ant-calendar-next-decade-btn, +.ant-calendar-header .ant-calendar-prev-month-btn, +.ant-calendar-header .ant-calendar-next-month-btn, +.ant-calendar-header .ant-calendar-prev-year-btn, +.ant-calendar-header .ant-calendar-next-year-btn { + position: absolute; + top: 0; + color: rgba(0, 0, 0, 0.45); + font-family: Arial, "Hiragino Sans GB", "Microsoft Yahei", "Microsoft Sans Serif", sans-serif; + padding: 0 5px; + font-size: 16px; + display: inline-block; + line-height: 40px; +} +.ant-calendar-header .ant-calendar-prev-century-btn, +.ant-calendar-header .ant-calendar-prev-decade-btn, +.ant-calendar-header .ant-calendar-prev-year-btn { + left: 7px; +} +.ant-calendar-header .ant-calendar-prev-century-btn:after, +.ant-calendar-header .ant-calendar-prev-decade-btn:after, +.ant-calendar-header .ant-calendar-prev-year-btn:after { + content: '«'; +} +.ant-calendar-header .ant-calendar-next-century-btn, +.ant-calendar-header .ant-calendar-next-decade-btn, +.ant-calendar-header .ant-calendar-next-year-btn { + right: 7px; +} +.ant-calendar-header .ant-calendar-next-century-btn:after, +.ant-calendar-header .ant-calendar-next-decade-btn:after, +.ant-calendar-header .ant-calendar-next-year-btn:after { + content: '»'; +} +.ant-calendar-header .ant-calendar-prev-month-btn { + left: 29px; +} +.ant-calendar-header .ant-calendar-prev-month-btn:after { + content: '‹'; +} +.ant-calendar-header .ant-calendar-next-month-btn { + right: 29px; +} +.ant-calendar-header .ant-calendar-next-month-btn:after { + content: '›'; +} +.ant-calendar-body { + padding: 8px 12px; +} +.ant-calendar table { + border-collapse: collapse; + max-width: 100%; + background-color: transparent; + width: 100%; +} +.ant-calendar table, +.ant-calendar th, +.ant-calendar td { + border: 0; + text-align: center; +} +.ant-calendar-calendar-table { + border-spacing: 0; + margin-bottom: 0; +} +.ant-calendar-column-header { + line-height: 18px; + width: 33px; + padding: 6px 0; + text-align: center; +} +.ant-calendar-column-header .ant-calendar-column-header-inner { + display: block; + font-weight: normal; +} +.ant-calendar-week-number-header .ant-calendar-column-header-inner { + display: none; +} +.ant-calendar-cell { + padding: 3px 0; + height: 30px; +} +.ant-calendar-date { + display: block; + margin: 0 auto; + color: #54657e; + border-radius: 2px; + width: 24px; + height: 24px; + line-height: 22px; + border: 1px solid transparent; + padding: 0; + background: transparent; + text-align: center; + transition: background 0.3s ease; +} +.ant-calendar-date-panel { + position: relative; +} +.ant-calendar-date:hover { + background: #e6f7ff; + cursor: pointer; +} +.ant-calendar-date:active { + color: #fff; + background: #40a9ff; +} +.ant-calendar-today .ant-calendar-date { + border-color: #1890ff; + font-weight: bold; + color: #1890ff; +} +.ant-calendar-last-month-cell .ant-calendar-date, +.ant-calendar-next-month-btn-day .ant-calendar-date { + color: rgba(0, 0, 0, 0.25); +} +.ant-calendar-selected-day .ant-calendar-date { + background: #1890ff; + color: #fff; + border: 1px solid transparent; +} +.ant-calendar-selected-day .ant-calendar-date:hover { + background: #1890ff; +} +.ant-calendar-disabled-cell .ant-calendar-date { + cursor: not-allowed; + color: #bcbcbc; + background: #f5f5f5; + border-radius: 0; + width: auto; + border: 1px solid transparent; +} +.ant-calendar-disabled-cell .ant-calendar-date:hover { + background: #f5f5f5; +} +.ant-calendar-disabled-cell.ant-calendar-today .ant-calendar-date { + position: relative; + margin-right: 5px; + padding-left: 5px; +} +.ant-calendar-disabled-cell.ant-calendar-today .ant-calendar-date:before { + content: " "; + position: absolute; + top: -1px; + left: 5px; + width: 24px; + height: 24px; + border: 1px solid #bcbcbc; + border-radius: 2px; +} +.ant-calendar-disabled-cell-first-of-row .ant-calendar-date { + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; +} +.ant-calendar-disabled-cell-last-of-row .ant-calendar-date { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} +.ant-calendar-footer { + border-top: 1px solid #e8e8e8; + line-height: 38px; + padding: 0 12px; +} +.ant-calendar-footer:empty { + border-top: 0; +} +.ant-calendar-footer-btn { + text-align: center; + display: block; +} +.ant-calendar-footer-extra + .ant-calendar-footer-btn { + border-top: 1px solid #e8e8e8; + margin: 0 -12px; + padding: 0 12px; +} +.ant-calendar .ant-calendar-today-btn, +.ant-calendar .ant-calendar-clear-btn { + display: inline-block; + text-align: center; + margin: 0 0 0 8px; +} +.ant-calendar .ant-calendar-today-btn-disabled, +.ant-calendar .ant-calendar-clear-btn-disabled { + color: rgba(0, 0, 0, 0.25); + cursor: not-allowed; +} +.ant-calendar .ant-calendar-today-btn:only-child, +.ant-calendar .ant-calendar-clear-btn:only-child { + margin: 0; +} +.ant-calendar .ant-calendar-clear-btn { + display: none; + position: absolute; + right: 5px; + text-indent: -76px; + overflow: hidden; + width: 20px; + height: 20px; + text-align: center; + line-height: 20px; + top: 7px; + margin: 0; +} +.ant-calendar .ant-calendar-clear-btn:after { + font-family: 'anticon'; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\e62e"; + font-size: 14px; + color: rgba(0, 0, 0, 0.25); + display: inline-block; + line-height: 1; + width: 20px; + text-indent: 43px; + transition: color 0.3s ease; +} +.ant-calendar .ant-calendar-clear-btn:hover:after { + color: rgba(0, 0, 0, 0.45); +} +.ant-calendar .ant-calendar-ok-btn { + display: inline-block; + font-weight: 400; + text-align: center; + touch-action: manipulation; + cursor: pointer; + background-image: none; + border: 1px solid transparent; + white-space: nowrap; + padding: 0 15px; + height: 32px; + user-select: none; + transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); + position: relative; + color: #fff; + background-color: #1890ff; + border-color: #1890ff; + padding: 0 7px; + font-size: 14px; + border-radius: 4px; + height: 24px; + line-height: 22px; +} +.ant-calendar .ant-calendar-ok-btn > .anticon { + line-height: 1; +} +.ant-calendar .ant-calendar-ok-btn, +.ant-calendar .ant-calendar-ok-btn:active, +.ant-calendar .ant-calendar-ok-btn:focus { + outline: 0; +} +.ant-calendar .ant-calendar-ok-btn:not([disabled]):hover { + text-decoration: none; +} +.ant-calendar .ant-calendar-ok-btn:not([disabled]):active { + outline: 0; + transition: none; +} +.ant-calendar .ant-calendar-ok-btn.disabled, +.ant-calendar .ant-calendar-ok-btn[disabled] { + cursor: not-allowed; +} +.ant-calendar .ant-calendar-ok-btn.disabled > *, +.ant-calendar .ant-calendar-ok-btn[disabled] > * { + pointer-events: none; +} +.ant-calendar .ant-calendar-ok-btn-lg { + padding: 0 15px; + font-size: 16px; + border-radius: 4px; + height: 40px; +} +.ant-calendar .ant-calendar-ok-btn-sm { + padding: 0 7px; + font-size: 14px; + border-radius: 4px; + height: 24px; +} +.ant-calendar .ant-calendar-ok-btn > a:only-child { + color: currentColor; +} +.ant-calendar .ant-calendar-ok-btn > a:only-child:after { + content: ''; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: transparent; +} +.ant-calendar .ant-calendar-ok-btn:hover, +.ant-calendar .ant-calendar-ok-btn:focus { + color: #fff; + background-color: #40a9ff; + border-color: #40a9ff; +} +.ant-calendar .ant-calendar-ok-btn:hover > a:only-child, +.ant-calendar .ant-calendar-ok-btn:focus > a:only-child { + color: currentColor; +} +.ant-calendar .ant-calendar-ok-btn:hover > a:only-child:after, +.ant-calendar .ant-calendar-ok-btn:focus > a:only-child:after { + content: ''; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: transparent; +} +.ant-calendar .ant-calendar-ok-btn:active, +.ant-calendar .ant-calendar-ok-btn.active { + color: #fff; + background-color: #096dd9; + border-color: #096dd9; +} +.ant-calendar .ant-calendar-ok-btn:active > a:only-child, +.ant-calendar .ant-calendar-ok-btn.active > a:only-child { + color: currentColor; +} +.ant-calendar .ant-calendar-ok-btn:active > a:only-child:after, +.ant-calendar .ant-calendar-ok-btn.active > a:only-child:after { + content: ''; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: transparent; +} +.ant-calendar .ant-calendar-ok-btn.disabled, +.ant-calendar .ant-calendar-ok-btn[disabled], +.ant-calendar .ant-calendar-ok-btn.disabled:hover, +.ant-calendar .ant-calendar-ok-btn[disabled]:hover, +.ant-calendar .ant-calendar-ok-btn.disabled:focus, +.ant-calendar .ant-calendar-ok-btn[disabled]:focus, +.ant-calendar .ant-calendar-ok-btn.disabled:active, +.ant-calendar .ant-calendar-ok-btn[disabled]:active, +.ant-calendar .ant-calendar-ok-btn.disabled.active, +.ant-calendar .ant-calendar-ok-btn[disabled].active { + color: rgba(0, 0, 0, 0.25); + background-color: #f5f5f5; + border-color: #d9d9d9; +} +.ant-calendar .ant-calendar-ok-btn.disabled > a:only-child, +.ant-calendar .ant-calendar-ok-btn[disabled] > a:only-child, +.ant-calendar .ant-calendar-ok-btn.disabled:hover > a:only-child, +.ant-calendar .ant-calendar-ok-btn[disabled]:hover > a:only-child, +.ant-calendar .ant-calendar-ok-btn.disabled:focus > a:only-child, +.ant-calendar .ant-calendar-ok-btn[disabled]:focus > a:only-child, +.ant-calendar .ant-calendar-ok-btn.disabled:active > a:only-child, +.ant-calendar .ant-calendar-ok-btn[disabled]:active > a:only-child, +.ant-calendar .ant-calendar-ok-btn.disabled.active > a:only-child, +.ant-calendar .ant-calendar-ok-btn[disabled].active > a:only-child { + color: currentColor; +} +.ant-calendar .ant-calendar-ok-btn.disabled > a:only-child:after, +.ant-calendar .ant-calendar-ok-btn[disabled] > a:only-child:after, +.ant-calendar .ant-calendar-ok-btn.disabled:hover > a:only-child:after, +.ant-calendar .ant-calendar-ok-btn[disabled]:hover > a:only-child:after, +.ant-calendar .ant-calendar-ok-btn.disabled:focus > a:only-child:after, +.ant-calendar .ant-calendar-ok-btn[disabled]:focus > a:only-child:after, +.ant-calendar .ant-calendar-ok-btn.disabled:active > a:only-child:after, +.ant-calendar .ant-calendar-ok-btn[disabled]:active > a:only-child:after, +.ant-calendar .ant-calendar-ok-btn.disabled.active > a:only-child:after, +.ant-calendar .ant-calendar-ok-btn[disabled].active > a:only-child:after { + content: ''; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: transparent; +} +.ant-calendar .ant-calendar-ok-btn-disabled { + color: rgba(0, 0, 0, 0.25); + background-color: #f5f5f5; + border-color: #d9d9d9; + cursor: not-allowed; +} +.ant-calendar .ant-calendar-ok-btn-disabled > a:only-child { + color: currentColor; +} +.ant-calendar .ant-calendar-ok-btn-disabled > a:only-child:after { + content: ''; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: transparent; +} +.ant-calendar .ant-calendar-ok-btn-disabled:hover { + color: rgba(0, 0, 0, 0.25); + background-color: #f5f5f5; + border-color: #d9d9d9; +} +.ant-calendar .ant-calendar-ok-btn-disabled:hover > a:only-child { + color: currentColor; +} +.ant-calendar .ant-calendar-ok-btn-disabled:hover > a:only-child:after { + content: ''; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: transparent; +} +.ant-calendar-range-picker-input { + background-color: transparent; + border: 0; + height: 99%; + outline: 0; + width: 44%; + text-align: center; +} +.ant-calendar-range-picker-input::-moz-placeholder { + color: #bfbfbf; + opacity: 1; +} +.ant-calendar-range-picker-input:-ms-input-placeholder { + color: #bfbfbf; +} +.ant-calendar-range-picker-input::-webkit-input-placeholder { + color: #bfbfbf; +} +.ant-calendar-range-picker-input[disabled] { + cursor: not-allowed; +} +.ant-calendar-range-picker-separator { + color: rgba(0, 0, 0, 0.45); + width: 10px; + display: inline-block; + height: 100%; + vertical-align: top; +} +.ant-calendar-range { + width: 552px; + overflow: hidden; +} +.ant-calendar-range .ant-calendar-date-panel::after { + content: "."; + display: block; + height: 0; + clear: both; + visibility: hidden; +} +.ant-calendar-range-part { + width: 50%; + position: relative; +} +.ant-calendar-range-left { + float: left; +} +.ant-calendar-range-left .ant-calendar-time-picker-inner { + border-right: 1.5px solid #e8e8e8; +} +.ant-calendar-range-right { + float: right; +} +.ant-calendar-range-right .ant-calendar-time-picker-inner { + border-left: 1.5px solid #e8e8e8; +} +.ant-calendar-range-middle { + position: absolute; + left: 50%; + width: 20px; + margin-left: -132px; + text-align: center; + height: 34px; + line-height: 34px; + color: rgba(0, 0, 0, 0.45); +} +.ant-calendar-range-right .ant-calendar-date-input-wrap { + margin-left: -118px; +} +.ant-calendar-range.ant-calendar-time .ant-calendar-range-middle { + margin-left: -12px; +} +.ant-calendar-range.ant-calendar-time .ant-calendar-range-right .ant-calendar-date-input-wrap { + margin-left: 0; +} +.ant-calendar-range .ant-calendar-input-wrap { + position: relative; + height: 34px; +} +.ant-calendar-range .ant-calendar-input, +.ant-calendar-range .ant-calendar-time-picker-input { + position: relative; + display: inline-block; + padding: 4px 11px; + width: 100%; + height: 32px; + font-size: 14px; + line-height: 1.5; + color: #54657e; + background-color: #fff; + background-image: none; + border: 1px solid #d9d9d9; + border-radius: 4px; + transition: all .3s; + height: 24px; + border: 0; + box-shadow: none; + padding-left: 0; + padding-right: 0; +} +.ant-calendar-range .ant-calendar-input::-moz-placeholder, +.ant-calendar-range .ant-calendar-time-picker-input::-moz-placeholder { + color: #bfbfbf; + opacity: 1; +} +.ant-calendar-range .ant-calendar-input:-ms-input-placeholder, +.ant-calendar-range .ant-calendar-time-picker-input:-ms-input-placeholder { + color: #bfbfbf; +} +.ant-calendar-range .ant-calendar-input::-webkit-input-placeholder, +.ant-calendar-range .ant-calendar-time-picker-input::-webkit-input-placeholder { + color: #bfbfbf; +} +.ant-calendar-range .ant-calendar-input:hover, +.ant-calendar-range .ant-calendar-time-picker-input:hover { + border-color: #40a9ff; +} +.ant-calendar-range .ant-calendar-input:focus, +.ant-calendar-range .ant-calendar-time-picker-input:focus { + border-color: #40a9ff; + outline: 0; + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); +} +.ant-calendar-range .ant-calendar-input-disabled, +.ant-calendar-range .ant-calendar-time-picker-input-disabled { + background-color: #f5f5f5; + opacity: 1; + cursor: not-allowed; + color: rgba(0, 0, 0, 0.25); +} +.ant-calendar-range .ant-calendar-input-disabled:hover, +.ant-calendar-range .ant-calendar-time-picker-input-disabled:hover { + border-color: #e6d8d8; +} +textarea.ant-calendar-range .ant-calendar-input, +textarea.ant-calendar-range .ant-calendar-time-picker-input { + max-width: 100%; + height: auto; + vertical-align: bottom; + transition: all .3s, height 0s; + min-height: 32px; +} +.ant-calendar-range .ant-calendar-input-lg, +.ant-calendar-range .ant-calendar-time-picker-input-lg { + padding: 6px 11px; + height: 40px; + font-size: 16px; +} +.ant-calendar-range .ant-calendar-input-sm, +.ant-calendar-range .ant-calendar-time-picker-input-sm { + padding: 1px 7px; + height: 24px; +} +.ant-calendar-range .ant-calendar-input:focus, +.ant-calendar-range .ant-calendar-time-picker-input:focus { + box-shadow: none; +} +.ant-calendar-range .ant-calendar-time-picker-icon { + display: none; +} +.ant-calendar-range.ant-calendar-week-number { + width: 574px; +} +.ant-calendar-range.ant-calendar-week-number .ant-calendar-range-part { + width: 286px; +} +.ant-calendar-range .ant-calendar-year-panel, +.ant-calendar-range .ant-calendar-month-panel, +.ant-calendar-range .ant-calendar-decade-panel { + top: 34px; +} +.ant-calendar-range .ant-calendar-month-panel .ant-calendar-year-panel { + top: 0; +} +.ant-calendar-range .ant-calendar-decade-panel-table, +.ant-calendar-range .ant-calendar-year-panel-table, +.ant-calendar-range .ant-calendar-month-panel-table { + height: 208px; +} +.ant-calendar-range .ant-calendar-in-range-cell { + border-radius: 0; + position: relative; +} +.ant-calendar-range .ant-calendar-in-range-cell > div { + position: relative; + z-index: 1; +} +.ant-calendar-range .ant-calendar-in-range-cell:before { + content: ''; + display: block; + background: #e6f7ff; + border-radius: 0; + border: 0; + position: absolute; + top: 4px; + bottom: 4px; + left: 0; + right: 0; +} +div.ant-calendar-range-quick-selector { + text-align: left; +} +div.ant-calendar-range-quick-selector > a { + margin-right: 8px; +} +.ant-calendar-range .ant-calendar-header, +.ant-calendar-range .ant-calendar-month-panel-header, +.ant-calendar-range .ant-calendar-year-panel-header { + border-bottom: 0; +} +.ant-calendar-range .ant-calendar-body, +.ant-calendar-range .ant-calendar-month-panel-body, +.ant-calendar-range .ant-calendar-year-panel-body { + border-top: 1px solid #e8e8e8; +} +.ant-calendar-range.ant-calendar-time .ant-calendar-time-picker { + height: 207px; + width: 100%; + top: 68px; + z-index: 2; +} +.ant-calendar-range.ant-calendar-time .ant-calendar-time-picker-panel { + height: 267px; + margin-top: -34px; +} +.ant-calendar-range.ant-calendar-time .ant-calendar-time-picker-inner { + padding-top: 40px; + height: 100%; + background: none; +} +.ant-calendar-range.ant-calendar-time .ant-calendar-time-picker-combobox { + display: inline-block; + height: 100%; + background-color: #fff; + border-top: 1px solid #e8e8e8; +} +.ant-calendar-range.ant-calendar-time .ant-calendar-time-picker-select { + height: 100%; +} +.ant-calendar-range.ant-calendar-time .ant-calendar-time-picker-select ul { + max-height: 100%; +} +.ant-calendar-range.ant-calendar-time .ant-calendar-footer .ant-calendar-time-picker-btn { + margin-right: 8px; +} +.ant-calendar-range.ant-calendar-time .ant-calendar-today-btn { + margin: 8px 12px; + height: 22px; + line-height: 22px; +} +.ant-calendar-range-with-ranges.ant-calendar-time .ant-calendar-time-picker { + height: 247px; +} +.ant-calendar-range-with-ranges.ant-calendar-time .ant-calendar-time-picker-panel { + height: 281px; +} +.ant-calendar-range.ant-calendar-show-time-picker .ant-calendar-body { + border-top-color: transparent; +} +.ant-calendar-time-picker { + position: absolute; + width: 100%; + top: 40px; + background-color: #fff; +} +.ant-calendar-time-picker-panel { + z-index: 1050; + position: absolute; + width: 100%; +} +.ant-calendar-time-picker-inner { + display: inline-block; + position: relative; + outline: none; + list-style: none; + font-size: 14px; + text-align: left; + background-color: #fff; + background-clip: padding-box; + line-height: 1.5; + overflow: hidden; + width: 100%; +} +.ant-calendar-time-picker-combobox { + width: 100%; +} +.ant-calendar-time-picker-column-1, +.ant-calendar-time-picker-column-1 .ant-calendar-time-picker-select { + width: 100%; +} +.ant-calendar-time-picker-column-2 .ant-calendar-time-picker-select { + width: 50%; +} +.ant-calendar-time-picker-column-3 .ant-calendar-time-picker-select { + width: 33.33%; +} +.ant-calendar-time-picker-column-4 .ant-calendar-time-picker-select { + width: 25%; +} +.ant-calendar-time-picker-input-wrap { + display: none; +} +.ant-calendar-time-picker-select { + float: left; + font-size: 14px; + border-right: 1px solid #e8e8e8; + box-sizing: border-box; + overflow: hidden; + position: relative; + height: 226px; +} +.ant-calendar-time-picker-select:hover { + overflow-y: auto; +} +.ant-calendar-time-picker-select:first-child { + border-left: 0; + margin-left: 0; +} +.ant-calendar-time-picker-select:last-child { + border-right: 0; +} +.ant-calendar-time-picker-select ul { + list-style: none; + box-sizing: border-box; + margin: 0; + padding: 0; + width: 100%; + max-height: 206px; +} +.ant-calendar-time-picker-select li { + text-align: center; + list-style: none; + box-sizing: content-box; + margin: 0; + width: 100%; + height: 24px; + line-height: 24px; + cursor: pointer; + user-select: none; + transition: background 0.3s ease; +} +.ant-calendar-time-picker-select li:last-child:after { + content: ''; + height: 202px; + display: block; +} +.ant-calendar-time-picker-select li:hover { + background: #e6f7ff; +} +li.ant-calendar-time-picker-select-option-selected { + background: #f5f5f5; + font-weight: bold; +} +li.ant-calendar-time-picker-select-option-disabled { + color: rgba(0, 0, 0, 0.25); +} +li.ant-calendar-time-picker-select-option-disabled:hover { + background: transparent; + cursor: not-allowed; +} +.ant-calendar-time .ant-calendar-day-select { + padding: 0 2px; + font-weight: 500; + display: inline-block; + color: rgba(0, 0, 0, 0.85); + line-height: 34px; +} +.ant-calendar-time .ant-calendar-footer { + position: relative; + height: auto; +} +.ant-calendar-time .ant-calendar-footer-btn { + text-align: right; +} +.ant-calendar-time .ant-calendar-footer .ant-calendar-today-btn { + float: left; + margin: 0; +} +.ant-calendar-time .ant-calendar-footer .ant-calendar-time-picker-btn { + display: inline-block; + margin-right: 8px; +} +.ant-calendar-time .ant-calendar-footer .ant-calendar-time-picker-btn-disabled { + color: rgba(0, 0, 0, 0.25); +} +.ant-calendar-month-panel { + position: absolute; + top: 1px; + right: 0; + bottom: 0; + left: 0; + z-index: 10; + border-radius: 4px; + background: #fff; + outline: none; +} +.ant-calendar-month-panel > div { + height: 100%; +} +.ant-calendar-month-panel-hidden { + display: none; +} +.ant-calendar-month-panel-header { + height: 40px; + line-height: 40px; + text-align: center; + user-select: none; + border-bottom: 1px solid #e8e8e8; +} +.ant-calendar-month-panel-header a:hover { + color: #40a9ff; +} +.ant-calendar-month-panel-header .ant-calendar-month-panel-century-select, +.ant-calendar-month-panel-header .ant-calendar-month-panel-decade-select, +.ant-calendar-month-panel-header .ant-calendar-month-panel-year-select, +.ant-calendar-month-panel-header .ant-calendar-month-panel-month-select { + padding: 0 2px; + font-weight: 500; + display: inline-block; + color: rgba(0, 0, 0, 0.85); + line-height: 40px; +} +.ant-calendar-month-panel-header .ant-calendar-month-panel-century-select-arrow, +.ant-calendar-month-panel-header .ant-calendar-month-panel-decade-select-arrow, +.ant-calendar-month-panel-header .ant-calendar-month-panel-year-select-arrow, +.ant-calendar-month-panel-header .ant-calendar-month-panel-month-select-arrow { + display: none; +} +.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-century-btn, +.ant-calendar-month-panel-header .ant-calendar-month-panel-next-century-btn, +.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-decade-btn, +.ant-calendar-month-panel-header .ant-calendar-month-panel-next-decade-btn, +.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-month-btn, +.ant-calendar-month-panel-header .ant-calendar-month-panel-next-month-btn, +.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-year-btn, +.ant-calendar-month-panel-header .ant-calendar-month-panel-next-year-btn { + position: absolute; + top: 0; + color: rgba(0, 0, 0, 0.45); + font-family: Arial, "Hiragino Sans GB", "Microsoft Yahei", "Microsoft Sans Serif", sans-serif; + padding: 0 5px; + font-size: 16px; + display: inline-block; + line-height: 40px; +} +.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-century-btn, +.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-decade-btn, +.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-year-btn { + left: 7px; +} +.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-century-btn:after, +.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-decade-btn:after, +.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-year-btn:after { + content: '«'; +} +.ant-calendar-month-panel-header .ant-calendar-month-panel-next-century-btn, +.ant-calendar-month-panel-header .ant-calendar-month-panel-next-decade-btn, +.ant-calendar-month-panel-header .ant-calendar-month-panel-next-year-btn { + right: 7px; +} +.ant-calendar-month-panel-header .ant-calendar-month-panel-next-century-btn:after, +.ant-calendar-month-panel-header .ant-calendar-month-panel-next-decade-btn:after, +.ant-calendar-month-panel-header .ant-calendar-month-panel-next-year-btn:after { + content: '»'; +} +.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-month-btn { + left: 29px; +} +.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-month-btn:after { + content: '‹'; +} +.ant-calendar-month-panel-header .ant-calendar-month-panel-next-month-btn { + right: 29px; +} +.ant-calendar-month-panel-header .ant-calendar-month-panel-next-month-btn:after { + content: '›'; +} +.ant-calendar-month-panel-body { + height: calc(100% - 40px); +} +.ant-calendar-month-panel-table { + table-layout: fixed; + width: 100%; + height: 100%; + border-collapse: separate; +} +.ant-calendar-month-panel-selected-cell .ant-calendar-month-panel-month { + background: #1890ff; + color: #fff; +} +.ant-calendar-month-panel-selected-cell .ant-calendar-month-panel-month:hover { + background: #1890ff; + color: #fff; +} +.ant-calendar-month-panel-cell { + text-align: center; +} +.ant-calendar-month-panel-cell-disabled .ant-calendar-month-panel-month, +.ant-calendar-month-panel-cell-disabled .ant-calendar-month-panel-month:hover { + cursor: not-allowed; + color: #bcbcbc; + background: #f5f5f5; +} +.ant-calendar-month-panel-month { + display: inline-block; + margin: 0 auto; + color: #54657e; + background: transparent; + text-align: center; + height: 24px; + line-height: 24px; + padding: 0 8px; + border-radius: 2px; + transition: background 0.3s ease; +} +.ant-calendar-month-panel-month:hover { + background: #e6f7ff; + cursor: pointer; +} +.ant-calendar-year-panel { + position: absolute; + top: 1px; + right: 0; + bottom: 0; + left: 0; + z-index: 10; + border-radius: 4px; + background: #fff; + outline: none; +} +.ant-calendar-year-panel > div { + height: 100%; +} +.ant-calendar-year-panel-hidden { + display: none; +} +.ant-calendar-year-panel-header { + height: 40px; + line-height: 40px; + text-align: center; + user-select: none; + border-bottom: 1px solid #e8e8e8; +} +.ant-calendar-year-panel-header a:hover { + color: #40a9ff; +} +.ant-calendar-year-panel-header .ant-calendar-year-panel-century-select, +.ant-calendar-year-panel-header .ant-calendar-year-panel-decade-select, +.ant-calendar-year-panel-header .ant-calendar-year-panel-year-select, +.ant-calendar-year-panel-header .ant-calendar-year-panel-month-select { + padding: 0 2px; + font-weight: 500; + display: inline-block; + color: rgba(0, 0, 0, 0.85); + line-height: 40px; +} +.ant-calendar-year-panel-header .ant-calendar-year-panel-century-select-arrow, +.ant-calendar-year-panel-header .ant-calendar-year-panel-decade-select-arrow, +.ant-calendar-year-panel-header .ant-calendar-year-panel-year-select-arrow, +.ant-calendar-year-panel-header .ant-calendar-year-panel-month-select-arrow { + display: none; +} +.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-century-btn, +.ant-calendar-year-panel-header .ant-calendar-year-panel-next-century-btn, +.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-decade-btn, +.ant-calendar-year-panel-header .ant-calendar-year-panel-next-decade-btn, +.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-month-btn, +.ant-calendar-year-panel-header .ant-calendar-year-panel-next-month-btn, +.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-year-btn, +.ant-calendar-year-panel-header .ant-calendar-year-panel-next-year-btn { + position: absolute; + top: 0; + color: rgba(0, 0, 0, 0.45); + font-family: Arial, "Hiragino Sans GB", "Microsoft Yahei", "Microsoft Sans Serif", sans-serif; + padding: 0 5px; + font-size: 16px; + display: inline-block; + line-height: 40px; +} +.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-century-btn, +.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-decade-btn, +.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-year-btn { + left: 7px; +} +.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-century-btn:after, +.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-decade-btn:after, +.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-year-btn:after { + content: '«'; +} +.ant-calendar-year-panel-header .ant-calendar-year-panel-next-century-btn, +.ant-calendar-year-panel-header .ant-calendar-year-panel-next-decade-btn, +.ant-calendar-year-panel-header .ant-calendar-year-panel-next-year-btn { + right: 7px; +} +.ant-calendar-year-panel-header .ant-calendar-year-panel-next-century-btn:after, +.ant-calendar-year-panel-header .ant-calendar-year-panel-next-decade-btn:after, +.ant-calendar-year-panel-header .ant-calendar-year-panel-next-year-btn:after { + content: '»'; +} +.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-month-btn { + left: 29px; +} +.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-month-btn:after { + content: '‹'; +} +.ant-calendar-year-panel-header .ant-calendar-year-panel-next-month-btn { + right: 29px; +} +.ant-calendar-year-panel-header .ant-calendar-year-panel-next-month-btn:after { + content: '›'; +} +.ant-calendar-year-panel-body { + height: calc(100% - 40px); +} +.ant-calendar-year-panel-table { + table-layout: fixed; + width: 100%; + height: 100%; + border-collapse: separate; +} +.ant-calendar-year-panel-cell { + text-align: center; +} +.ant-calendar-year-panel-year { + display: inline-block; + margin: 0 auto; + color: #54657e; + background: transparent; + text-align: center; + height: 24px; + line-height: 24px; + padding: 0 8px; + border-radius: 2px; + transition: background 0.3s ease; +} +.ant-calendar-year-panel-year:hover { + background: #e6f7ff; + cursor: pointer; +} +.ant-calendar-year-panel-selected-cell .ant-calendar-year-panel-year { + background: #1890ff; + color: #fff; +} +.ant-calendar-year-panel-selected-cell .ant-calendar-year-panel-year:hover { + background: #1890ff; + color: #fff; +} +.ant-calendar-year-panel-last-decade-cell .ant-calendar-year-panel-year, +.ant-calendar-year-panel-next-decade-cell .ant-calendar-year-panel-year { + user-select: none; + color: rgba(0, 0, 0, 0.25); +} +.ant-calendar-decade-panel { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 10; + background: #fff; + border-radius: 4px; + outline: none; +} +.ant-calendar-decade-panel-hidden { + display: none; +} +.ant-calendar-decade-panel-header { + height: 40px; + line-height: 40px; + text-align: center; + user-select: none; + border-bottom: 1px solid #e8e8e8; +} +.ant-calendar-decade-panel-header a:hover { + color: #40a9ff; +} +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-century-select, +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-decade-select, +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-year-select, +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-month-select { + padding: 0 2px; + font-weight: 500; + display: inline-block; + color: rgba(0, 0, 0, 0.85); + line-height: 40px; +} +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-century-select-arrow, +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-decade-select-arrow, +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-year-select-arrow, +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-month-select-arrow { + display: none; +} +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-century-btn, +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-century-btn, +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-decade-btn, +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-decade-btn, +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-month-btn, +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-month-btn, +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-year-btn, +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-year-btn { + position: absolute; + top: 0; + color: rgba(0, 0, 0, 0.45); + font-family: Arial, "Hiragino Sans GB", "Microsoft Yahei", "Microsoft Sans Serif", sans-serif; + padding: 0 5px; + font-size: 16px; + display: inline-block; + line-height: 40px; +} +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-century-btn, +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-decade-btn, +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-year-btn { + left: 7px; +} +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-century-btn:after, +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-decade-btn:after, +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-year-btn:after { + content: '«'; +} +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-century-btn, +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-decade-btn, +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-year-btn { + right: 7px; +} +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-century-btn:after, +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-decade-btn:after, +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-year-btn:after { + content: '»'; +} +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-month-btn { + left: 29px; +} +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-month-btn:after { + content: '‹'; +} +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-month-btn { + right: 29px; +} +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-month-btn:after { + content: '›'; +} +.ant-calendar-decade-panel-body { + height: calc(100% - 40px); +} +.ant-calendar-decade-panel-table { + table-layout: fixed; + width: 100%; + height: 100%; + border-collapse: separate; +} +.ant-calendar-decade-panel-cell { + text-align: center; + white-space: nowrap; +} +.ant-calendar-decade-panel-decade { + display: inline-block; + margin: 0 auto; + color: #54657e; + background: transparent; + text-align: center; + height: 24px; + line-height: 24px; + padding: 0 6px; + border-radius: 2px; + transition: background 0.3s ease; +} +.ant-calendar-decade-panel-decade:hover { + background: #e6f7ff; + cursor: pointer; +} +.ant-calendar-decade-panel-selected-cell .ant-calendar-decade-panel-decade { + background: #1890ff; + color: #fff; +} +.ant-calendar-decade-panel-selected-cell .ant-calendar-decade-panel-decade:hover { + background: #1890ff; + color: #fff; +} +.ant-calendar-decade-panel-last-century-cell .ant-calendar-decade-panel-decade, +.ant-calendar-decade-panel-next-century-cell .ant-calendar-decade-panel-decade { + user-select: none; + color: rgba(0, 0, 0, 0.25); +} +.ant-calendar-month .ant-calendar-month-header-wrap { + position: relative; + height: 288px; +} +.ant-calendar-month .ant-calendar-month-panel, +.ant-calendar-month .ant-calendar-year-panel { + top: 0; + height: 100%; +} +.ant-calendar-week-number-cell { + opacity: 0.5; +} +.ant-calendar-week-number .ant-calendar-body tr { + transition: all .3s; + cursor: pointer; +} +.ant-calendar-week-number .ant-calendar-body tr:hover { + background: #e6f7ff; +} +.ant-calendar-week-number .ant-calendar-body tr.ant-calendar-active-week { + background: #bae7ff; + font-weight: bold; +} +.ant-calendar-week-number .ant-calendar-body tr .ant-calendar-selected-day .ant-calendar-date, +.ant-calendar-week-number .ant-calendar-body tr .ant-calendar-selected-day:hover .ant-calendar-date { + background: transparent; + color: #54657e; +} +.ant-divider { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; + background: #e8e8e8; +} +.ant-divider, +.ant-divider-vertical { + margin: 0 8px; + display: inline-block; + height: 0.9em; + width: 1px; + vertical-align: middle; + position: relative; + top: -0.06em; +} +.ant-divider-horizontal { + display: block; + height: 1px; + width: 100%; + margin: 24px 0; +} +.ant-divider-horizontal.ant-divider-with-text { + display: table; + white-space: nowrap; + text-align: center; + background: transparent; + font-weight: 500; + color: rgba(0, 0, 0, 0.85); + font-size: 16px; + margin: 16px 0; +} +.ant-divider-horizontal.ant-divider-with-text:before, +.ant-divider-horizontal.ant-divider-with-text:after { + content: ''; + display: table-cell; + position: relative; + top: 50%; + width: 50%; + border-top: 1px solid #e8e8e8; + transform: translateY(50%); +} +.ant-divider-inner-text { + display: inline-block; + padding: 0 24px; +} +.ant-divider-horizontal.ant-divider-with-text-left { + display: table; + white-space: nowrap; + text-align: center; + background: transparent; + font-weight: 500; + color: rgba(0, 0, 0, 0.85); + font-size: 14px; + margin: 16px 0; +} +.ant-divider-horizontal.ant-divider-with-text-left:before { + content: ''; + display: table-cell; + position: relative; + top: 50%; + width: 5%; + border-top: 1px solid #e8e8e8; + transform: translateY(50%); +} +.ant-divider-horizontal.ant-divider-with-text-left:after { + content: ''; + display: table-cell; + position: relative; + top: 50%; + width: 95%; + border-top: 1px solid #e8e8e8; + transform: translateY(50%); +} +.ant-divider-horizontal.ant-divider-with-text-left-inner-text { + display: inline-block; + padding: 0 10px; +} +.ant-divider-horizontal.ant-divider-with-text-right { + display: table; + white-space: nowrap; + text-align: center; + background: transparent; + font-weight: 500; + color: rgba(0, 0, 0, 0.85); + font-size: 14px; + margin: 16px 0; +} +.ant-divider-horizontal.ant-divider-with-text-right:before { + content: ''; + display: table-cell; + position: relative; + top: 50%; + width: 95%; + border-top: 1px solid #e8e8e8; + transform: translateY(50%); +} +.ant-divider-horizontal.ant-divider-with-text-right:after { + content: ''; + display: table-cell; + position: relative; + top: 50%; + width: 5%; + border-top: 1px solid #e8e8e8; + transform: translateY(50%); +} +.ant-divider-horizontal.ant-divider-with-text-right-inner-text { + display: inline-block; + padding: 0 10px; +} +.ant-divider-dashed { + background: none; + border-top: 1px dashed #e8e8e8; +} +.ant-divider-horizontal.ant-divider-with-text.ant-divider-dashed { + border-top: 0; +} +.ant-divider-horizontal.ant-divider-with-text.ant-divider-dashed:before, +.ant-divider-horizontal.ant-divider-with-text.ant-divider-dashed:after { + border-style: dashed none none; +} +.ant-dropdown { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; + position: absolute; + left: -9999px; + top: -9999px; + z-index: 1050; + display: block; +} +.ant-dropdown-wrap { + position: relative; +} +.ant-dropdown-wrap .ant-btn > .anticon-down { + display: inline-block; + font-size: 12px; + font-size: 10px \9; + transform: scale(0.83333333) rotate(0deg); +} +:root .ant-dropdown-wrap .ant-btn > .anticon-down { + font-size: 12px; +} +.ant-dropdown-wrap .anticon-down:before { + transition: transform .2s; +} +.ant-dropdown-wrap-open .anticon-down:before { + transform: rotate(180deg); +} +.ant-dropdown-hidden, +.ant-dropdown-menu-hidden { + display: none; +} +.ant-dropdown-menu { + outline: none; + position: relative; + list-style-type: none; + padding: 0; + margin: 0; + text-align: left; + background-color: #fff; + border-radius: 4px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); + background-clip: padding-box; +} +.ant-dropdown-menu-item-group-title { + color: rgba(0, 0, 0, 0.45); + padding: 5px 12px; + transition: all .3s; +} +.ant-dropdown-menu-submenu-popup { + position: absolute; + z-index: 1050; +} +.ant-dropdown-menu-item, +.ant-dropdown-menu-submenu-title { + padding: 5px 12px; + margin: 0; + clear: both; + font-size: 14px; + font-weight: normal; + color: #54657e; + white-space: nowrap; + cursor: pointer; + transition: all .3s; + line-height: 22px; +} +.ant-dropdown-menu-item > a, +.ant-dropdown-menu-submenu-title > a { + color: #54657e; + display: block; + padding: 5px 12px; + margin: -5px -12px; + transition: all .3s; +} +.ant-dropdown-menu-item > a:focus, +.ant-dropdown-menu-submenu-title > a:focus { + text-decoration: none; +} +.ant-dropdown-menu-item-selected, +.ant-dropdown-menu-submenu-title-selected, +.ant-dropdown-menu-item-selected > a, +.ant-dropdown-menu-submenu-title-selected > a { + color: #1890ff; + background-color: #e6f7ff; +} +.ant-dropdown-menu-item:hover, +.ant-dropdown-menu-submenu-title:hover { + background-color: #e6f7ff; +} +.ant-dropdown-menu-item-disabled, +.ant-dropdown-menu-submenu-title-disabled { + color: rgba(0, 0, 0, 0.25); + cursor: not-allowed; +} +.ant-dropdown-menu-item-disabled:hover, +.ant-dropdown-menu-submenu-title-disabled:hover { + color: rgba(0, 0, 0, 0.25); + background-color: #fff; + cursor: not-allowed; +} +.ant-dropdown-menu-item:first-child, +.ant-dropdown-menu-submenu-title:first-child, +.ant-dropdown-menu-item:first-child > a, +.ant-dropdown-menu-submenu-title:first-child > a { + border-radius: 4px 4px 0 0; +} +.ant-dropdown-menu-item:last-child, +.ant-dropdown-menu-submenu-title:last-child, +.ant-dropdown-menu-item:last-child > a, +.ant-dropdown-menu-submenu-title:last-child > a { + border-radius: 0 0 4px 4px; +} +.ant-dropdown-menu-item:only-child, +.ant-dropdown-menu-submenu-title:only-child, +.ant-dropdown-menu-item:only-child > a, +.ant-dropdown-menu-submenu-title:only-child > a { + border-radius: 4px; +} +.ant-dropdown-menu-item-divider, +.ant-dropdown-menu-submenu-title-divider { + height: 1px; + overflow: hidden; + background-color: #e8e8e8; + line-height: 0; +} +.ant-dropdown-menu-item .ant-dropdown-menu-submenu-arrow, +.ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow { + position: absolute; + right: 8px; +} +.ant-dropdown-menu-item .ant-dropdown-menu-submenu-arrow:after, +.ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow:after { + font-family: "anticon" !important; + font-style: normal; + content: "\e61f"; + color: rgba(0, 0, 0, 0.45); + display: inline-block; + font-size: 12px; + font-size: 10px \9; + transform: scale(0.83333333) rotate(0deg); +} +:root .ant-dropdown-menu-item .ant-dropdown-menu-submenu-arrow:after, +:root .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow:after { + font-size: 12px; +} +.ant-dropdown-menu-submenu-title { + padding-right: 26px; +} +.ant-dropdown-menu-submenu-title:first-child, +.ant-dropdown-menu-submenu-title:last-child { + border-radius: 0; +} +.ant-dropdown-menu-submenu-vertical { + position: relative; +} +.ant-dropdown-menu-submenu-vertical > .ant-dropdown-menu { + top: 0; + left: 100%; + position: absolute; + min-width: 100%; + margin-left: 4px; + transform-origin: 0 0; +} +.ant-dropdown-menu-submenu.ant-dropdown-menu-submenu-disabled .ant-dropdown-menu-submenu-title, +.ant-dropdown-menu-submenu.ant-dropdown-menu-submenu-disabled .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow:after { + color: rgba(0, 0, 0, 0.25); +} +.ant-dropdown-menu-submenu:first-child .ant-dropdown-menu-submenu-title { + border-radius: 4px 4px 0 0; +} +.ant-dropdown-menu-submenu:last-child .ant-dropdown-menu-submenu-title { + border-radius: 0 0 4px 4px; +} +.ant-dropdown.slide-down-enter.slide-down-enter-active.ant-dropdown-placement-bottomLeft, +.ant-dropdown.slide-down-appear.slide-down-appear-active.ant-dropdown-placement-bottomLeft, +.ant-dropdown.slide-down-enter.slide-down-enter-active.ant-dropdown-placement-bottomCenter, +.ant-dropdown.slide-down-appear.slide-down-appear-active.ant-dropdown-placement-bottomCenter, +.ant-dropdown.slide-down-enter.slide-down-enter-active.ant-dropdown-placement-bottomRight, +.ant-dropdown.slide-down-appear.slide-down-appear-active.ant-dropdown-placement-bottomRight { + animation-name: antSlideUpIn; +} +.ant-dropdown.slide-up-enter.slide-up-enter-active.ant-dropdown-placement-topLeft, +.ant-dropdown.slide-up-appear.slide-up-appear-active.ant-dropdown-placement-topLeft, +.ant-dropdown.slide-up-enter.slide-up-enter-active.ant-dropdown-placement-topCenter, +.ant-dropdown.slide-up-appear.slide-up-appear-active.ant-dropdown-placement-topCenter, +.ant-dropdown.slide-up-enter.slide-up-enter-active.ant-dropdown-placement-topRight, +.ant-dropdown.slide-up-appear.slide-up-appear-active.ant-dropdown-placement-topRight { + animation-name: antSlideDownIn; +} +.ant-dropdown.slide-down-leave.slide-down-leave-active.ant-dropdown-placement-bottomLeft, +.ant-dropdown.slide-down-leave.slide-down-leave-active.ant-dropdown-placement-bottomCenter, +.ant-dropdown.slide-down-leave.slide-down-leave-active.ant-dropdown-placement-bottomRight { + animation-name: antSlideUpOut; +} +.ant-dropdown.slide-up-leave.slide-up-leave-active.ant-dropdown-placement-topLeft, +.ant-dropdown.slide-up-leave.slide-up-leave-active.ant-dropdown-placement-topCenter, +.ant-dropdown.slide-up-leave.slide-up-leave-active.ant-dropdown-placement-topRight { + animation-name: antSlideDownOut; +} +.ant-dropdown-trigger .anticon-down, +.ant-dropdown-link .anticon-down { + display: inline-block; + font-size: 12px; + font-size: 10px \9; + transform: scale(0.83333333) rotate(0deg); +} +:root .ant-dropdown-trigger .anticon-down, +:root .ant-dropdown-link .anticon-down { + font-size: 12px; +} +.ant-dropdown-button { + white-space: nowrap; +} +.ant-dropdown-button.ant-btn-group > .ant-btn:last-child:not(:first-child) { + padding-left: 8px; + padding-right: 8px; +} +.ant-dropdown-button .anticon-down { + display: inline-block; + font-size: 12px; + font-size: 10px \9; + transform: scale(0.83333333) rotate(0deg); +} +:root .ant-dropdown-button .anticon-down { + font-size: 12px; +} +.ant-dropdown-menu-dark, +.ant-dropdown-menu-dark .ant-dropdown-menu { + background: #2a3542; +} +.ant-dropdown-menu-dark .ant-dropdown-menu-item, +.ant-dropdown-menu-dark .ant-dropdown-menu-submenu-title, +.ant-dropdown-menu-dark .ant-dropdown-menu-item > a { + color: rgba(255, 255, 255, 0.65); +} +.ant-dropdown-menu-dark .ant-dropdown-menu-item .ant-dropdown-menu-submenu-arrow:after, +.ant-dropdown-menu-dark .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow:after, +.ant-dropdown-menu-dark .ant-dropdown-menu-item > a .ant-dropdown-menu-submenu-arrow:after { + color: rgba(255, 255, 255, 0.65); +} +.ant-dropdown-menu-dark .ant-dropdown-menu-item:hover, +.ant-dropdown-menu-dark .ant-dropdown-menu-submenu-title:hover, +.ant-dropdown-menu-dark .ant-dropdown-menu-item > a:hover { + color: #fff; + background: transparent; +} +.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected, +.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected:hover, +.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected > a { + background: #1890ff; + color: #fff; +} +.ant-form { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; +} +.ant-form legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 16px; + line-height: inherit; + color: rgba(0, 0, 0, 0.45); + border: 0; + border-bottom: 1px solid #d9d9d9; +} +.ant-form label { + font-size: 14px; +} +.ant-form input[type="search"] { + box-sizing: border-box; +} +.ant-form input[type="radio"], +.ant-form input[type="checkbox"] { + line-height: normal; +} +.ant-form input[type="file"] { + display: block; +} +.ant-form input[type="range"] { + display: block; + width: 100%; +} +.ant-form select[multiple], +.ant-form select[size] { + height: auto; +} +.ant-form input[type="file"]:focus, +.ant-form input[type="radio"]:focus, +.ant-form input[type="checkbox"]:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.ant-form output { + display: block; + padding-top: 15px; + font-size: 14px; + line-height: 1.5; + color: #54657e; +} +.ant-form-item-required:before { + display: inline-block; + margin-right: 4px; + content: "*"; + font-family: SimSun; + line-height: 1; + font-size: 14px; + color: #f5222d; +} +.ant-form-hide-required-mark .ant-form-item-required:before { + display: none; +} +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"].disabled, +input[type="checkbox"].disabled { + cursor: not-allowed; +} +.ant-radio-inline.disabled, +.ant-radio-vertical.disabled, +.ant-checkbox-inline.disabled, +.ant-checkbox-vertical.disabled { + cursor: not-allowed; +} +.ant-radio.disabled label, +.ant-checkbox.disabled label { + cursor: not-allowed; +} +.ant-form-item { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; + margin-bottom: 24px; + vertical-align: top; + transition: margin 0.15s steps(1); +} +.ant-form-item label { + position: relative; +} +.ant-form-item label > .anticon { + vertical-align: top; + font-size: 14px; +} +.ant-form-item-control > .ant-form-item:last-child, +.ant-form-item [class^="ant-col-"] > .ant-form-item:only-child { + margin-bottom: -24px; +} +.ant-form-item-control { + line-height: 39.9999px; + position: relative; + zoom: 1; +} +.ant-form-item-control:before, +.ant-form-item-control:after { + content: " "; + display: table; +} +.ant-form-item-control:after { + clear: both; + visibility: hidden; + font-size: 0; + height: 0; +} +.ant-form-item-control:before, +.ant-form-item-control:after { + content: " "; + display: table; +} +.ant-form-item-control:after { + clear: both; + visibility: hidden; + font-size: 0; + height: 0; +} +.ant-form-item-children { + position: relative; +} +.ant-form-item-with-help { + margin-bottom: 5px; + transition: none; +} +.ant-form-item-label { + text-align: right; + vertical-align: middle; + line-height: 39.9999px; + display: inline-block; + overflow: hidden; + white-space: nowrap; +} +.ant-form-item-label label { + color: rgba(0, 0, 0, 0.85); +} +.ant-form-item-label label:after { + content: ":"; + margin: 0 8px 0 2px; + position: relative; + top: -0.5px; +} +.ant-form-item .ant-switch { + margin: 2px 0 4px; +} +.ant-form-item-no-colon .ant-form-item-label label:after { + content: " "; +} +.ant-form-explain, +.ant-form-extra { + color: rgba(0, 0, 0, 0.45); + line-height: 1.5; + transition: color 0.15s cubic-bezier(0.215, 0.61, 0.355, 1); + margin-top: -2px; +} +.ant-form-extra { + padding-top: 4px; +} +.ant-form-text { + display: inline-block; + padding-right: 8px; +} +.ant-form-split { + display: block; + text-align: center; +} +form .has-feedback .ant-input { + padding-right: 24px; +} +form .has-feedback > .ant-select .ant-select-arrow, +form .has-feedback > .ant-select .ant-select-selection__clear, +form .has-feedback :not(.ant-input-group-addon) > .ant-select .ant-select-arrow, +form .has-feedback :not(.ant-input-group-addon) > .ant-select .ant-select-selection__clear { + right: 28px; +} +form .has-feedback > .ant-select .ant-select-selection-selected-value, +form .has-feedback :not(.ant-input-group-addon) > .ant-select .ant-select-selection-selected-value { + padding-right: 42px; +} +form .has-feedback .ant-cascader-picker-arrow { + margin-right: 17px; +} +form .has-feedback .ant-cascader-picker-clear { + right: 28px; +} +form .has-feedback .ant-input-search:not(.ant-input-search-enter-button) .ant-input-suffix { + right: 28px; +} +form .has-feedback .ant-calendar-picker-icon, +form .has-feedback .ant-time-picker-icon, +form .has-feedback .ant-calendar-picker-clear, +form .has-feedback .ant-time-picker-clear { + right: 28px; +} +form textarea.ant-input { + height: auto; +} +form .ant-upload { + background: transparent; +} +form input[type="radio"], +form input[type="checkbox"] { + width: 14px; + height: 14px; +} +form .ant-radio-inline, +form .ant-checkbox-inline { + display: inline-block; + vertical-align: middle; + font-weight: normal; + cursor: pointer; + margin-left: 8px; +} +form .ant-radio-inline:first-child, +form .ant-checkbox-inline:first-child { + margin-left: 0; +} +form .ant-checkbox-vertical, +form .ant-radio-vertical { + display: block; +} +form .ant-checkbox-vertical + .ant-checkbox-vertical, +form .ant-radio-vertical + .ant-radio-vertical { + margin-left: 0; +} +form .ant-input-number + .ant-form-text { + margin-left: 8px; +} +form .ant-select, +form .ant-cascader-picker { + width: 100%; +} +form .ant-input-group .ant-select, +form .ant-input-group .ant-cascader-picker { + width: auto; +} +form .ant-input-group-wrapper { + vertical-align: middle; + position: relative; + top: -1px; +} +.ant-input-group-wrap .ant-select-selection { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.ant-input-group-wrap .ant-select-selection:hover { + border-color: #d9d9d9; +} +.ant-input-group-wrap .ant-select-selection--single { + margin-left: -1px; + height: 40px; + background-color: #eee; +} +.ant-input-group-wrap .ant-select-selection--single .ant-select-selection__rendered { + padding-left: 8px; + padding-right: 25px; + line-height: 30px; +} +.ant-input-group-wrap .ant-select-open .ant-select-selection { + border-color: #d9d9d9; + box-shadow: none; +} +.ant-form-vertical .ant-form-item-label, +.ant-col-24.ant-form-item-label, +.ant-col-xl-24.ant-form-item-label { + padding: 0 0 8px; + margin: 0; + display: block; + text-align: left; + line-height: 1.5; +} +.ant-form-vertical .ant-form-item-label label:after, +.ant-col-24.ant-form-item-label label:after, +.ant-col-xl-24.ant-form-item-label label:after { + display: none; +} +.ant-form-vertical .ant-form-item { + padding-bottom: 8px; +} +.ant-form-vertical .ant-form-item-control { + line-height: 1.5; +} +.ant-form-vertical .ant-form-explain, +.ant-form-vertical .ant-form-extra { + margin-top: 2px; + margin-bottom: -4px; +} +@media (max-width: 575px) { + .ant-form-item-label, + .ant-form-item-control-wrapper { + display: block; + width: 100%; + } + .ant-form-item-label { + padding: 0 0 8px; + margin: 0; + display: block; + text-align: left; + line-height: 1.5; + } + .ant-form-item-label label:after { + display: none; + } + .ant-col-xs-24.ant-form-item-label { + padding: 0 0 8px; + margin: 0; + display: block; + text-align: left; + line-height: 1.5; + } + .ant-col-xs-24.ant-form-item-label label:after { + display: none; + } +} +@media (max-width: 767px) { + .ant-col-sm-24.ant-form-item-label { + padding: 0 0 8px; + margin: 0; + display: block; + text-align: left; + line-height: 1.5; + } + .ant-col-sm-24.ant-form-item-label label:after { + display: none; + } +} +@media (max-width: 991px) { + .ant-col-md-24.ant-form-item-label { + padding: 0 0 8px; + margin: 0; + display: block; + text-align: left; + line-height: 1.5; + } + .ant-col-md-24.ant-form-item-label label:after { + display: none; + } +} +@media (max-width: 1199px) { + .ant-col-lg-24.ant-form-item-label { + padding: 0 0 8px; + margin: 0; + display: block; + text-align: left; + line-height: 1.5; + } + .ant-col-lg-24.ant-form-item-label label:after { + display: none; + } +} +@media (max-width: 1599px) { + .ant-col-xl-24.ant-form-item-label { + padding: 0 0 8px; + margin: 0; + display: block; + text-align: left; + line-height: 1.5; + } + .ant-col-xl-24.ant-form-item-label label:after { + display: none; + } +} +.ant-form-inline .ant-form-item { + display: inline-block; + margin-right: 16px; + margin-bottom: 0; +} +.ant-form-inline .ant-form-item-with-help { + margin-bottom: 24px; +} +.ant-form-inline .ant-form-item > .ant-form-item-control-wrapper, +.ant-form-inline .ant-form-item > .ant-form-item-label { + display: inline-block; + vertical-align: middle; +} +.ant-form-inline .ant-form-text { + display: inline-block; +} +.ant-form-inline .has-feedback { + display: inline-block; +} +.ant-form-inline .ant-form-explain { + position: absolute; +} +.has-success.has-feedback .ant-form-item-children:after, +.has-warning.has-feedback .ant-form-item-children:after, +.has-error.has-feedback .ant-form-item-children:after, +.is-validating.has-feedback .ant-form-item-children:after { + position: absolute; + top: 50%; + right: 0; + visibility: visible; + pointer-events: none; + width: 32px; + height: 20px; + line-height: 20px; + margin-top: -10px; + text-align: center; + font-size: 14px; + animation: zoomIn 0.3s cubic-bezier(0.12, 0.4, 0.29, 1.46); + font-family: 'anticon'; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: ""; + z-index: 1; +} +.has-success.has-feedback .ant-form-item-children:after { + animation-name: diffZoomIn1 !important; + content: '\e630'; + color: #52c41a; +} +.has-warning .ant-form-explain, +.has-warning .ant-form-split { + color: #faad14; +} +.has-warning .ant-input, +.has-warning .ant-input:hover { + border-color: #faad14; +} +.has-warning .ant-input:focus { + border-color: #ffc53d; + outline: 0; + box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2); +} +.has-warning .ant-input:not([disabled]):hover { + border-color: #faad14; +} +.has-warning .ant-calendar-picker-open .ant-calendar-picker-input { + border-color: #ffc53d; + outline: 0; + box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2); +} +.has-warning .ant-input-prefix { + color: #faad14; +} +.has-warning .ant-input-group-addon { + color: #faad14; + border-color: #faad14; + background-color: #fff; +} +.has-warning .has-feedback { + color: #faad14; +} +.has-warning.has-feedback .ant-form-item-children:after { + content: '\e62c'; + color: #faad14; + animation-name: diffZoomIn3 !important; +} +.has-warning .ant-select-selection { + border-color: #faad14; +} +.has-warning .ant-select-open .ant-select-selection, +.has-warning .ant-select-focused .ant-select-selection { + border-color: #ffc53d; + outline: 0; + box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2); +} +.has-warning .ant-calendar-picker-icon:after, +.has-warning .ant-time-picker-icon:after, +.has-warning .ant-picker-icon:after, +.has-warning .ant-select-arrow, +.has-warning .ant-cascader-picker-arrow { + color: #faad14; +} +.has-warning .ant-input-number, +.has-warning .ant-time-picker-input { + border-color: #faad14; +} +.has-warning .ant-input-number-focused, +.has-warning .ant-time-picker-input-focused, +.has-warning .ant-input-number:focus, +.has-warning .ant-time-picker-input:focus { + border-color: #ffc53d; + outline: 0; + box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2); +} +.has-warning .ant-input-number:not([disabled]):hover, +.has-warning .ant-time-picker-input:not([disabled]):hover { + border-color: #faad14; +} +.has-warning .ant-cascader-picker:focus .ant-cascader-input { + border-color: #ffc53d; + outline: 0; + box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2); +} +.has-error .ant-form-explain, +.has-error .ant-form-split { + color: #f5222d; +} +.has-error .ant-input, +.has-error .ant-input:hover { + border-color: #f5222d; +} +.has-error .ant-input:focus { + border-color: #ff4d4f; + outline: 0; + box-shadow: 0 0 0 2px rgba(245, 34, 45, 0.2); +} +.has-error .ant-input:not([disabled]):hover { + border-color: #f5222d; +} +.has-error .ant-calendar-picker-open .ant-calendar-picker-input { + border-color: #ff4d4f; + outline: 0; + box-shadow: 0 0 0 2px rgba(245, 34, 45, 0.2); +} +.has-error .ant-input-prefix { + color: #f5222d; +} +.has-error .ant-input-group-addon { + color: #f5222d; + border-color: #f5222d; + background-color: #fff; +} +.has-error .has-feedback { + color: #f5222d; +} +.has-error.has-feedback .ant-form-item-children:after { + content: '\e62e'; + color: #f5222d; + animation-name: diffZoomIn2 !important; +} +.has-error .ant-select-selection { + border-color: #f5222d; +} +.has-error .ant-select-open .ant-select-selection, +.has-error .ant-select-focused .ant-select-selection { + border-color: #ff4d4f; + outline: 0; + box-shadow: 0 0 0 2px rgba(245, 34, 45, 0.2); +} +.has-error .ant-select.ant-select-auto-complete .ant-input:focus { + border-color: #f5222d; +} +.has-error .ant-input-group-addon .ant-select-selection { + border-color: transparent; + box-shadow: none; +} +.has-error .ant-calendar-picker-icon:after, +.has-error .ant-time-picker-icon:after, +.has-error .ant-picker-icon:after, +.has-error .ant-select-arrow, +.has-error .ant-cascader-picker-arrow { + color: #f5222d; +} +.has-error .ant-input-number, +.has-error .ant-time-picker-input { + border-color: #f5222d; +} +.has-error .ant-input-number-focused, +.has-error .ant-time-picker-input-focused, +.has-error .ant-input-number:focus, +.has-error .ant-time-picker-input:focus { + border-color: #ff4d4f; + outline: 0; + box-shadow: 0 0 0 2px rgba(245, 34, 45, 0.2); +} +.has-error .ant-input-number:not([disabled]):hover, +.has-error .ant-time-picker-input:not([disabled]):hover { + border-color: #f5222d; +} +.has-error .ant-mention-wrapper .ant-mention-editor, +.has-error .ant-mention-wrapper .ant-mention-editor:not([disabled]):hover { + border-color: #f5222d; +} +.has-error .ant-mention-wrapper.ant-mention-active:not([disabled]) .ant-mention-editor, +.has-error .ant-mention-wrapper .ant-mention-editor:not([disabled]):focus { + border-color: #ff4d4f; + outline: 0; + box-shadow: 0 0 0 2px rgba(245, 34, 45, 0.2); +} +.has-error .ant-cascader-picker:focus .ant-cascader-input { + border-color: #ff4d4f; + outline: 0; + box-shadow: 0 0 0 2px rgba(245, 34, 45, 0.2); +} +.is-validating.has-feedback .ant-form-item-children:after { + display: inline-block; + animation: loadingCircle 1s infinite linear; + content: "\e64d"; + color: #1890ff; +} +.ant-advanced-search-form .ant-form-item { + margin-bottom: 24px; +} +.show-help-enter, +.show-help-appear { + animation-duration: 0.15s; + animation-fill-mode: both; + animation-play-state: paused; +} +.show-help-leave { + animation-duration: 0.15s; + animation-fill-mode: both; + animation-play-state: paused; +} +.show-help-enter.show-help-enter-active, +.show-help-appear.show-help-appear-active { + animation-name: antShowHelpIn; + animation-play-state: running; +} +.show-help-leave.show-help-leave-active { + animation-name: antShowHelpOut; + animation-play-state: running; + pointer-events: none; +} +.show-help-enter, +.show-help-appear { + opacity: 0; + animation-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1); +} +.show-help-leave { + animation-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1); +} +@keyframes antShowHelpIn { + 0% { + opacity: 0; + transform: translateY(-5px); + } + 100% { + opacity: 1; + transform: translateY(0); + } +} +@keyframes antShowHelpOut { + to { + opacity: 0; + transform: translateY(-5px); + } +} +@keyframes diffZoomIn1 { + 0% { + transform: scale(0); + } + 100% { + transform: scale(1); + } +} +@keyframes diffZoomIn2 { + 0% { + transform: scale(0); + } + 100% { + transform: scale(1); + } +} +@keyframes diffZoomIn3 { + 0% { + transform: scale(0); + } + 100% { + transform: scale(1); + } +} +.ant-row { + position: relative; + margin-left: 0; + margin-right: 0; + height: auto; + zoom: 1; + display: block; + box-sizing: border-box; +} +.ant-row:before, +.ant-row:after { + content: " "; + display: table; +} +.ant-row:after { + clear: both; + visibility: hidden; + font-size: 0; + height: 0; +} +.ant-row:before, +.ant-row:after { + content: " "; + display: table; +} +.ant-row:after { + clear: both; + visibility: hidden; + font-size: 0; + height: 0; +} +.ant-row-flex { + display: flex; + flex-flow: row wrap; +} +.ant-row-flex:before, +.ant-row-flex:after { + display: flex; +} +.ant-row-flex-start { + justify-content: flex-start; +} +.ant-row-flex-center { + justify-content: center; +} +.ant-row-flex-end { + justify-content: flex-end; +} +.ant-row-flex-space-between { + justify-content: space-between; +} +.ant-row-flex-space-around { + justify-content: space-around; +} +.ant-row-flex-top { + align-items: flex-start; +} +.ant-row-flex-middle { + align-items: center; +} +.ant-row-flex-bottom { + align-items: flex-end; +} +.ant-col { + position: relative; + display: block; +} +.ant-col-1, .ant-col-xs-1, .ant-col-sm-1, .ant-col-md-1, .ant-col-lg-1, .ant-col-2, .ant-col-xs-2, .ant-col-sm-2, .ant-col-md-2, .ant-col-lg-2, .ant-col-3, .ant-col-xs-3, .ant-col-sm-3, .ant-col-md-3, .ant-col-lg-3, .ant-col-4, .ant-col-xs-4, .ant-col-sm-4, .ant-col-md-4, .ant-col-lg-4, .ant-col-5, .ant-col-xs-5, .ant-col-sm-5, .ant-col-md-5, .ant-col-lg-5, .ant-col-6, .ant-col-xs-6, .ant-col-sm-6, .ant-col-md-6, .ant-col-lg-6, .ant-col-7, .ant-col-xs-7, .ant-col-sm-7, .ant-col-md-7, .ant-col-lg-7, .ant-col-8, .ant-col-xs-8, .ant-col-sm-8, .ant-col-md-8, .ant-col-lg-8, .ant-col-9, .ant-col-xs-9, .ant-col-sm-9, .ant-col-md-9, .ant-col-lg-9, .ant-col-10, .ant-col-xs-10, .ant-col-sm-10, .ant-col-md-10, .ant-col-lg-10, .ant-col-11, .ant-col-xs-11, .ant-col-sm-11, .ant-col-md-11, .ant-col-lg-11, .ant-col-12, .ant-col-xs-12, .ant-col-sm-12, .ant-col-md-12, .ant-col-lg-12, .ant-col-13, .ant-col-xs-13, .ant-col-sm-13, .ant-col-md-13, .ant-col-lg-13, .ant-col-14, .ant-col-xs-14, .ant-col-sm-14, .ant-col-md-14, .ant-col-lg-14, .ant-col-15, .ant-col-xs-15, .ant-col-sm-15, .ant-col-md-15, .ant-col-lg-15, .ant-col-16, .ant-col-xs-16, .ant-col-sm-16, .ant-col-md-16, .ant-col-lg-16, .ant-col-17, .ant-col-xs-17, .ant-col-sm-17, .ant-col-md-17, .ant-col-lg-17, .ant-col-18, .ant-col-xs-18, .ant-col-sm-18, .ant-col-md-18, .ant-col-lg-18, .ant-col-19, .ant-col-xs-19, .ant-col-sm-19, .ant-col-md-19, .ant-col-lg-19, .ant-col-20, .ant-col-xs-20, .ant-col-sm-20, .ant-col-md-20, .ant-col-lg-20, .ant-col-21, .ant-col-xs-21, .ant-col-sm-21, .ant-col-md-21, .ant-col-lg-21, .ant-col-22, .ant-col-xs-22, .ant-col-sm-22, .ant-col-md-22, .ant-col-lg-22, .ant-col-23, .ant-col-xs-23, .ant-col-sm-23, .ant-col-md-23, .ant-col-lg-23, .ant-col-24, .ant-col-xs-24, .ant-col-sm-24, .ant-col-md-24, .ant-col-lg-24 { + position: relative; + min-height: 1px; + padding-left: 0; + padding-right: 0; +} +.ant-col-1, .ant-col-2, .ant-col-3, .ant-col-4, .ant-col-5, .ant-col-6, .ant-col-7, .ant-col-8, .ant-col-9, .ant-col-10, .ant-col-11, .ant-col-12, .ant-col-13, .ant-col-14, .ant-col-15, .ant-col-16, .ant-col-17, .ant-col-18, .ant-col-19, .ant-col-20, .ant-col-21, .ant-col-22, .ant-col-23, .ant-col-24 { + float: left; + flex: 0 0 auto; +} +.ant-col-24 { + display: block; + box-sizing: border-box; + width: 100%; +} +.ant-col-push-24 { + left: 100%; +} +.ant-col-pull-24 { + right: 100%; +} +.ant-col-offset-24 { + margin-left: 100%; +} +.ant-col-order-24 { + order: 24; +} +.ant-col-23 { + display: block; + box-sizing: border-box; + width: 95.83333333%; +} +.ant-col-push-23 { + left: 95.83333333%; +} +.ant-col-pull-23 { + right: 95.83333333%; +} +.ant-col-offset-23 { + margin-left: 95.83333333%; +} +.ant-col-order-23 { + order: 23; +} +.ant-col-22 { + display: block; + box-sizing: border-box; + width: 91.66666667%; +} +.ant-col-push-22 { + left: 91.66666667%; +} +.ant-col-pull-22 { + right: 91.66666667%; +} +.ant-col-offset-22 { + margin-left: 91.66666667%; +} +.ant-col-order-22 { + order: 22; +} +.ant-col-21 { + display: block; + box-sizing: border-box; + width: 87.5%; +} +.ant-col-push-21 { + left: 87.5%; +} +.ant-col-pull-21 { + right: 87.5%; +} +.ant-col-offset-21 { + margin-left: 87.5%; +} +.ant-col-order-21 { + order: 21; +} +.ant-col-20 { + display: block; + box-sizing: border-box; + width: 83.33333333%; +} +.ant-col-push-20 { + left: 83.33333333%; +} +.ant-col-pull-20 { + right: 83.33333333%; +} +.ant-col-offset-20 { + margin-left: 83.33333333%; +} +.ant-col-order-20 { + order: 20; +} +.ant-col-19 { + display: block; + box-sizing: border-box; + width: 79.16666667%; +} +.ant-col-push-19 { + left: 79.16666667%; +} +.ant-col-pull-19 { + right: 79.16666667%; +} +.ant-col-offset-19 { + margin-left: 79.16666667%; +} +.ant-col-order-19 { + order: 19; +} +.ant-col-18 { + display: block; + box-sizing: border-box; + width: 75%; +} +.ant-col-push-18 { + left: 75%; +} +.ant-col-pull-18 { + right: 75%; +} +.ant-col-offset-18 { + margin-left: 75%; +} +.ant-col-order-18 { + order: 18; +} +.ant-col-17 { + display: block; + box-sizing: border-box; + width: 70.83333333%; +} +.ant-col-push-17 { + left: 70.83333333%; +} +.ant-col-pull-17 { + right: 70.83333333%; +} +.ant-col-offset-17 { + margin-left: 70.83333333%; +} +.ant-col-order-17 { + order: 17; +} +.ant-col-16 { + display: block; + box-sizing: border-box; + width: 66.66666667%; +} +.ant-col-push-16 { + left: 66.66666667%; +} +.ant-col-pull-16 { + right: 66.66666667%; +} +.ant-col-offset-16 { + margin-left: 66.66666667%; +} +.ant-col-order-16 { + order: 16; +} +.ant-col-15 { + display: block; + box-sizing: border-box; + width: 62.5%; +} +.ant-col-push-15 { + left: 62.5%; +} +.ant-col-pull-15 { + right: 62.5%; +} +.ant-col-offset-15 { + margin-left: 62.5%; +} +.ant-col-order-15 { + order: 15; +} +.ant-col-14 { + display: block; + box-sizing: border-box; + width: 58.33333333%; +} +.ant-col-push-14 { + left: 58.33333333%; +} +.ant-col-pull-14 { + right: 58.33333333%; +} +.ant-col-offset-14 { + margin-left: 58.33333333%; +} +.ant-col-order-14 { + order: 14; +} +.ant-col-13 { + display: block; + box-sizing: border-box; + width: 54.16666667%; +} +.ant-col-push-13 { + left: 54.16666667%; +} +.ant-col-pull-13 { + right: 54.16666667%; +} +.ant-col-offset-13 { + margin-left: 54.16666667%; +} +.ant-col-order-13 { + order: 13; +} +.ant-col-12 { + display: block; + box-sizing: border-box; + width: 50%; +} +.ant-col-push-12 { + left: 50%; +} +.ant-col-pull-12 { + right: 50%; +} +.ant-col-offset-12 { + margin-left: 50%; +} +.ant-col-order-12 { + order: 12; +} +.ant-col-11 { + display: block; + box-sizing: border-box; + width: 45.83333333%; +} +.ant-col-push-11 { + left: 45.83333333%; +} +.ant-col-pull-11 { + right: 45.83333333%; +} +.ant-col-offset-11 { + margin-left: 45.83333333%; +} +.ant-col-order-11 { + order: 11; +} +.ant-col-10 { + display: block; + box-sizing: border-box; + width: 41.66666667%; +} +.ant-col-push-10 { + left: 41.66666667%; +} +.ant-col-pull-10 { + right: 41.66666667%; +} +.ant-col-offset-10 { + margin-left: 41.66666667%; +} +.ant-col-order-10 { + order: 10; +} +.ant-col-9 { + display: block; + box-sizing: border-box; + width: 37.5%; +} +.ant-col-push-9 { + left: 37.5%; +} +.ant-col-pull-9 { + right: 37.5%; +} +.ant-col-offset-9 { + margin-left: 37.5%; +} +.ant-col-order-9 { + order: 9; +} +.ant-col-8 { + display: block; + box-sizing: border-box; + width: 33.33333333%; +} +.ant-col-push-8 { + left: 33.33333333%; +} +.ant-col-pull-8 { + right: 33.33333333%; +} +.ant-col-offset-8 { + margin-left: 33.33333333%; +} +.ant-col-order-8 { + order: 8; +} +.ant-col-7 { + display: block; + box-sizing: border-box; + width: 29.16666667%; +} +.ant-col-push-7 { + left: 29.16666667%; +} +.ant-col-pull-7 { + right: 29.16666667%; +} +.ant-col-offset-7 { + margin-left: 29.16666667%; +} +.ant-col-order-7 { + order: 7; +} +.ant-col-6 { + display: block; + box-sizing: border-box; + width: 25%; +} +.ant-col-push-6 { + left: 25%; +} +.ant-col-pull-6 { + right: 25%; +} +.ant-col-offset-6 { + margin-left: 25%; +} +.ant-col-order-6 { + order: 6; +} +.ant-col-5 { + display: block; + box-sizing: border-box; + width: 20.83333333%; +} +.ant-col-push-5 { + left: 20.83333333%; +} +.ant-col-pull-5 { + right: 20.83333333%; +} +.ant-col-offset-5 { + margin-left: 20.83333333%; +} +.ant-col-order-5 { + order: 5; +} +.ant-col-4 { + display: block; + box-sizing: border-box; + width: 16.66666667%; +} +.ant-col-push-4 { + left: 16.66666667%; +} +.ant-col-pull-4 { + right: 16.66666667%; +} +.ant-col-offset-4 { + margin-left: 16.66666667%; +} +.ant-col-order-4 { + order: 4; +} +.ant-col-3 { + display: block; + box-sizing: border-box; + width: 12.5%; +} +.ant-col-push-3 { + left: 12.5%; +} +.ant-col-pull-3 { + right: 12.5%; +} +.ant-col-offset-3 { + margin-left: 12.5%; +} +.ant-col-order-3 { + order: 3; +} +.ant-col-2 { + display: block; + box-sizing: border-box; + width: 8.33333333%; +} +.ant-col-push-2 { + left: 8.33333333%; +} +.ant-col-pull-2 { + right: 8.33333333%; +} +.ant-col-offset-2 { + margin-left: 8.33333333%; +} +.ant-col-order-2 { + order: 2; +} +.ant-col-1 { + display: block; + box-sizing: border-box; + width: 4.16666667%; +} +.ant-col-push-1 { + left: 4.16666667%; +} +.ant-col-pull-1 { + right: 4.16666667%; +} +.ant-col-offset-1 { + margin-left: 4.16666667%; +} +.ant-col-order-1 { + order: 1; +} +.ant-col-0 { + display: none; +} +.ant-col-push-0 { + left: auto; +} +.ant-col-pull-0 { + right: auto; +} +.ant-col-push-0 { + left: auto; +} +.ant-col-pull-0 { + right: auto; +} +.ant-col-offset-0 { + margin-left: 0; +} +.ant-col-order-0 { + order: 0; +} +.ant-col-xs-1, .ant-col-xs-2, .ant-col-xs-3, .ant-col-xs-4, .ant-col-xs-5, .ant-col-xs-6, .ant-col-xs-7, .ant-col-xs-8, .ant-col-xs-9, .ant-col-xs-10, .ant-col-xs-11, .ant-col-xs-12, .ant-col-xs-13, .ant-col-xs-14, .ant-col-xs-15, .ant-col-xs-16, .ant-col-xs-17, .ant-col-xs-18, .ant-col-xs-19, .ant-col-xs-20, .ant-col-xs-21, .ant-col-xs-22, .ant-col-xs-23, .ant-col-xs-24 { + float: left; + flex: 0 0 auto; +} +.ant-col-xs-24 { + display: block; + box-sizing: border-box; + width: 100%; +} +.ant-col-xs-push-24 { + left: 100%; +} +.ant-col-xs-pull-24 { + right: 100%; +} +.ant-col-xs-offset-24 { + margin-left: 100%; +} +.ant-col-xs-order-24 { + order: 24; +} +.ant-col-xs-23 { + display: block; + box-sizing: border-box; + width: 95.83333333%; +} +.ant-col-xs-push-23 { + left: 95.83333333%; +} +.ant-col-xs-pull-23 { + right: 95.83333333%; +} +.ant-col-xs-offset-23 { + margin-left: 95.83333333%; +} +.ant-col-xs-order-23 { + order: 23; +} +.ant-col-xs-22 { + display: block; + box-sizing: border-box; + width: 91.66666667%; +} +.ant-col-xs-push-22 { + left: 91.66666667%; +} +.ant-col-xs-pull-22 { + right: 91.66666667%; +} +.ant-col-xs-offset-22 { + margin-left: 91.66666667%; +} +.ant-col-xs-order-22 { + order: 22; +} +.ant-col-xs-21 { + display: block; + box-sizing: border-box; + width: 87.5%; +} +.ant-col-xs-push-21 { + left: 87.5%; +} +.ant-col-xs-pull-21 { + right: 87.5%; +} +.ant-col-xs-offset-21 { + margin-left: 87.5%; +} +.ant-col-xs-order-21 { + order: 21; +} +.ant-col-xs-20 { + display: block; + box-sizing: border-box; + width: 83.33333333%; +} +.ant-col-xs-push-20 { + left: 83.33333333%; +} +.ant-col-xs-pull-20 { + right: 83.33333333%; +} +.ant-col-xs-offset-20 { + margin-left: 83.33333333%; +} +.ant-col-xs-order-20 { + order: 20; +} +.ant-col-xs-19 { + display: block; + box-sizing: border-box; + width: 79.16666667%; +} +.ant-col-xs-push-19 { + left: 79.16666667%; +} +.ant-col-xs-pull-19 { + right: 79.16666667%; +} +.ant-col-xs-offset-19 { + margin-left: 79.16666667%; +} +.ant-col-xs-order-19 { + order: 19; +} +.ant-col-xs-18 { + display: block; + box-sizing: border-box; + width: 75%; +} +.ant-col-xs-push-18 { + left: 75%; +} +.ant-col-xs-pull-18 { + right: 75%; +} +.ant-col-xs-offset-18 { + margin-left: 75%; +} +.ant-col-xs-order-18 { + order: 18; +} +.ant-col-xs-17 { + display: block; + box-sizing: border-box; + width: 70.83333333%; +} +.ant-col-xs-push-17 { + left: 70.83333333%; +} +.ant-col-xs-pull-17 { + right: 70.83333333%; +} +.ant-col-xs-offset-17 { + margin-left: 70.83333333%; +} +.ant-col-xs-order-17 { + order: 17; +} +.ant-col-xs-16 { + display: block; + box-sizing: border-box; + width: 66.66666667%; +} +.ant-col-xs-push-16 { + left: 66.66666667%; +} +.ant-col-xs-pull-16 { + right: 66.66666667%; +} +.ant-col-xs-offset-16 { + margin-left: 66.66666667%; +} +.ant-col-xs-order-16 { + order: 16; +} +.ant-col-xs-15 { + display: block; + box-sizing: border-box; + width: 62.5%; +} +.ant-col-xs-push-15 { + left: 62.5%; +} +.ant-col-xs-pull-15 { + right: 62.5%; +} +.ant-col-xs-offset-15 { + margin-left: 62.5%; +} +.ant-col-xs-order-15 { + order: 15; +} +.ant-col-xs-14 { + display: block; + box-sizing: border-box; + width: 58.33333333%; +} +.ant-col-xs-push-14 { + left: 58.33333333%; +} +.ant-col-xs-pull-14 { + right: 58.33333333%; +} +.ant-col-xs-offset-14 { + margin-left: 58.33333333%; +} +.ant-col-xs-order-14 { + order: 14; +} +.ant-col-xs-13 { + display: block; + box-sizing: border-box; + width: 54.16666667%; +} +.ant-col-xs-push-13 { + left: 54.16666667%; +} +.ant-col-xs-pull-13 { + right: 54.16666667%; +} +.ant-col-xs-offset-13 { + margin-left: 54.16666667%; +} +.ant-col-xs-order-13 { + order: 13; +} +.ant-col-xs-12 { + display: block; + box-sizing: border-box; + width: 50%; +} +.ant-col-xs-push-12 { + left: 50%; +} +.ant-col-xs-pull-12 { + right: 50%; +} +.ant-col-xs-offset-12 { + margin-left: 50%; +} +.ant-col-xs-order-12 { + order: 12; +} +.ant-col-xs-11 { + display: block; + box-sizing: border-box; + width: 45.83333333%; +} +.ant-col-xs-push-11 { + left: 45.83333333%; +} +.ant-col-xs-pull-11 { + right: 45.83333333%; +} +.ant-col-xs-offset-11 { + margin-left: 45.83333333%; +} +.ant-col-xs-order-11 { + order: 11; +} +.ant-col-xs-10 { + display: block; + box-sizing: border-box; + width: 41.66666667%; +} +.ant-col-xs-push-10 { + left: 41.66666667%; +} +.ant-col-xs-pull-10 { + right: 41.66666667%; +} +.ant-col-xs-offset-10 { + margin-left: 41.66666667%; +} +.ant-col-xs-order-10 { + order: 10; +} +.ant-col-xs-9 { + display: block; + box-sizing: border-box; + width: 37.5%; +} +.ant-col-xs-push-9 { + left: 37.5%; +} +.ant-col-xs-pull-9 { + right: 37.5%; +} +.ant-col-xs-offset-9 { + margin-left: 37.5%; +} +.ant-col-xs-order-9 { + order: 9; +} +.ant-col-xs-8 { + display: block; + box-sizing: border-box; + width: 33.33333333%; +} +.ant-col-xs-push-8 { + left: 33.33333333%; +} +.ant-col-xs-pull-8 { + right: 33.33333333%; +} +.ant-col-xs-offset-8 { + margin-left: 33.33333333%; +} +.ant-col-xs-order-8 { + order: 8; +} +.ant-col-xs-7 { + display: block; + box-sizing: border-box; + width: 29.16666667%; +} +.ant-col-xs-push-7 { + left: 29.16666667%; +} +.ant-col-xs-pull-7 { + right: 29.16666667%; +} +.ant-col-xs-offset-7 { + margin-left: 29.16666667%; +} +.ant-col-xs-order-7 { + order: 7; +} +.ant-col-xs-6 { + display: block; + box-sizing: border-box; + width: 25%; +} +.ant-col-xs-push-6 { + left: 25%; +} +.ant-col-xs-pull-6 { + right: 25%; +} +.ant-col-xs-offset-6 { + margin-left: 25%; +} +.ant-col-xs-order-6 { + order: 6; +} +.ant-col-xs-5 { + display: block; + box-sizing: border-box; + width: 20.83333333%; +} +.ant-col-xs-push-5 { + left: 20.83333333%; +} +.ant-col-xs-pull-5 { + right: 20.83333333%; +} +.ant-col-xs-offset-5 { + margin-left: 20.83333333%; +} +.ant-col-xs-order-5 { + order: 5; +} +.ant-col-xs-4 { + display: block; + box-sizing: border-box; + width: 16.66666667%; +} +.ant-col-xs-push-4 { + left: 16.66666667%; +} +.ant-col-xs-pull-4 { + right: 16.66666667%; +} +.ant-col-xs-offset-4 { + margin-left: 16.66666667%; +} +.ant-col-xs-order-4 { + order: 4; +} +.ant-col-xs-3 { + display: block; + box-sizing: border-box; + width: 12.5%; +} +.ant-col-xs-push-3 { + left: 12.5%; +} +.ant-col-xs-pull-3 { + right: 12.5%; +} +.ant-col-xs-offset-3 { + margin-left: 12.5%; +} +.ant-col-xs-order-3 { + order: 3; +} +.ant-col-xs-2 { + display: block; + box-sizing: border-box; + width: 8.33333333%; +} +.ant-col-xs-push-2 { + left: 8.33333333%; +} +.ant-col-xs-pull-2 { + right: 8.33333333%; +} +.ant-col-xs-offset-2 { + margin-left: 8.33333333%; +} +.ant-col-xs-order-2 { + order: 2; +} +.ant-col-xs-1 { + display: block; + box-sizing: border-box; + width: 4.16666667%; +} +.ant-col-xs-push-1 { + left: 4.16666667%; +} +.ant-col-xs-pull-1 { + right: 4.16666667%; +} +.ant-col-xs-offset-1 { + margin-left: 4.16666667%; +} +.ant-col-xs-order-1 { + order: 1; +} +.ant-col-xs-0 { + display: none; +} +.ant-col-push-0 { + left: auto; +} +.ant-col-pull-0 { + right: auto; +} +.ant-col-xs-push-0 { + left: auto; +} +.ant-col-xs-pull-0 { + right: auto; +} +.ant-col-xs-offset-0 { + margin-left: 0; +} +.ant-col-xs-order-0 { + order: 0; +} +@media (min-width: 576px) { + .ant-col-sm-1, .ant-col-sm-2, .ant-col-sm-3, .ant-col-sm-4, .ant-col-sm-5, .ant-col-sm-6, .ant-col-sm-7, .ant-col-sm-8, .ant-col-sm-9, .ant-col-sm-10, .ant-col-sm-11, .ant-col-sm-12, .ant-col-sm-13, .ant-col-sm-14, .ant-col-sm-15, .ant-col-sm-16, .ant-col-sm-17, .ant-col-sm-18, .ant-col-sm-19, .ant-col-sm-20, .ant-col-sm-21, .ant-col-sm-22, .ant-col-sm-23, .ant-col-sm-24 { + float: left; + flex: 0 0 auto; + } + .ant-col-sm-24 { + display: block; + box-sizing: border-box; + width: 100%; + } + .ant-col-sm-push-24 { + left: 100%; + } + .ant-col-sm-pull-24 { + right: 100%; + } + .ant-col-sm-offset-24 { + margin-left: 100%; + } + .ant-col-sm-order-24 { + order: 24; + } + .ant-col-sm-23 { + display: block; + box-sizing: border-box; + width: 95.83333333%; + } + .ant-col-sm-push-23 { + left: 95.83333333%; + } + .ant-col-sm-pull-23 { + right: 95.83333333%; + } + .ant-col-sm-offset-23 { + margin-left: 95.83333333%; + } + .ant-col-sm-order-23 { + order: 23; + } + .ant-col-sm-22 { + display: block; + box-sizing: border-box; + width: 91.66666667%; + } + .ant-col-sm-push-22 { + left: 91.66666667%; + } + .ant-col-sm-pull-22 { + right: 91.66666667%; + } + .ant-col-sm-offset-22 { + margin-left: 91.66666667%; + } + .ant-col-sm-order-22 { + order: 22; + } + .ant-col-sm-21 { + display: block; + box-sizing: border-box; + width: 87.5%; + } + .ant-col-sm-push-21 { + left: 87.5%; + } + .ant-col-sm-pull-21 { + right: 87.5%; + } + .ant-col-sm-offset-21 { + margin-left: 87.5%; + } + .ant-col-sm-order-21 { + order: 21; + } + .ant-col-sm-20 { + display: block; + box-sizing: border-box; + width: 83.33333333%; + } + .ant-col-sm-push-20 { + left: 83.33333333%; + } + .ant-col-sm-pull-20 { + right: 83.33333333%; + } + .ant-col-sm-offset-20 { + margin-left: 83.33333333%; + } + .ant-col-sm-order-20 { + order: 20; + } + .ant-col-sm-19 { + display: block; + box-sizing: border-box; + width: 79.16666667%; + } + .ant-col-sm-push-19 { + left: 79.16666667%; + } + .ant-col-sm-pull-19 { + right: 79.16666667%; + } + .ant-col-sm-offset-19 { + margin-left: 79.16666667%; + } + .ant-col-sm-order-19 { + order: 19; + } + .ant-col-sm-18 { + display: block; + box-sizing: border-box; + width: 75%; + } + .ant-col-sm-push-18 { + left: 75%; + } + .ant-col-sm-pull-18 { + right: 75%; + } + .ant-col-sm-offset-18 { + margin-left: 75%; + } + .ant-col-sm-order-18 { + order: 18; + } + .ant-col-sm-17 { + display: block; + box-sizing: border-box; + width: 70.83333333%; + } + .ant-col-sm-push-17 { + left: 70.83333333%; + } + .ant-col-sm-pull-17 { + right: 70.83333333%; + } + .ant-col-sm-offset-17 { + margin-left: 70.83333333%; + } + .ant-col-sm-order-17 { + order: 17; + } + .ant-col-sm-16 { + display: block; + box-sizing: border-box; + width: 66.66666667%; + } + .ant-col-sm-push-16 { + left: 66.66666667%; + } + .ant-col-sm-pull-16 { + right: 66.66666667%; + } + .ant-col-sm-offset-16 { + margin-left: 66.66666667%; + } + .ant-col-sm-order-16 { + order: 16; + } + .ant-col-sm-15 { + display: block; + box-sizing: border-box; + width: 62.5%; + } + .ant-col-sm-push-15 { + left: 62.5%; + } + .ant-col-sm-pull-15 { + right: 62.5%; + } + .ant-col-sm-offset-15 { + margin-left: 62.5%; + } + .ant-col-sm-order-15 { + order: 15; + } + .ant-col-sm-14 { + display: block; + box-sizing: border-box; + width: 58.33333333%; + } + .ant-col-sm-push-14 { + left: 58.33333333%; + } + .ant-col-sm-pull-14 { + right: 58.33333333%; + } + .ant-col-sm-offset-14 { + margin-left: 58.33333333%; + } + .ant-col-sm-order-14 { + order: 14; + } + .ant-col-sm-13 { + display: block; + box-sizing: border-box; + width: 54.16666667%; + } + .ant-col-sm-push-13 { + left: 54.16666667%; + } + .ant-col-sm-pull-13 { + right: 54.16666667%; + } + .ant-col-sm-offset-13 { + margin-left: 54.16666667%; + } + .ant-col-sm-order-13 { + order: 13; + } + .ant-col-sm-12 { + display: block; + box-sizing: border-box; + width: 50%; + } + .ant-col-sm-push-12 { + left: 50%; + } + .ant-col-sm-pull-12 { + right: 50%; + } + .ant-col-sm-offset-12 { + margin-left: 50%; + } + .ant-col-sm-order-12 { + order: 12; + } + .ant-col-sm-11 { + display: block; + box-sizing: border-box; + width: 45.83333333%; + } + .ant-col-sm-push-11 { + left: 45.83333333%; + } + .ant-col-sm-pull-11 { + right: 45.83333333%; + } + .ant-col-sm-offset-11 { + margin-left: 45.83333333%; + } + .ant-col-sm-order-11 { + order: 11; + } + .ant-col-sm-10 { + display: block; + box-sizing: border-box; + width: 41.66666667%; + } + .ant-col-sm-push-10 { + left: 41.66666667%; + } + .ant-col-sm-pull-10 { + right: 41.66666667%; + } + .ant-col-sm-offset-10 { + margin-left: 41.66666667%; + } + .ant-col-sm-order-10 { + order: 10; + } + .ant-col-sm-9 { + display: block; + box-sizing: border-box; + width: 37.5%; + } + .ant-col-sm-push-9 { + left: 37.5%; + } + .ant-col-sm-pull-9 { + right: 37.5%; + } + .ant-col-sm-offset-9 { + margin-left: 37.5%; + } + .ant-col-sm-order-9 { + order: 9; + } + .ant-col-sm-8 { + display: block; + box-sizing: border-box; + width: 33.33333333%; + } + .ant-col-sm-push-8 { + left: 33.33333333%; + } + .ant-col-sm-pull-8 { + right: 33.33333333%; + } + .ant-col-sm-offset-8 { + margin-left: 33.33333333%; + } + .ant-col-sm-order-8 { + order: 8; + } + .ant-col-sm-7 { + display: block; + box-sizing: border-box; + width: 29.16666667%; + } + .ant-col-sm-push-7 { + left: 29.16666667%; + } + .ant-col-sm-pull-7 { + right: 29.16666667%; + } + .ant-col-sm-offset-7 { + margin-left: 29.16666667%; + } + .ant-col-sm-order-7 { + order: 7; + } + .ant-col-sm-6 { + display: block; + box-sizing: border-box; + width: 25%; + } + .ant-col-sm-push-6 { + left: 25%; + } + .ant-col-sm-pull-6 { + right: 25%; + } + .ant-col-sm-offset-6 { + margin-left: 25%; + } + .ant-col-sm-order-6 { + order: 6; + } + .ant-col-sm-5 { + display: block; + box-sizing: border-box; + width: 20.83333333%; + } + .ant-col-sm-push-5 { + left: 20.83333333%; + } + .ant-col-sm-pull-5 { + right: 20.83333333%; + } + .ant-col-sm-offset-5 { + margin-left: 20.83333333%; + } + .ant-col-sm-order-5 { + order: 5; + } + .ant-col-sm-4 { + display: block; + box-sizing: border-box; + width: 16.66666667%; + } + .ant-col-sm-push-4 { + left: 16.66666667%; + } + .ant-col-sm-pull-4 { + right: 16.66666667%; + } + .ant-col-sm-offset-4 { + margin-left: 16.66666667%; + } + .ant-col-sm-order-4 { + order: 4; + } + .ant-col-sm-3 { + display: block; + box-sizing: border-box; + width: 12.5%; + } + .ant-col-sm-push-3 { + left: 12.5%; + } + .ant-col-sm-pull-3 { + right: 12.5%; + } + .ant-col-sm-offset-3 { + margin-left: 12.5%; + } + .ant-col-sm-order-3 { + order: 3; + } + .ant-col-sm-2 { + display: block; + box-sizing: border-box; + width: 8.33333333%; + } + .ant-col-sm-push-2 { + left: 8.33333333%; + } + .ant-col-sm-pull-2 { + right: 8.33333333%; + } + .ant-col-sm-offset-2 { + margin-left: 8.33333333%; + } + .ant-col-sm-order-2 { + order: 2; + } + .ant-col-sm-1 { + display: block; + box-sizing: border-box; + width: 4.16666667%; + } + .ant-col-sm-push-1 { + left: 4.16666667%; + } + .ant-col-sm-pull-1 { + right: 4.16666667%; + } + .ant-col-sm-offset-1 { + margin-left: 4.16666667%; + } + .ant-col-sm-order-1 { + order: 1; + } + .ant-col-sm-0 { + display: none; + } + .ant-col-push-0 { + left: auto; + } + .ant-col-pull-0 { + right: auto; + } + .ant-col-sm-push-0 { + left: auto; + } + .ant-col-sm-pull-0 { + right: auto; + } + .ant-col-sm-offset-0 { + margin-left: 0; + } + .ant-col-sm-order-0 { + order: 0; + } +} +@media (min-width: 768px) { + .ant-col-md-1, .ant-col-md-2, .ant-col-md-3, .ant-col-md-4, .ant-col-md-5, .ant-col-md-6, .ant-col-md-7, .ant-col-md-8, .ant-col-md-9, .ant-col-md-10, .ant-col-md-11, .ant-col-md-12, .ant-col-md-13, .ant-col-md-14, .ant-col-md-15, .ant-col-md-16, .ant-col-md-17, .ant-col-md-18, .ant-col-md-19, .ant-col-md-20, .ant-col-md-21, .ant-col-md-22, .ant-col-md-23, .ant-col-md-24 { + float: left; + flex: 0 0 auto; + } + .ant-col-md-24 { + display: block; + box-sizing: border-box; + width: 100%; + } + .ant-col-md-push-24 { + left: 100%; + } + .ant-col-md-pull-24 { + right: 100%; + } + .ant-col-md-offset-24 { + margin-left: 100%; + } + .ant-col-md-order-24 { + order: 24; + } + .ant-col-md-23 { + display: block; + box-sizing: border-box; + width: 95.83333333%; + } + .ant-col-md-push-23 { + left: 95.83333333%; + } + .ant-col-md-pull-23 { + right: 95.83333333%; + } + .ant-col-md-offset-23 { + margin-left: 95.83333333%; + } + .ant-col-md-order-23 { + order: 23; + } + .ant-col-md-22 { + display: block; + box-sizing: border-box; + width: 91.66666667%; + } + .ant-col-md-push-22 { + left: 91.66666667%; + } + .ant-col-md-pull-22 { + right: 91.66666667%; + } + .ant-col-md-offset-22 { + margin-left: 91.66666667%; + } + .ant-col-md-order-22 { + order: 22; + } + .ant-col-md-21 { + display: block; + box-sizing: border-box; + width: 87.5%; + } + .ant-col-md-push-21 { + left: 87.5%; + } + .ant-col-md-pull-21 { + right: 87.5%; + } + .ant-col-md-offset-21 { + margin-left: 87.5%; + } + .ant-col-md-order-21 { + order: 21; + } + .ant-col-md-20 { + display: block; + box-sizing: border-box; + width: 83.33333333%; + } + .ant-col-md-push-20 { + left: 83.33333333%; + } + .ant-col-md-pull-20 { + right: 83.33333333%; + } + .ant-col-md-offset-20 { + margin-left: 83.33333333%; + } + .ant-col-md-order-20 { + order: 20; + } + .ant-col-md-19 { + display: block; + box-sizing: border-box; + width: 79.16666667%; + } + .ant-col-md-push-19 { + left: 79.16666667%; + } + .ant-col-md-pull-19 { + right: 79.16666667%; + } + .ant-col-md-offset-19 { + margin-left: 79.16666667%; + } + .ant-col-md-order-19 { + order: 19; + } + .ant-col-md-18 { + display: block; + box-sizing: border-box; + width: 75%; + } + .ant-col-md-push-18 { + left: 75%; + } + .ant-col-md-pull-18 { + right: 75%; + } + .ant-col-md-offset-18 { + margin-left: 75%; + } + .ant-col-md-order-18 { + order: 18; + } + .ant-col-md-17 { + display: block; + box-sizing: border-box; + width: 70.83333333%; + } + .ant-col-md-push-17 { + left: 70.83333333%; + } + .ant-col-md-pull-17 { + right: 70.83333333%; + } + .ant-col-md-offset-17 { + margin-left: 70.83333333%; + } + .ant-col-md-order-17 { + order: 17; + } + .ant-col-md-16 { + display: block; + box-sizing: border-box; + width: 66.66666667%; + } + .ant-col-md-push-16 { + left: 66.66666667%; + } + .ant-col-md-pull-16 { + right: 66.66666667%; + } + .ant-col-md-offset-16 { + margin-left: 66.66666667%; + } + .ant-col-md-order-16 { + order: 16; + } + .ant-col-md-15 { + display: block; + box-sizing: border-box; + width: 62.5%; + } + .ant-col-md-push-15 { + left: 62.5%; + } + .ant-col-md-pull-15 { + right: 62.5%; + } + .ant-col-md-offset-15 { + margin-left: 62.5%; + } + .ant-col-md-order-15 { + order: 15; + } + .ant-col-md-14 { + display: block; + box-sizing: border-box; + width: 58.33333333%; + } + .ant-col-md-push-14 { + left: 58.33333333%; + } + .ant-col-md-pull-14 { + right: 58.33333333%; + } + .ant-col-md-offset-14 { + margin-left: 58.33333333%; + } + .ant-col-md-order-14 { + order: 14; + } + .ant-col-md-13 { + display: block; + box-sizing: border-box; + width: 54.16666667%; + } + .ant-col-md-push-13 { + left: 54.16666667%; + } + .ant-col-md-pull-13 { + right: 54.16666667%; + } + .ant-col-md-offset-13 { + margin-left: 54.16666667%; + } + .ant-col-md-order-13 { + order: 13; + } + .ant-col-md-12 { + display: block; + box-sizing: border-box; + width: 50%; + } + .ant-col-md-push-12 { + left: 50%; + } + .ant-col-md-pull-12 { + right: 50%; + } + .ant-col-md-offset-12 { + margin-left: 50%; + } + .ant-col-md-order-12 { + order: 12; + } + .ant-col-md-11 { + display: block; + box-sizing: border-box; + width: 45.83333333%; + } + .ant-col-md-push-11 { + left: 45.83333333%; + } + .ant-col-md-pull-11 { + right: 45.83333333%; + } + .ant-col-md-offset-11 { + margin-left: 45.83333333%; + } + .ant-col-md-order-11 { + order: 11; + } + .ant-col-md-10 { + display: block; + box-sizing: border-box; + width: 41.66666667%; + } + .ant-col-md-push-10 { + left: 41.66666667%; + } + .ant-col-md-pull-10 { + right: 41.66666667%; + } + .ant-col-md-offset-10 { + margin-left: 41.66666667%; + } + .ant-col-md-order-10 { + order: 10; + } + .ant-col-md-9 { + display: block; + box-sizing: border-box; + width: 37.5%; + } + .ant-col-md-push-9 { + left: 37.5%; + } + .ant-col-md-pull-9 { + right: 37.5%; + } + .ant-col-md-offset-9 { + margin-left: 37.5%; + } + .ant-col-md-order-9 { + order: 9; + } + .ant-col-md-8 { + display: block; + box-sizing: border-box; + width: 33.33333333%; + } + .ant-col-md-push-8 { + left: 33.33333333%; + } + .ant-col-md-pull-8 { + right: 33.33333333%; + } + .ant-col-md-offset-8 { + margin-left: 33.33333333%; + } + .ant-col-md-order-8 { + order: 8; + } + .ant-col-md-7 { + display: block; + box-sizing: border-box; + width: 29.16666667%; + } + .ant-col-md-push-7 { + left: 29.16666667%; + } + .ant-col-md-pull-7 { + right: 29.16666667%; + } + .ant-col-md-offset-7 { + margin-left: 29.16666667%; + } + .ant-col-md-order-7 { + order: 7; + } + .ant-col-md-6 { + display: block; + box-sizing: border-box; + width: 25%; + } + .ant-col-md-push-6 { + left: 25%; + } + .ant-col-md-pull-6 { + right: 25%; + } + .ant-col-md-offset-6 { + margin-left: 25%; + } + .ant-col-md-order-6 { + order: 6; + } + .ant-col-md-5 { + display: block; + box-sizing: border-box; + width: 20.83333333%; + } + .ant-col-md-push-5 { + left: 20.83333333%; + } + .ant-col-md-pull-5 { + right: 20.83333333%; + } + .ant-col-md-offset-5 { + margin-left: 20.83333333%; + } + .ant-col-md-order-5 { + order: 5; + } + .ant-col-md-4 { + display: block; + box-sizing: border-box; + width: 16.66666667%; + } + .ant-col-md-push-4 { + left: 16.66666667%; + } + .ant-col-md-pull-4 { + right: 16.66666667%; + } + .ant-col-md-offset-4 { + margin-left: 16.66666667%; + } + .ant-col-md-order-4 { + order: 4; + } + .ant-col-md-3 { + display: block; + box-sizing: border-box; + width: 12.5%; + } + .ant-col-md-push-3 { + left: 12.5%; + } + .ant-col-md-pull-3 { + right: 12.5%; + } + .ant-col-md-offset-3 { + margin-left: 12.5%; + } + .ant-col-md-order-3 { + order: 3; + } + .ant-col-md-2 { + display: block; + box-sizing: border-box; + width: 8.33333333%; + } + .ant-col-md-push-2 { + left: 8.33333333%; + } + .ant-col-md-pull-2 { + right: 8.33333333%; + } + .ant-col-md-offset-2 { + margin-left: 8.33333333%; + } + .ant-col-md-order-2 { + order: 2; + } + .ant-col-md-1 { + display: block; + box-sizing: border-box; + width: 4.16666667%; + } + .ant-col-md-push-1 { + left: 4.16666667%; + } + .ant-col-md-pull-1 { + right: 4.16666667%; + } + .ant-col-md-offset-1 { + margin-left: 4.16666667%; + } + .ant-col-md-order-1 { + order: 1; + } + .ant-col-md-0 { + display: none; + } + .ant-col-push-0 { + left: auto; + } + .ant-col-pull-0 { + right: auto; + } + .ant-col-md-push-0 { + left: auto; + } + .ant-col-md-pull-0 { + right: auto; + } + .ant-col-md-offset-0 { + margin-left: 0; + } + .ant-col-md-order-0 { + order: 0; + } +} +@media (min-width: 992px) { + .ant-col-lg-1, .ant-col-lg-2, .ant-col-lg-3, .ant-col-lg-4, .ant-col-lg-5, .ant-col-lg-6, .ant-col-lg-7, .ant-col-lg-8, .ant-col-lg-9, .ant-col-lg-10, .ant-col-lg-11, .ant-col-lg-12, .ant-col-lg-13, .ant-col-lg-14, .ant-col-lg-15, .ant-col-lg-16, .ant-col-lg-17, .ant-col-lg-18, .ant-col-lg-19, .ant-col-lg-20, .ant-col-lg-21, .ant-col-lg-22, .ant-col-lg-23, .ant-col-lg-24 { + float: left; + flex: 0 0 auto; + } + .ant-col-lg-24 { + display: block; + box-sizing: border-box; + width: 100%; + } + .ant-col-lg-push-24 { + left: 100%; + } + .ant-col-lg-pull-24 { + right: 100%; + } + .ant-col-lg-offset-24 { + margin-left: 100%; + } + .ant-col-lg-order-24 { + order: 24; + } + .ant-col-lg-23 { + display: block; + box-sizing: border-box; + width: 95.83333333%; + } + .ant-col-lg-push-23 { + left: 95.83333333%; + } + .ant-col-lg-pull-23 { + right: 95.83333333%; + } + .ant-col-lg-offset-23 { + margin-left: 95.83333333%; + } + .ant-col-lg-order-23 { + order: 23; + } + .ant-col-lg-22 { + display: block; + box-sizing: border-box; + width: 91.66666667%; + } + .ant-col-lg-push-22 { + left: 91.66666667%; + } + .ant-col-lg-pull-22 { + right: 91.66666667%; + } + .ant-col-lg-offset-22 { + margin-left: 91.66666667%; + } + .ant-col-lg-order-22 { + order: 22; + } + .ant-col-lg-21 { + display: block; + box-sizing: border-box; + width: 87.5%; + } + .ant-col-lg-push-21 { + left: 87.5%; + } + .ant-col-lg-pull-21 { + right: 87.5%; + } + .ant-col-lg-offset-21 { + margin-left: 87.5%; + } + .ant-col-lg-order-21 { + order: 21; + } + .ant-col-lg-20 { + display: block; + box-sizing: border-box; + width: 83.33333333%; + } + .ant-col-lg-push-20 { + left: 83.33333333%; + } + .ant-col-lg-pull-20 { + right: 83.33333333%; + } + .ant-col-lg-offset-20 { + margin-left: 83.33333333%; + } + .ant-col-lg-order-20 { + order: 20; + } + .ant-col-lg-19 { + display: block; + box-sizing: border-box; + width: 79.16666667%; + } + .ant-col-lg-push-19 { + left: 79.16666667%; + } + .ant-col-lg-pull-19 { + right: 79.16666667%; + } + .ant-col-lg-offset-19 { + margin-left: 79.16666667%; + } + .ant-col-lg-order-19 { + order: 19; + } + .ant-col-lg-18 { + display: block; + box-sizing: border-box; + width: 75%; + } + .ant-col-lg-push-18 { + left: 75%; + } + .ant-col-lg-pull-18 { + right: 75%; + } + .ant-col-lg-offset-18 { + margin-left: 75%; + } + .ant-col-lg-order-18 { + order: 18; + } + .ant-col-lg-17 { + display: block; + box-sizing: border-box; + width: 70.83333333%; + } + .ant-col-lg-push-17 { + left: 70.83333333%; + } + .ant-col-lg-pull-17 { + right: 70.83333333%; + } + .ant-col-lg-offset-17 { + margin-left: 70.83333333%; + } + .ant-col-lg-order-17 { + order: 17; + } + .ant-col-lg-16 { + display: block; + box-sizing: border-box; + width: 66.66666667%; + } + .ant-col-lg-push-16 { + left: 66.66666667%; + } + .ant-col-lg-pull-16 { + right: 66.66666667%; + } + .ant-col-lg-offset-16 { + margin-left: 66.66666667%; + } + .ant-col-lg-order-16 { + order: 16; + } + .ant-col-lg-15 { + display: block; + box-sizing: border-box; + width: 62.5%; + } + .ant-col-lg-push-15 { + left: 62.5%; + } + .ant-col-lg-pull-15 { + right: 62.5%; + } + .ant-col-lg-offset-15 { + margin-left: 62.5%; + } + .ant-col-lg-order-15 { + order: 15; + } + .ant-col-lg-14 { + display: block; + box-sizing: border-box; + width: 58.33333333%; + } + .ant-col-lg-push-14 { + left: 58.33333333%; + } + .ant-col-lg-pull-14 { + right: 58.33333333%; + } + .ant-col-lg-offset-14 { + margin-left: 58.33333333%; + } + .ant-col-lg-order-14 { + order: 14; + } + .ant-col-lg-13 { + display: block; + box-sizing: border-box; + width: 54.16666667%; + } + .ant-col-lg-push-13 { + left: 54.16666667%; + } + .ant-col-lg-pull-13 { + right: 54.16666667%; + } + .ant-col-lg-offset-13 { + margin-left: 54.16666667%; + } + .ant-col-lg-order-13 { + order: 13; + } + .ant-col-lg-12 { + display: block; + box-sizing: border-box; + width: 50%; + } + .ant-col-lg-push-12 { + left: 50%; + } + .ant-col-lg-pull-12 { + right: 50%; + } + .ant-col-lg-offset-12 { + margin-left: 50%; + } + .ant-col-lg-order-12 { + order: 12; + } + .ant-col-lg-11 { + display: block; + box-sizing: border-box; + width: 45.83333333%; + } + .ant-col-lg-push-11 { + left: 45.83333333%; + } + .ant-col-lg-pull-11 { + right: 45.83333333%; + } + .ant-col-lg-offset-11 { + margin-left: 45.83333333%; + } + .ant-col-lg-order-11 { + order: 11; + } + .ant-col-lg-10 { + display: block; + box-sizing: border-box; + width: 41.66666667%; + } + .ant-col-lg-push-10 { + left: 41.66666667%; + } + .ant-col-lg-pull-10 { + right: 41.66666667%; + } + .ant-col-lg-offset-10 { + margin-left: 41.66666667%; + } + .ant-col-lg-order-10 { + order: 10; + } + .ant-col-lg-9 { + display: block; + box-sizing: border-box; + width: 37.5%; + } + .ant-col-lg-push-9 { + left: 37.5%; + } + .ant-col-lg-pull-9 { + right: 37.5%; + } + .ant-col-lg-offset-9 { + margin-left: 37.5%; + } + .ant-col-lg-order-9 { + order: 9; + } + .ant-col-lg-8 { + display: block; + box-sizing: border-box; + width: 33.33333333%; + } + .ant-col-lg-push-8 { + left: 33.33333333%; + } + .ant-col-lg-pull-8 { + right: 33.33333333%; + } + .ant-col-lg-offset-8 { + margin-left: 33.33333333%; + } + .ant-col-lg-order-8 { + order: 8; + } + .ant-col-lg-7 { + display: block; + box-sizing: border-box; + width: 29.16666667%; + } + .ant-col-lg-push-7 { + left: 29.16666667%; + } + .ant-col-lg-pull-7 { + right: 29.16666667%; + } + .ant-col-lg-offset-7 { + margin-left: 29.16666667%; + } + .ant-col-lg-order-7 { + order: 7; + } + .ant-col-lg-6 { + display: block; + box-sizing: border-box; + width: 25%; + } + .ant-col-lg-push-6 { + left: 25%; + } + .ant-col-lg-pull-6 { + right: 25%; + } + .ant-col-lg-offset-6 { + margin-left: 25%; + } + .ant-col-lg-order-6 { + order: 6; + } + .ant-col-lg-5 { + display: block; + box-sizing: border-box; + width: 20.83333333%; + } + .ant-col-lg-push-5 { + left: 20.83333333%; + } + .ant-col-lg-pull-5 { + right: 20.83333333%; + } + .ant-col-lg-offset-5 { + margin-left: 20.83333333%; + } + .ant-col-lg-order-5 { + order: 5; + } + .ant-col-lg-4 { + display: block; + box-sizing: border-box; + width: 16.66666667%; + } + .ant-col-lg-push-4 { + left: 16.66666667%; + } + .ant-col-lg-pull-4 { + right: 16.66666667%; + } + .ant-col-lg-offset-4 { + margin-left: 16.66666667%; + } + .ant-col-lg-order-4 { + order: 4; + } + .ant-col-lg-3 { + display: block; + box-sizing: border-box; + width: 12.5%; + } + .ant-col-lg-push-3 { + left: 12.5%; + } + .ant-col-lg-pull-3 { + right: 12.5%; + } + .ant-col-lg-offset-3 { + margin-left: 12.5%; + } + .ant-col-lg-order-3 { + order: 3; + } + .ant-col-lg-2 { + display: block; + box-sizing: border-box; + width: 8.33333333%; + } + .ant-col-lg-push-2 { + left: 8.33333333%; + } + .ant-col-lg-pull-2 { + right: 8.33333333%; + } + .ant-col-lg-offset-2 { + margin-left: 8.33333333%; + } + .ant-col-lg-order-2 { + order: 2; + } + .ant-col-lg-1 { + display: block; + box-sizing: border-box; + width: 4.16666667%; + } + .ant-col-lg-push-1 { + left: 4.16666667%; + } + .ant-col-lg-pull-1 { + right: 4.16666667%; + } + .ant-col-lg-offset-1 { + margin-left: 4.16666667%; + } + .ant-col-lg-order-1 { + order: 1; + } + .ant-col-lg-0 { + display: none; + } + .ant-col-push-0 { + left: auto; + } + .ant-col-pull-0 { + right: auto; + } + .ant-col-lg-push-0 { + left: auto; + } + .ant-col-lg-pull-0 { + right: auto; + } + .ant-col-lg-offset-0 { + margin-left: 0; + } + .ant-col-lg-order-0 { + order: 0; + } +} +@media (min-width: 1200px) { + .ant-col-xl-1, .ant-col-xl-2, .ant-col-xl-3, .ant-col-xl-4, .ant-col-xl-5, .ant-col-xl-6, .ant-col-xl-7, .ant-col-xl-8, .ant-col-xl-9, .ant-col-xl-10, .ant-col-xl-11, .ant-col-xl-12, .ant-col-xl-13, .ant-col-xl-14, .ant-col-xl-15, .ant-col-xl-16, .ant-col-xl-17, .ant-col-xl-18, .ant-col-xl-19, .ant-col-xl-20, .ant-col-xl-21, .ant-col-xl-22, .ant-col-xl-23, .ant-col-xl-24 { + float: left; + flex: 0 0 auto; + } + .ant-col-xl-24 { + display: block; + box-sizing: border-box; + width: 100%; + } + .ant-col-xl-push-24 { + left: 100%; + } + .ant-col-xl-pull-24 { + right: 100%; + } + .ant-col-xl-offset-24 { + margin-left: 100%; + } + .ant-col-xl-order-24 { + order: 24; + } + .ant-col-xl-23 { + display: block; + box-sizing: border-box; + width: 95.83333333%; + } + .ant-col-xl-push-23 { + left: 95.83333333%; + } + .ant-col-xl-pull-23 { + right: 95.83333333%; + } + .ant-col-xl-offset-23 { + margin-left: 95.83333333%; + } + .ant-col-xl-order-23 { + order: 23; + } + .ant-col-xl-22 { + display: block; + box-sizing: border-box; + width: 91.66666667%; + } + .ant-col-xl-push-22 { + left: 91.66666667%; + } + .ant-col-xl-pull-22 { + right: 91.66666667%; + } + .ant-col-xl-offset-22 { + margin-left: 91.66666667%; + } + .ant-col-xl-order-22 { + order: 22; + } + .ant-col-xl-21 { + display: block; + box-sizing: border-box; + width: 87.5%; + } + .ant-col-xl-push-21 { + left: 87.5%; + } + .ant-col-xl-pull-21 { + right: 87.5%; + } + .ant-col-xl-offset-21 { + margin-left: 87.5%; + } + .ant-col-xl-order-21 { + order: 21; + } + .ant-col-xl-20 { + display: block; + box-sizing: border-box; + width: 83.33333333%; + } + .ant-col-xl-push-20 { + left: 83.33333333%; + } + .ant-col-xl-pull-20 { + right: 83.33333333%; + } + .ant-col-xl-offset-20 { + margin-left: 83.33333333%; + } + .ant-col-xl-order-20 { + order: 20; + } + .ant-col-xl-19 { + display: block; + box-sizing: border-box; + width: 79.16666667%; + } + .ant-col-xl-push-19 { + left: 79.16666667%; + } + .ant-col-xl-pull-19 { + right: 79.16666667%; + } + .ant-col-xl-offset-19 { + margin-left: 79.16666667%; + } + .ant-col-xl-order-19 { + order: 19; + } + .ant-col-xl-18 { + display: block; + box-sizing: border-box; + width: 75%; + } + .ant-col-xl-push-18 { + left: 75%; + } + .ant-col-xl-pull-18 { + right: 75%; + } + .ant-col-xl-offset-18 { + margin-left: 75%; + } + .ant-col-xl-order-18 { + order: 18; + } + .ant-col-xl-17 { + display: block; + box-sizing: border-box; + width: 70.83333333%; + } + .ant-col-xl-push-17 { + left: 70.83333333%; + } + .ant-col-xl-pull-17 { + right: 70.83333333%; + } + .ant-col-xl-offset-17 { + margin-left: 70.83333333%; + } + .ant-col-xl-order-17 { + order: 17; + } + .ant-col-xl-16 { + display: block; + box-sizing: border-box; + width: 66.66666667%; + } + .ant-col-xl-push-16 { + left: 66.66666667%; + } + .ant-col-xl-pull-16 { + right: 66.66666667%; + } + .ant-col-xl-offset-16 { + margin-left: 66.66666667%; + } + .ant-col-xl-order-16 { + order: 16; + } + .ant-col-xl-15 { + display: block; + box-sizing: border-box; + width: 62.5%; + } + .ant-col-xl-push-15 { + left: 62.5%; + } + .ant-col-xl-pull-15 { + right: 62.5%; + } + .ant-col-xl-offset-15 { + margin-left: 62.5%; + } + .ant-col-xl-order-15 { + order: 15; + } + .ant-col-xl-14 { + display: block; + box-sizing: border-box; + width: 58.33333333%; + } + .ant-col-xl-push-14 { + left: 58.33333333%; + } + .ant-col-xl-pull-14 { + right: 58.33333333%; + } + .ant-col-xl-offset-14 { + margin-left: 58.33333333%; + } + .ant-col-xl-order-14 { + order: 14; + } + .ant-col-xl-13 { + display: block; + box-sizing: border-box; + width: 54.16666667%; + } + .ant-col-xl-push-13 { + left: 54.16666667%; + } + .ant-col-xl-pull-13 { + right: 54.16666667%; + } + .ant-col-xl-offset-13 { + margin-left: 54.16666667%; + } + .ant-col-xl-order-13 { + order: 13; + } + .ant-col-xl-12 { + display: block; + box-sizing: border-box; + width: 50%; + } + .ant-col-xl-push-12 { + left: 50%; + } + .ant-col-xl-pull-12 { + right: 50%; + } + .ant-col-xl-offset-12 { + margin-left: 50%; + } + .ant-col-xl-order-12 { + order: 12; + } + .ant-col-xl-11 { + display: block; + box-sizing: border-box; + width: 45.83333333%; + } + .ant-col-xl-push-11 { + left: 45.83333333%; + } + .ant-col-xl-pull-11 { + right: 45.83333333%; + } + .ant-col-xl-offset-11 { + margin-left: 45.83333333%; + } + .ant-col-xl-order-11 { + order: 11; + } + .ant-col-xl-10 { + display: block; + box-sizing: border-box; + width: 41.66666667%; + } + .ant-col-xl-push-10 { + left: 41.66666667%; + } + .ant-col-xl-pull-10 { + right: 41.66666667%; + } + .ant-col-xl-offset-10 { + margin-left: 41.66666667%; + } + .ant-col-xl-order-10 { + order: 10; + } + .ant-col-xl-9 { + display: block; + box-sizing: border-box; + width: 37.5%; + } + .ant-col-xl-push-9 { + left: 37.5%; + } + .ant-col-xl-pull-9 { + right: 37.5%; + } + .ant-col-xl-offset-9 { + margin-left: 37.5%; + } + .ant-col-xl-order-9 { + order: 9; + } + .ant-col-xl-8 { + display: block; + box-sizing: border-box; + width: 33.33333333%; + } + .ant-col-xl-push-8 { + left: 33.33333333%; + } + .ant-col-xl-pull-8 { + right: 33.33333333%; + } + .ant-col-xl-offset-8 { + margin-left: 33.33333333%; + } + .ant-col-xl-order-8 { + order: 8; + } + .ant-col-xl-7 { + display: block; + box-sizing: border-box; + width: 29.16666667%; + } + .ant-col-xl-push-7 { + left: 29.16666667%; + } + .ant-col-xl-pull-7 { + right: 29.16666667%; + } + .ant-col-xl-offset-7 { + margin-left: 29.16666667%; + } + .ant-col-xl-order-7 { + order: 7; + } + .ant-col-xl-6 { + display: block; + box-sizing: border-box; + width: 25%; + } + .ant-col-xl-push-6 { + left: 25%; + } + .ant-col-xl-pull-6 { + right: 25%; + } + .ant-col-xl-offset-6 { + margin-left: 25%; + } + .ant-col-xl-order-6 { + order: 6; + } + .ant-col-xl-5 { + display: block; + box-sizing: border-box; + width: 20.83333333%; + } + .ant-col-xl-push-5 { + left: 20.83333333%; + } + .ant-col-xl-pull-5 { + right: 20.83333333%; + } + .ant-col-xl-offset-5 { + margin-left: 20.83333333%; + } + .ant-col-xl-order-5 { + order: 5; + } + .ant-col-xl-4 { + display: block; + box-sizing: border-box; + width: 16.66666667%; + } + .ant-col-xl-push-4 { + left: 16.66666667%; + } + .ant-col-xl-pull-4 { + right: 16.66666667%; + } + .ant-col-xl-offset-4 { + margin-left: 16.66666667%; + } + .ant-col-xl-order-4 { + order: 4; + } + .ant-col-xl-3 { + display: block; + box-sizing: border-box; + width: 12.5%; + } + .ant-col-xl-push-3 { + left: 12.5%; + } + .ant-col-xl-pull-3 { + right: 12.5%; + } + .ant-col-xl-offset-3 { + margin-left: 12.5%; + } + .ant-col-xl-order-3 { + order: 3; + } + .ant-col-xl-2 { + display: block; + box-sizing: border-box; + width: 8.33333333%; + } + .ant-col-xl-push-2 { + left: 8.33333333%; + } + .ant-col-xl-pull-2 { + right: 8.33333333%; + } + .ant-col-xl-offset-2 { + margin-left: 8.33333333%; + } + .ant-col-xl-order-2 { + order: 2; + } + .ant-col-xl-1 { + display: block; + box-sizing: border-box; + width: 4.16666667%; + } + .ant-col-xl-push-1 { + left: 4.16666667%; + } + .ant-col-xl-pull-1 { + right: 4.16666667%; + } + .ant-col-xl-offset-1 { + margin-left: 4.16666667%; + } + .ant-col-xl-order-1 { + order: 1; + } + .ant-col-xl-0 { + display: none; + } + .ant-col-push-0 { + left: auto; + } + .ant-col-pull-0 { + right: auto; + } + .ant-col-xl-push-0 { + left: auto; + } + .ant-col-xl-pull-0 { + right: auto; + } + .ant-col-xl-offset-0 { + margin-left: 0; + } + .ant-col-xl-order-0 { + order: 0; + } +} +@media (min-width: 1600px) { + .ant-col-xxl-1, .ant-col-xxl-2, .ant-col-xxl-3, .ant-col-xxl-4, .ant-col-xxl-5, .ant-col-xxl-6, .ant-col-xxl-7, .ant-col-xxl-8, .ant-col-xxl-9, .ant-col-xxl-10, .ant-col-xxl-11, .ant-col-xxl-12, .ant-col-xxl-13, .ant-col-xxl-14, .ant-col-xxl-15, .ant-col-xxl-16, .ant-col-xxl-17, .ant-col-xxl-18, .ant-col-xxl-19, .ant-col-xxl-20, .ant-col-xxl-21, .ant-col-xxl-22, .ant-col-xxl-23, .ant-col-xxl-24 { + float: left; + flex: 0 0 auto; + } + .ant-col-xxl-24 { + display: block; + box-sizing: border-box; + width: 100%; + } + .ant-col-xxl-push-24 { + left: 100%; + } + .ant-col-xxl-pull-24 { + right: 100%; + } + .ant-col-xxl-offset-24 { + margin-left: 100%; + } + .ant-col-xxl-order-24 { + order: 24; + } + .ant-col-xxl-23 { + display: block; + box-sizing: border-box; + width: 95.83333333%; + } + .ant-col-xxl-push-23 { + left: 95.83333333%; + } + .ant-col-xxl-pull-23 { + right: 95.83333333%; + } + .ant-col-xxl-offset-23 { + margin-left: 95.83333333%; + } + .ant-col-xxl-order-23 { + order: 23; + } + .ant-col-xxl-22 { + display: block; + box-sizing: border-box; + width: 91.66666667%; + } + .ant-col-xxl-push-22 { + left: 91.66666667%; + } + .ant-col-xxl-pull-22 { + right: 91.66666667%; + } + .ant-col-xxl-offset-22 { + margin-left: 91.66666667%; + } + .ant-col-xxl-order-22 { + order: 22; + } + .ant-col-xxl-21 { + display: block; + box-sizing: border-box; + width: 87.5%; + } + .ant-col-xxl-push-21 { + left: 87.5%; + } + .ant-col-xxl-pull-21 { + right: 87.5%; + } + .ant-col-xxl-offset-21 { + margin-left: 87.5%; + } + .ant-col-xxl-order-21 { + order: 21; + } + .ant-col-xxl-20 { + display: block; + box-sizing: border-box; + width: 83.33333333%; + } + .ant-col-xxl-push-20 { + left: 83.33333333%; + } + .ant-col-xxl-pull-20 { + right: 83.33333333%; + } + .ant-col-xxl-offset-20 { + margin-left: 83.33333333%; + } + .ant-col-xxl-order-20 { + order: 20; + } + .ant-col-xxl-19 { + display: block; + box-sizing: border-box; + width: 79.16666667%; + } + .ant-col-xxl-push-19 { + left: 79.16666667%; + } + .ant-col-xxl-pull-19 { + right: 79.16666667%; + } + .ant-col-xxl-offset-19 { + margin-left: 79.16666667%; + } + .ant-col-xxl-order-19 { + order: 19; + } + .ant-col-xxl-18 { + display: block; + box-sizing: border-box; + width: 75%; + } + .ant-col-xxl-push-18 { + left: 75%; + } + .ant-col-xxl-pull-18 { + right: 75%; + } + .ant-col-xxl-offset-18 { + margin-left: 75%; + } + .ant-col-xxl-order-18 { + order: 18; + } + .ant-col-xxl-17 { + display: block; + box-sizing: border-box; + width: 70.83333333%; + } + .ant-col-xxl-push-17 { + left: 70.83333333%; + } + .ant-col-xxl-pull-17 { + right: 70.83333333%; + } + .ant-col-xxl-offset-17 { + margin-left: 70.83333333%; + } + .ant-col-xxl-order-17 { + order: 17; + } + .ant-col-xxl-16 { + display: block; + box-sizing: border-box; + width: 66.66666667%; + } + .ant-col-xxl-push-16 { + left: 66.66666667%; + } + .ant-col-xxl-pull-16 { + right: 66.66666667%; + } + .ant-col-xxl-offset-16 { + margin-left: 66.66666667%; + } + .ant-col-xxl-order-16 { + order: 16; + } + .ant-col-xxl-15 { + display: block; + box-sizing: border-box; + width: 62.5%; + } + .ant-col-xxl-push-15 { + left: 62.5%; + } + .ant-col-xxl-pull-15 { + right: 62.5%; + } + .ant-col-xxl-offset-15 { + margin-left: 62.5%; + } + .ant-col-xxl-order-15 { + order: 15; + } + .ant-col-xxl-14 { + display: block; + box-sizing: border-box; + width: 58.33333333%; + } + .ant-col-xxl-push-14 { + left: 58.33333333%; + } + .ant-col-xxl-pull-14 { + right: 58.33333333%; + } + .ant-col-xxl-offset-14 { + margin-left: 58.33333333%; + } + .ant-col-xxl-order-14 { + order: 14; + } + .ant-col-xxl-13 { + display: block; + box-sizing: border-box; + width: 54.16666667%; + } + .ant-col-xxl-push-13 { + left: 54.16666667%; + } + .ant-col-xxl-pull-13 { + right: 54.16666667%; + } + .ant-col-xxl-offset-13 { + margin-left: 54.16666667%; + } + .ant-col-xxl-order-13 { + order: 13; + } + .ant-col-xxl-12 { + display: block; + box-sizing: border-box; + width: 50%; + } + .ant-col-xxl-push-12 { + left: 50%; + } + .ant-col-xxl-pull-12 { + right: 50%; + } + .ant-col-xxl-offset-12 { + margin-left: 50%; + } + .ant-col-xxl-order-12 { + order: 12; + } + .ant-col-xxl-11 { + display: block; + box-sizing: border-box; + width: 45.83333333%; + } + .ant-col-xxl-push-11 { + left: 45.83333333%; + } + .ant-col-xxl-pull-11 { + right: 45.83333333%; + } + .ant-col-xxl-offset-11 { + margin-left: 45.83333333%; + } + .ant-col-xxl-order-11 { + order: 11; + } + .ant-col-xxl-10 { + display: block; + box-sizing: border-box; + width: 41.66666667%; + } + .ant-col-xxl-push-10 { + left: 41.66666667%; + } + .ant-col-xxl-pull-10 { + right: 41.66666667%; + } + .ant-col-xxl-offset-10 { + margin-left: 41.66666667%; + } + .ant-col-xxl-order-10 { + order: 10; + } + .ant-col-xxl-9 { + display: block; + box-sizing: border-box; + width: 37.5%; + } + .ant-col-xxl-push-9 { + left: 37.5%; + } + .ant-col-xxl-pull-9 { + right: 37.5%; + } + .ant-col-xxl-offset-9 { + margin-left: 37.5%; + } + .ant-col-xxl-order-9 { + order: 9; + } + .ant-col-xxl-8 { + display: block; + box-sizing: border-box; + width: 33.33333333%; + } + .ant-col-xxl-push-8 { + left: 33.33333333%; + } + .ant-col-xxl-pull-8 { + right: 33.33333333%; + } + .ant-col-xxl-offset-8 { + margin-left: 33.33333333%; + } + .ant-col-xxl-order-8 { + order: 8; + } + .ant-col-xxl-7 { + display: block; + box-sizing: border-box; + width: 29.16666667%; + } + .ant-col-xxl-push-7 { + left: 29.16666667%; + } + .ant-col-xxl-pull-7 { + right: 29.16666667%; + } + .ant-col-xxl-offset-7 { + margin-left: 29.16666667%; + } + .ant-col-xxl-order-7 { + order: 7; + } + .ant-col-xxl-6 { + display: block; + box-sizing: border-box; + width: 25%; + } + .ant-col-xxl-push-6 { + left: 25%; + } + .ant-col-xxl-pull-6 { + right: 25%; + } + .ant-col-xxl-offset-6 { + margin-left: 25%; + } + .ant-col-xxl-order-6 { + order: 6; + } + .ant-col-xxl-5 { + display: block; + box-sizing: border-box; + width: 20.83333333%; + } + .ant-col-xxl-push-5 { + left: 20.83333333%; + } + .ant-col-xxl-pull-5 { + right: 20.83333333%; + } + .ant-col-xxl-offset-5 { + margin-left: 20.83333333%; + } + .ant-col-xxl-order-5 { + order: 5; + } + .ant-col-xxl-4 { + display: block; + box-sizing: border-box; + width: 16.66666667%; + } + .ant-col-xxl-push-4 { + left: 16.66666667%; + } + .ant-col-xxl-pull-4 { + right: 16.66666667%; + } + .ant-col-xxl-offset-4 { + margin-left: 16.66666667%; + } + .ant-col-xxl-order-4 { + order: 4; + } + .ant-col-xxl-3 { + display: block; + box-sizing: border-box; + width: 12.5%; + } + .ant-col-xxl-push-3 { + left: 12.5%; + } + .ant-col-xxl-pull-3 { + right: 12.5%; + } + .ant-col-xxl-offset-3 { + margin-left: 12.5%; + } + .ant-col-xxl-order-3 { + order: 3; + } + .ant-col-xxl-2 { + display: block; + box-sizing: border-box; + width: 8.33333333%; + } + .ant-col-xxl-push-2 { + left: 8.33333333%; + } + .ant-col-xxl-pull-2 { + right: 8.33333333%; + } + .ant-col-xxl-offset-2 { + margin-left: 8.33333333%; + } + .ant-col-xxl-order-2 { + order: 2; + } + .ant-col-xxl-1 { + display: block; + box-sizing: border-box; + width: 4.16666667%; + } + .ant-col-xxl-push-1 { + left: 4.16666667%; + } + .ant-col-xxl-pull-1 { + right: 4.16666667%; + } + .ant-col-xxl-offset-1 { + margin-left: 4.16666667%; + } + .ant-col-xxl-order-1 { + order: 1; + } + .ant-col-xxl-0 { + display: none; + } + .ant-col-push-0 { + left: auto; + } + .ant-col-pull-0 { + right: auto; + } + .ant-col-xxl-push-0 { + left: auto; + } + .ant-col-xxl-pull-0 { + right: auto; + } + .ant-col-xxl-offset-0 { + margin-left: 0; + } + .ant-col-xxl-order-0 { + order: 0; + } +} +.ant-input { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; + position: relative; + display: inline-block; + padding: 4px 11px; + width: 100%; + height: 32px; + font-size: 14px; + line-height: 1.5; + color: #54657e; + background-color: #fff; + background-image: none; + border: 1px solid #d9d9d9; + border-radius: 4px; + transition: all .3s; +} +.ant-input::-moz-placeholder { + color: #bfbfbf; + opacity: 1; +} +.ant-input:-ms-input-placeholder { + color: #bfbfbf; +} +.ant-input::-webkit-input-placeholder { + color: #bfbfbf; +} +.ant-input:hover { + border-color: #40a9ff; +} +.ant-input:focus { + border-color: #40a9ff; + outline: 0; + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); +} +.ant-input-disabled { + background-color: #f5f5f5; + opacity: 1; + cursor: not-allowed; + color: rgba(0, 0, 0, 0.25); +} +.ant-input-disabled:hover { + border-color: #e6d8d8; +} +textarea.ant-input { + max-width: 100%; + height: auto; + vertical-align: bottom; + transition: all .3s, height 0s; + min-height: 32px; +} +.ant-input-lg { + padding: 6px 11px; + height: 40px; + font-size: 16px; +} +.ant-input-sm { + padding: 1px 7px; + height: 24px; +} +.ant-input-group { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; + position: relative; + display: table; + border-collapse: separate; + border-spacing: 0; + width: 100%; +} +.ant-input-group[class*="col-"] { + float: none; + padding-left: 0; + padding-right: 0; +} +.ant-input-group > [class*="col-"] { + padding-right: 8px; +} +.ant-input-group > [class*="col-"]:last-child { + padding-right: 0; +} +.ant-input-group-addon, +.ant-input-group-wrap, +.ant-input-group > .ant-input { + display: table-cell; +} +.ant-input-group-addon:not(:first-child):not(:last-child), +.ant-input-group-wrap:not(:first-child):not(:last-child), +.ant-input-group > .ant-input:not(:first-child):not(:last-child) { + border-radius: 0; +} +.ant-input-group-addon, +.ant-input-group-wrap { + width: 1px; + white-space: nowrap; + vertical-align: middle; +} +.ant-input-group-wrap > * { + display: block !important; +} +.ant-input-group .ant-input { + float: left; + width: 100%; + margin-bottom: 0; +} +.ant-input-group .ant-input:focus { + z-index: 1; +} +.ant-input-group-addon { + padding: 0 11px; + font-size: 14px; + font-weight: normal; + line-height: 1; + color: #54657e; + text-align: center; + background-color: #fafafa; + border: 1px solid #d9d9d9; + border-radius: 4px; + position: relative; + transition: all .3s; +} +.ant-input-group-addon .ant-select { + margin: -5px -11px; +} +.ant-input-group-addon .ant-select .ant-select-selection { + background-color: inherit; + margin: -1px; + border: 1px solid transparent; + box-shadow: none; +} +.ant-input-group-addon .ant-select-open .ant-select-selection, +.ant-input-group-addon .ant-select-focused .ant-select-selection { + color: #1890ff; +} +.ant-input-group-addon > i:only-child:after { + position: absolute; + content: ''; + top: 0; + left: 0; + right: 0; + bottom: 0; +} +.ant-input-group > .ant-input:first-child, +.ant-input-group-addon:first-child { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.ant-input-group > .ant-input:first-child .ant-select .ant-select-selection, +.ant-input-group-addon:first-child .ant-select .ant-select-selection { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.ant-input-group > .ant-input-affix-wrapper:not(:first-child) .ant-input { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.ant-input-group > .ant-input-affix-wrapper:not(:last-child) .ant-input { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.ant-input-group-addon:first-child { + border-right: 0; +} +.ant-input-group-addon:last-child { + border-left: 0; +} +.ant-input-group > .ant-input:last-child, +.ant-input-group-addon:last-child { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.ant-input-group > .ant-input:last-child .ant-select .ant-select-selection, +.ant-input-group-addon:last-child .ant-select .ant-select-selection { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.ant-input-group-lg .ant-input, +.ant-input-group-lg > .ant-input-group-addon { + padding: 6px 11px; + height: 40px; + font-size: 16px; +} +.ant-input-group-sm .ant-input, +.ant-input-group-sm > .ant-input-group-addon { + padding: 1px 7px; + height: 24px; +} +.ant-input-group-lg .ant-select-selection--single { + height: 40px; +} +.ant-input-group-sm .ant-select-selection--single { + height: 24px; +} +.ant-input-group .ant-input-affix-wrapper { + display: table-cell; + width: 100%; + float: left; +} +.ant-input-group.ant-input-group-compact { + display: block; + zoom: 1; +} +.ant-input-group.ant-input-group-compact:before, +.ant-input-group.ant-input-group-compact:after { + content: " "; + display: table; +} +.ant-input-group.ant-input-group-compact:after { + clear: both; + visibility: hidden; + font-size: 0; + height: 0; +} +.ant-input-group.ant-input-group-compact:before, +.ant-input-group.ant-input-group-compact:after { + content: " "; + display: table; +} +.ant-input-group.ant-input-group-compact:after { + clear: both; + visibility: hidden; + font-size: 0; + height: 0; +} +.ant-input-group.ant-input-group-compact > * { + border-radius: 0; + border-right-width: 0; + vertical-align: top; + float: none; + display: inline-block; +} +.ant-input-group.ant-input-group-compact .ant-input { + float: none; + z-index: auto; +} +.ant-input-group.ant-input-group-compact > .ant-select > .ant-select-selection, +.ant-input-group.ant-input-group-compact > .ant-calendar-picker .ant-input, +.ant-input-group.ant-input-group-compact > .ant-select-auto-complete .ant-input, +.ant-input-group.ant-input-group-compact > .ant-cascader-picker .ant-input, +.ant-input-group.ant-input-group-compact > .ant-mention-wrapper .ant-mention-editor, +.ant-input-group.ant-input-group-compact > .ant-time-picker .ant-time-picker-input { + border-radius: 0; + border-right-width: 0; +} +.ant-input-group.ant-input-group-compact > *:first-child, +.ant-input-group.ant-input-group-compact > .ant-select:first-child > .ant-select-selection, +.ant-input-group.ant-input-group-compact > .ant-calendar-picker:first-child .ant-input, +.ant-input-group.ant-input-group-compact > .ant-select-auto-complete:first-child .ant-input, +.ant-input-group.ant-input-group-compact > .ant-cascader-picker:first-child .ant-input, +.ant-input-group.ant-input-group-compact > .ant-mention-wrapper:first-child .ant-mention-editor, +.ant-input-group.ant-input-group-compact > .ant-time-picker:first-child .ant-time-picker-input { + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; +} +.ant-input-group.ant-input-group-compact > *:last-child, +.ant-input-group.ant-input-group-compact > .ant-select:last-child > .ant-select-selection, +.ant-input-group.ant-input-group-compact > .ant-calendar-picker:last-child .ant-input, +.ant-input-group.ant-input-group-compact > .ant-select-auto-complete:last-child .ant-input, +.ant-input-group.ant-input-group-compact > .ant-cascader-picker:last-child .ant-input, +.ant-input-group.ant-input-group-compact > .ant-mention-wrapper:last-child .ant-mention-editor, +.ant-input-group.ant-input-group-compact > .ant-time-picker:last-child .ant-time-picker-input { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; + border-right-width: 1px; +} +.ant-input-group-wrapper { + display: inline-block; + vertical-align: top; + width: 100%; +} +.ant-input-affix-wrapper { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; + position: relative; + display: inline-block; + width: 100%; +} +.ant-input-affix-wrapper .ant-input { + z-index: 1; +} +.ant-input-affix-wrapper:hover .ant-input:not(.ant-input-disabled) { + border-color: #40a9ff; +} +.ant-input-affix-wrapper .ant-input-prefix, +.ant-input-affix-wrapper .ant-input-suffix { + position: absolute; + top: 50%; + transform: translateY(-50%); + z-index: 2; + line-height: 0; + color: #54657e; +} +.ant-input-affix-wrapper .ant-input-prefix :not(.anticon), +.ant-input-affix-wrapper .ant-input-suffix :not(.anticon) { + line-height: 1.5; +} +.ant-input-affix-wrapper .ant-input-prefix { + left: 12px; +} +.ant-input-affix-wrapper .ant-input-suffix { + right: 12px; +} +.ant-input-affix-wrapper .ant-input:not(:first-child) { + padding-left: 30px; +} +.ant-input-affix-wrapper .ant-input:not(:last-child) { + padding-right: 30px; +} +.ant-input-affix-wrapper .ant-input { + min-height: 100%; +} +.ant-input-search-icon { + pointer-events: none; + color: rgba(0, 0, 0, 0.45); +} +.ant-input-search:not(.ant-input-search-small) > .ant-input-suffix { + right: 12px; +} +.ant-input-search > .ant-input-suffix > .ant-input-search-button { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.ant-input-search > .ant-input-suffix > .ant-input-search-button > .anticon-search { + font-size: 16px; +} +.ant-input-search.ant-input-search-enter-button > .ant-input { + padding-right: 46px; +} +.ant-input-search.ant-input-search-enter-button > .ant-input-suffix { + right: 0; +} +.ant-input-number { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + box-sizing: border-box; + list-style: none; + position: relative; + padding: 4px 11px; + width: 100%; + height: 32px; + font-size: 14px; + line-height: 1.5; + color: #54657e; + background-color: #fff; + background-image: none; + transition: all .3s; + margin: 0; + padding: 0; + display: inline-block; + border: 1px solid #d9d9d9; + border-radius: 4px; + width: 90px; +} +.ant-input-number::-moz-placeholder { + color: #bfbfbf; + opacity: 1; +} +.ant-input-number:-ms-input-placeholder { + color: #bfbfbf; +} +.ant-input-number::-webkit-input-placeholder { + color: #bfbfbf; +} +.ant-input-number:hover { + border-color: #40a9ff; +} +.ant-input-number:focus { + border-color: #40a9ff; + outline: 0; + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); +} +.ant-input-number-disabled { + background-color: #f5f5f5; + opacity: 1; + cursor: not-allowed; + color: rgba(0, 0, 0, 0.25); +} +.ant-input-number-disabled:hover { + border-color: #e6d8d8; +} +textarea.ant-input-number { + max-width: 100%; + height: auto; + vertical-align: bottom; + transition: all .3s, height 0s; + min-height: 32px; +} +.ant-input-number-lg { + padding: 6px 11px; + height: 40px; + font-size: 16px; +} +.ant-input-number-sm { + padding: 1px 7px; + height: 24px; +} +.ant-input-number-handler { + text-align: center; + line-height: 0; + height: 50%; + overflow: hidden; + color: rgba(0, 0, 0, 0.45); + position: relative; + transition: all 0.1s linear; + display: block; + width: 100%; + font-weight: bold; +} +.ant-input-number-handler:active { + background: #f4f4f4; +} +.ant-input-number-handler:hover .ant-input-number-handler-up-inner, +.ant-input-number-handler:hover .ant-input-number-handler-down-inner { + color: #40a9ff; +} +.ant-input-number-handler-up-inner, +.ant-input-number-handler-down-inner { + font-style: normal; + vertical-align: baseline; + text-align: center; + text-transform: none; + line-height: 1; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + line-height: 12px; + user-select: none; + position: absolute; + width: 12px; + height: 12px; + transition: all 0.1s linear; + display: inline-block; + font-size: 12px; + font-size: 7px \9; + transform: scale(0.58333333) rotate(0deg); + right: 4px; + color: rgba(0, 0, 0, 0.45); +} +.ant-input-number-handler-up-inner:before, +.ant-input-number-handler-down-inner:before { + display: block; + font-family: "anticon" !important; +} +:root .ant-input-number-handler-up-inner, +:root .ant-input-number-handler-down-inner { + font-size: 12px; +} +.ant-input-number:hover { + border-color: #40a9ff; +} +.ant-input-number-focused { + border-color: #40a9ff; + outline: 0; + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); +} +.ant-input-number-disabled { + background-color: #f5f5f5; + opacity: 1; + cursor: not-allowed; + color: rgba(0, 0, 0, 0.25); +} +.ant-input-number-disabled:hover { + border-color: #e6d8d8; +} +.ant-input-number-disabled .ant-input-number-input { + cursor: not-allowed; + background-color: #f5f5f5; +} +.ant-input-number-disabled .ant-input-number-handler-wrap { + display: none; +} +.ant-input-number-input { + width: 100%; + text-align: left; + outline: 0; + -moz-appearance: textfield; + height: 30px; + transition: all 0.3s linear; + color: #54657e; + background-color: #fff; + border: 0; + border-radius: 4px; + padding: 0 11px; + display: block; +} +.ant-input-number-input::-moz-placeholder { + color: #bfbfbf; + opacity: 1; +} +.ant-input-number-input:-ms-input-placeholder { + color: #bfbfbf; +} +.ant-input-number-input::-webkit-input-placeholder { + color: #bfbfbf; +} +.ant-input-number-input[disabled] { + background-color: #f5f5f5; + opacity: 1; + cursor: not-allowed; + color: rgba(0, 0, 0, 0.25); +} +.ant-input-number-input[disabled]:hover { + border-color: #e6d8d8; +} +.ant-input-number-lg { + padding: 0; + font-size: 16px; +} +.ant-input-number-lg input { + height: 38px; +} +.ant-input-number-sm { + padding: 0; +} +.ant-input-number-sm input { + height: 22px; + padding: 0 7px; +} +.ant-input-number-handler-wrap { + border-left: 1px solid #d9d9d9; + width: 22px; + height: 100%; + background: #fff; + position: absolute; + top: 0; + right: 0; + opacity: 0; + border-radius: 0 4px 4px 0; + transition: opacity 0.24s linear 0.1s; + z-index: 2; +} +.ant-input-number-handler-wrap:hover .ant-input-number-handler { + height: 40%; +} +.ant-input-number:hover .ant-input-number-handler-wrap { + opacity: 1; +} +.ant-input-number-handler-up { + cursor: pointer; +} +.ant-input-number-handler-up-inner { + top: 50%; + margin-top: -6px; +} +.ant-input-number-handler-up-inner:before { + text-align: center; + content: "\e61e"; +} +.ant-input-number-handler-up:hover { + height: 60% !important; +} +.ant-input-number-handler-down { + border-top: 1px solid #d9d9d9; + top: -1px; + cursor: pointer; +} +.ant-input-number-handler-down-inner { + top: 50%; + margin-top: -6px; +} +.ant-input-number-handler-down-inner:before { + text-align: center; + content: "\e61d"; +} +.ant-input-number-handler-down:hover { + height: 60% !important; +} +.ant-input-number-handler-up-disabled, +.ant-input-number-handler-down-disabled { + cursor: not-allowed; +} +.ant-input-number-handler-up-disabled:hover .ant-input-number-handler-up-inner, +.ant-input-number-handler-down-disabled:hover .ant-input-number-handler-down-inner { + color: rgba(0, 0, 0, 0.25); +} +.ant-layout { + display: flex; + flex-direction: column; + flex: auto; + background: #f0f2f5; +} +.ant-layout, +.ant-layout * { + box-sizing: border-box; +} +.ant-layout.ant-layout-has-sider { + flex-direction: row; +} +.ant-layout.ant-layout-has-sider > .ant-layout, +.ant-layout.ant-layout-has-sider > .ant-layout-content { + overflow-x: hidden; +} +.ant-layout-header, +.ant-layout-footer { + flex: 0 0 auto; +} +.ant-layout-header { + background: #2a3542; + padding: 0 50px; + height: 64px; + line-height: 64px; +} +.ant-layout-footer { + background: #f0f2f5; + padding: 24px 50px; + color: #54657e; + font-size: 14px; +} +.ant-layout-content { + flex: auto; +} +.ant-layout-sider { + transition: all .2s; + position: relative; + background: #2a3542; + /* fix firefox can't set width smaller than content on flex item */ + min-width: 0; +} +.ant-layout-sider-children { + height: 100%; + padding-top: 0.1px; + margin-top: -0.1px; +} +.ant-layout-sider-has-trigger { + padding-bottom: 48px; +} +.ant-layout-sider-right { + order: 1; +} +.ant-layout-sider-trigger { + position: fixed; + text-align: center; + bottom: 0; + cursor: pointer; + height: 48px; + line-height: 48px; + color: #fff; + background: #002140; + z-index: 1; + transition: all .2s; +} +.ant-layout-sider-zero-width > * { + overflow: hidden; +} +.ant-layout-sider-zero-width-trigger { + position: absolute; + top: 64px; + right: -36px; + text-align: center; + width: 36px; + height: 42px; + line-height: 42px; + background: #2a3542; + color: #fff; + font-size: 18px; + border-radius: 0 4px 4px 0; + cursor: pointer; + transition: background .3s ease; +} +.ant-layout-sider-zero-width-trigger:hover { + background: #3f4955; +} +.ant-list { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; + position: relative; +} +.ant-list * { + outline: none; +} +.ant-list-pagination { + margin-top: 24px; + text-align: right; +} +.ant-list-more { + margin-top: 12px; + text-align: center; +} +.ant-list-more button { + padding-left: 32px; + padding-right: 32px; +} +.ant-list-spin { + text-align: center; + min-height: 40px; +} +.ant-list-empty-text { + color: rgba(0, 0, 0, 0.45); + font-size: 14px; + padding: 16px; + text-align: center; +} +.ant-list-item { + align-items: center; + display: flex; + padding-top: 12px; + padding-bottom: 12px; +} +.ant-list-item-meta { + align-items: flex-start; + display: flex; + flex: 1; + font-size: 0; +} +.ant-list-item-meta-avatar { + margin-right: 16px; +} +.ant-list-item-meta-content { + flex: 1 0; +} +.ant-list-item-meta-title { + color: #54657e; + margin-bottom: 4px; + font-size: 14px; + line-height: 22px; +} +.ant-list-item-meta-title > a { + color: #54657e; + transition: all .3s; +} +.ant-list-item-meta-title > a:hover { + color: #1890ff; +} +.ant-list-item-meta-description { + color: rgba(0, 0, 0, 0.45); + font-size: 14px; + line-height: 22px; +} +.ant-list-item-content { + display: flex; + flex: 1; + justify-content: flex-end; +} +.ant-list-item-content-single { + justify-content: flex-start; +} +.ant-list-item-action { + font-size: 0; + flex: 0 0 auto; + margin-left: 48px; + padding: 0; + list-style: none; +} +.ant-list-item-action > li { + display: inline-block; + color: rgba(0, 0, 0, 0.45); + cursor: pointer; + padding: 0 8px; + position: relative; + font-size: 14px; + line-height: 22px; + text-align: center; +} +.ant-list-item-action > li:first-child { + padding-left: 0; +} +.ant-list-item-action-split { + background-color: #e8e8e8; + margin-top: -7px; + position: absolute; + top: 50%; + right: 0; + width: 1px; + height: 14px; +} +.ant-list-item-main { + display: flex; + flex: 1; +} +.ant-list-header, +.ant-list-footer { + padding-top: 12px; + padding-bottom: 12px; +} +.ant-list-empty { + color: rgba(0, 0, 0, 0.45); + padding: 16px 0; + font-size: 12px; + text-align: center; +} +.ant-list-split .ant-list-item { + border-bottom: 1px solid #e8e8e8; +} +.ant-list-split .ant-list-item:last-child { + border-bottom: none; +} +.ant-list-split .ant-list-header { + border-bottom: 1px solid #e8e8e8; +} +.ant-list-loading .ant-list-spin-nested-loading { + min-height: 32px; +} +.ant-list-something-after-last-item .ant-list-item:last-child { + border-bottom: 1px solid #e8e8e8; +} +.ant-list-lg .ant-list-item { + padding-top: 16px; + padding-bottom: 16px; +} +.ant-list-sm .ant-list-item { + padding-top: 8px; + padding-bottom: 8px; +} +.ant-list-vertical .ant-list-item { + display: block; +} +.ant-list-vertical .ant-list-item-extra-wrap { + display: flex; +} +.ant-list-vertical .ant-list-item-main { + display: block; + flex: 1; +} +.ant-list-vertical .ant-list-item-extra { + margin-left: 58px; +} +.ant-list-vertical .ant-list-item-meta { + margin-bottom: 16px; +} +.ant-list-vertical .ant-list-item-meta-avatar { + display: none; +} +.ant-list-vertical .ant-list-item-meta-title { + color: rgba(0, 0, 0, 0.85); + margin-bottom: 12px; + font-size: 16px; + line-height: 24px; +} +.ant-list-vertical .ant-list-item-content { + display: block; + color: #54657e; + font-size: 14px; + margin-bottom: 16px; +} +.ant-list-vertical .ant-list-item-action { + margin-left: auto; +} +.ant-list-vertical .ant-list-item-action > li { + padding: 0 16px; +} +.ant-list-vertical .ant-list-item-action > li:first-child { + padding-left: 0; +} +.ant-list-grid .ant-list-item { + border-bottom: none; + padding-top: 0; + padding-bottom: 0; + margin-bottom: 20px; +} +.ant-list-grid .ant-list-item-content { + display: block; +} +.ant-list-bordered { + border-radius: 4px; + border: 1px solid #d9d9d9; +} +.ant-list-bordered .ant-list-header { + padding-left: 24px; + padding-right: 24px; +} +.ant-list-bordered .ant-list-footer { + padding-left: 24px; + padding-right: 24px; +} +.ant-list-bordered .ant-list-item { + border-bottom: 1px solid #e8e8e8; + padding-left: 24px; + padding-right: 24px; +} +.ant-list-bordered .ant-list-pagination { + margin: 16px 24px; +} +.ant-list-bordered.ant-list-sm .ant-list-item { + padding-left: 16px; + padding-right: 16px; +} +.ant-list-bordered.ant-list-sm .ant-list-header, +.ant-list-bordered.ant-list-sm .ant-list-footer { + padding: 8px 16px; +} +.ant-list-bordered.ant-list-lg .ant-list-header, +.ant-list-bordered.ant-list-lg .ant-list-footer { + padding: 16px 24px; +} +@media screen and (max-width: 768px) { + .ant-list-item-action { + margin-left: 24px; + } + .ant-list-vertical .ant-list-item-extra { + margin-left: 24px; + } +} +@media screen and (max-width: 480px) { + .ant-list-item { + flex-wrap: wrap; + } + .ant-list-item-action { + margin-left: 12px; + } + .ant-list-vertical .ant-list-item-extra-wrap { + flex-wrap: wrap-reverse; + } + .ant-list-vertical .ant-list-item-main { + min-width: 220px; + } + .ant-list-vertical .ant-list-item-extra { + margin-left: 0; + } +} +.ant-mention-wrapper { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; + position: relative; + display: inline-block; + width: 100%; + vertical-align: middle; +} +.ant-mention-wrapper .ant-mention-editor { + position: relative; + display: inline-block; + padding: 4px 11px; + width: 100%; + height: 32px; + font-size: 14px; + color: #54657e; + background-color: #fff; + background-image: none; + border: 1px solid #d9d9d9; + border-radius: 4px; + transition: all .3s; + min-height: 32px; + height: auto; + line-height: 1.5; + padding: 0; + display: block; +} +.ant-mention-wrapper .ant-mention-editor::-moz-placeholder { + color: #bfbfbf; + opacity: 1; +} +.ant-mention-wrapper .ant-mention-editor:-ms-input-placeholder { + color: #bfbfbf; +} +.ant-mention-wrapper .ant-mention-editor::-webkit-input-placeholder { + color: #bfbfbf; +} +.ant-mention-wrapper .ant-mention-editor:hover { + border-color: #40a9ff; +} +.ant-mention-wrapper .ant-mention-editor:focus { + border-color: #40a9ff; + outline: 0; + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); +} +.ant-mention-wrapper .ant-mention-editor-disabled { + background-color: #f5f5f5; + opacity: 1; + cursor: not-allowed; + color: rgba(0, 0, 0, 0.25); +} +.ant-mention-wrapper .ant-mention-editor-disabled:hover { + border-color: #e6d8d8; +} +textarea.ant-mention-wrapper .ant-mention-editor { + max-width: 100%; + height: auto; + vertical-align: bottom; + transition: all .3s, height 0s; + min-height: 32px; +} +.ant-mention-wrapper .ant-mention-editor-lg { + padding: 6px 11px; + height: 40px; + font-size: 16px; +} +.ant-mention-wrapper .ant-mention-editor-sm { + padding: 1px 7px; + height: 24px; +} +.ant-mention-wrapper .ant-mention-editor-wrapper { + overflow-y: auto; + height: auto; +} +.ant-mention-wrapper.ant-mention-active:not(.disabled) .ant-mention-editor { + border-color: #40a9ff; + outline: 0; + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); +} +.ant-mention-wrapper.disabled .ant-mention-editor { + background-color: #f5f5f5; + opacity: 1; + cursor: not-allowed; + color: rgba(0, 0, 0, 0.25); +} +.ant-mention-wrapper.disabled .ant-mention-editor:hover { + border-color: #e6d8d8; +} +.ant-mention-wrapper .public-DraftEditorPlaceholder-root { + position: absolute; + pointer-events: none; +} +.ant-mention-wrapper .public-DraftEditorPlaceholder-root .public-DraftEditorPlaceholder-inner { + color: #bfbfbf; + opacity: 1; + outline: none; + white-space: pre-wrap; + word-wrap: break-word; + height: auto; + padding: 5px 11px; +} +.ant-mention-wrapper .DraftEditor-editorContainer .public-DraftEditor-content { + height: auto; + padding: 5px 11px; +} +.ant-mention-dropdown { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; + margin-top: 1.5em; + max-height: 250px; + min-width: 120px; + background-color: #fff; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); + border-radius: 4px; + z-index: 1050; + left: -9999px; + top: -9999px; + position: absolute; + outline: none; + overflow-x: hidden; + overflow-y: auto; +} +.ant-mention-dropdown-placement-top { + margin-top: -0.1em; +} +.ant-mention-dropdown-notfound.ant-mention-dropdown-item { + color: rgba(0, 0, 0, 0.25); +} +.ant-mention-dropdown-notfound.ant-mention-dropdown-item .anticon-loading { + color: #1890ff; + text-align: center; + display: block; +} +.ant-mention-dropdown-item { + position: relative; + display: block; + padding: 5px 12px; + line-height: 22px; + font-weight: normal; + color: #54657e; + white-space: nowrap; + cursor: pointer; + text-overflow: ellipsis; + overflow: hidden; + transition: background 0.3s; +} +.ant-mention-dropdown-item:hover { + background-color: #e6f7ff; +} +.ant-mention-dropdown-item.focus, +.ant-mention-dropdown-item-active { + background-color: #e6f7ff; +} +.ant-mention-dropdown-item-disabled { + color: rgba(0, 0, 0, 0.25); + cursor: not-allowed; +} +.ant-mention-dropdown-item-disabled:hover { + color: rgba(0, 0, 0, 0.25); + background-color: #fff; + cursor: not-allowed; +} +.ant-mention-dropdown-item-selected, +.ant-mention-dropdown-item-selected:hover { + background-color: #f5f5f5; + font-weight: bold; + color: #54657e; +} +.ant-mention-dropdown-item-divider { + height: 1px; + margin: 1px 0; + overflow: hidden; + background-color: #e8e8e8; + line-height: 0; +} +.ant-menu { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + box-sizing: border-box; + margin: 0; + padding: 0; + outline: none; + margin-bottom: 0; + padding-left: 0; + list-style: none; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); + color: #54657e; + background: #fff; + line-height: 0; + transition: background .3s, width .2s; + zoom: 1; +} +.ant-menu:before, +.ant-menu:after { + content: " "; + display: table; +} +.ant-menu:after { + clear: both; + visibility: hidden; + font-size: 0; + height: 0; +} +.ant-menu:before, +.ant-menu:after { + content: " "; + display: table; +} +.ant-menu:after { + clear: both; + visibility: hidden; + font-size: 0; + height: 0; +} +.ant-menu ul, +.ant-menu ol { + list-style: none; + margin: 0; + padding: 0; +} +.ant-menu-hidden { + display: none; +} +.ant-menu-item-group-title { + color: rgba(0, 0, 0, 0.45); + font-size: 14px; + line-height: 1.5; + padding: 8px 16px; + transition: all .3s; +} +.ant-menu-submenu, +.ant-menu-submenu-inline { + transition: border-color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), padding 0.15s cubic-bezier(0.645, 0.045, 0.355, 1); +} +.ant-menu-item:active, +.ant-menu-submenu-title:active { + background: #e6f7ff; +} +.ant-menu-submenu .ant-menu-sub { + cursor: initial; + transition: background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), padding 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); +} +.ant-menu-item > a { + display: block; + color: #54657e; +} +.ant-menu-item > a:hover { + color: #3fa8eb; +} +.ant-menu-item > a:focus { + text-decoration: none; +} +.ant-menu-item > a:before { + position: absolute; + background-color: transparent; + width: 100%; + height: 100%; + top: 0; + left: 0; + bottom: 0; + right: 0; + content: ''; +} +.ant-menu-item-divider { + height: 1px; + overflow: hidden; + background-color: #e8e8e8; + line-height: 0; +} +.ant-menu-item:hover, +.ant-menu-item-active, +.ant-menu:not(.ant-menu-inline) .ant-menu-submenu-open, +.ant-menu-submenu-active, +.ant-menu-submenu-title:hover { + color: #3fa8eb; +} +.ant-menu-horizontal .ant-menu-item, +.ant-menu-horizontal .ant-menu-submenu { + margin-top: -1px; +} +.ant-menu-horizontal > .ant-menu-item:hover, +.ant-menu-horizontal > .ant-menu-item-active, +.ant-menu-horizontal > .ant-menu-submenu .ant-menu-submenu-title:hover { + background-color: transparent; +} +.ant-menu-item-selected { + color: #3fa8eb; +} +.ant-menu-item-selected > a, +.ant-menu-item-selected > a:hover { + color: #3fa8eb; +} +.ant-menu:not(.ant-menu-horizontal) .ant-menu-item-selected { + background-color: #e6f7ff; +} +.ant-menu-inline, +.ant-menu-vertical, +.ant-menu-vertical-left { + border-right: 1px solid #e8e8e8; +} +.ant-menu-vertical-right { + border-left: 1px solid #e8e8e8; +} +.ant-menu-vertical.ant-menu-sub, +.ant-menu-vertical-left.ant-menu-sub, +.ant-menu-vertical-right.ant-menu-sub { + border-right: 0; + padding: 0; + transform-origin: 0 0; +} +.ant-menu-vertical.ant-menu-sub .ant-menu-item, +.ant-menu-vertical-left.ant-menu-sub .ant-menu-item, +.ant-menu-vertical-right.ant-menu-sub .ant-menu-item { + border-right: 0; + margin-left: 0; + left: 0; +} +.ant-menu-vertical.ant-menu-sub .ant-menu-item:after, +.ant-menu-vertical-left.ant-menu-sub .ant-menu-item:after, +.ant-menu-vertical-right.ant-menu-sub .ant-menu-item:after { + border-right: 0; +} +.ant-menu-vertical.ant-menu-sub > .ant-menu-item, +.ant-menu-vertical-left.ant-menu-sub > .ant-menu-item, +.ant-menu-vertical-right.ant-menu-sub > .ant-menu-item, +.ant-menu-vertical.ant-menu-sub > .ant-menu-submenu, +.ant-menu-vertical-left.ant-menu-sub > .ant-menu-submenu, +.ant-menu-vertical-right.ant-menu-sub > .ant-menu-submenu { + transform-origin: 0 0; +} +.ant-menu-horizontal.ant-menu-sub, +.ant-menu-vertical.ant-menu-sub, +.ant-menu-vertical-left.ant-menu-sub, +.ant-menu-vertical-right.ant-menu-sub { + min-width: 160px; +} +.ant-menu-item, +.ant-menu-submenu-title { + cursor: pointer; + margin: 0; + padding: 0 20px; + position: relative; + display: block; + white-space: nowrap; + transition: color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), border-color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), padding 0.15s cubic-bezier(0.645, 0.045, 0.355, 1); +} +.ant-menu-item .anticon, +.ant-menu-submenu-title .anticon { + min-width: 14px; + margin-right: 10px; + transition: font-size 0.15s cubic-bezier(0.215, 0.61, 0.355, 1), margin 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); +} +.ant-menu-item .anticon + span, +.ant-menu-submenu-title .anticon + span { + transition: opacity 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), width 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); + opacity: 1; +} +.ant-menu > .ant-menu-item-divider { + height: 1px; + margin: 1px 0; + overflow: hidden; + padding: 0; + line-height: 0; + background-color: #e8e8e8; +} +.ant-menu-submenu-popup { + position: absolute; + border-radius: 4px; + z-index: 1050; +} +.ant-menu-submenu > .ant-menu { + background-color: #fff; + border-radius: 4px; +} +.ant-menu-submenu > .ant-menu-submenu-title:after { + transition: transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); +} +.ant-menu-submenu-vertical > .ant-menu-submenu-title .ant-menu-submenu-arrow, +.ant-menu-submenu-vertical-left > .ant-menu-submenu-title .ant-menu-submenu-arrow, +.ant-menu-submenu-vertical-right > .ant-menu-submenu-title .ant-menu-submenu-arrow, +.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow { + transition: transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); + position: absolute; + top: 50%; + right: 16px; + width: 10px; +} +.ant-menu-submenu-vertical > .ant-menu-submenu-title .ant-menu-submenu-arrow:before, +.ant-menu-submenu-vertical-left > .ant-menu-submenu-title .ant-menu-submenu-arrow:before, +.ant-menu-submenu-vertical-right > .ant-menu-submenu-title .ant-menu-submenu-arrow:before, +.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow:before, +.ant-menu-submenu-vertical > .ant-menu-submenu-title .ant-menu-submenu-arrow:after, +.ant-menu-submenu-vertical-left > .ant-menu-submenu-title .ant-menu-submenu-arrow:after, +.ant-menu-submenu-vertical-right > .ant-menu-submenu-title .ant-menu-submenu-arrow:after, +.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow:after { + content: ''; + position: absolute; + vertical-align: baseline; + background: #fff; + background-image: linear-gradient(to right, #54657e, #54657e); + width: 6px; + height: 1.5px; + border-radius: 2px; + transition: background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), top 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); +} +.ant-menu-submenu-vertical > .ant-menu-submenu-title .ant-menu-submenu-arrow:before, +.ant-menu-submenu-vertical-left > .ant-menu-submenu-title .ant-menu-submenu-arrow:before, +.ant-menu-submenu-vertical-right > .ant-menu-submenu-title .ant-menu-submenu-arrow:before, +.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow:before { + transform: rotate(45deg) translateY(-2px); +} +.ant-menu-submenu-vertical > .ant-menu-submenu-title .ant-menu-submenu-arrow:after, +.ant-menu-submenu-vertical-left > .ant-menu-submenu-title .ant-menu-submenu-arrow:after, +.ant-menu-submenu-vertical-right > .ant-menu-submenu-title .ant-menu-submenu-arrow:after, +.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow:after { + transform: rotate(-45deg) translateY(2px); +} +.ant-menu-submenu-vertical > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after, +.ant-menu-submenu-vertical-left > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after, +.ant-menu-submenu-vertical-right > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after, +.ant-menu-submenu-inline > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after, +.ant-menu-submenu-vertical > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before, +.ant-menu-submenu-vertical-left > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before, +.ant-menu-submenu-vertical-right > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before, +.ant-menu-submenu-inline > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before { + background: linear-gradient(to right, #3fa8eb, #3fa8eb); +} +.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow:before { + transform: rotate(-45deg) translateX(2px); +} +.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow:after { + transform: rotate(45deg) translateX(-2px); +} +.ant-menu-submenu-open.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow { + transform: translateY(-2px); +} +.ant-menu-submenu-open.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow:after { + transform: rotate(-45deg) translateX(-2px); +} +.ant-menu-submenu-open.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow:before { + transform: rotate(45deg) translateX(2px); +} +.ant-menu-vertical .ant-menu-submenu-selected, +.ant-menu-vertical-left .ant-menu-submenu-selected, +.ant-menu-vertical-right .ant-menu-submenu-selected { + color: #3fa8eb; +} +.ant-menu-vertical .ant-menu-submenu-selected > a, +.ant-menu-vertical-left .ant-menu-submenu-selected > a, +.ant-menu-vertical-right .ant-menu-submenu-selected > a { + color: #3fa8eb; +} +.ant-menu-horizontal { + border: 0; + border-bottom: 1px solid #e8e8e8; + box-shadow: none; + line-height: 46px; +} +.ant-menu-horizontal > .ant-menu-item, +.ant-menu-horizontal > .ant-menu-submenu { + position: relative; + top: 1px; + float: left; + border-bottom: 2px solid transparent; +} +.ant-menu-horizontal > .ant-menu-item:hover, +.ant-menu-horizontal > .ant-menu-submenu:hover, +.ant-menu-horizontal > .ant-menu-item-active, +.ant-menu-horizontal > .ant-menu-submenu-active, +.ant-menu-horizontal > .ant-menu-item-open, +.ant-menu-horizontal > .ant-menu-submenu-open, +.ant-menu-horizontal > .ant-menu-item-selected, +.ant-menu-horizontal > .ant-menu-submenu-selected { + border-bottom: 2px solid #3fa8eb; + color: #3fa8eb; +} +.ant-menu-horizontal > .ant-menu-item > a, +.ant-menu-horizontal > .ant-menu-submenu > a { + display: block; + color: #54657e; +} +.ant-menu-horizontal > .ant-menu-item > a:hover, +.ant-menu-horizontal > .ant-menu-submenu > a:hover { + color: #3fa8eb; +} +.ant-menu-horizontal:after { + content: "\20"; + display: block; + height: 0; + clear: both; +} +.ant-menu-vertical .ant-menu-item, +.ant-menu-vertical-left .ant-menu-item, +.ant-menu-vertical-right .ant-menu-item, +.ant-menu-inline .ant-menu-item { + position: relative; +} +.ant-menu-vertical .ant-menu-item:after, +.ant-menu-vertical-left .ant-menu-item:after, +.ant-menu-vertical-right .ant-menu-item:after, +.ant-menu-inline .ant-menu-item:after { + content: ""; + position: absolute; + right: 0; + top: 0; + bottom: 0; + border-right: 3px solid #3fa8eb; + transform: scaleY(0.0001); + opacity: 0; + transition: transform 0.15s cubic-bezier(0.215, 0.61, 0.355, 1), opacity 0.15s cubic-bezier(0.215, 0.61, 0.355, 1); +} +.ant-menu-vertical .ant-menu-item, +.ant-menu-vertical-left .ant-menu-item, +.ant-menu-vertical-right .ant-menu-item, +.ant-menu-inline .ant-menu-item, +.ant-menu-vertical .ant-menu-submenu-title, +.ant-menu-vertical-left .ant-menu-submenu-title, +.ant-menu-vertical-right .ant-menu-submenu-title, +.ant-menu-inline .ant-menu-submenu-title { + padding: 0 16px; + font-size: 14px; + line-height: 50px; + height: 50px; + margin-top: 4px; + margin-bottom: 4px; + overflow: hidden; + text-overflow: ellipsis; +} +.ant-menu-vertical .ant-menu-submenu, +.ant-menu-vertical-left .ant-menu-submenu, +.ant-menu-vertical-right .ant-menu-submenu, +.ant-menu-inline .ant-menu-submenu { + padding-bottom: 0.01px; +} +.ant-menu-vertical .ant-menu-item:not(:last-child), +.ant-menu-vertical-left .ant-menu-item:not(:last-child), +.ant-menu-vertical-right .ant-menu-item:not(:last-child), +.ant-menu-inline .ant-menu-item:not(:last-child) { + margin-bottom: 8px; +} +.ant-menu-vertical > .ant-menu-item, +.ant-menu-vertical-left > .ant-menu-item, +.ant-menu-vertical-right > .ant-menu-item, +.ant-menu-inline > .ant-menu-item, +.ant-menu-vertical > .ant-menu-submenu > .ant-menu-submenu-title, +.ant-menu-vertical-left > .ant-menu-submenu > .ant-menu-submenu-title, +.ant-menu-vertical-right > .ant-menu-submenu > .ant-menu-submenu-title, +.ant-menu-inline > .ant-menu-submenu > .ant-menu-submenu-title { + line-height: 50px; + height: 50px; +} +.ant-menu-inline { + width: 100%; +} +.ant-menu-inline .ant-menu-selected:after, +.ant-menu-inline .ant-menu-item-selected:after { + transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), opacity 0.15s cubic-bezier(0.645, 0.045, 0.355, 1); + opacity: 1; + transform: scaleY(1); +} +.ant-menu-inline .ant-menu-item, +.ant-menu-inline .ant-menu-submenu-title { + width: calc(100% + 1px); +} +.ant-menu-inline .ant-menu-submenu-title { + padding-right: 34px; +} +.ant-menu-inline-collapsed { + width: 80px; +} +.ant-menu-inline-collapsed > .ant-menu-item, +.ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-item, +.ant-menu-inline-collapsed > .ant-menu-submenu > .ant-menu-submenu-title { + left: 0; + text-overflow: clip; + padding: 0 32px !important; +} +.ant-menu-inline-collapsed > .ant-menu-item .ant-menu-submenu-arrow, +.ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-item .ant-menu-submenu-arrow, +.ant-menu-inline-collapsed > .ant-menu-submenu > .ant-menu-submenu-title .ant-menu-submenu-arrow { + display: none; +} +.ant-menu-inline-collapsed > .ant-menu-item .anticon, +.ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-item .anticon, +.ant-menu-inline-collapsed > .ant-menu-submenu > .ant-menu-submenu-title .anticon { + font-size: 16px; + line-height: 50px; + margin: 0; +} +.ant-menu-inline-collapsed > .ant-menu-item .anticon + span, +.ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-item .anticon + span, +.ant-menu-inline-collapsed > .ant-menu-submenu > .ant-menu-submenu-title .anticon + span { + max-width: 0; + display: inline-block; + opacity: 0; +} +.ant-menu-inline-collapsed-tooltip { + pointer-events: none; +} +.ant-menu-inline-collapsed-tooltip .anticon { + display: none; +} +.ant-menu-inline-collapsed-tooltip a { + color: rgba(255, 255, 255, 0.85); +} +.ant-menu-inline-collapsed .ant-menu-item-group-title { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + padding-left: 4px; + padding-right: 4px; +} +.ant-menu-item-group-list { + margin: 0; + padding: 0; +} +.ant-menu-item-group-list .ant-menu-item, +.ant-menu-item-group-list .ant-menu-submenu-title { + padding: 0 16px 0 28px; +} +.ant-menu-root.ant-menu-vertical, +.ant-menu-root.ant-menu-vertical-left, +.ant-menu-root.ant-menu-vertical-right, +.ant-menu-root.ant-menu-inline { + box-shadow: none; +} +.ant-menu-sub.ant-menu-inline { + padding: 0; + border: 0; + box-shadow: none; + border-radius: 0; +} +.ant-menu-sub.ant-menu-inline > .ant-menu-item, +.ant-menu-sub.ant-menu-inline > .ant-menu-submenu > .ant-menu-submenu-title { + line-height: 50px; + height: 50px; + list-style-type: disc; + list-style-position: inside; +} +.ant-menu-sub.ant-menu-inline .ant-menu-item-group-title { + padding-left: 32px; +} +.ant-menu-item-disabled, +.ant-menu-submenu-disabled { + color: rgba(0, 0, 0, 0.25) !important; + cursor: not-allowed; + background: none; + border-color: transparent !important; +} +.ant-menu-item-disabled > a, +.ant-menu-submenu-disabled > a { + color: rgba(0, 0, 0, 0.25) !important; + pointer-events: none; +} +.ant-menu-item-disabled > .ant-menu-submenu-title, +.ant-menu-submenu-disabled > .ant-menu-submenu-title { + color: rgba(0, 0, 0, 0.25) !important; + cursor: not-allowed; +} +.ant-menu-dark, +.ant-menu-dark .ant-menu-sub { + color: #fff; + background: #2a3542; +} +.ant-menu-dark .ant-menu-submenu-title .ant-menu-submenu-arrow, +.ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow { + opacity: .45; + transition: all .3s; +} +.ant-menu-dark .ant-menu-submenu-title .ant-menu-submenu-arrow:after, +.ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow:after, +.ant-menu-dark .ant-menu-submenu-title .ant-menu-submenu-arrow:before, +.ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow:before { + background: #fff; +} +.ant-menu-dark.ant-menu-submenu-popup { + background: transparent; +} +.ant-menu-dark .ant-menu-inline.ant-menu-sub { + background: #2a3542; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.45) inset; +} +.ant-menu-dark.ant-menu-horizontal { + border-bottom-color: #2a3542; +} +.ant-menu-dark.ant-menu-horizontal > .ant-menu-item, +.ant-menu-dark.ant-menu-horizontal > .ant-menu-submenu { + border-color: #2a3542; + border-bottom: 0; +} +.ant-menu-dark .ant-menu-item, +.ant-menu-dark .ant-menu-item-group-title, +.ant-menu-dark .ant-menu-item > a { + color: #fff; +} +.ant-menu-dark.ant-menu-inline, +.ant-menu-dark.ant-menu-vertical, +.ant-menu-dark.ant-menu-vertical-left, +.ant-menu-dark.ant-menu-vertical-right { + border-right: 0; +} +.ant-menu-dark.ant-menu-inline .ant-menu-item, +.ant-menu-dark.ant-menu-vertical .ant-menu-item, +.ant-menu-dark.ant-menu-vertical-left .ant-menu-item, +.ant-menu-dark.ant-menu-vertical-right .ant-menu-item { + border-right: 0; + margin-left: 0; + left: 0; +} +.ant-menu-dark.ant-menu-inline .ant-menu-item:after, +.ant-menu-dark.ant-menu-vertical .ant-menu-item:after, +.ant-menu-dark.ant-menu-vertical-left .ant-menu-item:after, +.ant-menu-dark.ant-menu-vertical-right .ant-menu-item:after { + border-right: 0; +} +.ant-menu-dark.ant-menu-inline .ant-menu-item, +.ant-menu-dark.ant-menu-inline .ant-menu-submenu-title { + width: 100%; +} +.ant-menu-dark .ant-menu-item:hover, +.ant-menu-dark .ant-menu-item-active, +.ant-menu-dark .ant-menu-submenu-active, +.ant-menu-dark .ant-menu-submenu-open, +.ant-menu-dark .ant-menu-submenu-selected, +.ant-menu-dark .ant-menu-submenu-title:hover { + background-color: transparent; + color: #3fa8eb; +} +.ant-menu-dark .ant-menu-item:hover > a, +.ant-menu-dark .ant-menu-item-active > a, +.ant-menu-dark .ant-menu-submenu-active > a, +.ant-menu-dark .ant-menu-submenu-open > a, +.ant-menu-dark .ant-menu-submenu-selected > a, +.ant-menu-dark .ant-menu-submenu-title:hover > a { + color: #3fa8eb; +} +.ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow, +.ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow, +.ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow, +.ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title > .ant-menu-submenu-arrow, +.ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title > .ant-menu-submenu-arrow, +.ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow, +.ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow, +.ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow, +.ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow, +.ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow, +.ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow, +.ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow { + opacity: 1; +} +.ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after, +.ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after, +.ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after, +.ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after, +.ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after, +.ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after, +.ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:after, +.ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:after, +.ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:after, +.ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:after, +.ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:after, +.ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:after, +.ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before, +.ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before, +.ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before, +.ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before, +.ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before, +.ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before, +.ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:before, +.ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:before, +.ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:before, +.ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:before, +.ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:before, +.ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:before { + background: #3fa8eb; +} +.ant-menu-dark .ant-menu-item-selected { + border-right: 0; + color: #3fa8eb; +} +.ant-menu-dark .ant-menu-item-selected:after { + border-right: 0; +} +.ant-menu-dark .ant-menu-item-selected > a, +.ant-menu-dark .ant-menu-item-selected > a:hover { + color: #3fa8eb; +} +.ant-menu.ant-menu-dark .ant-menu-item-selected, +.ant-menu-submenu-popup.ant-menu-dark .ant-menu-item-selected { + background-color: #3d4a59; +} +.ant-menu-dark .ant-menu-item-disabled, +.ant-menu-dark .ant-menu-submenu-disabled, +.ant-menu-dark .ant-menu-item-disabled > a, +.ant-menu-dark .ant-menu-submenu-disabled > a { + opacity: 0.8; + color: rgba(255, 255, 255, 0.35) !important; +} +.ant-menu-dark .ant-menu-item-disabled > .ant-menu-submenu-title, +.ant-menu-dark .ant-menu-submenu-disabled > .ant-menu-submenu-title { + color: rgba(255, 255, 255, 0.35) !important; +} +.ant-message { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; + position: fixed; + z-index: 1010; + width: 100%; + top: 16px; + left: 0; + pointer-events: none; +} +.ant-message-notice { + padding: 8px; + text-align: center; +} +.ant-message-notice:first-child { + margin-top: -8px; +} +.ant-message-notice-content { + padding: 10px 16px; + border-radius: 4px; + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); + background: #fff; + display: inline-block; + pointer-events: all; +} +.ant-message-success .anticon { + color: #52c41a; +} +.ant-message-error .anticon { + color: #f5222d; +} +.ant-message-warning .anticon { + color: #faad14; +} +.ant-message-info .anticon, +.ant-message-loading .anticon { + color: #1890ff; +} +.ant-message .anticon { + margin-right: 8px; + font-size: 16px; + top: 1px; + position: relative; +} +.ant-message-notice.move-up-leave.move-up-leave-active { + animation-name: MessageMoveOut; + overflow: hidden; + animation-duration: .3s; +} +@keyframes MessageMoveOut { + 0% { + opacity: 1; + max-height: 150px; + padding: 8px; + } + 100% { + opacity: 0; + max-height: 0; + padding: 0; + } +} +.ant-modal { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; + position: relative; + width: auto; + margin: 0 auto; + top: 100px; + padding-bottom: 24px; +} +.ant-modal-wrap { + position: fixed; + overflow: auto; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1000; + -webkit-overflow-scrolling: touch; + outline: 0; +} +.ant-modal-title { + margin: 0; + font-size: 16px; + line-height: 22px; + font-weight: 500; + color: rgba(0, 0, 0, 0.85); +} +.ant-modal-content { + position: relative; + background-color: #fff; + border: 0; + border-radius: 4px; + background-clip: padding-box; + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); +} +.ant-modal-close { + cursor: pointer; + border: 0; + background: transparent; + position: absolute; + right: 0; + top: 0; + z-index: 10; + font-weight: 700; + line-height: 1; + text-decoration: none; + transition: color .3s; + color: rgba(0, 0, 0, 0.45); + outline: 0; + padding: 0; +} +.ant-modal-close-x { + display: block; + font-style: normal; + vertical-align: baseline; + text-align: center; + text-transform: none; + text-rendering: auto; + width: 56px; + height: 56px; + line-height: 56px; + font-size: 16px; +} +.ant-modal-close-x:before { + content: "\e633"; + display: block; + font-family: "anticon" !important; +} +.ant-modal-close:focus, +.ant-modal-close:hover { + color: #444; + text-decoration: none; +} +.ant-modal-header { + padding: 16px 24px; + border-radius: 4px 4px 0 0; + background: #fff; + color: #54657e; + border-bottom: 1px solid #e8e8e8; +} +.ant-modal-body { + padding: 24px; + font-size: 14px; + line-height: 1.5; +} +.ant-modal-footer { + border-top: 1px solid #e8e8e8; + padding: 10px 16px; + text-align: right; + border-radius: 0 0 4px 4px; +} +.ant-modal-footer button + button { + margin-left: 8px; + margin-bottom: 0; +} +.ant-modal.zoom-enter, +.ant-modal.zoom-appear { + animation-duration: 0.3s; + transform: none; + opacity: 0; +} +.ant-modal-mask { + position: fixed; + top: 0; + right: 0; + left: 0; + bottom: 0; + background-color: #373737; + background-color: rgba(0, 0, 0, 0.65); + height: 100%; + z-index: 1000; + filter: alpha(opacity=50); +} +.ant-modal-mask-hidden { + display: none; +} +.ant-modal-open { + overflow: hidden; +} +@media (max-width: 768px) { + .ant-modal { + width: auto !important; + margin: 10px; + } + .vertical-center-modal .ant-modal { + flex: 1; + } +} +.ant-confirm .ant-modal-header { + display: none; +} +.ant-confirm .ant-modal-close { + display: none; +} +.ant-confirm .ant-modal-body { + padding: 32px 32px 24px; +} +.ant-confirm-body-wrapper { + zoom: 1; +} +.ant-confirm-body-wrapper:before, +.ant-confirm-body-wrapper:after { + content: " "; + display: table; +} +.ant-confirm-body-wrapper:after { + clear: both; + visibility: hidden; + font-size: 0; + height: 0; +} +.ant-confirm-body-wrapper:before, +.ant-confirm-body-wrapper:after { + content: " "; + display: table; +} +.ant-confirm-body-wrapper:after { + clear: both; + visibility: hidden; + font-size: 0; + height: 0; +} +.ant-confirm-body .ant-confirm-title { + color: rgba(0, 0, 0, 0.85); + font-weight: 500; + font-size: 16px; + line-height: 22px; +} +.ant-confirm-body .ant-confirm-content { + margin-left: 38px; + font-size: 14px; + color: #54657e; + margin-top: 8px; +} +.ant-confirm-body > .anticon { + font-size: 22px; + margin-right: 16px; + float: left; + min-height: 48px; +} +.ant-confirm .ant-confirm-btns { + margin-top: 24px; + float: right; +} +.ant-confirm .ant-confirm-btns button + button { + margin-left: 8px; + margin-bottom: 0; +} +.ant-confirm-error .ant-confirm-body > .anticon { + color: #f5222d; +} +.ant-confirm-warning .ant-confirm-body > .anticon, +.ant-confirm-confirm .ant-confirm-body > .anticon { + color: #faad14; +} +.ant-confirm-info .ant-confirm-body > .anticon { + color: #1890ff; +} +.ant-confirm-success .ant-confirm-body > .anticon { + color: #52c41a; +} +.ant-notification { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; + position: fixed; + z-index: 1010; + width: 384px; + max-width: calc(100vw - 32px); + margin-right: 24px; +} +.ant-notification-topLeft, +.ant-notification-bottomLeft { + margin-left: 24px; + margin-right: 0; +} +.ant-notification-topLeft .ant-notification-fade-enter.ant-notification-fade-enter-active, +.ant-notification-bottomLeft .ant-notification-fade-enter.ant-notification-fade-enter-active, +.ant-notification-topLeft .ant-notification-fade-appear.ant-notification-fade-appear-active, +.ant-notification-bottomLeft .ant-notification-fade-appear.ant-notification-fade-appear-active { + animation-name: NotificationLeftFadeIn; +} +.ant-notification-notice { + padding: 16px 24px; + border-radius: 4px; + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); + background: #fff; + line-height: 1.5; + position: relative; + margin-bottom: 16px; + overflow: hidden; +} +.ant-notification-notice-message { + font-size: 16px; + color: rgba(0, 0, 0, 0.85); + margin-bottom: 8px; + line-height: 24px; + display: inline-block; +} +.ant-notification-notice-message-single-line-auto-margin { + width: calc(384px - 24px * 2 - 24px - 48px - 100%); + background-color: transparent; + pointer-events: none; + display: block; + max-width: 4px; +} +.ant-notification-notice-message-single-line-auto-margin:before { + content: ''; + display: block; + padding-bottom: 100%; +} +.ant-notification-notice-description { + font-size: 14px; +} +.ant-notification-notice-closable .ant-notification-notice-message { + padding-right: 24px; +} +.ant-notification-notice-with-icon .ant-notification-notice-message { + font-size: 16px; + margin-left: 48px; + margin-bottom: 4px; +} +.ant-notification-notice-with-icon .ant-notification-notice-description { + margin-left: 48px; + font-size: 14px; +} +.ant-notification-notice-icon { + position: absolute; + font-size: 24px; + line-height: 24px; + margin-left: 4px; +} +.ant-notification-notice-icon-success { + color: #52c41a; +} +.ant-notification-notice-icon-info { + color: #1890ff; +} +.ant-notification-notice-icon-warning { + color: #faad14; +} +.ant-notification-notice-icon-error { + color: #f5222d; +} +.ant-notification-notice-close-x:after { + font-size: 14px; + content: "\e633"; + font-family: "anticon"; + cursor: pointer; +} +.ant-notification-notice-close { + position: absolute; + right: 22px; + top: 16px; + color: rgba(0, 0, 0, 0.45); + outline: none; +} +a.ant-notification-notice-close:focus { + text-decoration: none; +} +.ant-notification-notice-close:hover { + color: #404040; +} +.ant-notification-notice-btn { + float: right; + margin-top: 16px; +} +.ant-notification .notification-fade-effect { + animation-duration: 0.24s; + animation-fill-mode: both; + animation-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1); +} +.ant-notification-fade-enter, +.ant-notification-fade-appear { + opacity: 0; + animation-duration: 0.24s; + animation-fill-mode: both; + animation-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1); + animation-play-state: paused; +} +.ant-notification-fade-leave { + animation-duration: 0.24s; + animation-fill-mode: both; + animation-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1); + animation-duration: 0.2s; + animation-play-state: paused; +} +.ant-notification-fade-enter.ant-notification-fade-enter-active, +.ant-notification-fade-appear.ant-notification-fade-appear-active { + animation-name: NotificationFadeIn; + animation-play-state: running; +} +.ant-notification-fade-leave.ant-notification-fade-leave-active { + animation-name: NotificationFadeOut; + animation-play-state: running; +} +@keyframes NotificationFadeIn { + 0% { + opacity: 0; + left: 384px; + } + 100% { + left: 0; + opacity: 1; + } +} +@keyframes NotificationLeftFadeIn { + 0% { + opacity: 0; + right: 384px; + } + 100% { + right: 0; + opacity: 1; + } +} +@keyframes NotificationFadeOut { + 0% { + opacity: 1; + margin-bottom: 16px; + padding-top: 16px 24px; + padding-bottom: 16px 24px; + max-height: 150px; + } + 100% { + opacity: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; + max-height: 0; + } +} +.ant-pagination { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; +} +.ant-pagination ul, +.ant-pagination ol { + margin: 0; + padding: 0; + list-style: none; +} +.ant-pagination:after { + content: " "; + display: block; + height: 0; + clear: both; + overflow: hidden; + visibility: hidden; +} +.ant-pagination-total-text { + display: inline-block; + vertical-align: middle; + height: 32px; + line-height: 30px; + margin-right: 8px; +} +.ant-pagination-item { + cursor: pointer; + border-radius: 4px; + user-select: none; + min-width: 32px; + height: 32px; + line-height: 30px; + text-align: center; + list-style: none; + display: inline-block; + vertical-align: middle; + border: 1px solid #d9d9d9; + background-color: #fff; + margin-right: 8px; + font-family: Arial; + outline: 0; +} +.ant-pagination-item a { + text-decoration: none; + color: #54657e; + transition: none; + margin: 0 6px; +} +.ant-pagination-item:focus, +.ant-pagination-item:hover { + transition: all .3s; + border-color: #1890ff; +} +.ant-pagination-item:focus a, +.ant-pagination-item:hover a { + color: #1890ff; +} +.ant-pagination-item-active { + border-color: #1890ff; + font-weight: 500; +} +.ant-pagination-item-active a { + color: #1890ff; +} +.ant-pagination-item-active:focus, +.ant-pagination-item-active:hover { + border-color: #40a9ff; +} +.ant-pagination-item-active:focus a, +.ant-pagination-item-active:hover a { + color: #40a9ff; +} +.ant-pagination-jump-prev, +.ant-pagination-jump-next { + outline: 0; +} +.ant-pagination-jump-prev:after, +.ant-pagination-jump-next:after { + content: "•••"; + display: block; + letter-spacing: 2px; + color: rgba(0, 0, 0, 0.25); + text-align: center; +} +.ant-pagination-jump-prev:focus:after, +.ant-pagination-jump-next:focus:after, +.ant-pagination-jump-prev:hover:after, +.ant-pagination-jump-next:hover:after { + color: #1890ff; + display: inline-block; + font-size: 12px; + font-size: 8px \9; + transform: scale(0.66666667) rotate(0deg); + letter-spacing: -1px; + font-family: "anticon"; +} +:root .ant-pagination-jump-prev:focus:after, +:root .ant-pagination-jump-next:focus:after, +:root .ant-pagination-jump-prev:hover:after, +:root .ant-pagination-jump-next:hover:after { + font-size: 12px; +} +.ant-pagination-jump-prev:focus:after, +.ant-pagination-jump-prev:hover:after { + content: "\e620\e620"; +} +.ant-pagination-jump-next:focus:after, +.ant-pagination-jump-next:hover:after { + content: "\e61f\e61f"; +} +.ant-pagination-prev, +.ant-pagination-jump-prev, +.ant-pagination-jump-next { + margin-right: 8px; +} +.ant-pagination-prev, +.ant-pagination-next, +.ant-pagination-jump-prev, +.ant-pagination-jump-next { + font-family: Arial; + cursor: pointer; + color: #54657e; + border-radius: 4px; + list-style: none; + min-width: 32px; + height: 32px; + line-height: 32px; + text-align: center; + transition: all .3s; + display: inline-block; + vertical-align: middle; +} +.ant-pagination-prev, +.ant-pagination-next { + outline: 0; +} +.ant-pagination-prev a, +.ant-pagination-next a { + color: #54657e; + user-select: none; +} +.ant-pagination-prev:hover a, +.ant-pagination-next:hover a { + border-color: #40a9ff; +} +.ant-pagination-prev .ant-pagination-item-link, +.ant-pagination-next .ant-pagination-item-link { + border: 1px solid #d9d9d9; + background-color: #fff; + border-radius: 4px; + outline: none; + display: block; + transition: all .3s; +} +.ant-pagination-prev .ant-pagination-item-link:after, +.ant-pagination-next .ant-pagination-item-link:after { + font-size: 12px; + display: block; + height: 30px; + font-family: "anticon"; + text-align: center; + font-weight: 500; +} +.ant-pagination-prev:focus .ant-pagination-item-link, +.ant-pagination-next:focus .ant-pagination-item-link, +.ant-pagination-prev:hover .ant-pagination-item-link, +.ant-pagination-next:hover .ant-pagination-item-link { + border-color: #1890ff; + color: #1890ff; +} +.ant-pagination-prev .ant-pagination-item-link:after { + content: "\e620"; + display: block; +} +.ant-pagination-next .ant-pagination-item-link:after { + content: "\e61f"; + display: block; +} +.ant-pagination-disabled, +.ant-pagination-disabled:hover, +.ant-pagination-disabled:focus { + cursor: not-allowed; +} +.ant-pagination-disabled a, +.ant-pagination-disabled:hover a, +.ant-pagination-disabled:focus a, +.ant-pagination-disabled .ant-pagination-item-link, +.ant-pagination-disabled:hover .ant-pagination-item-link, +.ant-pagination-disabled:focus .ant-pagination-item-link { + border-color: #d9d9d9; + color: rgba(0, 0, 0, 0.25); + cursor: not-allowed; +} +.ant-pagination-slash { + margin: 0 10px 0 5px; +} +.ant-pagination-options { + display: inline-block; + vertical-align: middle; + margin-left: 16px; +} +.ant-pagination-options-size-changer.ant-select { + display: inline-block; + margin-right: 8px; +} +.ant-pagination-options-quick-jumper { + display: inline-block; + vertical-align: top; + height: 32px; + line-height: 32px; +} +.ant-pagination-options-quick-jumper input { + position: relative; + display: inline-block; + padding: 4px 11px; + width: 100%; + height: 32px; + font-size: 14px; + line-height: 1.5; + color: #54657e; + background-color: #fff; + background-image: none; + border: 1px solid #d9d9d9; + border-radius: 4px; + transition: all .3s; + margin: 0 8px; + width: 50px; +} +.ant-pagination-options-quick-jumper input::-moz-placeholder { + color: #bfbfbf; + opacity: 1; +} +.ant-pagination-options-quick-jumper input:-ms-input-placeholder { + color: #bfbfbf; +} +.ant-pagination-options-quick-jumper input::-webkit-input-placeholder { + color: #bfbfbf; +} +.ant-pagination-options-quick-jumper input:hover { + border-color: #40a9ff; +} +.ant-pagination-options-quick-jumper input:focus { + border-color: #40a9ff; + outline: 0; + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); +} +.ant-pagination-options-quick-jumper input-disabled { + background-color: #f5f5f5; + opacity: 1; + cursor: not-allowed; + color: rgba(0, 0, 0, 0.25); +} +.ant-pagination-options-quick-jumper input-disabled:hover { + border-color: #e6d8d8; +} +textarea.ant-pagination-options-quick-jumper input { + max-width: 100%; + height: auto; + vertical-align: bottom; + transition: all .3s, height 0s; + min-height: 32px; +} +.ant-pagination-options-quick-jumper input-lg { + padding: 6px 11px; + height: 40px; + font-size: 16px; +} +.ant-pagination-options-quick-jumper input-sm { + padding: 1px 7px; + height: 24px; +} +.ant-pagination-simple .ant-pagination-prev, +.ant-pagination-simple .ant-pagination-next { + height: 24px; + line-height: 24px; + vertical-align: top; +} +.ant-pagination-simple .ant-pagination-prev .ant-pagination-item-link, +.ant-pagination-simple .ant-pagination-next .ant-pagination-item-link { + border: 0; + height: 24px; +} +.ant-pagination-simple .ant-pagination-prev .ant-pagination-item-link:after, +.ant-pagination-simple .ant-pagination-next .ant-pagination-item-link:after { + height: 24px; + line-height: 24px; +} +.ant-pagination-simple .ant-pagination-simple-pager { + display: inline-block; + margin-right: 8px; + height: 24px; +} +.ant-pagination-simple .ant-pagination-simple-pager input { + margin-right: 8px; + box-sizing: border-box; + background-color: #fff; + border-radius: 4px; + border: 1px solid #d9d9d9; + outline: none; + padding: 0 6px; + height: 100%; + text-align: center; + transition: border-color 0.3s; +} +.ant-pagination-simple .ant-pagination-simple-pager input:hover { + border-color: #1890ff; +} +.ant-pagination.mini .ant-pagination-total-text, +.ant-pagination.mini .ant-pagination-simple-pager { + height: 24px; + line-height: 24px; +} +.ant-pagination.mini .ant-pagination-item { + margin: 0; + min-width: 24px; + height: 24px; + line-height: 22px; +} +.ant-pagination.mini .ant-pagination-item:not(.ant-pagination-item-active) { + background: transparent; + border-color: transparent; +} +.ant-pagination.mini .ant-pagination-prev, +.ant-pagination.mini .ant-pagination-next { + margin: 0; + min-width: 24px; + height: 24px; + line-height: 24px; +} +.ant-pagination.mini .ant-pagination-prev .ant-pagination-item-link, +.ant-pagination.mini .ant-pagination-next .ant-pagination-item-link { + border-color: transparent; + background: transparent; +} +.ant-pagination.mini .ant-pagination-prev .ant-pagination-item-link:after, +.ant-pagination.mini .ant-pagination-next .ant-pagination-item-link:after { + height: 24px; + line-height: 24px; +} +.ant-pagination.mini .ant-pagination-jump-prev, +.ant-pagination.mini .ant-pagination-jump-next { + height: 24px; + line-height: 24px; + margin-right: 0; +} +.ant-pagination.mini .ant-pagination-options { + margin-left: 2px; +} +.ant-pagination.mini .ant-pagination-options-quick-jumper { + height: 24px; + line-height: 24px; +} +.ant-pagination.mini .ant-pagination-options-quick-jumper input { + padding: 1px 7px; + height: 24px; + width: 44px; +} +@media only screen and (max-width: 992px) { + .ant-pagination-item-after-jump-prev, + .ant-pagination-item-before-jump-next { + display: none; + } +} +@media only screen and (max-width: 576px) { + .ant-pagination-options { + display: none; + } +} +.ant-popover { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; + position: absolute; + top: 0; + left: 0; + z-index: 1030; + cursor: auto; + user-select: text; + white-space: normal; + font-weight: normal; + text-align: left; +} +.ant-popover:after { + content: ""; + position: absolute; + background: rgba(255, 255, 255, 0.01); +} +.ant-popover-hidden { + display: none; +} +.ant-popover-placement-top, +.ant-popover-placement-topLeft, +.ant-popover-placement-topRight { + padding-bottom: 9px; +} +.ant-popover-placement-right, +.ant-popover-placement-rightTop, +.ant-popover-placement-rightBottom { + padding-left: 9px; +} +.ant-popover-placement-bottom, +.ant-popover-placement-bottomLeft, +.ant-popover-placement-bottomRight { + padding-top: 9px; +} +.ant-popover-placement-left, +.ant-popover-placement-leftTop, +.ant-popover-placement-leftBottom { + padding-right: 9px; +} +.ant-popover-inner { + background-color: #fff; + background-clip: padding-box; + border-radius: 4px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); +} +.ant-popover-title { + min-width: 177px; + margin: 0; + padding: 5px 16px 4px; + min-height: 32px; + border-bottom: 1px solid #e8e8e8; + color: rgba(0, 0, 0, 0.85); + font-weight: 500; +} +.ant-popover-inner-content { + padding: 12px 16px; + color: #54657e; +} +.ant-popover-message { + padding: 4px 0 12px; + font-size: 14px; + color: #54657e; +} +.ant-popover-message > .anticon { + color: #faad14; + line-height: 1.6; + position: absolute; +} +.ant-popover-message-title { + padding-left: 22px; +} +.ant-popover-buttons { + text-align: right; + margin-bottom: 4px; +} +.ant-popover-buttons button { + margin-left: 8px; +} +.ant-popover-arrow { + background: #fff; + width: 7.07106781px; + height: 7.07106781px; + transform: rotate(45deg); + position: absolute; + display: block; + border-color: transparent; + border-style: solid; +} +.ant-popover-placement-top > .ant-popover-content > .ant-popover-arrow, +.ant-popover-placement-topLeft > .ant-popover-content > .ant-popover-arrow, +.ant-popover-placement-topRight > .ant-popover-content > .ant-popover-arrow { + bottom: 6px; + box-shadow: 3px 3px 7px rgba(0, 0, 0, 0.07); +} +.ant-popover-placement-top > .ant-popover-content > .ant-popover-arrow { + left: 50%; + transform: translateX(-50%) rotate(45deg); +} +.ant-popover-placement-topLeft > .ant-popover-content > .ant-popover-arrow { + left: 16px; +} +.ant-popover-placement-topRight > .ant-popover-content > .ant-popover-arrow { + right: 16px; +} +.ant-popover-placement-right > .ant-popover-content > .ant-popover-arrow, +.ant-popover-placement-rightTop > .ant-popover-content > .ant-popover-arrow, +.ant-popover-placement-rightBottom > .ant-popover-content > .ant-popover-arrow { + left: 6px; + box-shadow: -3px 3px 7px rgba(0, 0, 0, 0.07); +} +.ant-popover-placement-right > .ant-popover-content > .ant-popover-arrow { + top: 50%; + transform: translateY(-50%) rotate(45deg); +} +.ant-popover-placement-rightTop > .ant-popover-content > .ant-popover-arrow { + top: 12px; +} +.ant-popover-placement-rightBottom > .ant-popover-content > .ant-popover-arrow { + bottom: 12px; +} +.ant-popover-placement-bottom > .ant-popover-content > .ant-popover-arrow, +.ant-popover-placement-bottomLeft > .ant-popover-content > .ant-popover-arrow, +.ant-popover-placement-bottomRight > .ant-popover-content > .ant-popover-arrow { + top: 6px; + box-shadow: -1px -1px 4px rgba(0, 0, 0, 0.06); +} +.ant-popover-placement-bottom > .ant-popover-content > .ant-popover-arrow { + left: 50%; + transform: translateX(-50%) rotate(45deg); +} +.ant-popover-placement-bottomLeft > .ant-popover-content > .ant-popover-arrow { + left: 16px; +} +.ant-popover-placement-bottomRight > .ant-popover-content > .ant-popover-arrow { + right: 16px; +} +.ant-popover-placement-left > .ant-popover-content > .ant-popover-arrow, +.ant-popover-placement-leftTop > .ant-popover-content > .ant-popover-arrow, +.ant-popover-placement-leftBottom > .ant-popover-content > .ant-popover-arrow { + right: 6px; + box-shadow: 3px -3px 7px rgba(0, 0, 0, 0.07); +} +.ant-popover-placement-left > .ant-popover-content > .ant-popover-arrow { + top: 50%; + transform: translateY(-50%) rotate(45deg); +} +.ant-popover-placement-leftTop > .ant-popover-content > .ant-popover-arrow { + top: 12px; +} +.ant-popover-placement-leftBottom > .ant-popover-content > .ant-popover-arrow { + bottom: 12px; +} +.ant-progress { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; + display: inline-block; +} +.ant-progress-line { + width: 100%; + font-size: 14px; + position: relative; +} +.ant-progress-small.ant-progress-line, +.ant-progress-small.ant-progress-line .ant-progress-text .anticon { + font-size: 12px; +} +.ant-progress-outer { + display: inline-block; + width: 100%; + margin-right: 0; + padding-right: 0; +} +.ant-progress-show-info .ant-progress-outer { + padding-right: calc(2em + 8px); + margin-right: calc(-2em - 8px); +} +.ant-progress-inner { + display: inline-block; + width: 100%; + background-color: #f5f5f5; + border-radius: 100px; + vertical-align: middle; + position: relative; +} +.ant-progress-circle-trail { + stroke: #f5f5f5; +} +.ant-progress-circle-path { + stroke: #1890ff; + animation: ant-progress-appear 0.3s; +} +.ant-progress-success-bg, +.ant-progress-bg { + border-radius: 100px; + background-color: #1890ff; + transition: all 0.4s cubic-bezier(0.08, 0.82, 0.17, 1) 0s; + position: relative; +} +.ant-progress-success-bg { + background-color: #52c41a; + position: absolute; + top: 0; + left: 0; +} +.ant-progress-text { + word-break: normal; + width: 2em; + text-align: left; + font-size: 1em; + margin-left: 8px; + vertical-align: middle; + display: inline-block; + color: rgba(0, 0, 0, 0.45); + line-height: 1; +} +.ant-progress-text .anticon { + font-size: 14px; +} +.ant-progress-status-active .ant-progress-bg:before { + content: ""; + opacity: 0; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: #fff; + border-radius: 10px; + animation: ant-progress-active 2.4s cubic-bezier(0.23, 1, 0.32, 1) infinite; +} +.ant-progress-status-exception .ant-progress-bg { + background-color: #f5222d; +} +.ant-progress-status-exception .ant-progress-text { + color: #f5222d; +} +.ant-progress-status-exception .ant-progress-circle-path { + stroke: #f5222d; +} +.ant-progress-status-success .ant-progress-bg { + background-color: #52c41a; +} +.ant-progress-status-success .ant-progress-text { + color: #52c41a; +} +.ant-progress-status-success .ant-progress-circle-path { + stroke: #52c41a; +} +.ant-progress-circle .ant-progress-inner { + position: relative; + line-height: 1; + background-color: transparent; +} +.ant-progress-circle .ant-progress-text { + display: block; + position: absolute; + width: 100%; + text-align: center; + line-height: 1; + top: 50%; + transform: translateY(-50%); + left: 0; + margin: 0; + color: #54657e; +} +.ant-progress-circle .ant-progress-text .anticon { + font-size: 1.16666667em; +} +.ant-progress-circle.ant-progress-status-exception .ant-progress-text { + color: #f5222d; +} +.ant-progress-circle.ant-progress-status-success .ant-progress-text { + color: #52c41a; +} +@keyframes ant-progress-active { + 0% { + opacity: 0.1; + width: 0; + } + 20% { + opacity: 0.5; + width: 0; + } + 100% { + opacity: 0; + width: 100%; + } +} +.ant-radio-group { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; + display: inline-block; + line-height: unset; +} +.ant-radio-wrapper { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; + display: inline-block; + position: relative; + white-space: nowrap; + margin-right: 8px; + cursor: pointer; +} +.ant-radio { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; + white-space: nowrap; + outline: none; + display: inline-block; + position: relative; + line-height: 1; + vertical-align: text-bottom; + cursor: pointer; +} +.ant-radio-wrapper:hover .ant-radio .ant-radio-inner, +.ant-radio:hover .ant-radio-inner, +.ant-radio-focused .ant-radio-inner { + border-color: #1890ff; +} +.ant-radio-checked:after { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + border-radius: 50%; + border: 1px solid #1890ff; + content: ''; + animation: antRadioEffect 0.36s ease-in-out; + animation-fill-mode: both; + visibility: hidden; +} +.ant-radio:hover:after, +.ant-radio-wrapper:hover .ant-radio:after { + visibility: visible; +} +.ant-radio-inner { + position: relative; + top: 0; + left: 0; + display: block; + width: 16px; + height: 16px; + border-width: 1px; + border-style: solid; + border-radius: 100px; + border-color: #d9d9d9; + background-color: #fff; + transition: all 0.3s; +} +.ant-radio-inner:after { + position: absolute; + width: 8px; + height: 8px; + left: 3px; + top: 3px; + border-radius: 4px; + display: table; + border-top: 0; + border-left: 0; + content: ' '; + background-color: #1890ff; + opacity: 0; + transform: scale(0); + transition: all 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); +} +.ant-radio-input { + position: absolute; + left: 0; + z-index: 1; + cursor: pointer; + opacity: 0; + top: 0; + bottom: 0; + right: 0; +} +.ant-radio-checked .ant-radio-inner { + border-color: #1890ff; +} +.ant-radio-checked .ant-radio-inner:after { + transform: scale(0.875); + opacity: 1; + transition: all 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); +} +.ant-radio-disabled .ant-radio-inner { + border-color: #d9d9d9 !important; + background-color: #f5f5f5; +} +.ant-radio-disabled .ant-radio-inner:after { + background-color: #ccc; +} +.ant-radio-disabled .ant-radio-input { + cursor: not-allowed; +} +.ant-radio-disabled + span { + color: rgba(0, 0, 0, 0.25); + cursor: not-allowed; +} +span.ant-radio + * { + padding-left: 8px; + padding-right: 8px; +} +.ant-radio-button-wrapper { + margin: 0; + height: 32px; + line-height: 30px; + color: #54657e; + display: inline-block; + transition: all 0.3s ease; + cursor: pointer; + border: 1px solid #d9d9d9; + border-left: 0; + border-top-width: 1.02px; + background: #fff; + padding: 0 15px; + position: relative; +} +.ant-radio-button-wrapper a { + color: #54657e; +} +.ant-radio-button-wrapper > .ant-radio-button { + margin-left: 0; + display: block; + width: 0; + height: 0; +} +.ant-radio-group-large .ant-radio-button-wrapper { + height: 40px; + line-height: 38px; + font-size: 16px; +} +.ant-radio-group-small .ant-radio-button-wrapper { + height: 24px; + line-height: 22px; + padding: 0 7px; +} +.ant-radio-button-wrapper:not(:first-child)::before { + content: ""; + display: block; + top: 0; + left: -1px; + width: 1px; + height: 100%; + position: absolute; + background-color: #d9d9d9; +} +.ant-radio-button-wrapper:first-child { + border-radius: 4px 0 0 4px; + border-left: 1px solid #d9d9d9; +} +.ant-radio-button-wrapper:last-child { + border-radius: 0 4px 4px 0; +} +.ant-radio-button-wrapper:first-child:last-child { + border-radius: 4px; +} +.ant-radio-button-wrapper:hover, +.ant-radio-button-wrapper-focused { + color: #1890ff; + position: relative; +} +.ant-radio-button-wrapper .ant-radio-inner, +.ant-radio-button-wrapper input[type="checkbox"], +.ant-radio-button-wrapper input[type="radio"] { + opacity: 0; + width: 0; + height: 0; +} +.ant-radio-button-wrapper-checked { + background: #fff; + border-color: #1890ff; + color: #1890ff; + box-shadow: -1px 0 0 0 #1890ff; + z-index: 1; +} +.ant-radio-button-wrapper-checked::before { + background-color: #1890ff !important; + opacity: 0.1; +} +.ant-radio-button-wrapper-checked:first-child { + border-color: #1890ff; + box-shadow: none !important; +} +.ant-radio-button-wrapper-checked:hover { + border-color: #40a9ff; + box-shadow: -1px 0 0 0 #40a9ff; + color: #40a9ff; +} +.ant-radio-button-wrapper-checked:active { + border-color: #096dd9; + box-shadow: -1px 0 0 0 #096dd9; + color: #096dd9; +} +.ant-radio-button-wrapper-disabled { + border-color: #d9d9d9; + background-color: #f5f5f5; + cursor: not-allowed; + color: rgba(0, 0, 0, 0.25); +} +.ant-radio-button-wrapper-disabled:first-child, +.ant-radio-button-wrapper-disabled:hover { + border-color: #d9d9d9; + background-color: #f5f5f5; + color: rgba(0, 0, 0, 0.25); +} +.ant-radio-button-wrapper-disabled:first-child { + border-left-color: #d9d9d9; +} +.ant-radio-button-wrapper-disabled.ant-radio-button-wrapper-checked { + color: #fff; + background-color: #e6e6e6; + border-color: #d9d9d9; + box-shadow: none; +} +@keyframes antRadioEffect { + 0% { + transform: scale(1); + opacity: 0.5; + } + 100% { + transform: scale(1.6); + opacity: 0; + } +} +.ant-rate { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + line-height: unset; + margin: 0; + padding: 0; + list-style: none; + font-size: 20px; + display: inline-block; + color: #fadb14; + outline: none; +} +.ant-rate-disabled .ant-rate-star { + cursor: not-allowed; +} +.ant-rate-disabled .ant-rate-star:hover { + transform: scale(1); +} +.ant-rate-star { + margin: 0; + padding: 0; + display: inline-block; + margin-right: 8px; + position: relative; + transition: all .3s; + color: inherit; + cursor: pointer; +} +.ant-rate-star-first, +.ant-rate-star-second { + user-select: none; + transition: all .3s; + color: #e8e8e8; +} +.ant-rate-star-focused, +.ant-rate-star:hover { + transform: scale(1.1); +} +.ant-rate-star-first { + position: absolute; + left: 0; + top: 0; + width: 50%; + height: 100%; + overflow: hidden; + opacity: 0; +} +.ant-rate-star-half .ant-rate-star-first, +.ant-rate-star-half .ant-rate-star-second { + opacity: 1; +} +.ant-rate-star-half .ant-rate-star-first, +.ant-rate-star-full .ant-rate-star-second { + color: inherit; +} +.ant-rate-text { + margin-left: 8px; + display: inline-block; + font-size: 14px; +} +.ant-select { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; + display: inline-block; + position: relative; +} +.ant-select ul, +.ant-select ol { + margin: 0; + padding: 0; + list-style: none; +} +.ant-select > ul > li > a { + padding: 0; + background-color: #fff; +} +.ant-select-arrow { + display: inline-block; + font-style: normal; + vertical-align: baseline; + text-align: center; + text-transform: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + position: absolute; + top: 50%; + right: 11px; + line-height: 1; + margin-top: -6px; + transform-origin: 50% 50%; + color: rgba(0, 0, 0, 0.25); + font-size: 12px; +} +.ant-select-arrow:before { + display: block; + font-family: "anticon" !important; +} +.ant-select-arrow * { + display: none; +} +.ant-select-arrow:before { + content: '\e61d'; + transition: transform .3s; +} +.ant-select-selection { + outline: none; + user-select: none; + box-sizing: border-box; + display: block; + background-color: #fff; + border-radius: 4px; + border: 1px solid #d9d9d9; + border-top-width: 1.02px; + transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); +} +.ant-select-selection:hover { + border-color: #40a9ff; +} +.ant-select-focused .ant-select-selection, +.ant-select-selection:focus, +.ant-select-selection:active { + border-color: #40a9ff; + outline: 0; + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); +} +.ant-select-selection__clear { + display: inline-block; + font-style: normal; + vertical-align: baseline; + text-align: center; + text-transform: none; + text-rendering: auto; + opacity: 0; + position: absolute; + right: 11px; + z-index: 1; + background: #fff; + top: 50%; + font-size: 12px; + color: rgba(0, 0, 0, 0.25); + width: 12px; + height: 12px; + margin-top: -6px; + line-height: 12px; + cursor: pointer; + transition: color 0.3s ease, opacity 0.15s ease; +} +.ant-select-selection__clear:before { + display: block; + font-family: 'anticon'; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\e62e"; +} +.ant-select-selection__clear:hover { + color: rgba(0, 0, 0, 0.45); +} +.ant-select-selection:hover .ant-select-selection__clear { + opacity: 1; +} +.ant-select-selection-selected-value { + float: left; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + max-width: 100%; + padding-right: 20px; +} +.ant-select-disabled { + color: rgba(0, 0, 0, 0.25); +} +.ant-select-disabled .ant-select-selection { + background: #f5f5f5; + cursor: not-allowed; +} +.ant-select-disabled .ant-select-selection:hover, +.ant-select-disabled .ant-select-selection:focus, +.ant-select-disabled .ant-select-selection:active { + border-color: #d9d9d9; + box-shadow: none; +} +.ant-select-disabled .ant-select-selection__clear { + display: none; + visibility: hidden; + pointer-events: none; +} +.ant-select-disabled .ant-select-selection--multiple .ant-select-selection__choice { + background: #f5f5f5; + color: #aaa; + padding-right: 10px; +} +.ant-select-disabled .ant-select-selection--multiple .ant-select-selection__choice__remove { + display: none; +} +.ant-select-selection--single { + height: 32px; + position: relative; + cursor: pointer; +} +.ant-select-selection__rendered { + display: block; + margin-left: 11px; + margin-right: 11px; + position: relative; + line-height: 30px; +} +.ant-select-selection__rendered:after { + content: '.'; + visibility: hidden; + pointer-events: none; + display: inline-block; + width: 0; +} +.ant-select-lg { + font-size: 16px; +} +.ant-select-lg .ant-select-selection--single { + height: 40px; +} +.ant-select-lg .ant-select-selection__rendered { + line-height: 38px; +} +.ant-select-lg .ant-select-selection--multiple { + min-height: 40px; +} +.ant-select-lg .ant-select-selection--multiple .ant-select-selection__rendered li { + height: 32px; + line-height: 32px; +} +.ant-select-lg .ant-select-selection--multiple .ant-select-selection__clear { + top: 20px; +} +.ant-select-sm .ant-select-selection--single { + height: 24px; +} +.ant-select-sm .ant-select-selection__rendered { + line-height: 22px; + margin: 0 7px; +} +.ant-select-sm .ant-select-selection--multiple { + min-height: 24px; +} +.ant-select-sm .ant-select-selection--multiple .ant-select-selection__rendered li { + height: 16px; + line-height: 14px; +} +.ant-select-sm .ant-select-selection--multiple .ant-select-selection__clear { + top: 12px; +} +.ant-select-sm .ant-select-selection__clear, +.ant-select-sm .ant-select-arrow { + right: 8px; +} +.ant-select-disabled .ant-select-selection__choice__remove { + color: rgba(0, 0, 0, 0.25); + cursor: default; +} +.ant-select-disabled .ant-select-selection__choice__remove:hover { + color: rgba(0, 0, 0, 0.25); +} +.ant-select-search__field__wrap { + display: inline-block; + position: relative; +} +.ant-select-selection__placeholder, +.ant-select-search__field__placeholder { + position: absolute; + top: 50%; + left: 0; + right: 9px; + color: #bfbfbf; + line-height: 20px; + height: 20px; + max-width: 100%; + margin-top: -10px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + text-align: left; +} +.ant-select-search__field__placeholder { + left: 12px; +} +.ant-select-search__field__mirror { + position: absolute; + top: 0; + left: -9999px; + white-space: pre; + pointer-events: none; +} +.ant-select-search--inline { + position: absolute; + height: 100%; + width: 100%; +} +.ant-select-search--inline .ant-select-search__field__wrap { + width: 100%; + height: 100%; +} +.ant-select-search--inline .ant-select-search__field { + border-width: 0; + font-size: 100%; + height: 100%; + width: 100%; + background: transparent; + outline: 0; + border-radius: 4px; + line-height: 1; +} +.ant-select-search--inline > i { + float: right; +} +.ant-select-selection--multiple { + min-height: 32px; + cursor: text; + padding-bottom: 3px; + zoom: 1; +} +.ant-select-selection--multiple:before, +.ant-select-selection--multiple:after { + content: " "; + display: table; +} +.ant-select-selection--multiple:after { + clear: both; + visibility: hidden; + font-size: 0; + height: 0; +} +.ant-select-selection--multiple:before, +.ant-select-selection--multiple:after { + content: " "; + display: table; +} +.ant-select-selection--multiple:after { + clear: both; + visibility: hidden; + font-size: 0; + height: 0; +} +.ant-select-selection--multiple .ant-select-search--inline { + float: left; + position: static; + width: auto; + padding: 0; + max-width: 100%; +} +.ant-select-selection--multiple .ant-select-search--inline .ant-select-search__field { + max-width: 100%; + width: 0.75em; +} +.ant-select-selection--multiple .ant-select-selection__rendered { + margin-left: 5px; + margin-bottom: -3px; + height: auto; +} +.ant-select-selection--multiple .ant-select-selection__placeholder { + margin-left: 6px; +} +.ant-select-selection--multiple > ul > li, +.ant-select-selection--multiple .ant-select-selection__rendered > ul > li { + margin-top: 3px; + height: 24px; + line-height: 22px; +} +.ant-select-selection--multiple .ant-select-selection__choice { + color: #54657e; + background-color: #fafafa; + border: 1px solid #e8e8e8; + border-radius: 2px; + cursor: default; + float: left; + margin-right: 4px; + max-width: 99%; + position: relative; + overflow: hidden; + transition: padding 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); + padding: 0 20px 0 10px; +} +.ant-select-selection--multiple .ant-select-selection__choice__disabled { + padding: 0 10px; +} +.ant-select-selection--multiple .ant-select-selection__choice__content { + display: inline-block; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + max-width: 100%; + transition: margin 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); +} +.ant-select-selection--multiple .ant-select-selection__choice__remove { + font-style: normal; + vertical-align: baseline; + text-align: center; + text-transform: none; + line-height: 1; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + color: rgba(0, 0, 0, 0.45); + line-height: inherit; + cursor: pointer; + font-weight: bold; + transition: all .3s; + display: inline-block; + font-size: 12px; + font-size: 10px \9; + transform: scale(0.83333333) rotate(0deg); + position: absolute; + right: 4px; +} +.ant-select-selection--multiple .ant-select-selection__choice__remove:before { + display: block; + font-family: "anticon" !important; +} +:root .ant-select-selection--multiple .ant-select-selection__choice__remove { + font-size: 12px; +} +.ant-select-selection--multiple .ant-select-selection__choice__remove:hover { + color: #404040; +} +.ant-select-selection--multiple .ant-select-selection__choice__remove:before { + content: "\e633"; +} +.ant-select-selection--multiple .ant-select-selection__clear { + top: 16px; +} +.ant-select-allow-clear .ant-select-selection--multiple .ant-select-selection__rendered { + margin-right: 20px; +} +.ant-select-open .ant-select-arrow:before { + transform: rotate(180deg); +} +.ant-select-open .ant-select-selection { + border-color: #40a9ff; + outline: 0; + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); +} +.ant-select-combobox .ant-select-arrow { + display: none; +} +.ant-select-combobox .ant-select-search--inline { + height: 100%; + width: 100%; + float: none; +} +.ant-select-combobox .ant-select-search__field__wrap { + width: 100%; + height: 100%; +} +.ant-select-combobox .ant-select-search__field { + width: 100%; + height: 100%; + position: relative; + z-index: 1; + transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); + box-shadow: none; +} +.ant-select-combobox.ant-select-allow-clear .ant-select-selection:hover .ant-select-selection__rendered { + margin-right: 20px; +} +.ant-select-dropdown { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + line-height: 1.5; + color: #54657e; + margin: 0; + padding: 0; + list-style: none; + background-color: #fff; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); + border-radius: 4px; + box-sizing: border-box; + z-index: 1050; + left: -9999px; + top: -9999px; + position: absolute; + outline: none; + font-size: 14px; +} +.ant-select-dropdown.slide-up-enter.slide-up-enter-active.ant-select-dropdown-placement-bottomLeft, +.ant-select-dropdown.slide-up-appear.slide-up-appear-active.ant-select-dropdown-placement-bottomLeft { + animation-name: antSlideUpIn; +} +.ant-select-dropdown.slide-up-enter.slide-up-enter-active.ant-select-dropdown-placement-topLeft, +.ant-select-dropdown.slide-up-appear.slide-up-appear-active.ant-select-dropdown-placement-topLeft { + animation-name: antSlideDownIn; +} +.ant-select-dropdown.slide-up-leave.slide-up-leave-active.ant-select-dropdown-placement-bottomLeft { + animation-name: antSlideUpOut; +} +.ant-select-dropdown.slide-up-leave.slide-up-leave-active.ant-select-dropdown-placement-topLeft { + animation-name: antSlideDownOut; +} +.ant-select-dropdown-hidden { + display: none; +} +.ant-select-dropdown-menu { + outline: none; + margin-bottom: 0; + padding-left: 0; + list-style: none; + max-height: 250px; + overflow: auto; +} +.ant-select-dropdown-menu-item-group-list { + margin: 0; + padding: 0; +} +.ant-select-dropdown-menu-item-group-list > .ant-select-dropdown-menu-item { + padding-left: 20px; +} +.ant-select-dropdown-menu-item-group-title { + color: rgba(0, 0, 0, 0.45); + padding: 0 12px; + height: 32px; + line-height: 32px; + font-size: 12px; +} +.ant-select-dropdown-menu-item { + position: relative; + display: block; + padding: 5px 12px; + line-height: 22px; + font-weight: normal; + color: #54657e; + white-space: nowrap; + cursor: pointer; + overflow: hidden; + text-overflow: ellipsis; + transition: background 0.3s ease; +} +.ant-select-dropdown-menu-item:hover { + background-color: #e6f7ff; +} +.ant-select-dropdown-menu-item:first-child { + border-radius: 4px 4px 0 0; +} +.ant-select-dropdown-menu-item:last-child { + border-radius: 0 0 4px 4px; +} +.ant-select-dropdown-menu-item-disabled { + color: rgba(0, 0, 0, 0.25); + cursor: not-allowed; +} +.ant-select-dropdown-menu-item-disabled:hover { + color: rgba(0, 0, 0, 0.25); + background-color: #fff; + cursor: not-allowed; +} +.ant-select-dropdown-menu-item-selected, +.ant-select-dropdown-menu-item-selected:hover { + background-color: #fafafa; + font-weight: 600; + color: #54657e; +} +.ant-select-dropdown-menu-item-active { + background-color: #e6f7ff; +} +.ant-select-dropdown-menu-item-divider { + height: 1px; + margin: 1px 0; + overflow: hidden; + background-color: #e8e8e8; + line-height: 0; +} +.ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item:after { + font-family: 'anticon'; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\e632"; + color: transparent; + display: inline-block; + font-size: 12px; + font-size: 10px \9; + transform: scale(0.83333333) rotate(0deg); + transition: all 0.2s ease; + position: absolute; + top: 50%; + transform: translateY(-50%); + right: 12px; + font-weight: bold; + text-shadow: 0 0.1px 0, 0.1px 0 0, 0 -0.1px 0, -0.1px 0; +} +:root .ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item:after { + font-size: 12px; +} +.ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item:hover:after { + color: #ddd; +} +.ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item-disabled:after { + display: none; +} +.ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item-selected:after, +.ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item-selected:hover:after { + color: #1890ff; + display: inline-block; +} +.ant-select-dropdown-container-open .ant-select-dropdown, +.ant-select-dropdown-open .ant-select-dropdown { + display: block; +} +.ant-slider { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; + position: relative; + margin: 14px 6px 10px; + padding: 4px 0; + height: 12px; + cursor: pointer; +} +.ant-slider-vertical { + width: 12px; + height: 100%; + margin: 6px 10px; + padding: 0 4px; +} +.ant-slider-vertical .ant-slider-rail { + height: 100%; + width: 4px; +} +.ant-slider-vertical .ant-slider-track { + width: 4px; +} +.ant-slider-vertical .ant-slider-handle { + margin-left: -5px; + margin-bottom: -7px; +} +.ant-slider-vertical .ant-slider-mark { + top: 0; + left: 12px; + width: 18px; + height: 100%; +} +.ant-slider-vertical .ant-slider-mark-text { + left: 4px; + white-space: nowrap; +} +.ant-slider-vertical .ant-slider-step { + width: 4px; + height: 100%; +} +.ant-slider-vertical .ant-slider-dot { + top: auto; + left: 2px; + margin-bottom: -4px; +} +.ant-slider-with-marks { + margin-bottom: 28px; +} +.ant-slider-rail { + position: absolute; + width: 100%; + height: 4px; + border-radius: 2px; + background-color: #f5f5f5; + transition: background-color 0.3s; +} +.ant-slider-track { + position: absolute; + height: 4px; + border-radius: 4px; + background-color: #91d5ff; + transition: background-color 0.3s ease; +} +.ant-slider-handle { + position: absolute; + margin-left: -7px; + margin-top: -5px; + width: 14px; + height: 14px; + cursor: pointer; + border-radius: 50%; + border: solid 2px #91d5ff; + background-color: #fff; + transition: border-color 0.3s, transform 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.28); +} +.ant-slider-handle:focus { + border-color: #46a6ff; + box-shadow: 0 0 0 5px #8cc8ff; + outline: none; +} +.ant-slider-handle.ant-tooltip-open { + border-color: #1890ff; +} +.ant-slider:hover .ant-slider-rail { + background-color: #e1e1e1; +} +.ant-slider:hover .ant-slider-track { + background-color: #69c0ff; +} +.ant-slider:hover .ant-slider-handle:not(.ant-tooltip-open) { + border-color: #69c0ff; +} +.ant-slider-mark { + position: absolute; + top: 14px; + left: 0; + width: 100%; + font-size: 14px; +} +.ant-slider-mark-text { + position: absolute; + display: inline-block; + vertical-align: middle; + text-align: center; + cursor: pointer; + color: rgba(0, 0, 0, 0.45); +} +.ant-slider-mark-text-active { + color: #54657e; +} +.ant-slider-step { + position: absolute; + width: 100%; + height: 4px; + background: transparent; +} +.ant-slider-dot { + position: absolute; + top: -2px; + margin-left: -4px; + width: 8px; + height: 8px; + border: 2px solid #e8e8e8; + background-color: #fff; + cursor: pointer; + border-radius: 50%; + vertical-align: middle; +} +.ant-slider-dot:first-child { + margin-left: -4px; +} +.ant-slider-dot:last-child { + margin-left: -4px; +} +.ant-slider-dot-active { + border-color: #8cc8ff; +} +.ant-slider-disabled { + cursor: not-allowed; +} +.ant-slider-disabled .ant-slider-track { + background-color: rgba(0, 0, 0, 0.25) !important; +} +.ant-slider-disabled .ant-slider-handle, +.ant-slider-disabled .ant-slider-dot { + border-color: rgba(0, 0, 0, 0.25) !important; + background-color: #fff; + cursor: not-allowed; + box-shadow: none; +} +.ant-slider-disabled .ant-slider-mark-text, +.ant-slider-disabled .ant-slider-dot { + cursor: not-allowed !important; +} +.ant-spin { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; + color: #1890ff; + vertical-align: middle; + text-align: center; + opacity: 0; + position: absolute; + transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); + display: none; +} +.ant-spin-spinning { + opacity: 1; + position: static; + display: inline-block; +} +.ant-spin-nested-loading { + position: relative; +} +.ant-spin-nested-loading > div > .ant-spin { + position: absolute; + height: 100%; + max-height: 320px; + width: 100%; + z-index: 4; +} +.ant-spin-nested-loading > div > .ant-spin .ant-spin-dot { + position: absolute; + top: 50%; + left: 50%; + margin: -10px; +} +.ant-spin-nested-loading > div > .ant-spin .ant-spin-text { + position: absolute; + top: 50%; + width: 100%; + padding-top: 5px; + text-shadow: 0 1px 2px #fff; +} +.ant-spin-nested-loading > div > .ant-spin.ant-spin-show-text .ant-spin-dot { + margin-top: -20px; +} +.ant-spin-nested-loading > div > .ant-spin-sm .ant-spin-dot { + margin: -7px; +} +.ant-spin-nested-loading > div > .ant-spin-sm .ant-spin-text { + padding-top: 2px; +} +.ant-spin-nested-loading > div > .ant-spin-sm.ant-spin-show-text .ant-spin-dot { + margin-top: -17px; +} +.ant-spin-nested-loading > div > .ant-spin-lg .ant-spin-dot { + margin: -16px; +} +.ant-spin-nested-loading > div > .ant-spin-lg .ant-spin-text { + padding-top: 11px; +} +.ant-spin-nested-loading > div > .ant-spin-lg.ant-spin-show-text .ant-spin-dot { + margin-top: -26px; +} +.ant-spin-container { + position: relative; + zoom: 1; +} +.ant-spin-container:before, +.ant-spin-container:after { + content: " "; + display: table; +} +.ant-spin-container:after { + clear: both; + visibility: hidden; + font-size: 0; + height: 0; +} +.ant-spin-container:before, +.ant-spin-container:after { + content: " "; + display: table; +} +.ant-spin-container:after { + clear: both; + visibility: hidden; + font-size: 0; + height: 0; +} +.ant-spin-blur { + overflow: hidden; + opacity: 0.7; + -webkit-filter: blur(0.5px); + filter: blur(0.5px); + /* autoprefixer: off */ + filter: progid\:DXImageTransform\.Microsoft\.Blur(PixelRadius\=1, MakeShadow\=false); + -webkit-transform: translateZ(0); +} +.ant-spin-blur:after { + content: ''; + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + background: #fff; + opacity: 0.3; + transition: all .3s; + z-index: 10; +} +.ant-spin-tip { + color: rgba(0, 0, 0, 0.45); +} +.ant-spin-dot { + position: relative; + display: inline-block; + width: 20px; + height: 20px; +} +.ant-spin-dot i { + width: 9px; + height: 9px; + border-radius: 100%; + background-color: #1890ff; + transform: scale(0.75); + display: block; + position: absolute; + opacity: 0.3; + animation: antSpinMove 1s infinite linear alternate; + transform-origin: 50% 50%; +} +.ant-spin-dot i:nth-child(1) { + left: 0; + top: 0; +} +.ant-spin-dot i:nth-child(2) { + right: 0; + top: 0; + animation-delay: 0.4s; +} +.ant-spin-dot i:nth-child(3) { + right: 0; + bottom: 0; + animation-delay: 0.8s; +} +.ant-spin-dot i:nth-child(4) { + left: 0; + bottom: 0; + animation-delay: 1.2s; +} +.ant-spin-dot-spin { + transform: rotate(45deg); + animation: antRotate 1.2s infinite linear; +} +.ant-spin-sm .ant-spin-dot { + width: 14px; + height: 14px; +} +.ant-spin-sm .ant-spin-dot i { + width: 6px; + height: 6px; +} +.ant-spin-lg .ant-spin-dot { + width: 32px; + height: 32px; +} +.ant-spin-lg .ant-spin-dot i { + width: 14px; + height: 14px; +} +.ant-spin.ant-spin-show-text .ant-spin-text { + display: block; +} +@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { + /* IE10+ */ + .ant-spin-blur { + background: #fff; + opacity: 0.5; + } +} +@keyframes antSpinMove { + to { + opacity: 1; + } +} +@keyframes antRotate { + to { + transform: rotate(405deg); + } +} +.ant-steps { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; + font-size: 0; + width: 100%; + display: flex; +} +.ant-steps-item { + position: relative; + display: inline-block; + vertical-align: top; + flex: 1; + overflow: hidden; +} +.ant-steps-item:last-child { + flex: none; +} +.ant-steps-item:last-child .ant-steps-item-tail, +.ant-steps-item:last-child .ant-steps-item-title:after { + display: none; +} +.ant-steps-item-icon, +.ant-steps-item-content { + display: inline-block; + vertical-align: top; +} +.ant-steps-item-icon { + border: 1px solid rgba(0, 0, 0, 0.25); + width: 32px; + height: 32px; + line-height: 32px; + text-align: center; + border-radius: 32px; + font-size: 16px; + margin-right: 8px; + transition: background-color 0.3s, border-color 0.3s; + font-family: "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; +} +.ant-steps-item-icon > .ant-steps-icon { + line-height: 1; + top: -1px; + color: #1890ff; + position: relative; +} +.ant-steps-item-tail { + position: absolute; + left: 0; + width: 100%; + top: 12px; + padding: 0 10px; +} +.ant-steps-item-tail:after { + content: ''; + display: inline-block; + background: #e8e8e8; + height: 1px; + border-radius: 1px; + width: 100%; + transition: background .3s; +} +.ant-steps-item-title { + font-size: 16px; + color: #54657e; + display: inline-block; + padding-right: 16px; + position: relative; + line-height: 32px; +} +.ant-steps-item-title:after { + content: ''; + height: 1px; + width: 9999px; + background: #e8e8e8; + display: block; + position: absolute; + top: 16px; + left: 100%; +} +.ant-steps-item-description { + font-size: 14px; + color: rgba(0, 0, 0, 0.45); +} +.ant-steps-item-wait .ant-steps-item-icon { + border-color: rgba(0, 0, 0, 0.25); + background-color: #fff; +} +.ant-steps-item-wait .ant-steps-item-icon > .ant-steps-icon { + color: rgba(0, 0, 0, 0.25); +} +.ant-steps-item-wait .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot { + background: rgba(0, 0, 0, 0.25); +} +.ant-steps-item-wait > .ant-steps-item-content > .ant-steps-item-title { + color: rgba(0, 0, 0, 0.45); +} +.ant-steps-item-wait > .ant-steps-item-content > .ant-steps-item-title:after { + background-color: #e8e8e8; +} +.ant-steps-item-wait > .ant-steps-item-content > .ant-steps-item-description { + color: rgba(0, 0, 0, 0.45); +} +.ant-steps-item-wait > .ant-steps-item-tail:after { + background-color: #e8e8e8; +} +.ant-steps-item-process .ant-steps-item-icon { + border-color: #1890ff; + background-color: #fff; +} +.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon { + color: #1890ff; +} +.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot { + background: #1890ff; +} +.ant-steps-item-process > .ant-steps-item-content > .ant-steps-item-title { + color: rgba(0, 0, 0, 0.85); +} +.ant-steps-item-process > .ant-steps-item-content > .ant-steps-item-title:after { + background-color: #e8e8e8; +} +.ant-steps-item-process > .ant-steps-item-content > .ant-steps-item-description { + color: #54657e; +} +.ant-steps-item-process > .ant-steps-item-tail:after { + background-color: #e8e8e8; +} +.ant-steps-item-process .ant-steps-item-icon { + background: #1890ff; +} +.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon { + color: #fff; +} +.ant-steps-item-process .ant-steps-item-title { + font-weight: 500; +} +.ant-steps-item-finish .ant-steps-item-icon { + border-color: #1890ff; + background-color: #fff; +} +.ant-steps-item-finish .ant-steps-item-icon > .ant-steps-icon { + color: #1890ff; +} +.ant-steps-item-finish .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot { + background: #1890ff; +} +.ant-steps-item-finish > .ant-steps-item-content > .ant-steps-item-title { + color: #54657e; +} +.ant-steps-item-finish > .ant-steps-item-content > .ant-steps-item-title:after { + background-color: #1890ff; +} +.ant-steps-item-finish > .ant-steps-item-content > .ant-steps-item-description { + color: rgba(0, 0, 0, 0.45); +} +.ant-steps-item-finish > .ant-steps-item-tail:after { + background-color: #1890ff; +} +.ant-steps-item-error .ant-steps-item-icon { + border-color: #f5222d; + background-color: #fff; +} +.ant-steps-item-error .ant-steps-item-icon > .ant-steps-icon { + color: #f5222d; +} +.ant-steps-item-error .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot { + background: #f5222d; +} +.ant-steps-item-error > .ant-steps-item-content > .ant-steps-item-title { + color: #f5222d; +} +.ant-steps-item-error > .ant-steps-item-content > .ant-steps-item-title:after { + background-color: #e8e8e8; +} +.ant-steps-item-error > .ant-steps-item-content > .ant-steps-item-description { + color: #f5222d; +} +.ant-steps-item-error > .ant-steps-item-tail:after { + background-color: #e8e8e8; +} +.ant-steps-item.ant-steps-next-error .ant-steps-item-title:after { + background: #f5222d; +} +.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item { + margin-right: 16px; + white-space: nowrap; +} +.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item:last-child { + margin-right: 0; +} +.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item:last-child .ant-steps-item-title { + padding-right: 0; +} +.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item-tail { + display: none; +} +.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item-description { + max-width: 140px; +} +.ant-steps-item-custom .ant-steps-item-icon { + background: none; + border: 0; + width: auto; + height: auto; +} +.ant-steps-item-custom .ant-steps-item-icon > .ant-steps-icon { + font-size: 24px; + line-height: 32px; + top: 0; + left: 0.5px; + width: 32px; + height: 32px; +} +.ant-steps-item-custom.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon { + color: #1890ff; +} +.ant-steps-small.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item { + margin-right: 12px; +} +.ant-steps-small.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item:last-child { + margin-right: 0; +} +.ant-steps-small .ant-steps-item-icon { + width: 24px; + height: 24px; + line-height: 24px; + text-align: center; + border-radius: 24px; + font-size: 12px; +} +.ant-steps-small .ant-steps-item-title { + font-size: 14px; + line-height: 24px; + padding-right: 12px; +} +.ant-steps-small .ant-steps-item-title:after { + top: 12px; +} +.ant-steps-small .ant-steps-item-description { + font-size: 14px; + color: rgba(0, 0, 0, 0.45); +} +.ant-steps-small .ant-steps-item-tail { + top: 8px; + padding: 0 8px; +} +.ant-steps-small .ant-steps-item-custom .ant-steps-item-icon { + width: inherit; + height: inherit; + line-height: inherit; + border-radius: 0; + border: 0; + background: none; +} +.ant-steps-small .ant-steps-item-custom .ant-steps-item-icon > .ant-steps-icon { + font-size: 24px; + line-height: 24px; + transform: none; +} +.ant-steps-vertical { + display: block; +} +.ant-steps-vertical .ant-steps-item { + display: block; + overflow: visible; +} +.ant-steps-vertical .ant-steps-item-icon { + float: left; + margin-right: 16px; +} +.ant-steps-vertical .ant-steps-item-content { + min-height: 48px; + overflow: hidden; + display: block; +} +.ant-steps-vertical .ant-steps-item-title { + line-height: 32px; +} +.ant-steps-vertical .ant-steps-item-description { + padding-bottom: 12px; +} +.ant-steps-vertical > .ant-steps-item > .ant-steps-item-tail { + position: absolute; + left: 16px; + top: 0; + height: 100%; + width: 1px; + padding: 38px 0 6px; +} +.ant-steps-vertical > .ant-steps-item > .ant-steps-item-tail:after { + height: 100%; + width: 1px; +} +.ant-steps-vertical > .ant-steps-item:not(:last-child) > .ant-steps-item-tail { + display: block; +} +.ant-steps-vertical > .ant-steps-item > .ant-steps-item-content > .ant-steps-item-title:after { + display: none; +} +.ant-steps-vertical.ant-steps-small .ant-steps-item-tail { + position: absolute; + left: 12px; + top: 0; + padding: 30px 0 6px; +} +.ant-steps-vertical.ant-steps-small .ant-steps-item-title { + line-height: 24px; +} +@media (max-width: 480px) { + .ant-steps-horizontal.ant-steps-label-horizontal { + display: block; + } + .ant-steps-horizontal.ant-steps-label-horizontal .ant-steps-item { + display: block; + overflow: visible; + } + .ant-steps-horizontal.ant-steps-label-horizontal .ant-steps-item-icon { + float: left; + margin-right: 16px; + } + .ant-steps-horizontal.ant-steps-label-horizontal .ant-steps-item-content { + min-height: 48px; + overflow: hidden; + display: block; + } + .ant-steps-horizontal.ant-steps-label-horizontal .ant-steps-item-title { + line-height: 32px; + } + .ant-steps-horizontal.ant-steps-label-horizontal .ant-steps-item-description { + padding-bottom: 12px; + } + .ant-steps-horizontal.ant-steps-label-horizontal > .ant-steps-item > .ant-steps-item-tail { + position: absolute; + left: 16px; + top: 0; + height: 100%; + width: 1px; + padding: 38px 0 6px; + } + .ant-steps-horizontal.ant-steps-label-horizontal > .ant-steps-item > .ant-steps-item-tail:after { + height: 100%; + width: 1px; + } + .ant-steps-horizontal.ant-steps-label-horizontal > .ant-steps-item:not(:last-child) > .ant-steps-item-tail { + display: block; + } + .ant-steps-horizontal.ant-steps-label-horizontal > .ant-steps-item > .ant-steps-item-content > .ant-steps-item-title:after { + display: none; + } + .ant-steps-horizontal.ant-steps-label-horizontal.ant-steps-small .ant-steps-item-tail { + position: absolute; + left: 12px; + top: 0; + padding: 30px 0 6px; + } + .ant-steps-horizontal.ant-steps-label-horizontal.ant-steps-small .ant-steps-item-title { + line-height: 24px; + } +} +.ant-steps-label-vertical .ant-steps-item { + overflow: visible; +} +.ant-steps-label-vertical .ant-steps-item-tail { + padding: 0 24px; + margin-left: 48px; +} +.ant-steps-label-vertical .ant-steps-item-content { + display: block; + text-align: center; + margin-top: 8px; + width: 140px; +} +.ant-steps-label-vertical .ant-steps-item-icon { + display: inline-block; + margin-left: 36px; +} +.ant-steps-label-vertical .ant-steps-item-title { + padding-right: 0; +} +.ant-steps-label-vertical .ant-steps-item-title:after { + display: none; +} +.ant-steps-label-vertical .ant-steps-item-description { + text-align: left; +} +.ant-steps-dot .ant-steps-item-title { + line-height: 1.5; +} +.ant-steps-dot .ant-steps-item-tail { + width: 100%; + top: 2px; + margin: 0 0 0 70px; + padding: 0; +} +.ant-steps-dot .ant-steps-item-tail:after { + height: 3px; + width: calc(100% - 20px); + margin-left: 12px; +} +.ant-steps-dot .ant-steps-item:first-child .ant-steps-icon-dot { + left: 2px; +} +.ant-steps-dot .ant-steps-item-icon { + padding-right: 0; + width: 8px; + height: 8px; + line-height: 8px; + border: 0; + margin-left: 67px; + background: transparent; +} +.ant-steps-dot .ant-steps-item-icon .ant-steps-icon-dot { + float: left; + width: 100%; + height: 100%; + border-radius: 100px; + position: relative; + transition: all .3s; + /* expand hover area */ +} +.ant-steps-dot .ant-steps-item-icon .ant-steps-icon-dot:after { + content: ""; + background: rgba(0, 0, 0, 0.001); + width: 60px; + height: 32px; + position: absolute; + top: -12px; + left: -26px; +} +.ant-steps-dot .ant-steps-item-process .ant-steps-item-icon { + width: 10px; + height: 10px; + line-height: 10px; +} +.ant-steps-dot .ant-steps-item-process .ant-steps-item-icon .ant-steps-icon-dot { + top: -1px; +} +.ant-steps-vertical.ant-steps-dot .ant-steps-item-icon { + margin-left: 0; + margin-top: 8px; +} +.ant-steps-vertical.ant-steps-dot .ant-steps-item-tail { + margin: 0; + left: -9px; + top: 2px; + padding: 22px 0 4px; +} +.ant-steps-vertical.ant-steps-dot .ant-steps-item:first-child .ant-steps-icon-dot { + left: 0; +} +.ant-steps-vertical.ant-steps-dot .ant-steps-item-process .ant-steps-icon-dot { + left: -2px; +} +.ant-switch { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + margin: 0; + padding: 0; + list-style: none; + position: relative; + display: inline-block; + box-sizing: border-box; + height: 22px; + min-width: 44px; + line-height: 20px; + vertical-align: middle; + border-radius: 100px; + border: 1px solid transparent; + background-color: rgba(0, 0, 0, 0.25); + cursor: pointer; + transition: all 0.36s; + user-select: none; +} +.ant-switch-inner { + color: #fff; + font-size: 12px; + margin-left: 24px; + margin-right: 6px; + display: block; +} +.ant-switch:before, +.ant-switch:after { + position: absolute; + width: 18px; + height: 18px; + left: 1px; + top: 1px; + border-radius: 18px; + background-color: #fff; + content: " "; + cursor: pointer; + transition: all 0.36s cubic-bezier(0.78, 0.14, 0.15, 0.86); +} +.ant-switch:after { + box-shadow: 0 2px 4px 0 rgba(0, 35, 11, 0.2); +} +.ant-switch:active:before, +.ant-switch:active:after { + width: 24px; +} +.ant-switch:before { + content: "\e64d"; + font-family: anticon; + animation: loadingCircle 1s infinite linear; + text-align: center; + background: transparent; + z-index: 1; + display: none; + font-size: 12px; +} +.ant-switch-loading:before { + display: inline-block; + color: #54657e; +} +.ant-switch-checked.ant-switch-loading:before { + color: #1890ff; +} +.ant-switch:focus { + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); + outline: 0; +} +.ant-switch:focus:hover { + box-shadow: none; +} +.ant-switch-small { + height: 16px; + min-width: 28px; + line-height: 14px; +} +.ant-switch-small .ant-switch-inner { + margin-left: 18px; + margin-right: 3px; + font-size: 12px; +} +.ant-switch-small:before, +.ant-switch-small:after { + width: 12px; + height: 12px; +} +.ant-switch-small:active:before, +.ant-switch-small:active:after { + width: 16px; +} +.ant-switch-small.ant-switch-checked:before, +.ant-switch-small.ant-switch-checked:after { + left: 100%; + margin-left: -12.5px; +} +.ant-switch-small.ant-switch-checked .ant-switch-inner { + margin-left: 3px; + margin-right: 18px; +} +.ant-switch-small:active.ant-switch-checked:before, +.ant-switch-small:active.ant-switch-checked:after { + margin-left: -16.5px; +} +.ant-switch-small.ant-switch-loading:before { + animation: AntSwitchSmallLoadingCircle 1s infinite linear; + font-weight: bold; +} +.ant-switch-checked { + background-color: #1890ff; +} +.ant-switch-checked .ant-switch-inner { + margin-left: 6px; + margin-right: 24px; +} +.ant-switch-checked:before, +.ant-switch-checked:after { + left: 100%; + margin-left: -19px; +} +.ant-switch-checked:active:before, +.ant-switch-checked:active:after { + margin-left: -25px; +} +.ant-switch-loading, +.ant-switch-disabled { + pointer-events: none; + opacity: 0.4; +} +@keyframes AntSwitchSmallLoadingCircle { + 0% { + transform-origin: 50% 50%; + transform: rotate(0deg) scale(0.66667); + } + 100% { + transform-origin: 50% 50%; + transform: rotate(360deg) scale(0.66667); + } +} +.ant-table-wrapper { + zoom: 1; +} +.ant-table-wrapper:before, +.ant-table-wrapper:after { + content: " "; + display: table; +} +.ant-table-wrapper:after { + clear: both; + visibility: hidden; + font-size: 0; + height: 0; +} +.ant-table-wrapper:before, +.ant-table-wrapper:after { + content: " "; + display: table; +} +.ant-table-wrapper:after { + clear: both; + visibility: hidden; + font-size: 0; + height: 0; +} +.ant-table { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; + position: relative; + border-radius: 4px 4px 0 0; + clear: both; +} +.ant-table-body { + transition: opacity .3s; +} +.ant-table table { + width: 100%; + border-collapse: separate; + border-spacing: 0; + text-align: left; + border-radius: 4px 4px 0 0; +} +.ant-table-thead > tr > th { + background: #fafafa; + transition: background .3s ease; + text-align: left; + color: rgba(0, 0, 0, 0.85); + font-weight: 500; + border-bottom: 1px solid #e8e8e8; +} +.ant-table-thead > tr > th:first-child { + border-top-left-radius: 4px; +} +.ant-table-thead > tr > th:last-child { + border-top-right-radius: 4px; +} +.ant-table-thead > tr > th[colspan] { + text-align: center; + border-bottom: 0; +} +.ant-table-thead > tr > th .anticon-filter, +.ant-table-thead > tr > th .ant-table-filter-icon { + position: relative; + margin-left: 8px; + font-size: 14px; + cursor: pointer; + color: rgba(0, 0, 0, 0.45); + transition: all .3s; + width: 14px; + font-weight: normal; + vertical-align: text-bottom; +} +.ant-table-thead > tr > th .anticon-filter:hover, +.ant-table-thead > tr > th .ant-table-filter-icon:hover { + color: #54657e; +} +.ant-table-thead > tr > th .ant-table-column-sorter + .anticon-filter { + margin-left: 4px; +} +.ant-table-thead > tr > th .ant-table-filter-selected.anticon-filter { + color: #1890ff; +} +.ant-table-thead > tr > th.ant-table-column-has-filters { + overflow: hidden; +} +.ant-table-tbody > tr > td { + border-bottom: 1px solid #e8e8e8; + transition: all .3s; +} +.ant-table-thead > tr, +.ant-table-tbody > tr { + transition: all .3s; +} +.ant-table-thead > tr.ant-table-row-hover > td, +.ant-table-tbody > tr.ant-table-row-hover > td, +.ant-table-thead > tr:hover > td, +.ant-table-tbody > tr:hover > td { + background: #e6f7ff; +} +.ant-table-thead > tr:hover { + background: none; +} +.ant-table-footer { + padding: 16px 16px; + background: #fafafa; + border-radius: 0 0 4px 4px; + position: relative; + border-top: 1px solid #e8e8e8; +} +.ant-table-footer:before { + content: ''; + height: 1px; + background: #fafafa; + position: absolute; + top: -1px; + width: 100%; + left: 0; +} +.ant-table.ant-table-bordered .ant-table-footer { + border: 1px solid #e8e8e8; +} +.ant-table-title { + padding: 16px 0; + position: relative; + top: 1px; + border-radius: 4px 4px 0 0; +} +.ant-table.ant-table-bordered .ant-table-title { + border: 1px solid #e8e8e8; + padding-left: 16px; + padding-right: 16px; +} +.ant-table-title + .ant-table-content { + position: relative; + border-radius: 4px 4px 0 0; + overflow: hidden; +} +.ant-table-bordered .ant-table-title + .ant-table-content, +.ant-table-bordered .ant-table-title + .ant-table-content table { + border-radius: 0; +} +.ant-table-without-column-header .ant-table-title + .ant-table-content, +.ant-table-without-column-header table { + border-radius: 0; +} +.ant-table-tbody > tr.ant-table-row-selected td { + background: #fafafa; +} +.ant-table-thead > tr > th.ant-table-column-sort { + background: #f5f5f5; +} +.ant-table-thead > tr > th, +.ant-table-tbody > tr > td { + padding: 16px 16px; + word-break: break-all; +} +.ant-table-thead > tr > th.ant-table-selection-column-custom { + padding-left: 16px; + padding-right: 0; +} +.ant-table-thead > tr > th.ant-table-selection-column, +.ant-table-tbody > tr > td.ant-table-selection-column { + text-align: center; + min-width: 62px; + width: 62px; +} +.ant-table-thead > tr > th.ant-table-selection-column .ant-radio-wrapper, +.ant-table-tbody > tr > td.ant-table-selection-column .ant-radio-wrapper { + margin-right: 0; +} +.ant-table-expand-icon-th, +.ant-table-row-expand-icon-cell { + text-align: center; + min-width: 50px; + width: 50px; +} +.ant-table-header { + background: #fafafa; + overflow: hidden; +} +.ant-table-header table { + border-radius: 4px 4px 0 0; +} +.ant-table-loading { + position: relative; +} +.ant-table-loading .ant-table-body { + background: #fff; + opacity: 0.5; +} +.ant-table-loading .ant-table-spin-holder { + height: 20px; + line-height: 20px; + left: 50%; + top: 50%; + margin-left: -30px; + position: absolute; +} +.ant-table-loading .ant-table-with-pagination { + margin-top: -20px; +} +.ant-table-loading .ant-table-without-pagination { + margin-top: 10px; +} +.ant-table-column-sorter { + position: relative; + margin-left: 8px; + display: inline-block; + width: 14px; + height: 14px; + vertical-align: middle; + text-align: center; + font-weight: normal; + color: rgba(0, 0, 0, 0.45); +} +.ant-table-column-sorter-up, +.ant-table-column-sorter-down { + line-height: 6px; + display: block; + width: 14px; + height: 6px; + cursor: pointer; + position: relative; +} +.ant-table-column-sorter-up:hover .anticon, +.ant-table-column-sorter-down:hover .anticon { + color: #69c0ff; +} +.ant-table-column-sorter-up.on .anticon-caret-up, +.ant-table-column-sorter-down.on .anticon-caret-up, +.ant-table-column-sorter-up.on .anticon-caret-down, +.ant-table-column-sorter-down.on .anticon-caret-down { + color: #1890ff; +} +.ant-table-column-sorter-up:after, +.ant-table-column-sorter-down:after { + position: absolute; + content: ''; + height: 30px; + width: 14px; + left: 0; +} +.ant-table-column-sorter-up:after { + bottom: 0; +} +.ant-table-column-sorter-down:after { + top: 0; +} +.ant-table-column-sorter .anticon-caret-up, +.ant-table-column-sorter .anticon-caret-down { + display: inline-block; + font-size: 12px; + font-size: 8px \9; + transform: scale(0.66666667) rotate(0deg); + line-height: 4px; + height: 4px; + transition: all .3s; +} +:root .ant-table-column-sorter .anticon-caret-up, +:root .ant-table-column-sorter .anticon-caret-down { + font-size: 12px; +} +.ant-table-bordered .ant-table-header > table, +.ant-table-bordered .ant-table-body > table, +.ant-table-bordered .ant-table-fixed-left table, +.ant-table-bordered .ant-table-fixed-right table { + border: 1px solid #e8e8e8; + border-right: 0; + border-bottom: 0; +} +.ant-table-bordered.ant-table-empty .ant-table-placeholder { + border-left: 1px solid #e8e8e8; + border-right: 1px solid #e8e8e8; +} +.ant-table-bordered.ant-table-fixed-header .ant-table-header > table { + border-bottom: 0; +} +.ant-table-bordered.ant-table-fixed-header .ant-table-body > table { + border-top: 0; + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.ant-table-bordered.ant-table-fixed-header .ant-table-body-inner > table { + border-top: 0; +} +.ant-table-bordered.ant-table-fixed-header .ant-table-placeholder { + border: 0; +} +.ant-table-bordered .ant-table-thead > tr > th { + border-bottom: 1px solid #e8e8e8; +} +.ant-table-bordered .ant-table-thead > tr > th, +.ant-table-bordered .ant-table-tbody > tr > td { + border-right: 1px solid #e8e8e8; +} +.ant-table-placeholder { + position: relative; + padding: 16px 16px; + background: #fff; + border-bottom: 1px solid #e8e8e8; + text-align: center; + font-size: 14px; + color: rgba(0, 0, 0, 0.45); + z-index: 1; +} +.ant-table-placeholder .anticon { + margin-right: 4px; +} +.ant-table-pagination.ant-pagination { + margin: 16px 0; + float: right; +} +.ant-table-filter-dropdown { + min-width: 96px; + margin-left: -8px; + background: #fff; + border-radius: 4px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); +} +.ant-table-filter-dropdown .ant-dropdown-menu { + border: 0; + box-shadow: none; + border-radius: 4px 4px 0 0; +} +.ant-table-filter-dropdown .ant-dropdown-menu-without-submenu { + max-height: 400px; + overflow-x: hidden; +} +.ant-table-filter-dropdown .ant-dropdown-menu-item > label + span { + padding-right: 0; +} +.ant-table-filter-dropdown .ant-dropdown-menu-sub { + border-radius: 4px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); +} +.ant-table-filter-dropdown .ant-dropdown-menu .ant-dropdown-submenu-contain-selected .ant-dropdown-menu-submenu-title:after { + color: #1890ff; + font-weight: bold; + text-shadow: 0 0 2px #bae7ff; +} +.ant-table-filter-dropdown .ant-dropdown-menu-item { + overflow: hidden; +} +.ant-table-filter-dropdown > .ant-dropdown-menu > .ant-dropdown-menu-item:last-child, +.ant-table-filter-dropdown > .ant-dropdown-menu > .ant-dropdown-menu-submenu:last-child .ant-dropdown-menu-submenu-title { + border-radius: 0; +} +.ant-table-filter-dropdown-btns { + overflow: hidden; + padding: 7px 8px; + border-top: 1px solid #e8e8e8; +} +.ant-table-filter-dropdown-link { + color: #1890ff; +} +.ant-table-filter-dropdown-link:hover { + color: #40a9ff; +} +.ant-table-filter-dropdown-link:active { + color: #096dd9; +} +.ant-table-filter-dropdown-link.confirm { + float: left; +} +.ant-table-filter-dropdown-link.clear { + float: right; +} +.ant-table-selection-select-all-custom { + margin-right: 4px !important; +} +.ant-table-selection .anticon-down { + color: rgba(0, 0, 0, 0.45); + transition: all .3s; +} +.ant-table-selection-menu { + min-width: 96px; + margin-top: 5px; + margin-left: -30px; + background: #fff; + border-radius: 4px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); +} +.ant-table-selection-menu .ant-action-down { + color: rgba(0, 0, 0, 0.45); +} +.ant-table-selection-down { + cursor: pointer; + padding: 0; + display: inline-block; + line-height: 1; +} +.ant-table-selection-down:hover .anticon-down { + color: #666; +} +.ant-table-row-expand-icon { + cursor: pointer; + display: inline-block; + width: 17px; + height: 17px; + text-align: center; + line-height: 14px; + border: 1px solid #e8e8e8; + user-select: none; + background: #fff; +} +.ant-table-row-expanded:after { + content: '-'; +} +.ant-table-row-collapsed:after { + content: '+'; +} +.ant-table-row-spaced { + visibility: hidden; +} +.ant-table-row-spaced:after { + content: '.'; +} +.ant-table-row[class*="ant-table-row-level-0"] .ant-table-selection-column > span { + display: inline-block; +} +tr.ant-table-expanded-row, +tr.ant-table-expanded-row:hover { + background: #fbfbfb; +} +.ant-table .ant-table-row-indent + .ant-table-row-expand-icon { + margin-right: 8px; +} +.ant-table-scroll { + overflow: auto; + overflow-x: hidden; +} +.ant-table-scroll table { + width: auto; + min-width: 100%; +} +.ant-table-body-inner { + height: 100%; +} +.ant-table-fixed-header > .ant-table-content > .ant-table-scroll > .ant-table-body { + position: relative; + background: #fff; +} +.ant-table-fixed-header .ant-table-body-inner { + overflow: scroll; +} +.ant-table-fixed-header .ant-table-scroll .ant-table-header { + overflow: scroll; + padding-bottom: 20px; + margin-bottom: -20px; +} +.ant-table-fixed-left, +.ant-table-fixed-right { + position: absolute; + top: 0; + overflow: hidden; + transition: box-shadow 0.3s ease; + border-radius: 0; +} +.ant-table-fixed-left table, +.ant-table-fixed-right table { + width: auto; + background: #fff; +} +.ant-table-fixed-header .ant-table-fixed-left .ant-table-body-outer .ant-table-fixed, +.ant-table-fixed-header .ant-table-fixed-right .ant-table-body-outer .ant-table-fixed { + border-radius: 0; +} +.ant-table-fixed-left { + left: 0; + box-shadow: 6px 0 6px -4px rgba(0, 0, 0, 0.15); +} +.ant-table-fixed-left .ant-table-header { + overflow-y: hidden; +} +.ant-table-fixed-left .ant-table-body-inner { + margin-right: -20px; + padding-right: 20px; +} +.ant-table-fixed-header .ant-table-fixed-left .ant-table-body-inner { + padding-right: 0; +} +.ant-table-fixed-left, +.ant-table-fixed-left table { + border-radius: 4px 0 0 0; +} +.ant-table-fixed-left .ant-table-thead > tr > th:last-child { + border-top-right-radius: 0; +} +.ant-table-fixed-right { + right: 0; + box-shadow: -6px 0 6px -4px rgba(0, 0, 0, 0.15); +} +.ant-table-fixed-right, +.ant-table-fixed-right table { + border-radius: 0 4px 0 0; +} +.ant-table-fixed-right .ant-table-expanded-row { + color: transparent; + pointer-events: none; +} +.ant-table-fixed-right .ant-table-thead > tr > th:first-child { + border-top-left-radius: 0; +} +.ant-table.ant-table-scroll-position-left .ant-table-fixed-left { + box-shadow: none; +} +.ant-table.ant-table-scroll-position-right .ant-table-fixed-right { + box-shadow: none; +} +.ant-table-middle > .ant-table-title, +.ant-table-middle > .ant-table-footer { + padding: 12px 8px; +} +.ant-table-middle > .ant-table-content > .ant-table-header > table > .ant-table-thead > tr > th, +.ant-table-middle > .ant-table-content > .ant-table-body > table > .ant-table-thead > tr > th, +.ant-table-middle > .ant-table-content > .ant-table-scroll > .ant-table-header > table > .ant-table-thead > tr > th, +.ant-table-middle > .ant-table-content > .ant-table-scroll > .ant-table-body > table > .ant-table-thead > tr > th, +.ant-table-middle > .ant-table-content > .ant-table-fixed-left > .ant-table-header > table > .ant-table-thead > tr > th, +.ant-table-middle > .ant-table-content > .ant-table-fixed-right > .ant-table-header > table > .ant-table-thead > tr > th, +.ant-table-middle > .ant-table-content > .ant-table-fixed-left > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-thead > tr > th, +.ant-table-middle > .ant-table-content > .ant-table-fixed-right > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-thead > tr > th, +.ant-table-middle > .ant-table-content > .ant-table-header > table > .ant-table-tbody > tr > td, +.ant-table-middle > .ant-table-content > .ant-table-body > table > .ant-table-tbody > tr > td, +.ant-table-middle > .ant-table-content > .ant-table-scroll > .ant-table-header > table > .ant-table-tbody > tr > td, +.ant-table-middle > .ant-table-content > .ant-table-scroll > .ant-table-body > table > .ant-table-tbody > tr > td, +.ant-table-middle > .ant-table-content > .ant-table-fixed-left > .ant-table-header > table > .ant-table-tbody > tr > td, +.ant-table-middle > .ant-table-content > .ant-table-fixed-right > .ant-table-header > table > .ant-table-tbody > tr > td, +.ant-table-middle > .ant-table-content > .ant-table-fixed-left > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-tbody > tr > td, +.ant-table-middle > .ant-table-content > .ant-table-fixed-right > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-tbody > tr > td { + padding: 12px 8px; +} +.ant-table-small { + border: 1px solid #e8e8e8; + border-radius: 4px; +} +.ant-table-small > .ant-table-title, +.ant-table-small > .ant-table-footer { + padding: 8px 8px; +} +.ant-table-small > .ant-table-title { + border-bottom: 1px solid #e8e8e8; + top: 0; +} +.ant-table-small > .ant-table-content > .ant-table-header > table, +.ant-table-small > .ant-table-content > .ant-table-body > table, +.ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-header > table, +.ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-body > table, +.ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-header > table, +.ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-header > table, +.ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-body-outer > .ant-table-body-inner > table, +.ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-body-outer > .ant-table-body-inner > table { + border: 0; + padding: 0 8px; +} +.ant-table-small > .ant-table-content > .ant-table-header > table > .ant-table-thead > tr > th, +.ant-table-small > .ant-table-content > .ant-table-body > table > .ant-table-thead > tr > th, +.ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-header > table > .ant-table-thead > tr > th, +.ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-body > table > .ant-table-thead > tr > th, +.ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-header > table > .ant-table-thead > tr > th, +.ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-header > table > .ant-table-thead > tr > th, +.ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-thead > tr > th, +.ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-thead > tr > th, +.ant-table-small > .ant-table-content > .ant-table-header > table > .ant-table-tbody > tr > td, +.ant-table-small > .ant-table-content > .ant-table-body > table > .ant-table-tbody > tr > td, +.ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-header > table > .ant-table-tbody > tr > td, +.ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-body > table > .ant-table-tbody > tr > td, +.ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-header > table > .ant-table-tbody > tr > td, +.ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-header > table > .ant-table-tbody > tr > td, +.ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-tbody > tr > td, +.ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-tbody > tr > td { + padding: 8px 8px; +} +.ant-table-small > .ant-table-content > .ant-table-header > table > .ant-table-thead > tr > th, +.ant-table-small > .ant-table-content > .ant-table-body > table > .ant-table-thead > tr > th, +.ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-header > table > .ant-table-thead > tr > th, +.ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-body > table > .ant-table-thead > tr > th, +.ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-header > table > .ant-table-thead > tr > th, +.ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-header > table > .ant-table-thead > tr > th, +.ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-thead > tr > th, +.ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-thead > tr > th { + background: #fff; + border-bottom: 1px solid #e8e8e8; +} +.ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-header > table, +.ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-body > table, +.ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-header > table, +.ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-header > table, +.ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-body-outer > .ant-table-body-inner > table, +.ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-body-outer > .ant-table-body-inner > table { + padding: 0; +} +.ant-table-small > .ant-table-content .ant-table-header { + background: #fff; +} +.ant-table-small > .ant-table-content .ant-table-placeholder, +.ant-table-small > .ant-table-content .ant-table-row:last-child td { + border-bottom: 0; +} +.ant-table-small.ant-table-bordered { + border-right: 0; +} +.ant-table-small.ant-table-bordered .ant-table-title { + border: 0; + border-bottom: 1px solid #e8e8e8; + border-right: 1px solid #e8e8e8; +} +.ant-table-small.ant-table-bordered .ant-table-content { + border-right: 1px solid #e8e8e8; +} +.ant-table-small.ant-table-bordered .ant-table-footer { + border: 0; + border-top: 1px solid #e8e8e8; + border-right: 1px solid #e8e8e8; +} +.ant-table-small.ant-table-bordered .ant-table-footer:before { + display: none; +} +.ant-table-small.ant-table-bordered .ant-table-placeholder { + border-left: 0; + border-bottom: 0; +} +.ant-table-small.ant-table-bordered .ant-table-thead > tr > th:last-child, +.ant-table-small.ant-table-bordered .ant-table-tbody > tr > td:last-child { + border-right: none; +} +.ant-tabs.ant-tabs-card > .ant-tabs-bar .ant-tabs-nav-container { + height: 40px; +} +.ant-tabs.ant-tabs-card > .ant-tabs-bar .ant-tabs-ink-bar { + visibility: hidden; +} +.ant-tabs.ant-tabs-card > .ant-tabs-bar .ant-tabs-tab { + margin: 0; + border: 1px solid #e8e8e8; + border-bottom: 0; + border-radius: 4px 4px 0 0; + background: #fafafa; + margin-right: 2px; + padding: 0 16px; + transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); + line-height: 38px; +} +.ant-tabs.ant-tabs-card > .ant-tabs-bar .ant-tabs-tab-active { + background: #fff; + border-color: #e8e8e8; + color: #1890ff; + padding-bottom: 1px; +} +.ant-tabs.ant-tabs-card > .ant-tabs-bar .ant-tabs-tab-inactive { + padding: 0; +} +.ant-tabs.ant-tabs-card > .ant-tabs-bar .ant-tabs-nav-wrap { + margin-bottom: 0; +} +.ant-tabs.ant-tabs-card > .ant-tabs-bar .ant-tabs-tab .anticon-close { + color: rgba(0, 0, 0, 0.45); + transition: all .3s; + font-size: 12px; + margin-left: 3px; + margin-right: -5px; + overflow: hidden; + vertical-align: middle; + width: 16px; + height: 16px; + height: 14px; +} +.ant-tabs.ant-tabs-card > .ant-tabs-bar .ant-tabs-tab .anticon-close:hover { + color: rgba(0, 0, 0, 0.85); +} +.ant-tabs.ant-tabs-card .ant-tabs-content > .ant-tabs-tabpane, +.ant-tabs.ant-tabs-editable-card .ant-tabs-content > .ant-tabs-tabpane { + transition: none !important; +} +.ant-tabs.ant-tabs-card .ant-tabs-content > .ant-tabs-tabpane-inactive, +.ant-tabs.ant-tabs-editable-card .ant-tabs-content > .ant-tabs-tabpane-inactive { + overflow: hidden; +} +.ant-tabs.ant-tabs-card > .ant-tabs-bar .ant-tabs-tab:hover .anticon-close { + opacity: 1; +} +.ant-tabs-extra-content { + line-height: 40px; +} +.ant-tabs-extra-content .ant-tabs-new-tab { + width: 20px; + height: 20px; + line-height: 20px; + text-align: center; + cursor: pointer; + border-radius: 2px; + border: 1px solid #e8e8e8; + font-size: 12px; + color: #54657e; + transition: all .3s; +} +.ant-tabs-extra-content .ant-tabs-new-tab:hover { + color: #1890ff; + border-color: #1890ff; +} +.ant-tabs-vertical.ant-tabs-card > .ant-tabs-bar .ant-tabs-nav-container { + height: auto; +} +.ant-tabs-vertical.ant-tabs-card > .ant-tabs-bar .ant-tabs-tab { + border-bottom: 1px solid #e8e8e8; + margin-bottom: 8px; +} +.ant-tabs-vertical.ant-tabs-card > .ant-tabs-bar .ant-tabs-tab-active { + padding-bottom: 4px; +} +.ant-tabs-vertical.ant-tabs-card > .ant-tabs-bar .ant-tabs-tab:last-child { + margin-bottom: 8px; +} +.ant-tabs-vertical.ant-tabs-card > .ant-tabs-bar .ant-tabs-new-tab { + width: 90%; +} +.ant-tabs-vertical.ant-tabs-card.ant-tabs-left > .ant-tabs-bar .ant-tabs-nav-wrap { + margin-right: 0; +} +.ant-tabs-vertical.ant-tabs-card.ant-tabs-left > .ant-tabs-bar .ant-tabs-tab { + border-right: 0; + border-radius: 4px 0 0 4px; + margin-right: 1px; +} +.ant-tabs-vertical.ant-tabs-card.ant-tabs-left > .ant-tabs-bar .ant-tabs-tab-active { + margin-right: -1px; + padding-right: 18px; +} +.ant-tabs-vertical.ant-tabs-card.ant-tabs-right > .ant-tabs-bar .ant-tabs-nav-wrap { + margin-left: 0; +} +.ant-tabs-vertical.ant-tabs-card.ant-tabs-right > .ant-tabs-bar .ant-tabs-tab { + border-left: 0; + border-radius: 0 4px 4px 0; + margin-left: 1px; +} +.ant-tabs-vertical.ant-tabs-card.ant-tabs-right > .ant-tabs-bar .ant-tabs-tab-active { + margin-left: -1px; + padding-left: 18px; +} +.ant-tabs.ant-tabs-card.ant-tabs-bottom > .ant-tabs-bar .ant-tabs-tab { + border-bottom: 1px solid #e8e8e8; + border-top: 0; + border-radius: 0 0 4px 4px; +} +.ant-tabs.ant-tabs-card.ant-tabs-bottom > .ant-tabs-bar .ant-tabs-tab-active { + color: #1890ff; + padding-bottom: 0; + padding-top: 1px; +} +.ant-tabs { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; + position: relative; + overflow: hidden; + zoom: 1; +} +.ant-tabs:before, +.ant-tabs:after { + content: " "; + display: table; +} +.ant-tabs:after { + clear: both; + visibility: hidden; + font-size: 0; + height: 0; +} +.ant-tabs:before, +.ant-tabs:after { + content: " "; + display: table; +} +.ant-tabs:after { + clear: both; + visibility: hidden; + font-size: 0; + height: 0; +} +.ant-tabs-ink-bar { + z-index: 1; + position: absolute; + left: 0; + bottom: 1px; + box-sizing: border-box; + height: 2px; + background-color: #1890ff; + transform-origin: 0 0; +} +.ant-tabs-bar { + border-bottom: 1px solid #e8e8e8; + margin: 0 0 16px 0; + outline: none; + transition: padding 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); +} +.ant-tabs-nav-container { + overflow: hidden; + font-size: 14px; + line-height: 1.5; + box-sizing: border-box; + position: relative; + white-space: nowrap; + margin-bottom: -1px; + transition: padding 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); + zoom: 1; +} +.ant-tabs-nav-container:before, +.ant-tabs-nav-container:after { + content: " "; + display: table; +} +.ant-tabs-nav-container:after { + clear: both; + visibility: hidden; + font-size: 0; + height: 0; +} +.ant-tabs-nav-container:before, +.ant-tabs-nav-container:after { + content: " "; + display: table; +} +.ant-tabs-nav-container:after { + clear: both; + visibility: hidden; + font-size: 0; + height: 0; +} +.ant-tabs-nav-container-scrolling { + padding-left: 32px; + padding-right: 32px; +} +.ant-tabs-bottom .ant-tabs-bar { + border-bottom: none; + border-top: 1px solid #e8e8e8; +} +.ant-tabs-bottom .ant-tabs-ink-bar { + bottom: auto; + top: 1px; +} +.ant-tabs-bottom .ant-tabs-nav-container { + margin-bottom: 0; + margin-top: -1px; +} +.ant-tabs-tab-prev, +.ant-tabs-tab-next { + user-select: none; + z-index: 2; + width: 0; + height: 100%; + cursor: pointer; + border: 0; + background-color: transparent; + position: absolute; + text-align: center; + color: rgba(0, 0, 0, 0.45); + transition: width 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), opacity 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); + opacity: 0; + pointer-events: none; +} +.ant-tabs-tab-prev.ant-tabs-tab-arrow-show, +.ant-tabs-tab-next.ant-tabs-tab-arrow-show { + opacity: 1; + width: 32px; + height: 100%; + pointer-events: auto; +} +.ant-tabs-tab-prev:hover, +.ant-tabs-tab-next:hover { + color: #54657e; +} +.ant-tabs-tab-prev-icon, +.ant-tabs-tab-next-icon { + font-style: normal; + font-weight: bold; + font-variant: normal; + line-height: inherit; + vertical-align: baseline; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + text-align: center; + text-transform: none; +} +.ant-tabs-tab-prev-icon:before, +.ant-tabs-tab-next-icon:before { + display: block; + font-family: "anticon" !important; + display: inline-block; + font-size: 12px; + font-size: 10px \9; + transform: scale(0.83333333) rotate(0deg); +} +:root .ant-tabs-tab-prev-icon:before, +:root .ant-tabs-tab-next-icon:before { + font-size: 12px; +} +.ant-tabs-tab-btn-disabled { + cursor: not-allowed; +} +.ant-tabs-tab-btn-disabled, +.ant-tabs-tab-btn-disabled:hover { + color: rgba(0, 0, 0, 0.25); +} +.ant-tabs-tab-next { + right: 2px; +} +.ant-tabs-tab-next-icon:before { + content: "\e61f"; +} +.ant-tabs-tab-prev { + left: 0; +} +.ant-tabs-tab-prev-icon:before { + content: "\e620"; +} +:root .ant-tabs-tab-prev { + filter: none; +} +.ant-tabs-nav-wrap { + overflow: hidden; + margin-bottom: -1px; +} +.ant-tabs-nav-scroll { + overflow: hidden; + white-space: nowrap; +} +.ant-tabs-nav { + box-sizing: border-box; + padding-left: 0; + transition: transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); + position: relative; + margin: 0; + list-style: none; + display: inline-block; +} +.ant-tabs-nav:before, +.ant-tabs-nav:after { + display: table; + content: " "; +} +.ant-tabs-nav:after { + clear: both; +} +.ant-tabs-nav .ant-tabs-tab-disabled { + pointer-events: none; + cursor: default; + color: rgba(0, 0, 0, 0.25); +} +.ant-tabs-nav .ant-tabs-tab { + display: inline-block; + height: 100%; + margin: 0 32px 0 0; + padding: 12px 16px; + box-sizing: border-box; + position: relative; + transition: color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); + cursor: pointer; + text-decoration: none; +} +.ant-tabs-nav .ant-tabs-tab:last-child { + margin-right: 0; +} +.ant-tabs-nav .ant-tabs-tab:hover { + color: #40a9ff; +} +.ant-tabs-nav .ant-tabs-tab:active { + color: #096dd9; +} +.ant-tabs-nav .ant-tabs-tab .anticon { + margin-right: 8px; +} +.ant-tabs-nav .ant-tabs-tab-active { + color: #1890ff; + font-weight: 500; +} +.ant-tabs-large .ant-tabs-nav-container { + font-size: 16px; +} +.ant-tabs-large .ant-tabs-tab { + padding: 16px; +} +.ant-tabs-small .ant-tabs-nav-container { + font-size: 14px; +} +.ant-tabs-small .ant-tabs-tab { + padding: 8px 16px; +} +.ant-tabs:not(.ant-tabs-vertical) > .ant-tabs-content { + width: 100%; +} +.ant-tabs:not(.ant-tabs-vertical) > .ant-tabs-content > .ant-tabs-tabpane { + flex-shrink: 0; + width: 100%; + transition: opacity .45s; + opacity: 1; +} +.ant-tabs:not(.ant-tabs-vertical) > .ant-tabs-content > .ant-tabs-tabpane-inactive { + opacity: 0; + height: 0; + padding: 0 !important; + pointer-events: none; +} +.ant-tabs:not(.ant-tabs-vertical) > .ant-tabs-content-animated { + display: flex; + flex-direction: row; + will-change: margin-left; + transition: margin-left 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); +} +.ant-tabs-vertical > .ant-tabs-bar { + border-bottom: 0; + height: 100%; +} +.ant-tabs-vertical > .ant-tabs-bar-tab-prev, +.ant-tabs-vertical > .ant-tabs-bar-tab-next { + width: 32px; + height: 0; + transition: height 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), opacity 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); +} +.ant-tabs-vertical > .ant-tabs-bar-tab-prev.ant-tabs-tab-arrow-show, +.ant-tabs-vertical > .ant-tabs-bar-tab-next.ant-tabs-tab-arrow-show { + width: 100%; + height: 32px; +} +.ant-tabs-vertical > .ant-tabs-bar .ant-tabs-tab { + float: none; + margin: 0 0 16px 0; + padding: 8px 24px; + display: block; +} +.ant-tabs-vertical > .ant-tabs-bar .ant-tabs-tab:last-child { + margin-bottom: 0; +} +.ant-tabs-vertical > .ant-tabs-bar .ant-tabs-extra-content { + text-align: center; +} +.ant-tabs-vertical > .ant-tabs-bar .ant-tabs-nav-scroll { + width: auto; +} +.ant-tabs-vertical > .ant-tabs-bar .ant-tabs-nav-container, +.ant-tabs-vertical > .ant-tabs-bar .ant-tabs-nav-wrap { + height: 100%; +} +.ant-tabs-vertical > .ant-tabs-bar .ant-tabs-nav-container { + margin-bottom: 0; +} +.ant-tabs-vertical > .ant-tabs-bar .ant-tabs-nav-container.ant-tabs-nav-container-scrolling { + padding: 32px 0; +} +.ant-tabs-vertical > .ant-tabs-bar .ant-tabs-nav-wrap { + margin-bottom: 0; +} +.ant-tabs-vertical > .ant-tabs-bar .ant-tabs-nav { + width: 100%; +} +.ant-tabs-vertical > .ant-tabs-bar .ant-tabs-ink-bar { + width: 2px; + left: auto; + height: auto; + top: 0; +} +.ant-tabs-vertical > .ant-tabs-bar .ant-tabs-tab-next { + width: 100%; + bottom: 0; + height: 32px; +} +.ant-tabs-vertical > .ant-tabs-bar .ant-tabs-tab-next-icon:before { + content: "\e61d"; +} +.ant-tabs-vertical > .ant-tabs-bar .ant-tabs-tab-prev { + top: 0; + width: 100%; + height: 32px; +} +.ant-tabs-vertical > .ant-tabs-bar .ant-tabs-tab-prev-icon:before { + content: "\e61e"; +} +.ant-tabs-vertical > .ant-tabs-content { + overflow: hidden; + width: auto; + margin-top: 0 !important; +} +.ant-tabs-vertical.ant-tabs-left > .ant-tabs-bar { + float: left; + border-right: 1px solid #e8e8e8; + margin-right: -1px; + margin-bottom: 0; +} +.ant-tabs-vertical.ant-tabs-left > .ant-tabs-bar .ant-tabs-tab { + text-align: right; +} +.ant-tabs-vertical.ant-tabs-left > .ant-tabs-bar .ant-tabs-nav-container { + margin-right: -1px; +} +.ant-tabs-vertical.ant-tabs-left > .ant-tabs-bar .ant-tabs-nav-wrap { + margin-right: -1px; +} +.ant-tabs-vertical.ant-tabs-left > .ant-tabs-bar .ant-tabs-ink-bar { + right: 1px; +} +.ant-tabs-vertical.ant-tabs-left > .ant-tabs-content { + padding-left: 24px; + border-left: 1px solid #e8e8e8; +} +.ant-tabs-vertical.ant-tabs-right > .ant-tabs-bar { + float: right; + border-left: 1px solid #e8e8e8; + margin-left: -1px; + margin-bottom: 0; +} +.ant-tabs-vertical.ant-tabs-right > .ant-tabs-bar .ant-tabs-nav-container { + margin-left: -1px; +} +.ant-tabs-vertical.ant-tabs-right > .ant-tabs-bar .ant-tabs-nav-wrap { + margin-left: -1px; +} +.ant-tabs-vertical.ant-tabs-right > .ant-tabs-bar .ant-tabs-ink-bar { + left: 1px; +} +.ant-tabs-vertical.ant-tabs-right > .ant-tabs-content { + padding-right: 24px; + border-right: 1px solid #e8e8e8; +} +.ant-tabs-bottom > .ant-tabs-bar { + margin-bottom: 0; + margin-top: 16px; +} +.ant-tabs-top .ant-tabs-ink-bar-animated, +.ant-tabs-bottom .ant-tabs-ink-bar-animated { + transition: transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), width 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); +} +.ant-tabs-left .ant-tabs-ink-bar-animated, +.ant-tabs-right .ant-tabs-ink-bar-animated { + transition: transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), height 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); +} +.no-flex > .ant-tabs-content-animated, +.ant-tabs-no-animation > .ant-tabs-content-animated, +.ant-tabs-vertical > .ant-tabs-content-animated { + transform: none !important; + margin-left: 0 !important; +} +.no-flex > .ant-tabs-content > .ant-tabs-tabpane-inactive, +.ant-tabs-no-animation > .ant-tabs-content > .ant-tabs-tabpane-inactive, +.ant-tabs-vertical > .ant-tabs-content > .ant-tabs-tabpane-inactive { + display: none; +} +.ant-tag { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; + display: inline-block; + line-height: 20px; + height: 22px; + padding: 0 7px; + border-radius: 4px; + border: 1px solid #d9d9d9; + background: #fafafa; + font-size: 12px; + transition: all 0.3s cubic-bezier(0.215, 0.61, 0.355, 1); + opacity: 1; + margin-right: 8px; + cursor: pointer; + white-space: nowrap; +} +.ant-tag:hover { + opacity: 0.85; +} +.ant-tag, +.ant-tag a, +.ant-tag a:hover { + color: #54657e; +} +.ant-tag > a:first-child:last-child { + display: inline-block; + margin: 0 -8px; + padding: 0 8px; +} +.ant-tag .anticon-cross { + display: inline-block; + font-size: 12px; + font-size: 10px \9; + transform: scale(0.83333333) rotate(0deg); + cursor: pointer; + margin-left: 3px; + transition: all .3s; + color: rgba(0, 0, 0, 0.45); + font-weight: bold; +} +:root .ant-tag .anticon-cross { + font-size: 12px; +} +.ant-tag .anticon-cross:hover { + color: rgba(0, 0, 0, 0.85); +} +.ant-tag-has-color { + border-color: transparent; +} +.ant-tag-has-color, +.ant-tag-has-color a, +.ant-tag-has-color a:hover, +.ant-tag-has-color .anticon-cross, +.ant-tag-has-color .anticon-cross:hover { + color: #fff; +} +.ant-tag-checkable { + background-color: transparent; + border-color: transparent; +} +.ant-tag-checkable:not(.ant-tag-checkable-checked):hover { + color: #1890ff; +} +.ant-tag-checkable:active, +.ant-tag-checkable-checked { + color: #fff; +} +.ant-tag-checkable-checked { + background-color: #1890ff; +} +.ant-tag-checkable:active { + background-color: #096dd9; +} +.ant-tag-close { + width: 0 !important; + padding: 0; + margin: 0; +} +.ant-tag-zoom-enter, +.ant-tag-zoom-appear { + animation: antFadeIn 0.2s cubic-bezier(0.78, 0.14, 0.15, 0.86); + animation-fill-mode: both; +} +.ant-tag-zoom-leave { + animation: antZoomOut 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); + animation-fill-mode: both; +} +.ant-tag-pink { + color: #eb2f96; + background: #fff0f6; + border-color: #ffadd2; +} +.ant-tag-pink-inverse { + background: #eb2f96; + border-color: #eb2f96; + color: #fff; +} +.ant-tag-magenta { + color: #eb2f96; + background: #fff0f6; + border-color: #ffadd2; +} +.ant-tag-magenta-inverse { + background: #eb2f96; + border-color: #eb2f96; + color: #fff; +} +.ant-tag-red { + color: #f5222d; + background: #fff1f0; + border-color: #ffa39e; +} +.ant-tag-red-inverse { + background: #f5222d; + border-color: #f5222d; + color: #fff; +} +.ant-tag-volcano { + color: #fa541c; + background: #fff2e8; + border-color: #ffbb96; +} +.ant-tag-volcano-inverse { + background: #fa541c; + border-color: #fa541c; + color: #fff; +} +.ant-tag-orange { + color: #fa8c16; + background: #fff7e6; + border-color: #ffd591; +} +.ant-tag-orange-inverse { + background: #fa8c16; + border-color: #fa8c16; + color: #fff; +} +.ant-tag-yellow { + color: #fadb14; + background: #feffe6; + border-color: #fffb8f; +} +.ant-tag-yellow-inverse { + background: #fadb14; + border-color: #fadb14; + color: #fff; +} +.ant-tag-gold { + color: #faad14; + background: #fffbe6; + border-color: #ffe58f; +} +.ant-tag-gold-inverse { + background: #faad14; + border-color: #faad14; + color: #fff; +} +.ant-tag-cyan { + color: #13c2c2; + background: #e6fffb; + border-color: #87e8de; +} +.ant-tag-cyan-inverse { + background: #13c2c2; + border-color: #13c2c2; + color: #fff; +} +.ant-tag-lime { + color: #a0d911; + background: #fcffe6; + border-color: #eaff8f; +} +.ant-tag-lime-inverse { + background: #a0d911; + border-color: #a0d911; + color: #fff; +} +.ant-tag-green { + color: #52c41a; + background: #f6ffed; + border-color: #b7eb8f; +} +.ant-tag-green-inverse { + background: #52c41a; + border-color: #52c41a; + color: #fff; +} +.ant-tag-blue { + color: #1890ff; + background: #e6f7ff; + border-color: #91d5ff; +} +.ant-tag-blue-inverse { + background: #1890ff; + border-color: #1890ff; + color: #fff; +} +.ant-tag-geekblue { + color: #2f54eb; + background: #f0f5ff; + border-color: #adc6ff; +} +.ant-tag-geekblue-inverse { + background: #2f54eb; + border-color: #2f54eb; + color: #fff; +} +.ant-tag-purple { + color: #722ed1; + background: #f9f0ff; + border-color: #d3adf7; +} +.ant-tag-purple-inverse { + background: #722ed1; + border-color: #722ed1; + color: #fff; +} +.ant-time-picker-panel { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; + z-index: 1050; + position: absolute; +} +.ant-time-picker-panel-inner { + position: relative; + outline: none; + list-style: none; + font-size: 14px; + text-align: left; + background-color: #fff; + border-radius: 4px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); + background-clip: padding-box; + overflow: hidden; + left: -2px; +} +.ant-time-picker-panel-input { + margin: 0; + padding: 0; + border: 0; + width: 100%; + cursor: auto; + outline: 0; +} +.ant-time-picker-panel-input::-moz-placeholder { + color: #bfbfbf; + opacity: 1; +} +.ant-time-picker-panel-input:-ms-input-placeholder { + color: #bfbfbf; +} +.ant-time-picker-panel-input::-webkit-input-placeholder { + color: #bfbfbf; +} +.ant-time-picker-panel-input-wrap { + box-sizing: border-box; + position: relative; + padding: 7px 2px 7px 12px; + border-bottom: 1px solid #e8e8e8; +} +.ant-time-picker-panel-input-invalid { + border-color: red; +} +.ant-time-picker-panel-clear-btn { + position: absolute; + right: 8px; + cursor: pointer; + overflow: hidden; + width: 20px; + height: 20px; + text-align: center; + line-height: 20px; + top: 7px; + margin: 0; +} +.ant-time-picker-panel-clear-btn:after { + font-size: 12px; + color: rgba(0, 0, 0, 0.25); + display: inline-block; + line-height: 1; + width: 20px; + transition: color 0.3s ease; + font-family: 'anticon'; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\e62e"; +} +.ant-time-picker-panel-clear-btn:hover:after { + color: rgba(0, 0, 0, 0.45); +} +.ant-time-picker-panel-narrow .ant-time-picker-panel-input-wrap { + max-width: 112px; +} +.ant-time-picker-panel-select { + float: left; + font-size: 14px; + border-left: 1px solid #e8e8e8; + box-sizing: border-box; + width: 56px; + overflow: hidden; + position: relative; + max-height: 192px; +} +.ant-time-picker-panel-select:hover { + overflow-y: auto; +} +.ant-time-picker-panel-select:first-child { + border-left: 0; + margin-left: 0; +} +.ant-time-picker-panel-select:last-child { + border-right: 0; +} +.ant-time-picker-panel-select:only-child { + width: 100%; +} +.ant-time-picker-panel-select ul { + list-style: none; + box-sizing: border-box; + margin: 0; + padding: 0 0 160px; + width: 100%; +} +.ant-time-picker-panel-select li { + list-style: none; + box-sizing: content-box; + margin: 0; + padding: 0 0 0 12px; + width: 100%; + height: 32px; + line-height: 32px; + text-align: left; + cursor: pointer; + user-select: none; + transition: background 0.3s; +} +.ant-time-picker-panel-select li:hover { + background: #e6f7ff; +} +li.ant-time-picker-panel-select-option-selected { + background: #f5f5f5; + font-weight: bold; +} +li.ant-time-picker-panel-select-option-selected:hover { + background: #f5f5f5; +} +li.ant-time-picker-panel-select-option-disabled { + color: rgba(0, 0, 0, 0.25); +} +li.ant-time-picker-panel-select-option-disabled:hover { + background: transparent; + cursor: not-allowed; +} +.ant-time-picker-panel-combobox { + zoom: 1; +} +.ant-time-picker-panel-combobox:before, +.ant-time-picker-panel-combobox:after { + content: " "; + display: table; +} +.ant-time-picker-panel-combobox:after { + clear: both; + visibility: hidden; + font-size: 0; + height: 0; +} +.ant-time-picker-panel-combobox:before, +.ant-time-picker-panel-combobox:after { + content: " "; + display: table; +} +.ant-time-picker-panel-combobox:after { + clear: both; + visibility: hidden; + font-size: 0; + height: 0; +} +.ant-time-picker-panel-addon { + padding: 8px; + border-top: 1px solid #e8e8e8; +} +.ant-time-picker-panel.slide-up-enter.slide-up-enter-active.ant-time-picker-panel-placement-topLeft, +.ant-time-picker-panel.slide-up-enter.slide-up-enter-active.ant-time-picker-panel-placement-topRight, +.ant-time-picker-panel.slide-up-appear.slide-up-appear-active.ant-time-picker-panel-placement-topLeft, +.ant-time-picker-panel.slide-up-appear.slide-up-appear-active.ant-time-picker-panel-placement-topRight { + animation-name: antSlideDownIn; +} +.ant-time-picker-panel.slide-up-enter.slide-up-enter-active.ant-time-picker-panel-placement-bottomLeft, +.ant-time-picker-panel.slide-up-enter.slide-up-enter-active.ant-time-picker-panel-placement-bottomRight, +.ant-time-picker-panel.slide-up-appear.slide-up-appear-active.ant-time-picker-panel-placement-bottomLeft, +.ant-time-picker-panel.slide-up-appear.slide-up-appear-active.ant-time-picker-panel-placement-bottomRight { + animation-name: antSlideUpIn; +} +.ant-time-picker-panel.slide-up-leave.slide-up-leave-active.ant-time-picker-panel-placement-topLeft, +.ant-time-picker-panel.slide-up-leave.slide-up-leave-active.ant-time-picker-panel-placement-topRight { + animation-name: antSlideDownOut; +} +.ant-time-picker-panel.slide-up-leave.slide-up-leave-active.ant-time-picker-panel-placement-bottomLeft, +.ant-time-picker-panel.slide-up-leave.slide-up-leave-active.ant-time-picker-panel-placement-bottomRight { + animation-name: antSlideUpOut; +} +.ant-time-picker { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; + position: relative; + display: inline-block; + outline: none; + transition: opacity .3s; + width: 128px; +} +.ant-time-picker-input { + position: relative; + display: inline-block; + padding: 4px 11px; + width: 100%; + height: 32px; + font-size: 14px; + line-height: 1.5; + color: #54657e; + background-color: #fff; + background-image: none; + border: 1px solid #d9d9d9; + border-radius: 4px; + transition: all .3s; +} +.ant-time-picker-input::-moz-placeholder { + color: #bfbfbf; + opacity: 1; +} +.ant-time-picker-input:-ms-input-placeholder { + color: #bfbfbf; +} +.ant-time-picker-input::-webkit-input-placeholder { + color: #bfbfbf; +} +.ant-time-picker-input:hover { + border-color: #40a9ff; +} +.ant-time-picker-input:focus { + border-color: #40a9ff; + outline: 0; + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); +} +.ant-time-picker-input-disabled { + background-color: #f5f5f5; + opacity: 1; + cursor: not-allowed; + color: rgba(0, 0, 0, 0.25); +} +.ant-time-picker-input-disabled:hover { + border-color: #e6d8d8; +} +textarea.ant-time-picker-input { + max-width: 100%; + height: auto; + vertical-align: bottom; + transition: all .3s, height 0s; + min-height: 32px; +} +.ant-time-picker-input-lg { + padding: 6px 11px; + height: 40px; + font-size: 16px; +} +.ant-time-picker-input-sm { + padding: 1px 7px; + height: 24px; +} +.ant-time-picker-input[disabled] { + background-color: #f5f5f5; + opacity: 1; + cursor: not-allowed; + color: rgba(0, 0, 0, 0.25); +} +.ant-time-picker-input[disabled]:hover { + border-color: #e6d8d8; +} +.ant-time-picker-open { + opacity: 0; +} +.ant-time-picker-icon { + position: absolute; + user-select: none; + transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); + width: 14px; + height: 14px; + line-height: 14px; + right: 11px; + color: rgba(0, 0, 0, 0.25); + top: 50%; + margin-top: -7px; +} +.ant-time-picker-icon:after { + content: "\e641"; + font-family: "anticon"; + color: rgba(0, 0, 0, 0.25); + display: block; + line-height: 1; +} +.ant-time-picker-large .ant-time-picker-input { + padding: 6px 11px; + height: 40px; + font-size: 16px; +} +.ant-time-picker-small .ant-time-picker-input { + padding: 1px 7px; + height: 24px; +} +.ant-time-picker-small .ant-time-picker-icon { + right: 7px; +} +.ant-timeline { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + list-style: none; + margin: 0; + padding: 0; +} +.ant-timeline-item { + position: relative; + padding: 0 0 20px; + list-style: none; + margin: 0; + font-size: 14px; +} +.ant-timeline-item-tail { + position: absolute; + left: 4px; + top: 0.75em; + height: 100%; + border-left: 2px solid #e8e8e8; +} +.ant-timeline-item-pending .ant-timeline-item-head { + font-size: 12px; +} +.ant-timeline-item-pending .ant-timeline-item-tail { + display: none; +} +.ant-timeline-item-head { + position: absolute; + width: 10px; + height: 10px; + background-color: #fff; + border-radius: 100px; + border: 2px solid transparent; +} +.ant-timeline-item-head-blue { + border-color: #1890ff; + color: #1890ff; +} +.ant-timeline-item-head-red { + border-color: #f5222d; + color: #f5222d; +} +.ant-timeline-item-head-green { + border-color: #52c41a; + color: #52c41a; +} +.ant-timeline-item-head-custom { + position: absolute; + text-align: center; + line-height: 1; + margin-top: 0; + border: 0; + height: auto; + border-radius: 0; + padding: 3px 1px; + transform: translate(-50%, -50%); + top: 5px; + left: 5px; + width: auto; +} +.ant-timeline-item-content { + padding: 0 0 0 18px; + position: relative; + top: -6px; +} +.ant-timeline-item-last .ant-timeline-item-tail { + border-left: 2px dotted #e8e8e8; + display: none; +} +.ant-timeline-item-last .ant-timeline-item-content { + min-height: 48px; +} +.ant-timeline.ant-timeline-pending .ant-timeline-item-last .ant-timeline-item-tail { + display: block; +} +.ant-tooltip { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; + position: absolute; + z-index: 1060; + display: block; + visibility: visible; +} +.ant-tooltip-hidden { + display: none; +} +.ant-tooltip-placement-top, +.ant-tooltip-placement-topLeft, +.ant-tooltip-placement-topRight { + padding-bottom: 8px; +} +.ant-tooltip-placement-right, +.ant-tooltip-placement-rightTop, +.ant-tooltip-placement-rightBottom { + padding-left: 8px; +} +.ant-tooltip-placement-bottom, +.ant-tooltip-placement-bottomLeft, +.ant-tooltip-placement-bottomRight { + padding-top: 8px; +} +.ant-tooltip-placement-left, +.ant-tooltip-placement-leftTop, +.ant-tooltip-placement-leftBottom { + padding-right: 8px; +} +.ant-tooltip-inner { + max-width: 250px; + padding: 6px 8px; + color: #fff; + text-align: left; + text-decoration: none; + background-color: rgba(0, 0, 0, 0.75); + border-radius: 4px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); + min-height: 32px; +} +.ant-tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.ant-tooltip-placement-top .ant-tooltip-arrow, +.ant-tooltip-placement-topLeft .ant-tooltip-arrow, +.ant-tooltip-placement-topRight .ant-tooltip-arrow { + bottom: 3px; + border-width: 5px 5px 0; + border-top-color: rgba(0, 0, 0, 0.75); +} +.ant-tooltip-placement-top .ant-tooltip-arrow { + left: 50%; + margin-left: -5px; +} +.ant-tooltip-placement-topLeft .ant-tooltip-arrow { + left: 16px; +} +.ant-tooltip-placement-topRight .ant-tooltip-arrow { + right: 16px; +} +.ant-tooltip-placement-right .ant-tooltip-arrow, +.ant-tooltip-placement-rightTop .ant-tooltip-arrow, +.ant-tooltip-placement-rightBottom .ant-tooltip-arrow { + left: 3px; + border-width: 5px 5px 5px 0; + border-right-color: rgba(0, 0, 0, 0.75); +} +.ant-tooltip-placement-right .ant-tooltip-arrow { + top: 50%; + margin-top: -5px; +} +.ant-tooltip-placement-rightTop .ant-tooltip-arrow { + top: 8px; +} +.ant-tooltip-placement-rightBottom .ant-tooltip-arrow { + bottom: 8px; +} +.ant-tooltip-placement-left .ant-tooltip-arrow, +.ant-tooltip-placement-leftTop .ant-tooltip-arrow, +.ant-tooltip-placement-leftBottom .ant-tooltip-arrow { + right: 3px; + border-width: 5px 0 5px 5px; + border-left-color: rgba(0, 0, 0, 0.75); +} +.ant-tooltip-placement-left .ant-tooltip-arrow { + top: 50%; + margin-top: -5px; +} +.ant-tooltip-placement-leftTop .ant-tooltip-arrow { + top: 8px; +} +.ant-tooltip-placement-leftBottom .ant-tooltip-arrow { + bottom: 8px; +} +.ant-tooltip-placement-bottom .ant-tooltip-arrow, +.ant-tooltip-placement-bottomLeft .ant-tooltip-arrow, +.ant-tooltip-placement-bottomRight .ant-tooltip-arrow { + top: 3px; + border-width: 0 5px 5px; + border-bottom-color: rgba(0, 0, 0, 0.75); +} +.ant-tooltip-placement-bottom .ant-tooltip-arrow { + left: 50%; + margin-left: -5px; +} +.ant-tooltip-placement-bottomLeft .ant-tooltip-arrow { + left: 16px; +} +.ant-tooltip-placement-bottomRight .ant-tooltip-arrow { + right: 16px; +} +.ant-transfer { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; + position: relative; +} +.ant-transfer-list { + border: 1px solid #d9d9d9; + display: inline-block; + border-radius: 4px; + vertical-align: middle; + position: relative; + width: 180px; + height: 200px; + padding-top: 34px; +} +.ant-transfer-list-with-footer { + padding-bottom: 34px; +} +.ant-transfer-list-search { + padding: 0 8px; +} +.ant-transfer-list-search-action { + color: rgba(0, 0, 0, 0.25); + position: absolute; + top: 4px; + right: 4px; + bottom: 4px; + width: 28px; + line-height: 32px; + text-align: center; +} +.ant-transfer-list-search-action .anticon { + transition: all .3s; + color: rgba(0, 0, 0, 0.25); +} +.ant-transfer-list-search-action .anticon:hover { + color: rgba(0, 0, 0, 0.45); +} +span.ant-transfer-list-search-action { + pointer-events: none; +} +.ant-transfer-list-header { + padding: 6px 12px; + border-radius: 4px 4px 0 0; + background: #fff; + color: #54657e; + border-bottom: 1px solid #e8e8e8; + overflow: hidden; + position: absolute; + top: 0; + left: 0; + width: 100%; +} +.ant-transfer-list-header-title { + position: absolute; + right: 12px; +} +.ant-transfer-list-body { + font-size: 14px; + position: relative; + height: 100%; +} +.ant-transfer-list-body-search-wrapper { + position: absolute; + top: 0; + left: 0; + padding: 4px; + width: 100%; +} +.ant-transfer-list-body-with-search { + padding-top: 40px; +} +.ant-transfer-list-content { + height: 100%; + overflow: auto; + list-style: none; + padding: 0; + margin: 0; +} +.ant-transfer-list-content > .LazyLoad { + animation: transferHighlightIn 1s; +} +.ant-transfer-list-content-item { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + padding: 6px 12px; + min-height: 32px; + transition: all .3s; +} +.ant-transfer-list-content-item > span { + padding-right: 0; +} +.ant-transfer-list-content-item:not(.ant-transfer-list-content-item-disabled):hover { + cursor: pointer; + background-color: #e6f7ff; +} +.ant-transfer-list-content-item-disabled { + cursor: not-allowed; + color: rgba(0, 0, 0, 0.25); +} +.ant-transfer-list-body-not-found { + padding-top: 0; + color: rgba(0, 0, 0, 0.25); + text-align: center; + display: none; + position: absolute; + top: 50%; + width: 100%; + margin-top: -10px; +} +.ant-transfer-list-content:empty + .ant-transfer-list-body-not-found { + display: block; +} +.ant-transfer-list-footer { + border-top: 1px solid #e8e8e8; + border-radius: 0 0 4px 4px; + position: absolute; + bottom: 0; + left: 0; + width: 100%; +} +.ant-transfer-operation { + display: inline-block; + overflow: hidden; + margin: 0 8px; + vertical-align: middle; +} +.ant-transfer-operation .ant-btn { + display: block; +} +.ant-transfer-operation .ant-btn:first-child { + margin-bottom: 4px; +} +.ant-transfer-operation .ant-btn .anticon { + font-size: 12px; +} +@keyframes transferHighlightIn { + 0% { + background: #bae7ff; + } + 100% { + background: transparent; + } +} +.ant-tree-checkbox { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; + white-space: nowrap; + cursor: pointer; + outline: none; + display: inline-block; + line-height: 1; + position: relative; + vertical-align: middle; + top: -0.09em; +} +.ant-tree-checkbox-wrapper:hover .ant-tree-checkbox-inner, +.ant-tree-checkbox:hover .ant-tree-checkbox-inner, +.ant-tree-checkbox-input:focus + .ant-tree-checkbox-inner { + border-color: #1890ff; +} +.ant-tree-checkbox-checked:after { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + border-radius: 2px; + border: 1px solid #1890ff; + content: ''; + animation: antCheckboxEffect 0.36s ease-in-out; + animation-fill-mode: both; + visibility: hidden; +} +.ant-tree-checkbox:hover:after, +.ant-tree-checkbox-wrapper:hover .ant-tree-checkbox:after { + visibility: visible; +} +.ant-tree-checkbox-inner { + position: relative; + top: 0; + left: 0; + display: block; + width: 16px; + height: 16px; + border: 1px solid #d9d9d9; + border-radius: 2px; + background-color: #fff; + transition: all .3s; +} +.ant-tree-checkbox-inner:after { + transform: rotate(45deg) scale(0); + position: absolute; + left: 4.57142857px; + top: 1.14285714px; + display: table; + width: 5.71428571px; + height: 9.14285714px; + border: 2px solid #fff; + border-top: 0; + border-left: 0; + content: ' '; + transition: all 0.1s cubic-bezier(0.71, -0.46, 0.88, 0.6); +} +.ant-tree-checkbox-input { + position: absolute; + left: 0; + z-index: 1; + cursor: pointer; + opacity: 0; + top: 0; + bottom: 0; + right: 0; + width: 100%; + height: 100%; +} +.ant-tree-checkbox-indeterminate .ant-tree-checkbox-inner:after { + content: ' '; + transform: scale(1); + position: absolute; + left: 2.42857143px; + top: 5.92857143px; + width: 9.14285714px; + height: 1.14285714px; +} +.ant-tree-checkbox-indeterminate.ant-tree-checkbox-disabled .ant-tree-checkbox-inner:after { + border-color: rgba(0, 0, 0, 0.25); +} +.ant-tree-checkbox-checked .ant-tree-checkbox-inner:after { + transform: rotate(45deg) scale(1); + position: absolute; + display: table; + border: 2px solid #fff; + border-top: 0; + border-left: 0; + content: ' '; + transition: all 0.2s cubic-bezier(0.12, 0.4, 0.29, 1.46) 0.1s; +} +.ant-tree-checkbox-checked .ant-tree-checkbox-inner, +.ant-tree-checkbox-indeterminate .ant-tree-checkbox-inner { + background-color: #1890ff; + border-color: #1890ff; +} +.ant-tree-checkbox-disabled { + cursor: not-allowed; +} +.ant-tree-checkbox-disabled.ant-tree-checkbox-checked .ant-tree-checkbox-inner:after { + animation-name: none; + border-color: rgba(0, 0, 0, 0.25); +} +.ant-tree-checkbox-disabled .ant-tree-checkbox-input { + cursor: not-allowed; +} +.ant-tree-checkbox-disabled .ant-tree-checkbox-inner { + border-color: #d9d9d9 !important; + background-color: #f5f5f5; +} +.ant-tree-checkbox-disabled .ant-tree-checkbox-inner:after { + animation-name: none; + border-color: #f5f5f5; +} +.ant-tree-checkbox-disabled + span { + color: rgba(0, 0, 0, 0.25); + cursor: not-allowed; +} +.ant-tree-checkbox-wrapper { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; + line-height: unset; + cursor: pointer; + display: inline-block; +} +.ant-tree-checkbox-wrapper + .ant-tree-checkbox-wrapper { + margin-left: 8px; +} +.ant-tree-checkbox-wrapper + span, +.ant-tree-checkbox + span { + padding-left: 8px; + padding-right: 8px; +} +.ant-tree-checkbox-group { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; + display: inline-block; +} +.ant-tree-checkbox-group-item { + display: inline-block; + margin-right: 8px; +} +.ant-tree-checkbox-group-item:last-child { + margin-right: 0; +} +.ant-tree-checkbox-group-item + .ant-tree-checkbox-group-item { + margin-left: 0; +} +.ant-tree { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + list-style: none; + margin: 0; + padding: 0; + display: block; +} +.ant-tree ol, +.ant-tree ul { + list-style: none; + margin: 0; + padding: 0; +} +.ant-tree li { + padding: 4px 0; + margin: 0; + list-style: none; + white-space: nowrap; + outline: 0; +} +.ant-tree li span[draggable], +.ant-tree li span[draggable="true"] { + user-select: none; + border-top: 2px transparent solid; + border-bottom: 2px transparent solid; + margin-top: -2px; + /* Required to make elements draggable in old WebKit */ + -khtml-user-drag: element; + -webkit-user-drag: element; +} +.ant-tree li.drag-over > span[draggable] { + background-color: #1890ff; + color: white; + opacity: 0.8; +} +.ant-tree li.drag-over-gap-top > span[draggable] { + border-top-color: #1890ff; +} +.ant-tree li.drag-over-gap-bottom > span[draggable] { + border-bottom-color: #1890ff; +} +.ant-tree li.filter-node > span { + color: #f5222d !important; + font-weight: 500 !important; +} +.ant-tree li ul { + margin: 0; + padding: 0 0 0 18px; +} +.ant-tree li .ant-tree-node-content-wrapper { + display: inline-block; + padding: 0 5px; + border-radius: 2px; + margin: 0; + cursor: pointer; + text-decoration: none; + vertical-align: top; + color: #54657e; + transition: all .3s; + position: relative; + height: 24px; + line-height: 24px; +} +.ant-tree li .ant-tree-node-content-wrapper:hover { + background-color: #e6f7ff; +} +.ant-tree li .ant-tree-node-content-wrapper.ant-tree-node-selected { + background-color: #bae7ff; +} +.ant-tree li .ant-tree-node-content-wrapper .font-red { + color: #FF5500; +} +.ant-tree li span { + cursor: pointer; +} +.ant-tree li span.ant-tree-checkbox { + margin: 4px 4px 0 2px; +} +.ant-tree li span.ant-tree-switcher, +.ant-tree li span.ant-tree-iconEle { + margin: 0; + width: 24px; + height: 24px; + line-height: 24px; + display: inline-block; + vertical-align: middle; + border: 0 none; + cursor: pointer; + outline: none; + text-align: center; +} +.ant-tree li span.ant-tree-icon_loading { + background: #fff; +} +.ant-tree li span.ant-tree-icon_loading:after { + display: inline-block; + font-family: 'anticon'; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\E64D"; + animation: loadingCircle 1s infinite linear; + color: #1890ff; +} +.ant-tree li span.ant-tree-switcher.ant-tree-switcher-noop { + cursor: default; +} +.ant-tree li span.ant-tree-switcher.ant-tree-switcher_open:after { + font-size: 12px; + font-size: 7px \9; + transform: scale(0.58333333) rotate(0deg); + display: inline-block; + font-family: 'anticon'; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\e606"; + font-weight: bold; + transition: transform .3s; +} +:root .ant-tree li span.ant-tree-switcher.ant-tree-switcher_open:after { + font-size: 12px; +} +.ant-tree li span.ant-tree-switcher.ant-tree-switcher_close:after { + font-size: 12px; + font-size: 7px \9; + transform: scale(0.58333333) rotate(0deg); + display: inline-block; + font-family: 'anticon'; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\e606"; + font-weight: bold; + transition: transform .3s; +} +:root .ant-tree li span.ant-tree-switcher.ant-tree-switcher_close:after { + font-size: 12px; +} +.ant-tree li span.ant-tree-switcher.ant-tree-switcher_close:after { + transform: rotate(270deg) scale(0.59); +} +.ant-tree li:last-child > span.ant-tree-switcher:before, +.ant-tree li:last-child > span.ant-tree-iconEle:before { + display: none; +} +.ant-tree > li:first-child { + padding-top: 7px; +} +.ant-tree > li:last-child { + padding-bottom: 7px; +} +.ant-tree-child-tree { + display: none; +} +.ant-tree-child-tree-open { + display: block; +} +li.ant-tree-treenode-disabled > span, +li.ant-tree-treenode-disabled > .ant-tree-node-content-wrapper, +li.ant-tree-treenode-disabled > .ant-tree-node-content-wrapper span, +li.ant-tree-treenode-disabled > span.ant-tree-switcher { + color: rgba(0, 0, 0, 0.25); + cursor: not-allowed; +} +li.ant-tree-treenode-disabled > .ant-tree-node-content-wrapper:hover { + background: transparent; +} +.ant-tree-icon__open { + margin-right: 2px; + vertical-align: top; +} +.ant-tree-icon__close { + margin-right: 2px; + vertical-align: top; +} +.ant-tree.ant-tree-show-line li { + position: relative; +} +.ant-tree.ant-tree-show-line li span.ant-tree-switcher { + background: #fff; + color: rgba(0, 0, 0, 0.45); +} +.ant-tree.ant-tree-show-line li span.ant-tree-switcher.ant-tree-switcher-noop:after { + font-size: 12px; + font-size: 12px \9; + transform: scale(1) rotate(0deg); + display: inline-block; + font-family: 'anticon'; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\e664"; + vertical-align: baseline; + font-weight: normal; + transition: transform .3s; +} +:root .ant-tree.ant-tree-show-line li span.ant-tree-switcher.ant-tree-switcher-noop:after { + font-size: 12px; +} +.ant-tree.ant-tree-show-line li span.ant-tree-switcher.ant-tree-switcher_open:after { + font-size: 12px; + font-size: 12px \9; + transform: scale(1) rotate(0deg); + display: inline-block; + font-family: 'anticon'; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\e621"; + vertical-align: baseline; + font-weight: normal; + transition: transform .3s; +} +:root .ant-tree.ant-tree-show-line li span.ant-tree-switcher.ant-tree-switcher_open:after { + font-size: 12px; +} +.ant-tree.ant-tree-show-line li span.ant-tree-switcher.ant-tree-switcher_close:after { + font-size: 12px; + font-size: 12px \9; + transform: scale(1) rotate(0deg); + display: inline-block; + font-family: 'anticon'; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\e645"; + vertical-align: baseline; + font-weight: normal; + transition: transform .3s; +} +:root .ant-tree.ant-tree-show-line li span.ant-tree-switcher.ant-tree-switcher_close:after { + font-size: 12px; +} +.ant-tree.ant-tree-show-line > nz-tree-node:not(:last-child) > li:before, +.ant-tree.ant-tree-show-line .ant-tree-child-tree > nz-tree-node:not(:last-child) > li:before { + content: ' '; + width: 1px; + border-left: 1px solid #d9d9d9; + height: 100%; + position: absolute; + left: 12px; + margin: 22px 0; +} +.ant-tree.ant-tree-show-line .ant-tree-child-tree > nz-tree-node:last-child > li:before { + content: ' '; + width: 1px; + border-left: 0px solid #d9d9d9; + height: 100%; + position: absolute; + left: 12px; + margin: 22px 0; +} +.ant-upload { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; + outline: 0; +} +.ant-upload p { + margin: 0; +} +.ant-upload-btn { + display: block; + width: 100%; + outline: none; +} +.ant-upload input[type="file"] { + cursor: pointer; +} +.ant-upload.ant-upload-select { + display: inline-block; +} +.ant-upload.ant-upload-select-picture-card { + border: 1px dashed #d9d9d9; + width: 104px; + height: 104px; + border-radius: 4px; + background-color: #fafafa; + text-align: center; + cursor: pointer; + transition: border-color 0.3s ease; + vertical-align: top; + margin-right: 8px; + margin-bottom: 8px; + display: table; +} +.ant-upload.ant-upload-select-picture-card > .ant-upload { + width: 100%; + height: 100%; + display: table-cell; + text-align: center; + vertical-align: middle; + padding: 8px; +} +.ant-upload.ant-upload-select-picture-card:hover { + border-color: #1890ff; +} +.ant-upload.ant-upload-drag { + border: 1px dashed #d9d9d9; + transition: border-color 0.3s; + cursor: pointer; + border-radius: 4px; + text-align: center; + width: 100%; + height: 100%; + position: relative; + padding: 16px 0; + background: #fafafa; +} +.ant-upload.ant-upload-drag.ant-upload-drag-hover:not(.ant-upload-disabled) { + border: 2px dashed #40a9ff; +} +.ant-upload.ant-upload-drag.ant-upload-disabled { + cursor: not-allowed; +} +.ant-upload.ant-upload-drag .ant-upload-btn { + display: table; + height: 100%; +} +.ant-upload.ant-upload-drag .ant-upload-drag-container { + display: table-cell; + vertical-align: middle; +} +.ant-upload.ant-upload-drag:not(.ant-upload-disabled):hover { + border-color: #40a9ff; +} +.ant-upload.ant-upload-drag p.ant-upload-drag-icon { + margin-bottom: 20px; +} +.ant-upload.ant-upload-drag p.ant-upload-drag-icon .anticon { + font-size: 48px; + color: #40a9ff; +} +.ant-upload.ant-upload-drag p.ant-upload-text { + font-size: 16px; + margin: 0 0 4px; + color: rgba(0, 0, 0, 0.85); +} +.ant-upload.ant-upload-drag p.ant-upload-hint { + font-size: 14px; + color: rgba(0, 0, 0, 0.45); +} +.ant-upload.ant-upload-drag .anticon-plus { + font-size: 30px; + transition: all .3s; + color: rgba(0, 0, 0, 0.25); +} +.ant-upload.ant-upload-drag .anticon-plus:hover { + color: rgba(0, 0, 0, 0.45); +} +.ant-upload.ant-upload-drag:hover .anticon-plus { + color: rgba(0, 0, 0, 0.45); +} +.ant-upload-list { + font-family: "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #54657e; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; + zoom: 1; +} +.ant-upload-list:before, +.ant-upload-list:after { + content: " "; + display: table; +} +.ant-upload-list:after { + clear: both; + visibility: hidden; + font-size: 0; + height: 0; +} +.ant-upload-list:before, +.ant-upload-list:after { + content: " "; + display: table; +} +.ant-upload-list:after { + clear: both; + visibility: hidden; + font-size: 0; + height: 0; +} +.ant-upload-list-item { + margin-top: 8px; + font-size: 14px; + position: relative; + height: 22px; +} +.ant-upload-list-item-name { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + padding-left: 22px; + width: 100%; + display: inline-block; +} +.ant-upload-list-item-info { + height: 100%; + padding: 0 12px 0 4px; + transition: background-color 0.3s; +} +.ant-upload-list-item-info > span { + display: block; +} +.ant-upload-list-item-info .anticon-loading, +.ant-upload-list-item-info .anticon-paper-clip { + font-size: 14px; + color: rgba(0, 0, 0, 0.45); + position: absolute; + top: 5px; +} +.ant-upload-list-item .anticon-cross { + display: inline-block; + font-size: 12px; + font-size: 10px \9; + transform: scale(0.83333333) rotate(0deg); + transition: all .3s; + opacity: 0; + cursor: pointer; + position: absolute; + top: 0; + right: 4px; + color: rgba(0, 0, 0, 0.45); + line-height: 22px; +} +:root .ant-upload-list-item .anticon-cross { + font-size: 12px; +} +.ant-upload-list-item .anticon-cross:hover { + color: #54657e; +} +.ant-upload-list-item:hover .ant-upload-list-item-info { + background-color: #e6f7ff; +} +.ant-upload-list-item:hover .anticon-cross { + opacity: 1; +} +.ant-upload-list-item-error, +.ant-upload-list-item-error .anticon-paper-clip, +.ant-upload-list-item-error .ant-upload-list-item-name { + color: #f5222d; +} +.ant-upload-list-item-error .anticon-cross { + opacity: 1; + color: #f5222d !important; +} +.ant-upload-list-item-progress { + line-height: 0; + font-size: 14px; + position: absolute; + width: 100%; + bottom: -12px; + padding-left: 26px; +} +.ant-upload-list-picture .ant-upload-list-item, +.ant-upload-list-picture-card .ant-upload-list-item { + padding: 8px; + border-radius: 4px; + border: 1px solid #d9d9d9; + height: 66px; + position: relative; +} +.ant-upload-list-picture .ant-upload-list-item:hover, +.ant-upload-list-picture-card .ant-upload-list-item:hover { + background: transparent; +} +.ant-upload-list-picture .ant-upload-list-item-error, +.ant-upload-list-picture-card .ant-upload-list-item-error { + border-color: #f5222d; +} +.ant-upload-list-picture .ant-upload-list-item-info, +.ant-upload-list-picture-card .ant-upload-list-item-info { + padding: 0; +} +.ant-upload-list-picture .ant-upload-list-item:hover .ant-upload-list-item-info, +.ant-upload-list-picture-card .ant-upload-list-item:hover .ant-upload-list-item-info { + background: transparent; +} +.ant-upload-list-picture .ant-upload-list-item-uploading, +.ant-upload-list-picture-card .ant-upload-list-item-uploading { + border-style: dashed; +} +.ant-upload-list-picture .ant-upload-list-item-thumbnail, +.ant-upload-list-picture-card .ant-upload-list-item-thumbnail { + width: 48px; + height: 48px; + position: absolute; + top: 8px; + left: 8px; +} +.ant-upload-list-picture .ant-upload-list-item-thumbnail img, +.ant-upload-list-picture-card .ant-upload-list-item-thumbnail img { + width: 48px; + height: 48px; + display: block; + overflow: hidden; +} +.ant-upload-list-picture .ant-upload-list-item-thumbnail.anticon:before, +.ant-upload-list-picture-card .ant-upload-list-item-thumbnail.anticon:before { + line-height: 48px; + font-size: 24px; + color: rgba(0, 0, 0, 0.45); +} +.ant-upload-list-picture .ant-upload-list-item-name, +.ant-upload-list-picture-card .ant-upload-list-item-name { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + margin: 0 0 0 8px; + line-height: 44px; + transition: all .3s; + padding-left: 48px; + padding-right: 8px; + max-width: 100%; + display: inline-block; + box-sizing: border-box; +} +.ant-upload-list-picture .ant-upload-list-item-uploading .ant-upload-list-item-name, +.ant-upload-list-picture-card .ant-upload-list-item-uploading .ant-upload-list-item-name { + line-height: 28px; +} +.ant-upload-list-picture .ant-upload-list-item-progress, +.ant-upload-list-picture-card .ant-upload-list-item-progress { + padding-left: 56px; + margin-top: 0; + bottom: 14px; + width: calc(100% - 24px); +} +.ant-upload-list-picture .anticon-cross, +.ant-upload-list-picture-card .anticon-cross { + position: absolute; + right: 8px; + top: 8px; + line-height: 1; +} +.ant-upload-list-picture-card { + display: inline; +} +.ant-upload-list-picture-card.ant-upload-list:after { + display: none; +} +.ant-upload-list-picture-card .ant-upload-list-item { + float: left; + width: 104px; + height: 104px; + margin: 0 8px 8px 0; +} +.ant-upload-list-picture-card .ant-upload-list-item-info { + height: 100%; + position: relative; + overflow: hidden; +} +.ant-upload-list-picture-card .ant-upload-list-item-info:before { + content: ' '; + position: absolute; + z-index: 1; + background-color: rgba(0, 0, 0, 0.5); + transition: all .3s; + width: 100%; + height: 100%; + opacity: 0; +} +.ant-upload-list-picture-card .ant-upload-list-item:hover .ant-upload-list-item-info:before { + opacity: 1; +} +.ant-upload-list-picture-card .ant-upload-list-item-actions { + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + z-index: 10; + white-space: nowrap; + opacity: 0; + transition: all .3s; +} +.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-eye-o, +.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-delete { + z-index: 10; + transition: all .3s; + cursor: pointer; + font-size: 16px; + width: 16px; + color: rgba(255, 255, 255, 0.85); + margin: 0 4px; +} +.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-eye-o:hover, +.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-delete:hover { + color: #fff; +} +.ant-upload-list-picture-card .ant-upload-list-item-info:hover + .ant-upload-list-item-actions, +.ant-upload-list-picture-card .ant-upload-list-item-actions:hover { + opacity: 1; +} +.ant-upload-list-picture-card .ant-upload-list-item-thumbnail, +.ant-upload-list-picture-card .ant-upload-list-item-thumbnail img { + display: block; + width: 100%; + height: 100%; + position: static; +} +.ant-upload-list-picture-card .ant-upload-list-item-name { + margin: 8px 0 0; + padding: 0; + text-align: center; + line-height: 1.5; + display: none; +} +.ant-upload-list-picture-card .anticon-picture + .ant-upload-list-item-name { + display: block; +} +.ant-upload-list-picture-card .ant-upload-list-item-uploading.ant-upload-list-item { + background-color: #fafafa; +} +.ant-upload-list-picture-card .ant-upload-list-item-uploading .ant-upload-list-item-info { + height: auto; +} +.ant-upload-list-picture-card .ant-upload-list-item-uploading .ant-upload-list-item-info:before, +.ant-upload-list-picture-card .ant-upload-list-item-uploading .ant-upload-list-item-info .anticon-eye-o, +.ant-upload-list-picture-card .ant-upload-list-item-uploading .ant-upload-list-item-info .anticon-delete { + display: none; +} +.ant-upload-list-picture-card .ant-upload-list-item-uploading-text { + margin-top: 18px; + color: rgba(0, 0, 0, 0.45); +} +.ant-upload-list-picture-card .ant-upload-list-item-progress { + padding-left: 0; + bottom: 32px; +} +.ant-upload-list .ant-upload-success-icon { + color: #52c41a; + font-weight: bold; +} +.ant-upload-list .ant-upload-animate-enter, +.ant-upload-list .ant-upload-animate-leave, +.ant-upload-list .ant-upload-animate-inline-enter, +.ant-upload-list .ant-upload-animate-inline-leave { + animation-duration: .3s; + animation-fill-mode: cubic-bezier(0.78, 0.14, 0.15, 0.86); +} +.ant-upload-list .ant-upload-animate-enter { + animation-name: uploadAnimateIn; +} +.ant-upload-list .ant-upload-animate-leave { + animation-name: uploadAnimateOut; +} +.ant-upload-list .ant-upload-animate-inline-enter { + animation-name: uploadAnimateInlineIn; +} +.ant-upload-list .ant-upload-animate-inline-leave { + animation-name: uploadAnimateInlineOut; +} +@keyframes uploadAnimateIn { + from { + height: 0; + margin: 0; + opacity: 0; + padding: 0; + } +} +@keyframes uploadAnimateOut { + to { + height: 0; + margin: 0; + padding: 0; + opacity: 0; + } +} +@keyframes uploadAnimateInlineIn { + from { + width: 0; + height: 0; + margin: 0; + opacity: 0; + padding: 0; + } +} +@keyframes uploadAnimateInlineOut { + to { + width: 0; + height: 0; + margin: 0; + padding: 0; + opacity: 0; + } +} diff --git a/usecaseui-portal/src/my-theme.less b/usecaseui-portal/src/my-theme.less new file mode 100644 index 00000000..946b8afb --- /dev/null +++ b/usecaseui-portal/src/my-theme.less @@ -0,0 +1,11 @@ +@import "../node_modules/ng-zorro-antd/src/ng-zorro-antd.less"; + +@menu-inline-toplevel-item-height: 50px; +@menu-item-height: 50px; +@menu-highlight-color: #3fa8eb; +@text-color: #54657e; +@menu-dark-item-selected-bg: #3d4a59; +@menu-dark-color: #fff; +@menu-dark-highlight-color: #3fa8eb; +@layout-header-background: #2a3542; +@menu-dark-submenu-bg: #2a3542; diff --git a/usecaseui-portal/src/polyfills.ts b/usecaseui-portal/src/polyfills.ts new file mode 100644 index 00000000..199ac5d1 --- /dev/null +++ b/usecaseui-portal/src/polyfills.ts @@ -0,0 +1,81 @@ +/** + * This file includes polyfills needed by Angular and is loaded before the app. + * You can add your own extra polyfills to this file. + * + * This file is divided into 2 sections: + * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. + * 2. Application imports. Files imported after ZoneJS that should be loaded before your main + * file. + * + * The current setup is for so-called "evergreen" browsers; the last versions of browsers that + * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), + * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. + * + * Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html + */ + +/*************************************************************************************************** + * BROWSER POLYFILLS + */ + +/** IE9, IE10 and IE11 requires all of the following polyfills. **/ +import 'core-js/es6/symbol'; +import 'core-js/es6/object'; +import 'core-js/es6/function'; +import 'core-js/es6/parse-int'; +import 'core-js/es6/parse-float'; +import 'core-js/es6/number'; +import 'core-js/es6/math'; +import 'core-js/es6/string'; +import 'core-js/es6/date'; +import 'core-js/es6/array'; +import 'core-js/es6/regexp'; +import 'core-js/es6/map'; +import 'core-js/es6/weak-map'; +import 'core-js/es6/set'; +import 'core-js/es7/array'; +import 'core-js/es7/object'; + +/** IE10 and IE11 requires the following for NgClass support on SVG elements */ +// import 'classlist.js'; // Run `npm install --save classlist.js`. + +/** IE10 and IE11 requires the following for the Reflect API. */ +// import 'core-js/es6/reflect'; + + +/** Evergreen browsers require these. **/ +// Used for reflect-metadata in JIT. If you use AOT (and only Angular decorators), you can remove. +import 'core-js/es7/reflect'; + + +/** + * Required to support Web Animations `@angular/platform-browser/animations`. + * Needed for: All but Chrome, Firefox and Opera. http://caniuse.com/#feat=web-animation + **/ +// import 'web-animations-js'; // Run `npm install --save web-animations-js`. + +/** + * By default, zone.js will patch all possible macroTask and DomEvents + * user can disable parts of macroTask/DomEvents patch by setting following flags + */ + + // (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame + // (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick + // (window as any).__zone_symbol__BLACK_LISTED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames + + /* + * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js + * with the following flag, it will bypass `zone.js` patch for IE/Edge + */ +// (window as any).__Zone_enable_cross_context_check = true; + +/*************************************************************************************************** + * Zone JS is required by default for Angular itself. + */ +import 'zone.js/dist/zone'; // Included with Angular CLI. + + + +/*************************************************************************************************** + * APPLICATION IMPORTS + */ diff --git a/usecaseui-portal/src/styles.css b/usecaseui-portal/src/styles.css new file mode 100644 index 00000000..2b7176e6 --- /dev/null +++ b/usecaseui-portal/src/styles.css @@ -0,0 +1,113 @@ +/* + Copyright (C) 2018 CMCC, Inc. and others. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ +/* You can add global styles to this file, and also import other style files */ +.ant-dropdown-menu .ant-dropdown-menu-item:hover, +.ant-dropdown-menu .ant-dropdown-menu-submenu-title:hover { + background-color: #3fa8eb; +} +nz-table .ant-table-thead > tr > th { + color: #3fa8eb; +} +nz-table .ant-spin-container nz-pagination ul .ant-pagination-options .ant-pagination-options-size-changer.ant-select { + position: absolute; + left: 0; +} +.detailInformatioin nz-table .ant-table-small { + border-color: #dfdfe0; + border-right: 0; +} +.detailInformatioin nz-table .ant-table-small .ant-table-content { + border-color: #dfdfe0; +} +.detailInformatioin nz-table .ant-table-small .ant-table-content .ant-table-body > table { + padding: 0; +} +.detailInformatioin nz-table .ant-table-small .ant-table-content .ant-table-body > table .ant-table-thead > tr > th { + background-color: #f0f2f5; + font-weight: 700; + font-size: 14px; + padding: 2px 15px; + border-color: #dfdfe0; +} +.detailInformatioin nz-table .ant-table-small .ant-table-content .ant-table-body > table .ant-table-tbody > tr > td { + background-color: #f0f2f5; + font-size: 14px; + padding: 2px 15px; + color: #323437; + border-color: #dfdfe0; +} +.ant-calendar-picker .ant-input { + background-color: #eceff4; + border-color: #9fa9ab; +} +nz-pagination ul .ant-pagination-options .ant-pagination-options-size-changer.ant-select { + position: absolute; + left: 0; +} +html, +body, +div, +h1, +h2, +h3, +h4, +h5, +h6, +p, +ul, +li, +a, +span { + margin: 0; + padding: 0; + box-sizing: border-box; + list-style: none; + text-decoration: none; +} +body { + padding: 0 !important; +} +.fl { + float: left; +} +.fr { + float: right; +} +.clearfix:after { + content: ""; + height: 0; + line-height: 0; + display: block; + visibility: hidden; + clear: both; +} +.deleteModelContent { + color: red; +} +/* WAN Port */ +.wanPortModalList li { + height: 35px; +} +.wanPortModalList li > span { + display: inline-block; + width: 165px; + font: 700 14px "Arial"; + color: #3fa8eb; + vertical-align: middle; +} +.wanPortModalList li input { + width: 165px; +} diff --git a/usecaseui-portal/src/styles.less b/usecaseui-portal/src/styles.less new file mode 100644 index 00000000..5429a9c1 --- /dev/null +++ b/usecaseui-portal/src/styles.less @@ -0,0 +1,117 @@ +/* You can add global styles to this file, and also import other style files */ +// 下拉框背景hover状态颜色 +.ant-dropdown-menu { + .ant-dropdown-menu-item:hover, .ant-dropdown-menu-submenu-title:hover { + background-color: #3fa8eb; + } +} +// 表格每页条数选项单位置 +nz-table { + .ant-table-thead>tr>th { + color: #3fa8eb; //标题字体颜色 + } + .ant-spin-container { + nz-pagination { + ul { + .ant-pagination-options { + .ant-pagination-options-size-changer.ant-select{ + position: absolute; + left: 0; + } + } + } + } + } +} + +// 详情页迷你表格样式 +.detailInformatioin { + nz-table { + .ant-table-small { + border-color: #dfdfe0; + border-right: 0; + .ant-table-content { + border-color: #dfdfe0; + .ant-table-body > table { + padding: 0; + .ant-table-thead > tr > th { + background-color: #f0f2f5; + font-weight: 700; + font-size: 14px; + padding: 2px 15px; + border-color: #dfdfe0; + } + .ant-table-tbody > tr > td { + background-color: #f0f2f5; + font-size: 14px; + padding: 2px 15px; + color: #323437; + border-color: #dfdfe0; + } + } + } + } + } +} + +// 日期选择插件背景颜色 +.ant-calendar-picker { + .ant-input { + background-color: #eceff4; + border-color: #9fa9ab; + } +} +// 分页每页条数选项单位置 +nz-pagination { + ul { + .ant-pagination-options { + .ant-pagination-options-size-changer.ant-select{ + position: absolute; + left: 0; + } + } + } +} + +html,body,div,h1,h2,h3,h4,h5,h6,p,ul,li,a,span { + margin: 0; + padding: 0; + box-sizing: border-box; + list-style: none; + text-decoration: none; +} +body { + padding: 0 !important; +} +.fl { + float: left; +} +.fr { + float: right; +} +.clearfix:after{ + content:""; + height:0; + line-height:0; + display:block; + visibility:hidden; + clear:both +} +.deleteModelContent { + color: red; +} + +/* WAN Port */ +.wanPortModalList li { + height: 35px; + >span{ + display: inline-block; + width: 165px; + font: 700 14px "Arial"; + color: #3fa8eb; + vertical-align: middle; + } + input { + width: 165px; + } +}
\ No newline at end of file diff --git a/usecaseui-portal/src/test.ts b/usecaseui-portal/src/test.ts new file mode 100644 index 00000000..16317897 --- /dev/null +++ b/usecaseui-portal/src/test.ts @@ -0,0 +1,20 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: any; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/usecaseui-portal/src/tsconfig.app.json b/usecaseui-portal/src/tsconfig.app.json new file mode 100644 index 00000000..39ba8dba --- /dev/null +++ b/usecaseui-portal/src/tsconfig.app.json @@ -0,0 +1,13 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/app", + "baseUrl": "./", + "module": "es2015", + "types": [] + }, + "exclude": [ + "test.ts", + "**/*.spec.ts" + ] +} diff --git a/usecaseui-portal/src/tsconfig.spec.json b/usecaseui-portal/src/tsconfig.spec.json new file mode 100644 index 00000000..ac22a298 --- /dev/null +++ b/usecaseui-portal/src/tsconfig.spec.json @@ -0,0 +1,19 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/spec", + "baseUrl": "./", + "module": "commonjs", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/usecaseui-portal/src/typings.d.ts b/usecaseui-portal/src/typings.d.ts new file mode 100644 index 00000000..ef5c7bd6 --- /dev/null +++ b/usecaseui-portal/src/typings.d.ts @@ -0,0 +1,5 @@ +/* SystemJS module definition */ +declare var module: NodeModule; +interface NodeModule { + id: string; +} diff --git a/usecaseui-portal/tsconfig.json b/usecaseui-portal/tsconfig.json new file mode 100644 index 00000000..a6c016bf --- /dev/null +++ b/usecaseui-portal/tsconfig.json @@ -0,0 +1,19 @@ +{ + "compileOnSave": false, + "compilerOptions": { + "outDir": "./dist/out-tsc", + "sourceMap": true, + "declaration": false, + "moduleResolution": "node", + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "target": "es5", + "typeRoots": [ + "node_modules/@types" + ], + "lib": [ + "es2017", + "dom" + ] + } +} |