Compare commits
16 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
10fbc40d68 | ||
|
94880b7b1f | ||
|
fecebdd0a7 | ||
|
1a49bec3d4 | ||
|
64f9631946 | ||
|
84169a2c1e | ||
|
2a9ced5cbd | ||
|
ee5b88e19a | ||
|
608fcfd04e | ||
|
ad0c96a40e | ||
|
aa59462526 | ||
|
99c6502a65 | ||
|
ffb0e66b34 | ||
|
28d27194be | ||
|
52f772676b | ||
|
985d3a9ab3 |
21
.github/workflows/main.yml
vendored
@ -2,7 +2,7 @@ name: Build
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- '**'
|
||||
- '**'
|
||||
pull_request:
|
||||
branches:
|
||||
- master
|
||||
@ -10,19 +10,16 @@ on:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
node: [ 14, 16, 18 ]
|
||||
name: Node ${{ matrix.node }}
|
||||
runs-on: windows-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Setup Node ${{ matrix.node }}
|
||||
uses: actions/setup-node@v3
|
||||
- uses: actions/checkout@v2
|
||||
- name: Setup node 14
|
||||
uses: actions/setup-node@v2
|
||||
with:
|
||||
node-version: ${{ matrix.node }}
|
||||
cache: 'yarn'
|
||||
node-version: 14.x
|
||||
- uses: c-hive/gha-yarn-cache@v1
|
||||
- name: Install JS dependencies
|
||||
run: yarn install --frozen-lockfile --immutable
|
||||
run: yarn install
|
||||
- name: Test
|
||||
run: yarn test
|
||||
|
4
.gitignore
vendored
@ -2,6 +2,7 @@
|
||||
|
||||
# compiled output
|
||||
/.angular
|
||||
/dist
|
||||
/tmp
|
||||
/out-tsc
|
||||
/ng-dist
|
||||
@ -11,7 +12,6 @@
|
||||
/scripts/build
|
||||
/scripts/dist
|
||||
/env
|
||||
/.angular
|
||||
|
||||
# dependencies
|
||||
/node_modules
|
||||
@ -58,4 +58,4 @@ licenses.csv
|
||||
.temp-var-file.ts
|
||||
|
||||
# external software
|
||||
/external
|
||||
/external
|
@ -1,4 +0,0 @@
|
||||
#!/usr/bin/env sh
|
||||
. "$(dirname -- "$0")/_/husky.sh"
|
||||
|
||||
# yarn test
|
3
.vscode/settings.json
vendored
@ -1,3 +0,0 @@
|
||||
{
|
||||
"angular.enable-strict-mode-prompt": false
|
||||
}
|
@ -3,11 +3,11 @@ __tests__
|
||||
node_modules/*/test
|
||||
node_modules/*/tests
|
||||
powered-test
|
||||
#e2e
|
||||
e2e
|
||||
|
||||
# asset directories
|
||||
docs
|
||||
#doc
|
||||
doc
|
||||
website
|
||||
images
|
||||
|
||||
|
478
angular.json
@ -1,235 +1,247 @@
|
||||
{
|
||||
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
|
||||
"version": 1,
|
||||
"newProjectRoot": "projects",
|
||||
"projects": {
|
||||
"gns3-web-ui": {
|
||||
"root": "",
|
||||
"sourceRoot": "src",
|
||||
"projectType": "application",
|
||||
"architect": {
|
||||
"build": {
|
||||
"builder": "@angular-devkit/build-angular:browser",
|
||||
"options": {
|
||||
"allowedCommonJsDependencies": [
|
||||
"rxjs",
|
||||
"rxjs-compat",
|
||||
"uuid",
|
||||
"css-tree",
|
||||
"save-svg-as-png",
|
||||
"angular-draggable-droppable",
|
||||
"dom-set",
|
||||
"dom-plane",
|
||||
"mousetrap",
|
||||
"@mattlewis92/dom-autoscroller",
|
||||
"rxjs/Rx",
|
||||
"rxjs/add/operator/map",
|
||||
"rxjs-compat/add/operator/map",
|
||||
"classnames",
|
||||
"stylenames",
|
||||
"source-map-js",
|
||||
"spark-md5",
|
||||
"xterm",
|
||||
"xterm-addon-attach",
|
||||
"xterm-addon-fit",
|
||||
"ipaddr.js"
|
||||
],
|
||||
"outputPath": "dist",
|
||||
"index": "src/index.html",
|
||||
"main": "src/main.ts",
|
||||
"tsConfig": "src/tsconfig.app.json",
|
||||
"polyfills": "src/polyfills.ts",
|
||||
"assets": [
|
||||
"src/assets",
|
||||
"src/favicon.ico",
|
||||
"src/ReleaseNotes.txt"
|
||||
],
|
||||
"styles": [
|
||||
"node_modules/bootstrap/dist/css/bootstrap.min.css",
|
||||
"node_modules/notosans-fontface/css/notosans-fontface.min.css",
|
||||
"src/styles.scss",
|
||||
"src/theme.scss"
|
||||
],
|
||||
"scripts": [],
|
||||
"vendorChunk": true,
|
||||
"extractLicenses": false,
|
||||
"buildOptimizer": true,
|
||||
"sourceMap": true,
|
||||
"optimization": false,
|
||||
"namedChunks": true,
|
||||
"aot": true
|
||||
},
|
||||
"configurations": {
|
||||
"production": {
|
||||
"budgets": [{
|
||||
"type": "anyComponentStyle",
|
||||
"maximumWarning": "6kb"
|
||||
}],
|
||||
"optimization": true,
|
||||
"outputHashing": "all",
|
||||
"sourceMap": {
|
||||
"hidden": true,
|
||||
"scripts": true,
|
||||
"styles": false
|
||||
},
|
||||
"namedChunks": false,
|
||||
"extractLicenses": true,
|
||||
"vendorChunk": false,
|
||||
"buildOptimizer": true,
|
||||
"fileReplacements": [{
|
||||
"replace": "src/environments/environment.ts",
|
||||
"with": "src/environments/environment.prod.ts"
|
||||
}]
|
||||
},
|
||||
"electronProd": {
|
||||
"budgets": [{
|
||||
"type": "anyComponentStyle",
|
||||
"maximumWarning": "6kb"
|
||||
}],
|
||||
"optimization": true,
|
||||
"outputHashing": "all",
|
||||
"sourceMap": false,
|
||||
"namedChunks": false,
|
||||
"extractLicenses": true,
|
||||
"vendorChunk": false,
|
||||
"buildOptimizer": true,
|
||||
"fileReplacements": [{
|
||||
"replace": "src/environments/environment.ts",
|
||||
"with": "src/environments/environment.electron.prod.ts"
|
||||
}]
|
||||
},
|
||||
"electronDev": {
|
||||
"budgets": [{
|
||||
"type": "anyComponentStyle",
|
||||
"maximumWarning": "6kb"
|
||||
}],
|
||||
"fileReplacements": [{
|
||||
"replace": "src/environments/environment.ts",
|
||||
"with": "src/environments/environment.electron.ts"
|
||||
}]
|
||||
},
|
||||
"githubProd": {
|
||||
"budgets": [{
|
||||
"type": "anyComponentStyle",
|
||||
"maximumWarning": "6kb"
|
||||
}],
|
||||
"optimization": true,
|
||||
"outputHashing": "all",
|
||||
"sourceMap": false,
|
||||
"namedChunks": false,
|
||||
"extractLicenses": true,
|
||||
"vendorChunk": false,
|
||||
"buildOptimizer": true,
|
||||
"fileReplacements": [{
|
||||
"replace": "src/environments/environment.ts",
|
||||
"with": "src/environments/environment.github.prod.ts"
|
||||
}]
|
||||
}
|
||||
}
|
||||
},
|
||||
"serve": {
|
||||
"builder": "@angular-devkit/build-angular:dev-server",
|
||||
"options": {
|
||||
"browserTarget": "gns3-web-ui:build"
|
||||
},
|
||||
"configurations": {
|
||||
"production": {
|
||||
"browserTarget": "gns3-web-ui:build:production"
|
||||
},
|
||||
"electronProd": {
|
||||
"browserTarget": "gns3-web-ui:build:electronProd"
|
||||
},
|
||||
"electronDev": {
|
||||
"browserTarget": "gns3-web-ui:build:electronDev"
|
||||
},
|
||||
"githubProd": {
|
||||
"browserTarget": "gns3-web-ui:build:githubProd"
|
||||
}
|
||||
}
|
||||
},
|
||||
"extract-i18n": {
|
||||
"builder": "@angular-devkit/build-angular:extract-i18n",
|
||||
"options": {
|
||||
"browserTarget": "gns3-web-ui:build"
|
||||
}
|
||||
},
|
||||
"test": {
|
||||
"builder": "@angular-devkit/build-angular:karma",
|
||||
"options": {
|
||||
"main": "src/test.ts",
|
||||
"karmaConfig": "./karma.conf.js",
|
||||
"polyfills": "src/polyfills.ts",
|
||||
"tsConfig": "src/tsconfig.spec.json",
|
||||
"scripts": [],
|
||||
"styles": [
|
||||
"node_modules/bootstrap/dist/css/bootstrap.min.css",
|
||||
"node_modules/notosans-fontface/css/notosans-fontface.min.css",
|
||||
"src/styles.scss",
|
||||
"src/theme.scss"
|
||||
],
|
||||
"sourceMap": false,
|
||||
"assets": [
|
||||
"src/assets",
|
||||
"src/favicon.ico"
|
||||
]
|
||||
}
|
||||
},
|
||||
"lint": {
|
||||
"builder": "@angular-devkit/build-angular:tslint",
|
||||
"options": {
|
||||
"tsConfig": [
|
||||
"src/tsconfig.app.json",
|
||||
"src/tsconfig.spec.json"
|
||||
],
|
||||
"exclude": [
|
||||
"**/node_modules/**",
|
||||
"**/*.spec.ts"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"schematics": {
|
||||
"@schematics/angular:component": {
|
||||
"style": "scss"
|
||||
}
|
||||
}
|
||||
},
|
||||
"gns3-web-ui-e2e": {
|
||||
"root": "e2e",
|
||||
"sourceRoot": "e2e",
|
||||
"projectType": "application",
|
||||
"architect": {
|
||||
"e2e": {
|
||||
"builder": "@angular-devkit/build-angular:protractor",
|
||||
"options": {
|
||||
"protractorConfig": "./protractor.conf.js",
|
||||
"devServerTarget": "gns3-web-ui:serve"
|
||||
}
|
||||
},
|
||||
"lint": {
|
||||
"builder": "@angular-devkit/build-angular:tslint",
|
||||
"options": {
|
||||
"tsConfig": [
|
||||
"e2e/tsconfig.e2e.json"
|
||||
],
|
||||
"exclude": [
|
||||
"**/node_modules/**"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"schematics": {
|
||||
"@schematics/angular:component": {
|
||||
"prefix": "app",
|
||||
"style": "scss"
|
||||
},
|
||||
"@schematics/angular:directive": {
|
||||
"prefix": "app"
|
||||
}
|
||||
},
|
||||
"cli": {
|
||||
"analytics": false
|
||||
}
|
||||
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
|
||||
"version": 1,
|
||||
"newProjectRoot": "projects",
|
||||
"projects": {
|
||||
"gns3-web-ui": {
|
||||
"root": "",
|
||||
"sourceRoot": "src",
|
||||
"projectType": "application",
|
||||
"architect": {
|
||||
"build": {
|
||||
"builder": "@angular-devkit/build-angular:browser",
|
||||
"options": {
|
||||
"allowedCommonJsDependencies": [
|
||||
"rxjs",
|
||||
"rxjs-compat",
|
||||
"uuid",
|
||||
"css-tree",
|
||||
"save-svg-as-png",
|
||||
"angular-draggable-droppable",
|
||||
"dom-set",
|
||||
"dom-plane",
|
||||
"mousetrap",
|
||||
"@mattlewis92/dom-autoscroller",
|
||||
"rxjs/Rx",
|
||||
"rxjs/add/operator/map",
|
||||
"rxjs-compat/add/operator/map",
|
||||
"classnames",
|
||||
"stylenames",
|
||||
"ipaddr.js"
|
||||
],
|
||||
"outputPath": "dist",
|
||||
"index": "src/index.html",
|
||||
"main": "src/main.ts",
|
||||
"tsConfig": "src/tsconfig.app.json",
|
||||
"polyfills": "src/polyfills.ts",
|
||||
"assets": [
|
||||
"src/assets",
|
||||
"src/favicon.ico",
|
||||
"src/ReleaseNotes.txt"
|
||||
],
|
||||
"styles": [
|
||||
"node_modules/bootstrap/dist/css/bootstrap.min.css",
|
||||
"node_modules/notosans-fontface/css/notosans-fontface.min.css",
|
||||
"src/styles.scss",
|
||||
"src/theme.scss"
|
||||
],
|
||||
"scripts": [],
|
||||
"vendorChunk": true,
|
||||
"extractLicenses": false,
|
||||
"buildOptimizer": true,
|
||||
"sourceMap": true,
|
||||
"optimization": false,
|
||||
"namedChunks": true,
|
||||
"aot": true
|
||||
},
|
||||
"configurations": {
|
||||
"production": {
|
||||
"budgets": [
|
||||
{
|
||||
"type": "anyComponentStyle",
|
||||
"maximumWarning": "6kb"
|
||||
}
|
||||
],
|
||||
"optimization": true,
|
||||
"outputHashing": "all",
|
||||
"sourceMap": {
|
||||
"hidden": true,
|
||||
"scripts": true,
|
||||
"styles": false
|
||||
},
|
||||
"namedChunks": false,
|
||||
"extractLicenses": true,
|
||||
"vendorChunk": false,
|
||||
"buildOptimizer": true,
|
||||
"fileReplacements": [
|
||||
{
|
||||
"replace": "src/environments/environment.ts",
|
||||
"with": "src/environments/environment.prod.ts"
|
||||
}
|
||||
]
|
||||
},
|
||||
"electronProd": {
|
||||
"budgets": [
|
||||
{
|
||||
"type": "anyComponentStyle",
|
||||
"maximumWarning": "6kb"
|
||||
}
|
||||
],
|
||||
"optimization": true,
|
||||
"outputHashing": "all",
|
||||
"sourceMap": false,
|
||||
"namedChunks": false,
|
||||
"extractLicenses": true,
|
||||
"vendorChunk": false,
|
||||
"buildOptimizer": true,
|
||||
"fileReplacements": [
|
||||
{
|
||||
"replace": "src/environments/environment.ts",
|
||||
"with": "src/environments/environment.electron.prod.ts"
|
||||
}
|
||||
]
|
||||
},
|
||||
"electronDev": {
|
||||
"budgets": [
|
||||
{
|
||||
"type": "anyComponentStyle",
|
||||
"maximumWarning": "6kb"
|
||||
}
|
||||
],
|
||||
"fileReplacements": [
|
||||
{
|
||||
"replace": "src/environments/environment.ts",
|
||||
"with": "src/environments/environment.electron.ts"
|
||||
}
|
||||
]
|
||||
},
|
||||
"githubProd": {
|
||||
"budgets": [
|
||||
{
|
||||
"type": "anyComponentStyle",
|
||||
"maximumWarning": "6kb"
|
||||
}
|
||||
],
|
||||
"optimization": true,
|
||||
"outputHashing": "all",
|
||||
"sourceMap": false,
|
||||
"namedChunks": false,
|
||||
"extractLicenses": true,
|
||||
"vendorChunk": false,
|
||||
"buildOptimizer": true,
|
||||
"fileReplacements": [
|
||||
{
|
||||
"replace": "src/environments/environment.ts",
|
||||
"with": "src/environments/environment.github.prod.ts"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"serve": {
|
||||
"builder": "@angular-devkit/build-angular:dev-server",
|
||||
"options": {
|
||||
"browserTarget": "gns3-web-ui:build"
|
||||
},
|
||||
"configurations": {
|
||||
"production": {
|
||||
"browserTarget": "gns3-web-ui:build:production"
|
||||
},
|
||||
"electronProd": {
|
||||
"browserTarget": "gns3-web-ui:build:electronProd"
|
||||
},
|
||||
"electronDev": {
|
||||
"browserTarget": "gns3-web-ui:build:electronDev"
|
||||
},
|
||||
"githubProd": {
|
||||
"browserTarget": "gns3-web-ui:build:githubProd"
|
||||
}
|
||||
}
|
||||
},
|
||||
"extract-i18n": {
|
||||
"builder": "@angular-devkit/build-angular:extract-i18n",
|
||||
"options": {
|
||||
"browserTarget": "gns3-web-ui:build"
|
||||
}
|
||||
},
|
||||
"test": {
|
||||
"builder": "@angular-devkit/build-angular:karma",
|
||||
"options": {
|
||||
"main": "src/test.ts",
|
||||
"karmaConfig": "./karma.conf.js",
|
||||
"polyfills": "src/polyfills.ts",
|
||||
"tsConfig": "src/tsconfig.spec.json",
|
||||
"scripts": [],
|
||||
"styles": [
|
||||
"node_modules/bootstrap/dist/css/bootstrap.min.css",
|
||||
"node_modules/notosans-fontface/css/notosans-fontface.min.css",
|
||||
"src/styles.scss",
|
||||
"src/theme.scss"
|
||||
],
|
||||
"sourceMap": false,
|
||||
"assets": [
|
||||
"src/assets",
|
||||
"src/favicon.ico"
|
||||
]
|
||||
}
|
||||
},
|
||||
"lint": {
|
||||
"builder": "@angular-devkit/build-angular:tslint",
|
||||
"options": {
|
||||
"tsConfig": [
|
||||
"src/tsconfig.app.json",
|
||||
"src/tsconfig.spec.json"
|
||||
],
|
||||
"exclude": [
|
||||
"**/node_modules/**",
|
||||
"**/*.spec.ts"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"schematics": {
|
||||
"@schematics/angular:component": {
|
||||
"style": "scss"
|
||||
}
|
||||
}
|
||||
},
|
||||
"gns3-web-ui-e2e": {
|
||||
"root": "e2e",
|
||||
"sourceRoot": "e2e",
|
||||
"projectType": "application",
|
||||
"architect": {
|
||||
"e2e": {
|
||||
"builder": "@angular-devkit/build-angular:protractor",
|
||||
"options": {
|
||||
"protractorConfig": "./protractor.conf.js",
|
||||
"devServerTarget": "gns3-web-ui:serve"
|
||||
}
|
||||
},
|
||||
"lint": {
|
||||
"builder": "@angular-devkit/build-angular:tslint",
|
||||
"options": {
|
||||
"tsConfig": [
|
||||
"e2e/tsconfig.e2e.json"
|
||||
],
|
||||
"exclude": [
|
||||
"**/node_modules/**"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"defaultProject": "gns3-web-ui",
|
||||
"schematics": {
|
||||
"@schematics/angular:component": {
|
||||
"prefix": "app",
|
||||
"style": "scss"
|
||||
},
|
||||
"@schematics/angular:directive": {
|
||||
"prefix": "app"
|
||||
}
|
||||
},
|
||||
"cli": {
|
||||
"analytics": false
|
||||
}
|
||||
}
|
||||
|
2604
dist/3rdpartylicenses.txt
vendored
1
dist/465.92c7ab880f2504d3.js
vendored
BIN
dist/MaterialIcons-Regular.196fa4a92dd6fa73.ttf
vendored
BIN
dist/MaterialIcons-Regular.1e50f5c2ffa6aba4.eot
vendored
BIN
dist/MaterialIcons-Regular.7ea2023eeca07427.woff2
vendored
BIN
dist/MaterialIcons-Regular.db852539204b1a34.woff
vendored
BIN
dist/NotoSans-Bold.635e9291df1a5a00.woff2
vendored
BIN
dist/NotoSans-Bold.885427cced6d8c94.woff
vendored
8453
dist/NotoSans-Bold.93203a43bc93ad9c.svg
vendored
Before Width: | Height: | Size: 1.3 MiB |
BIN
dist/NotoSans-Bold.a7ab189a45f553b4.eot
vendored
BIN
dist/NotoSans-Bold.e989c11744b36f58.ttf
vendored
BIN
dist/NotoSans-BoldItalic.2baf33b639fc86a4.woff
vendored
BIN
dist/NotoSans-BoldItalic.2eea9ba02e25c1d3.ttf
vendored
8453
dist/NotoSans-BoldItalic.46a5eec91da0d900.svg
vendored
Before Width: | Height: | Size: 1.4 MiB |
BIN
dist/NotoSans-BoldItalic.7fdef73b477daa73.eot
vendored
BIN
dist/NotoSans-BoldItalic.c62f70f121f271aa.woff2
vendored
BIN
dist/NotoSans-Italic.219ee88e5bc4e168.ttf
vendored
8453
dist/NotoSans-Italic.3d6f7cf772169c8d.svg
vendored
Before Width: | Height: | Size: 1.4 MiB |
BIN
dist/NotoSans-Italic.77cd3818b5a2cb97.woff
vendored
BIN
dist/NotoSans-Italic.85194585ae9d8c36.eot
vendored
BIN
dist/NotoSans-Italic.eee02500e81db981.woff2
vendored
BIN
dist/NotoSans-Regular.156b7584192d70ed.eot
vendored
BIN
dist/NotoSans-Regular.374d132a6803e279.woff2
vendored
BIN
dist/NotoSans-Regular.595e3f5876719740.woff
vendored
8453
dist/NotoSans-Regular.bb384defbe36eaec.svg
vendored
Before Width: | Height: | Size: 1.3 MiB |
BIN
dist/NotoSans-Regular.e6139cb1663a1c57.ttf
vendored
179
dist/ReleaseNotes.txt
vendored
@ -1,179 +0,0 @@
|
||||
GNS3 WebUI is web implementation of user interface for GNS3 software.
|
||||
|
||||
Current version: 2.2.24
|
||||
|
||||
Bug Fixes & enhancements
|
||||
- security fixes
|
||||
|
||||
Current version: 2020.4.0-beta.1
|
||||
|
||||
Bug Fixes & enhancements
|
||||
- symbol is not properly selected in change symbol dialog
|
||||
- issue when using the scroll wheel on the web console
|
||||
- missing settings for Docker nodes
|
||||
- error on servers page
|
||||
|
||||
What's new
|
||||
- double click nodes to open the console
|
||||
|
||||
Current version: 2020.3.0-beta.3
|
||||
|
||||
Bug Fixes & enhancements
|
||||
- direct download URL in template dialog
|
||||
- fix for issues with suspnded nodes
|
||||
- fix for bug with deleting templates
|
||||
- fix for importing images
|
||||
|
||||
What's new
|
||||
- Option to resize console
|
||||
- Improvements in creating templates
|
||||
|
||||
GNS3 Web UI 2020.3.0-beta.1
|
||||
|
||||
Bug Fixes & enhancements
|
||||
- refreshing list of templates after adding new template from project map
|
||||
- link to preferences from project page
|
||||
- disallow user to create Qemu template when binary is not selected
|
||||
- extending the time for notification to appear
|
||||
- open first settings menu at start
|
||||
- the menu for the map rearranged
|
||||
- restyling SystemStatus page
|
||||
- marking files which already exist in appliance wizard
|
||||
|
||||
What's new
|
||||
- Option to import appliances
|
||||
|
||||
GNS3 Web UI 2020.2.0-beta.5
|
||||
|
||||
Bug Fixes
|
||||
|
||||
- Bug in symbol selection
|
||||
- Same question is asked after going back to project
|
||||
- Cannot read property 'forEach' of undefined
|
||||
- Error when selecting existing Docker image
|
||||
- Invalid property when adding VMware VM template
|
||||
- Invalid type for adapters field when adding Docker template
|
||||
- Prevent user to move to another step when adding template
|
||||
- Web UI cannot set flag "Leave this project running in the background after closing"
|
||||
|
||||
What's new
|
||||
- Default values in templates
|
||||
- New option for Qemu VMs
|
||||
- Ability to quickly change Hostname from right click
|
||||
- Progress bar for node creation
|
||||
|
||||
GNS3 Web UI 2020.2.0-beta.4
|
||||
|
||||
Bug Fixes
|
||||
- New port setting for GNS3 VM preferences
|
||||
- Option to auto-hide menu toolbar on the left side
|
||||
-Controller type in template preferences
|
||||
- Error when selecting existing Docker image
|
||||
- Default values in templates
|
||||
- TypeError: Cannot read property 'message' of undefined
|
||||
- TypeError: e.error is undefined
|
||||
- TypeError: Cannot read property 'placements' of null
|
||||
- Creating IOS templates -> fix for platforms and network adapters
|
||||
|
||||
GNS3 Web UI 2020.2.0-beta.2
|
||||
|
||||
What's New
|
||||
- Drag & drop to add new nodes on topology
|
||||
- Option to minimize/maximize and hide console widget
|
||||
- Ability to add IOS templates
|
||||
- Node names in HTTP console tabs
|
||||
- Default settings for templates
|
||||
- Support for adding IOS images
|
||||
- Node dialog updated
|
||||
- Messages with description in toasts
|
||||
- Adding interfaces to cloud nodes
|
||||
- Changes in notification box mechanism (once per day option)
|
||||
- Additional tooltips added
|
||||
- Copy/paste options in console (only Chrome full support)
|
||||
- More details for server failed connections
|
||||
|
||||
Bug Fixes
|
||||
- Fix for console icons
|
||||
- Fix for creating ethernet switches and hubs
|
||||
- Fix for opening console from context menu
|
||||
- Qemu configurator now works properly
|
||||
- Fixes in snap to grid option
|
||||
- Symbols preview now works correctly
|
||||
- Error messages in preferences should be displayed
|
||||
- Default values for New Ethernet devices in configurator
|
||||
- Fix for wrong adapter types in Qemu
|
||||
- Fix for fit in view option on Firefox
|
||||
- Fix for navigation errors
|
||||
|
||||
GNS3 Web UI 2020.2.0-beta.1
|
||||
|
||||
What's New
|
||||
- Support for suspended status added
|
||||
- Suport for 404 page
|
||||
- Actions for group of nodes added
|
||||
- Updating packages
|
||||
- Button to close project added
|
||||
- Opening ads in new window
|
||||
- New dialog for adding nodes
|
||||
- Option to import config
|
||||
- Support for light theme added
|
||||
|
||||
Bug Fixes
|
||||
- Fix for navigating to project that doesn't exist
|
||||
- Fix for AdButler errors
|
||||
- Fix for screenshot issue
|
||||
- Proper centering of icons
|
||||
- Fix for adding custom symbols
|
||||
- Fix for return command in console
|
||||
- Fix for deleting links
|
||||
- Fix for duplicating any node type
|
||||
- Fix for console errors on servers page
|
||||
- Fix for console errors on projects page
|
||||
|
||||
GNS3 Web UI 2019.2.0 v10
|
||||
|
||||
What's New
|
||||
- Qemu image configurator
|
||||
- Custom console for particular node
|
||||
- Option to connect console to all nodes
|
||||
- Option to start Winpcap
|
||||
- Filtering devices with packet filters on topology summary
|
||||
- Filtering devices with captures on topology summary
|
||||
- View options taken from map configuration
|
||||
- Servers summary widget
|
||||
- Ability to lock single item on the map
|
||||
- Editing & import & export config files
|
||||
- Context menu for inserted drawings
|
||||
- Ability to drag topology summary & servers summary & console widgets
|
||||
- Ability to resize topology summary & servers summary & console widgets
|
||||
- Option to show the grid
|
||||
- Option to snap to grid
|
||||
- Usage instructions available from context menu
|
||||
- Errors & warnings visible as notifications
|
||||
- Fit in view options
|
||||
- Support for global variables
|
||||
- Support for layers
|
||||
- Extending template preferences
|
||||
|
||||
Bug Fixes
|
||||
- Input validation in styles editor
|
||||
- Fix for saving map as image
|
||||
- Removing errors with uncorrect subscriptions
|
||||
|
||||
GNS3 Web UI 2019.2.0 v9
|
||||
|
||||
What's New
|
||||
- Editing interface labels on double click
|
||||
- Support for keyboard shortcuts
|
||||
- Menu extended with option to delete currently opened project, export & import project
|
||||
- Possibility to save current state of project
|
||||
- Ability to duplicate project from projects page
|
||||
- Node information dialog available from context menu
|
||||
- Topology summary widget on map view
|
||||
- Improvements in dialog styles
|
||||
|
||||
Bug Fixes
|
||||
- Removing issues with opening console
|
||||
- Context menu now is correctly placed
|
||||
- Text validation in dialogs
|
||||
- Removing errors with creating WebSockets
|
BIN
dist/assets/favicon.ico
vendored
Before Width: | Height: | Size: 15 KiB |
88
dist/assets/gns3_icon.svg
vendored
Before Width: | Height: | Size: 11 KiB |
88
dist/assets/gns3_icon_black.svg
vendored
Before Width: | Height: | Size: 11 KiB |
BIN
dist/assets/icons/mac/icon.icns
vendored
BIN
dist/assets/icons/png/1024x1024.png
vendored
Before Width: | Height: | Size: 105 KiB |
BIN
dist/assets/icons/png/128x128.png
vendored
Before Width: | Height: | Size: 10 KiB |
BIN
dist/assets/icons/png/16x16.png
vendored
Before Width: | Height: | Size: 734 B |
BIN
dist/assets/icons/png/24x24.png
vendored
Before Width: | Height: | Size: 1.3 KiB |
BIN
dist/assets/icons/png/256x256.png
vendored
Before Width: | Height: | Size: 24 KiB |
BIN
dist/assets/icons/png/32x32.png
vendored
Before Width: | Height: | Size: 1.7 KiB |
BIN
dist/assets/icons/png/48x48.png
vendored
Before Width: | Height: | Size: 3.0 KiB |
BIN
dist/assets/icons/png/512x512.png
vendored
Before Width: | Height: | Size: 50 KiB |
BIN
dist/assets/icons/png/64x64.png
vendored
Before Width: | Height: | Size: 4.3 KiB |
BIN
dist/assets/icons/win/icon.ico
vendored
Before Width: | Height: | Size: 353 KiB |
BIN
dist/assets/logo-header.png
vendored
Before Width: | Height: | Size: 5.6 KiB |
428
dist/assets/resources/images/filter-capture.svg
vendored
@ -1,428 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
sodipodi:docname="filter-capture.svg"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:version="0.32"
|
||||
id="svg11300"
|
||||
height="48px"
|
||||
width="48px"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||
version="1.1">
|
||||
<defs
|
||||
id="defs3">
|
||||
<linearGradient
|
||||
id="linearGradient2846">
|
||||
<stop
|
||||
id="stop2848"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#8a8a8a;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
id="stop2850"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#484848;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient2366">
|
||||
<stop
|
||||
id="stop2368"
|
||||
offset="0"
|
||||
style="stop-color:#ffffff;stop-opacity:1;" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0.21904762;"
|
||||
offset="0.50000000"
|
||||
id="stop2374" />
|
||||
<stop
|
||||
id="stop2370"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#ffffff;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient4487">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop4489" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop4491" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient4477">
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop4479" />
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop4481" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient4467">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop4469" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0.24761905;"
|
||||
offset="1.0000000"
|
||||
id="stop4471" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient4454">
|
||||
<stop
|
||||
style="stop-color:#729fcf;stop-opacity:0.20784314;"
|
||||
offset="0.0000000"
|
||||
id="stop4456" />
|
||||
<stop
|
||||
style="stop-color:#729fcf;stop-opacity:0.67619050;"
|
||||
offset="1.0000000"
|
||||
id="stop4458" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient4440">
|
||||
<stop
|
||||
style="stop-color:#7d7d7d;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop4442" />
|
||||
<stop
|
||||
id="stop4448"
|
||||
offset="0.50000000"
|
||||
style="stop-color:#b1b1b1;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
style="stop-color:#686868;stop-opacity:1.0000000;"
|
||||
offset="1.0000000"
|
||||
id="stop4444" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4440"
|
||||
id="linearGradient4446"
|
||||
x1="30.656250"
|
||||
y1="34.000000"
|
||||
x2="33.218750"
|
||||
y2="31.062500"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.334593,0.000000,0.000000,1.291292,-6.973842,-7.460658)" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4454"
|
||||
id="radialGradient4460"
|
||||
cx="18.240929"
|
||||
cy="21.817987"
|
||||
fx="18.240929"
|
||||
fy="21.817987"
|
||||
r="8.3085051"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4467"
|
||||
id="radialGradient4473"
|
||||
cx="15.414371"
|
||||
cy="13.078408"
|
||||
fx="15.414371"
|
||||
fy="13.078408"
|
||||
r="6.6562500"
|
||||
gradientTransform="matrix(2.592963,-7.746900e-24,-5.714443e-24,2.252104,-25.05975,-18.94100)"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4487"
|
||||
id="radialGradient4493"
|
||||
cx="24.130018"
|
||||
cy="37.967922"
|
||||
fx="24.130018"
|
||||
fy="37.967922"
|
||||
r="16.528622"
|
||||
gradientTransform="matrix(0.47747795,0,0,0.17126529,6.9831225,31.643536)"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
gradientUnits="userSpaceOnUse"
|
||||
y2="25.743469"
|
||||
x2="17.500893"
|
||||
y1="13.602121"
|
||||
x1="18.292673"
|
||||
id="linearGradient2372"
|
||||
xlink:href="#linearGradient2366"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="16.528622"
|
||||
fy="37.967922"
|
||||
fx="24.130018"
|
||||
cy="37.967922"
|
||||
cx="24.130018"
|
||||
gradientTransform="matrix(1.000000,0.000000,0.000000,0.237968,-2.471981e-16,28.93278)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient2842"
|
||||
xlink:href="#linearGradient4477"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
gradientUnits="userSpaceOnUse"
|
||||
y2="30.557772"
|
||||
x2="31.335964"
|
||||
y1="26.580296"
|
||||
x1="27.366341"
|
||||
id="linearGradient2852"
|
||||
xlink:href="#linearGradient2846"
|
||||
inkscape:collect="always" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
stroke="#3465a4"
|
||||
inkscape:window-y="48"
|
||||
inkscape:window-x="130"
|
||||
inkscape:window-height="1752"
|
||||
inkscape:window-width="3070"
|
||||
inkscape:showpageshadow="false"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
showgrid="false"
|
||||
inkscape:current-layer="g1772"
|
||||
inkscape:cy="37.212656"
|
||||
inkscape:cx="23.821561"
|
||||
inkscape:zoom="11.313708"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
borderopacity="0.25490196"
|
||||
bordercolor="#666666"
|
||||
pagecolor="#ffffff"
|
||||
id="base"
|
||||
fill="#729fcf"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata4">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:creator>
|
||||
<cc:Agent>
|
||||
<dc:title>Jakub Steiner</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:creator>
|
||||
<dc:source>http://jimmac.musichall.cz</dc:source>
|
||||
<cc:license
|
||||
rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
|
||||
</cc:Work>
|
||||
<cc:License
|
||||
rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
|
||||
<cc:permits
|
||||
rdf:resource="http://web.resource.org/cc/Reproduction" />
|
||||
<cc:permits
|
||||
rdf:resource="http://web.resource.org/cc/Distribution" />
|
||||
<cc:requires
|
||||
rdf:resource="http://web.resource.org/cc/Notice" />
|
||||
<cc:requires
|
||||
rdf:resource="http://web.resource.org/cc/Attribution" />
|
||||
<cc:permits
|
||||
rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
|
||||
<cc:requires
|
||||
rdf:resource="http://web.resource.org/cc/ShareAlike" />
|
||||
</cc:License>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
inkscape:label="Layer 1"
|
||||
id="layer1">
|
||||
<g
|
||||
id="g1772">
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="opacity:0.17112298;color:#000000;fill:url(#radialGradient2842);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10.000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible;"
|
||||
id="path4475"
|
||||
sodipodi:cx="24.130018"
|
||||
sodipodi:cy="37.967922"
|
||||
sodipodi:rx="16.528622"
|
||||
sodipodi:ry="3.9332814"
|
||||
d="M 40.658640 37.967922 A 16.528622 3.9332814 0 1 1 7.6013966,37.967922 A 16.528622 3.9332814 0 1 1 40.658640 37.967922 z"
|
||||
transform="matrix(1.446431,0.000000,0.000000,1.519990,-10.97453,-17.75168)" />
|
||||
<path
|
||||
sodipodi:nodetypes="csscccscccscczzzz"
|
||||
id="path2844"
|
||||
d="M 18.627569,3.1435548 C 10.488439,3.1435548 3.8827682,9.7492259 3.8827682,17.888356 C 3.8827682,26.027486 10.488439,32.633158 18.627569,32.633158 C 22.107124,32.633158 25.178570,31.248765 27.701292,29.230511 C 27.495915,30.237392 27.623257,31.265879 28.457436,31.990436 L 39.421520,41.517846 C 40.654936,42.589175 42.508982,42.448806 43.580310,41.215389 C 44.651638,39.981971 44.511269,38.127927 43.277853,37.056599 L 32.313769,27.529188 C 31.642242,26.945909 30.820891,26.773219 30.007531,26.886466 C 31.994231,24.374044 33.372370,21.337663 33.372370,17.888356 C 33.372370,9.7492259 26.766699,3.1435548 18.627569,3.1435548 z M 18.551954,4.3697381 C 26.191413,4.3697381 31.843729,9.1586886 31.843729,17.661513 C 31.843729,26.336626 26.027039,30.953288 18.551954,30.953288 C 11.249005,30.953288 5.2601806,25.475196 5.2601806,17.661513 C 5.2601806,9.6774061 11.084819,4.3697380 18.551954,4.3697381 z "
|
||||
style="opacity:1.0000000;color:#000000;fill:#dcdcdc;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#linearGradient2852);stroke-width:2.0000010;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10.000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible;" />
|
||||
<path
|
||||
style="opacity:1.0000000;color:#000000;fill:#dcdcdc;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000004;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10.000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible;"
|
||||
d="M 18.602905,3.0803551 C 10.437465,3.0803551 3.8104408,9.7073791 3.8104408,17.872819 C 3.8104408,26.038259 10.437465,32.665283 18.602905,32.665283 C 22.093708,32.665283 25.175082,31.276416 27.705960,29.251638 C 27.499919,30.261774 27.627672,31.293585 28.464547,32.020484 L 39.464073,41.578691 C 40.701476,42.653483 42.561515,42.512661 43.636306,41.275256 C 44.711097,40.037852 44.570274,38.177814 43.332871,37.103023 L 32.333346,27.544815 C 31.659648,26.959651 30.835642,26.786402 30.019653,26.900016 C 32.012775,24.379472 33.395369,21.333276 33.395369,17.872819 C 33.395369,9.7073791 26.768345,3.0803551 18.602905,3.0803551 z M 18.527046,6.2664243 C 24.808154,6.2664245 29.905864,11.364135 29.905864,17.645243 C 29.905864,23.926351 24.808154,29.024061 18.527046,29.024061 C 12.245938,29.024061 7.1482276,23.926351 7.1482276,17.645243 C 7.1482278,11.364135 12.245938,6.2664243 18.527046,6.2664243 z "
|
||||
id="path4430" />
|
||||
<path
|
||||
style="opacity:1.0000000;color:#000000;fill:url(#linearGradient4446);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10.000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible;"
|
||||
d="M 39.507004,41.577690 C 39.028332,39.304503 40.904334,36.766268 43.091057,36.789315 C 43.091057,36.789315 32.330690,27.531204 32.330690,27.531204 C 29.385899,27.474498 28.061188,29.803820 28.553876,32.131126 L 39.507004,41.577690 z "
|
||||
id="path4438"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="opacity:1.0000000;color:#000000;fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#linearGradient2372);stroke-width:0.80273360;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10.000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible;"
|
||||
id="path4450"
|
||||
sodipodi:cx="17.500893"
|
||||
sodipodi:cy="18.920233"
|
||||
sodipodi:rx="11.048544"
|
||||
sodipodi:ry="11.048544"
|
||||
d="M 28.549437 18.920233 A 11.048544 11.048544 0 1 1 6.4523487,18.920233 A 11.048544 11.048544 0 1 1 28.549437 18.920233 z"
|
||||
transform="matrix(1.245743,0.000000,0.000000,1.245743,-3.425346,-6.177033)" />
|
||||
<ellipse
|
||||
id="path4485"
|
||||
style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:url(#radialGradient4493);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none"
|
||||
cx="18.504675"
|
||||
cy="38.146122"
|
||||
rx="7.8920522"
|
||||
ry="2.8307779" />
|
||||
<rect
|
||||
style="opacity:0.43315509;color:#000000;fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.0000311;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10.000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible;"
|
||||
id="rect4495"
|
||||
width="19.048439"
|
||||
height="4.4404783"
|
||||
x="40.373337"
|
||||
y="0.14086054"
|
||||
rx="2.1366608"
|
||||
ry="1.8879365"
|
||||
transform="matrix(0.752986,0.658037,-0.648902,0.760872,0.000000,0.000000)" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="color:#000000;fill:url(#radialGradient4460);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#3063a3;stroke-width:0.71499395;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10.000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;"
|
||||
id="path4452"
|
||||
sodipodi:cx="17.589281"
|
||||
sodipodi:cy="18.478292"
|
||||
sodipodi:rx="8.3085051"
|
||||
sodipodi:ry="8.3085051"
|
||||
d="M 25.897786 18.478292 A 8.3085051 8.3085051 0 1 1 9.2807760,18.478292 A 8.3085051 8.3085051 0 1 1 25.897786 18.478292 z"
|
||||
transform="matrix(1.398614,0.000000,0.000000,1.398614,-6.224338,-8.298958)" />
|
||||
<path
|
||||
style="opacity:0.83422458;color:#000000;fill:url(#radialGradient4473);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10.000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible;"
|
||||
d="M 18.156915,7.3966938 C 12.949325,7.3966938 8.7323681,11.613651 8.7323681,16.821241 C 8.7323681,18.325216 9.1526753,19.709014 9.7795400,20.971144 C 11.031920,21.432757 12.362297,21.746827 13.774307,21.746827 C 19.945262,21.746827 24.873589,16.885190 25.254413,10.809698 C 23.523449,8.7641668 21.044374,7.3966938 18.156915,7.3966938 z "
|
||||
id="path4462" />
|
||||
<g
|
||||
transform="matrix(0.02264973,0,0,0.02609408,48.046283,48.655279)"
|
||||
id="g6-3"
|
||||
style="opacity:0.4;fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1">
|
||||
<g
|
||||
id="g8-6"
|
||||
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
d="m -1627.0838,-595.53083 c 10.4,11.3 16.1,26 16.1,41.3 l 0,449.7 c 0,27.099997 32.7,40.799997 52,21.799997 l 125.5,-143.799997 c 16.8,-20.1 26,-30.1 26,-50.1 l 0,-277.4 c 0,-15.3 5.8,-30 16.1,-41.3 l 360,-390.6 c 27,-29.29997 6.2,-76.79997 -33.7,-76.79997 l -888.3,0 c -39.9,-0.1 -60.7,47.3 -33.7,76.69997 l 360,390.5 z"
|
||||
id="path10-7"
|
||||
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:82.35282898;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
</g>
|
||||
<g
|
||||
id="g12-5"
|
||||
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
|
||||
<g
|
||||
id="g14-3"
|
||||
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
|
||||
<g
|
||||
id="g16-5"
|
||||
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
|
||||
<g
|
||||
id="g18-6"
|
||||
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
|
||||
<g
|
||||
id="g20-2"
|
||||
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
|
||||
<g
|
||||
id="g22-9"
|
||||
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
|
||||
<g
|
||||
id="g24-1"
|
||||
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
|
||||
<g
|
||||
id="g26-2"
|
||||
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
|
||||
<g
|
||||
id="g28-7"
|
||||
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
|
||||
<g
|
||||
id="g30-0"
|
||||
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
|
||||
<g
|
||||
id="g32-9"
|
||||
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
|
||||
<g
|
||||
id="g34-3"
|
||||
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
|
||||
<g
|
||||
id="g36-6"
|
||||
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
|
||||
<g
|
||||
id="g38-0"
|
||||
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
|
||||
<g
|
||||
id="g40-6"
|
||||
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.0233822,0,0,0.02642586,47.842749,48.274221)"
|
||||
id="g6"
|
||||
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-width:70.51978302;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">
|
||||
<g
|
||||
id="g8"
|
||||
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-width:70.51978302;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
d="m -1627.0838,-595.53083 c 10.4,11.3 16.1,26 16.1,41.3 l 0,449.7 c 0,27.099997 32.7,40.799997 52,21.799997 l 125.5,-143.799997 c 16.8,-20.1 26,-30.1 26,-50.1 l 0,-277.4 c 0,-15.3 5.8,-30 16.1,-41.3 l 360,-390.6 c 27,-29.29997 6.2,-76.79997 -33.7,-76.79997 l -888.3,0 c -39.9,-0.1 -60.7,47.3 -33.7,76.69997 l 360,390.5 z"
|
||||
id="path10"
|
||||
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-width:70.51978302;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
</g>
|
||||
<g
|
||||
id="g12"
|
||||
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-width:70.51978302;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<g
|
||||
id="g14"
|
||||
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-width:70.51978302;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<g
|
||||
id="g16"
|
||||
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-width:70.51978302;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<g
|
||||
id="g18"
|
||||
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-width:70.51978302;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<g
|
||||
id="g20"
|
||||
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-width:70.51978302;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<g
|
||||
id="g22"
|
||||
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-width:70.51978302;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<g
|
||||
id="g24"
|
||||
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-width:70.51978302;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<g
|
||||
id="g26"
|
||||
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-width:70.51978302;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<g
|
||||
id="g28"
|
||||
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-width:70.51978302;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<g
|
||||
id="g30"
|
||||
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-width:70.51978302;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<g
|
||||
id="g32"
|
||||
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-width:70.51978302;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<g
|
||||
id="g34"
|
||||
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-width:70.51978302;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<g
|
||||
id="g36"
|
||||
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-width:70.51978302;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<g
|
||||
id="g38"
|
||||
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-width:70.51978302;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<g
|
||||
id="g40"
|
||||
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-width:70.51978302;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 21 KiB |
708
dist/assets/resources/images/filter.svg
vendored
@ -1,708 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
sodipodi:docname="filter.svg"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:version="0.32"
|
||||
id="svg11300"
|
||||
height="48px"
|
||||
width="48px"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||
version="1.1">
|
||||
<defs
|
||||
id="defs3">
|
||||
<linearGradient
|
||||
id="linearGradient2846">
|
||||
<stop
|
||||
id="stop2848"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#8a8a8a;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
id="stop2850"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#484848;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient2366">
|
||||
<stop
|
||||
id="stop2368"
|
||||
offset="0"
|
||||
style="stop-color:#ffffff;stop-opacity:1;" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0.21904762;"
|
||||
offset="0.50000000"
|
||||
id="stop2374" />
|
||||
<stop
|
||||
id="stop2370"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#ffffff;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient4467">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop4469" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0.24761905;"
|
||||
offset="1.0000000"
|
||||
id="stop4471" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient4454">
|
||||
<stop
|
||||
style="stop-color:#729fcf;stop-opacity:0.20784314;"
|
||||
offset="0.0000000"
|
||||
id="stop4456" />
|
||||
<stop
|
||||
style="stop-color:#729fcf;stop-opacity:0.67619050;"
|
||||
offset="1.0000000"
|
||||
id="stop4458" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient4440">
|
||||
<stop
|
||||
style="stop-color:#7d7d7d;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop4442" />
|
||||
<stop
|
||||
id="stop4448"
|
||||
offset="0.50000000"
|
||||
style="stop-color:#b1b1b1;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
style="stop-color:#686868;stop-opacity:1.0000000;"
|
||||
offset="1.0000000"
|
||||
id="stop4444" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
gradientTransform="matrix(1.5770403,0,0,1.4373405,-85.325285,-112.88055)"
|
||||
y2="78.206215"
|
||||
x2="71.53405"
|
||||
y1="124.11652"
|
||||
x1="71.288956"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient2306"
|
||||
xlink:href="#linearGradient5075"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
id="linearGradient3340">
|
||||
<stop
|
||||
id="stop3342"
|
||||
offset="0"
|
||||
style="stop-color:#ffffff;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop3344"
|
||||
offset="1"
|
||||
style="stop-color:#ffffff;stop-opacity:0.62886596;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient5075">
|
||||
<stop
|
||||
id="stop5077"
|
||||
offset="0"
|
||||
style="stop-color:#adb0a8;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop5079"
|
||||
offset="1"
|
||||
style="stop-color:#464744;stop-opacity:1" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient2584">
|
||||
<stop
|
||||
id="stop2586"
|
||||
offset="0"
|
||||
style="stop-color:#000000;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop2588"
|
||||
offset="1"
|
||||
style="stop-color:#ffffff;stop-opacity:0;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient2684">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2686" />
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop2688" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
y2="52.510574"
|
||||
x2="14"
|
||||
y1="15.291994"
|
||||
x1="15.089521"
|
||||
gradientTransform="translate(-4e-4,-9.426e-2)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient2864"
|
||||
xlink:href="#linearGradient3081"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="93.204849"
|
||||
x2="169"
|
||||
y1="110.33805"
|
||||
x1="169"
|
||||
gradientTransform="matrix(1,0,0,1.004384,-145.0004,-71.4625)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient2862"
|
||||
xlink:href="#linearGradient2697"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="11"
|
||||
fy="100.20107"
|
||||
fx="169.77171"
|
||||
cy="100.20107"
|
||||
cx="169.77171"
|
||||
gradientTransform="matrix(3.562309e-6,-1.07205,1.992104,-1.250658e-6,-175.6121,212.6949)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient2860"
|
||||
xlink:href="#linearGradient2679"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="105.49083"
|
||||
x2="174.74524"
|
||||
y1="84.263489"
|
||||
x1="174.83363"
|
||||
gradientTransform="matrix(1.103262,0,0,1.054917,-163.1228,-76.31138)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient2858"
|
||||
xlink:href="#linearGradient2817"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="11"
|
||||
fy="100.20107"
|
||||
fx="169.77171"
|
||||
cy="100.20107"
|
||||
cx="169.77171"
|
||||
gradientTransform="matrix(3.562309e-6,-1.07205,1.992104,-1.250658e-6,-175.6121,186.6949)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient2831"
|
||||
xlink:href="#linearGradient2679"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="52.510574"
|
||||
x2="14"
|
||||
y1="15.291994"
|
||||
x1="15.089521"
|
||||
gradientTransform="translate(-4e-4,-26.09426)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient2825"
|
||||
xlink:href="#linearGradient3081"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="105.49083"
|
||||
x2="174.74524"
|
||||
y1="84.263489"
|
||||
x1="174.83363"
|
||||
gradientTransform="matrix(1.103262,0,0,1.054917,-163.1228,-76.31138)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient2823"
|
||||
xlink:href="#linearGradient2817"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="11"
|
||||
fy="100.20107"
|
||||
fx="169.77171"
|
||||
cy="100.20107"
|
||||
cx="169.77171"
|
||||
gradientTransform="matrix(3.562309e-6,-1.07205,1.992104,-1.250658e-6,-175.6121,212.6949)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient2809"
|
||||
xlink:href="#linearGradient2679"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="93.204849"
|
||||
x2="169"
|
||||
y1="110.33805"
|
||||
x1="169"
|
||||
gradientTransform="translate(-145.0004,-97.0943)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient2806"
|
||||
xlink:href="#linearGradient2697"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="93.204849"
|
||||
x2="169"
|
||||
y1="110.33805"
|
||||
x1="169"
|
||||
gradientTransform="matrix(1,0,0,1.004384,-145.0004,-71.4625)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient2803"
|
||||
xlink:href="#linearGradient2697"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="52.510574"
|
||||
x2="14"
|
||||
y1="15.291994"
|
||||
x1="15.089521"
|
||||
gradientTransform="translate(-4e-4,-9.426e-2)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient2800"
|
||||
xlink:href="#linearGradient3081"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="52.510574"
|
||||
x2="14"
|
||||
y1="15.291994"
|
||||
x1="15.089521"
|
||||
gradientTransform="translate(133,70.99999)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient2797"
|
||||
xlink:href="#linearGradient3081"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="93.204849"
|
||||
x2="169"
|
||||
y1="110.33805"
|
||||
x1="169"
|
||||
gradientTransform="translate(-12,0)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient2795"
|
||||
xlink:href="#linearGradient2697"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="93.204849"
|
||||
x2="169"
|
||||
y1="110.33805"
|
||||
x1="169"
|
||||
gradientTransform="translate(-12,0)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient2793"
|
||||
xlink:href="#linearGradient2697"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="11"
|
||||
fy="100.20107"
|
||||
fx="169.77171"
|
||||
cy="100.20107"
|
||||
cx="169.77171"
|
||||
gradientTransform="matrix(3.562309e-6,-1.07205,1.992104,-1.250658e-6,-42.61165,283.7891)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient2791"
|
||||
xlink:href="#linearGradient2679"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="52.510574"
|
||||
x2="14"
|
||||
y1="15.291994"
|
||||
x1="15.089521"
|
||||
gradientTransform="translate(133,70.99999)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient2753"
|
||||
xlink:href="#linearGradient3081"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="93.204849"
|
||||
x2="169"
|
||||
y1="110.33805"
|
||||
x1="169"
|
||||
gradientTransform="translate(-12,0)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient2751"
|
||||
xlink:href="#linearGradient2697"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="11"
|
||||
fy="100.20107"
|
||||
fx="169.77171"
|
||||
cy="100.20107"
|
||||
cx="169.77171"
|
||||
gradientTransform="matrix(3.562309e-6,-1.07205,1.992104,-1.250658e-6,-42.61165,283.7891)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient2749"
|
||||
xlink:href="#linearGradient2679"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="15.644737"
|
||||
fy="36.421127"
|
||||
fx="24.837126"
|
||||
cy="36.421127"
|
||||
cx="24.837126"
|
||||
gradientTransform="matrix(1,0,0,0.536723,-1.44832e-12,16.87306)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient2747"
|
||||
xlink:href="#linearGradient8662"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="15.644737"
|
||||
fy="36.421127"
|
||||
fx="24.837126"
|
||||
cy="36.421127"
|
||||
cx="24.837126"
|
||||
gradientTransform="matrix(1,0,0,0.536723,4.579205e-13,16.87306)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient2745"
|
||||
xlink:href="#linearGradient8662"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="52.510574"
|
||||
x2="14"
|
||||
y1="15.291994"
|
||||
x1="15.089521"
|
||||
gradientTransform="translate(133,70.99999)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient2733"
|
||||
xlink:href="#linearGradient3081"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="93.204849"
|
||||
x2="169"
|
||||
y1="110.33805"
|
||||
x1="169"
|
||||
gradientTransform="translate(-12,0)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient2731"
|
||||
xlink:href="#linearGradient2697"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="11"
|
||||
fy="100.20107"
|
||||
fx="169.77171"
|
||||
cy="100.20107"
|
||||
cx="169.77171"
|
||||
gradientTransform="matrix(3.562309e-6,-1.07205,1.992104,-1.250658e-6,-42.61165,283.7891)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient2729"
|
||||
xlink:href="#linearGradient2679"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="15.644737"
|
||||
fy="36.421127"
|
||||
fx="24.837126"
|
||||
cy="36.421127"
|
||||
cx="24.837126"
|
||||
gradientTransform="matrix(1,0,0,0.536723,-1.432388e-12,16.87306)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient2727"
|
||||
xlink:href="#linearGradient8662"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="15.644737"
|
||||
fy="36.421127"
|
||||
fx="24.837126"
|
||||
cy="36.421127"
|
||||
cx="24.837126"
|
||||
gradientTransform="matrix(1,0,0,0.536723,4.526469e-13,16.87306)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient2725"
|
||||
xlink:href="#linearGradient8662"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="15.644737"
|
||||
fy="36.421127"
|
||||
fx="24.837126"
|
||||
cy="36.421127"
|
||||
cx="24.837126"
|
||||
gradientTransform="matrix(1,0,0,0.536723,-1.416456e-12,16.87306)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient2139"
|
||||
xlink:href="#linearGradient8662"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="15.644737"
|
||||
fy="36.421127"
|
||||
fx="24.837126"
|
||||
cy="36.421127"
|
||||
cx="24.837126"
|
||||
gradientTransform="matrix(1,0,0,0.536723,4.473733e-13,16.87306)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient2137"
|
||||
xlink:href="#linearGradient8662"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="52.510574"
|
||||
x2="14"
|
||||
y1="15.291994"
|
||||
x1="15.089521"
|
||||
gradientTransform="translate(133,70.99999)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient2124"
|
||||
xlink:href="#linearGradient3081"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="93.204849"
|
||||
x2="169"
|
||||
y1="110.33805"
|
||||
x1="169"
|
||||
gradientTransform="translate(-12,0)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient2122"
|
||||
xlink:href="#linearGradient2697"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="11"
|
||||
fy="100.20107"
|
||||
fx="169.77171"
|
||||
cy="100.20107"
|
||||
cx="169.77171"
|
||||
gradientTransform="matrix(3.562309e-6,-1.07205,1.992104,-1.250658e-6,-42.61165,283.7891)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient2112"
|
||||
xlink:href="#linearGradient2679"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
id="linearGradient8662"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
id="stop8664"
|
||||
offset="0"
|
||||
style="stop-color:#000000;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop8666"
|
||||
offset="1"
|
||||
style="stop-color:#000000;stop-opacity:0;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient3081"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
id="stop3083"
|
||||
offset="0"
|
||||
style="stop-color:#ffffff;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop3085"
|
||||
offset="1"
|
||||
style="stop-color:#ffffff;stop-opacity:0;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient2679">
|
||||
<stop
|
||||
style="stop-color:#f7f7f7;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop2681" />
|
||||
<stop
|
||||
style="stop-color:#ccd0c7;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop2683" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient2697">
|
||||
<stop
|
||||
style="stop-color:#babdb6"
|
||||
offset="0"
|
||||
id="stop2699" />
|
||||
<stop
|
||||
style="stop-color:#555753"
|
||||
offset="1"
|
||||
id="stop2701" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient2584-8">
|
||||
<stop
|
||||
id="stop2586-4"
|
||||
offset="0"
|
||||
style="stop-color:#000000;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop2588-8"
|
||||
offset="1"
|
||||
style="stop-color:#ffffff;stop-opacity:0;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient2817">
|
||||
<stop
|
||||
id="stop2819"
|
||||
offset="0"
|
||||
style="stop-color:#000000;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop2821"
|
||||
offset="1"
|
||||
style="stop-color:#ffffff;stop-opacity:0.48453608;" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
stroke="#3465a4"
|
||||
inkscape:window-y="48"
|
||||
inkscape:window-x="130"
|
||||
inkscape:window-height="1752"
|
||||
inkscape:window-width="3070"
|
||||
inkscape:showpageshadow="false"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
showgrid="false"
|
||||
inkscape:current-layer="layer1"
|
||||
inkscape:cy="24.580209"
|
||||
inkscape:cx="-23.904288"
|
||||
inkscape:zoom="11.313708"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
borderopacity="0.25490196"
|
||||
bordercolor="#666666"
|
||||
pagecolor="#ffffff"
|
||||
id="base"
|
||||
fill="#729fcf"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata4">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:creator>
|
||||
<cc:Agent>
|
||||
<dc:title>Jakub Steiner</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:creator>
|
||||
<dc:source>http://jimmac.musichall.cz</dc:source>
|
||||
<cc:license
|
||||
rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
|
||||
</cc:Work>
|
||||
<cc:License
|
||||
rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
|
||||
<cc:permits
|
||||
rdf:resource="http://web.resource.org/cc/Reproduction" />
|
||||
<cc:permits
|
||||
rdf:resource="http://web.resource.org/cc/Distribution" />
|
||||
<cc:requires
|
||||
rdf:resource="http://web.resource.org/cc/Notice" />
|
||||
<cc:requires
|
||||
rdf:resource="http://web.resource.org/cc/Attribution" />
|
||||
<cc:permits
|
||||
rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
|
||||
<cc:requires
|
||||
rdf:resource="http://web.resource.org/cc/ShareAlike" />
|
||||
</cc:License>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
inkscape:label="Layer 1"
|
||||
id="layer1">
|
||||
<g
|
||||
transform="matrix(0.04112758,0,0,0.04208992,87.449849,49.200049)"
|
||||
id="g6-3"
|
||||
style="opacity:0.4;fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1">
|
||||
<g
|
||||
id="g8-6"
|
||||
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
d="m -1627.0838,-595.53083 c 10.4,11.3 16.1,26 16.1,41.3 l 0,449.7 c 0,27.099997 32.7,40.799997 52,21.799997 l 125.5,-143.799997 c 16.8,-20.1 26,-30.1 26,-50.1 l 0,-277.4 c 0,-15.3 5.8,-30 16.1,-41.3 l 360,-390.6 c 27,-29.29997 6.2,-76.79997 -33.7,-76.79997 l -888.3,0 c -39.9,-0.1 -60.7,47.3 -33.7,76.69997 l 360,390.5 z"
|
||||
id="path10-7"
|
||||
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:82.35282898;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
</g>
|
||||
<g
|
||||
id="g12-5"
|
||||
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
|
||||
<g
|
||||
id="g14-3"
|
||||
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
|
||||
<g
|
||||
id="g16-5"
|
||||
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
|
||||
<g
|
||||
id="g18-6"
|
||||
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
|
||||
<g
|
||||
id="g20-2"
|
||||
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
|
||||
<g
|
||||
id="g22-9"
|
||||
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
|
||||
<g
|
||||
id="g24-1"
|
||||
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
|
||||
<g
|
||||
id="g26-2"
|
||||
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
|
||||
<g
|
||||
id="g28-7"
|
||||
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
|
||||
<g
|
||||
id="g30-0"
|
||||
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
|
||||
<g
|
||||
id="g32-9"
|
||||
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
|
||||
<g
|
||||
id="g34-3"
|
||||
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
|
||||
<g
|
||||
id="g36-6"
|
||||
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
|
||||
<g
|
||||
id="g38-0"
|
||||
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
|
||||
<g
|
||||
id="g40-6"
|
||||
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.04245758,0,0,0.04262509,87.080268,48.585402)"
|
||||
id="g6"
|
||||
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:70.51978539;stroke-miterlimit:4;stroke-dasharray:none">
|
||||
<g
|
||||
id="g8"
|
||||
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:70.51978539;stroke-miterlimit:4;stroke-dasharray:none">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
d="m -1627.0838,-595.53083 c 10.4,11.3 16.1,26 16.1,41.3 l 0,449.7 c 0,27.099997 32.7,40.799997 52,21.799997 l 125.5,-143.799997 c 16.8,-20.1 26,-30.1 26,-50.1 l 0,-277.4 c 0,-15.3 5.8,-30 16.1,-41.3 l 360,-390.6 c 27,-29.29997 6.2,-76.79997 -33.7,-76.79997 l -888.3,0 c -39.9,-0.1 -60.7,47.3 -33.7,76.69997 l 360,390.5 z"
|
||||
id="path10"
|
||||
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-width:70.51978539;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
</g>
|
||||
<g
|
||||
id="g12"
|
||||
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:70.51978539;stroke-miterlimit:4;stroke-dasharray:none" />
|
||||
<g
|
||||
id="g14"
|
||||
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:70.51978539;stroke-miterlimit:4;stroke-dasharray:none" />
|
||||
<g
|
||||
id="g16"
|
||||
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:70.51978539;stroke-miterlimit:4;stroke-dasharray:none" />
|
||||
<g
|
||||
id="g18"
|
||||
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:70.51978539;stroke-miterlimit:4;stroke-dasharray:none" />
|
||||
<g
|
||||
id="g20"
|
||||
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:70.51978539;stroke-miterlimit:4;stroke-dasharray:none" />
|
||||
<g
|
||||
id="g22"
|
||||
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:70.51978539;stroke-miterlimit:4;stroke-dasharray:none" />
|
||||
<g
|
||||
id="g24"
|
||||
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:70.51978539;stroke-miterlimit:4;stroke-dasharray:none" />
|
||||
<g
|
||||
id="g26"
|
||||
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:70.51978539;stroke-miterlimit:4;stroke-dasharray:none" />
|
||||
<g
|
||||
id="g28"
|
||||
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:70.51978539;stroke-miterlimit:4;stroke-dasharray:none" />
|
||||
<g
|
||||
id="g30"
|
||||
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:70.51978539;stroke-miterlimit:4;stroke-dasharray:none" />
|
||||
<g
|
||||
id="g32"
|
||||
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:70.51978539;stroke-miterlimit:4;stroke-dasharray:none" />
|
||||
<g
|
||||
id="g34"
|
||||
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:70.51978539;stroke-miterlimit:4;stroke-dasharray:none" />
|
||||
<g
|
||||
id="g36"
|
||||
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:70.51978539;stroke-miterlimit:4;stroke-dasharray:none" />
|
||||
<g
|
||||
id="g38"
|
||||
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:70.51978539;stroke-miterlimit:4;stroke-dasharray:none" />
|
||||
<g
|
||||
id="g40"
|
||||
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:70.51978539;stroke-miterlimit:4;stroke-dasharray:none" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:r_cy="true"
|
||||
inkscape:r_cx="true"
|
||||
style="display:inline"
|
||||
inkscape:label="Layer 1"
|
||||
id="layer1-4"
|
||||
transform="matrix(0.52129778,0,0,0.55541254,0.16640648,22.45761)" />
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 23 KiB |
312
dist/assets/resources/images/inspect.svg
vendored
@ -1,312 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://web.resource.org/cc/"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
sodipodi:docname="system-search.svg"
|
||||
sodipodi:docbase="/home/tigert/cvs/freedesktop.org/tango-icon-theme/scalable/actions"
|
||||
inkscape:version="0.43+devel"
|
||||
sodipodi:version="0.32"
|
||||
id="svg11300"
|
||||
height="48px"
|
||||
width="48px"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape">
|
||||
<defs
|
||||
id="defs3">
|
||||
<linearGradient
|
||||
id="linearGradient2846">
|
||||
<stop
|
||||
id="stop2848"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#8a8a8a;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
id="stop2850"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#484848;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient2366">
|
||||
<stop
|
||||
id="stop2368"
|
||||
offset="0"
|
||||
style="stop-color:#ffffff;stop-opacity:1;" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0.21904762;"
|
||||
offset="0.50000000"
|
||||
id="stop2374" />
|
||||
<stop
|
||||
id="stop2370"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#ffffff;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient4487">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop4489" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop4491" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient4477">
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop4479" />
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop4481" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient4467">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop4469" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0.24761905;"
|
||||
offset="1.0000000"
|
||||
id="stop4471" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient4454">
|
||||
<stop
|
||||
style="stop-color:#729fcf;stop-opacity:0.20784314;"
|
||||
offset="0.0000000"
|
||||
id="stop4456" />
|
||||
<stop
|
||||
style="stop-color:#729fcf;stop-opacity:0.67619050;"
|
||||
offset="1.0000000"
|
||||
id="stop4458" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient4440">
|
||||
<stop
|
||||
style="stop-color:#7d7d7d;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop4442" />
|
||||
<stop
|
||||
id="stop4448"
|
||||
offset="0.50000000"
|
||||
style="stop-color:#b1b1b1;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
style="stop-color:#686868;stop-opacity:1.0000000;"
|
||||
offset="1.0000000"
|
||||
id="stop4444" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4440"
|
||||
id="linearGradient4446"
|
||||
x1="30.656250"
|
||||
y1="34.000000"
|
||||
x2="33.218750"
|
||||
y2="31.062500"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.334593,0.000000,0.000000,1.291292,-6.973842,-7.460658)" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4454"
|
||||
id="radialGradient4460"
|
||||
cx="18.240929"
|
||||
cy="21.817987"
|
||||
fx="18.240929"
|
||||
fy="21.817987"
|
||||
r="8.3085051"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4467"
|
||||
id="radialGradient4473"
|
||||
cx="15.414371"
|
||||
cy="13.078408"
|
||||
fx="15.414371"
|
||||
fy="13.078408"
|
||||
r="6.6562500"
|
||||
gradientTransform="matrix(2.592963,-7.746900e-24,-5.714443e-24,2.252104,-25.05975,-18.94100)"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4487"
|
||||
id="radialGradient4493"
|
||||
cx="24.130018"
|
||||
cy="37.967922"
|
||||
fx="24.130018"
|
||||
fy="37.967922"
|
||||
r="16.528622"
|
||||
gradientTransform="matrix(1.000000,0.000000,0.000000,0.237968,3.152859e-15,28.93278)"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
gradientUnits="userSpaceOnUse"
|
||||
y2="25.743469"
|
||||
x2="17.500893"
|
||||
y1="13.602121"
|
||||
x1="18.292673"
|
||||
id="linearGradient2372"
|
||||
xlink:href="#linearGradient2366"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="16.528622"
|
||||
fy="37.967922"
|
||||
fx="24.130018"
|
||||
cy="37.967922"
|
||||
cx="24.130018"
|
||||
gradientTransform="matrix(1.000000,0.000000,0.000000,0.237968,-2.471981e-16,28.93278)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient2842"
|
||||
xlink:href="#linearGradient4477"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
gradientUnits="userSpaceOnUse"
|
||||
y2="30.557772"
|
||||
x2="31.335964"
|
||||
y1="26.580296"
|
||||
x1="27.366341"
|
||||
id="linearGradient2852"
|
||||
xlink:href="#linearGradient2846"
|
||||
inkscape:collect="always" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
stroke="#3465a4"
|
||||
inkscape:window-y="187"
|
||||
inkscape:window-x="239"
|
||||
inkscape:window-height="754"
|
||||
inkscape:window-width="691"
|
||||
inkscape:showpageshadow="false"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
showgrid="false"
|
||||
inkscape:current-layer="layer1"
|
||||
inkscape:cy="23.070520"
|
||||
inkscape:cx="23.821561"
|
||||
inkscape:zoom="11.313708"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
borderopacity="0.25490196"
|
||||
bordercolor="#666666"
|
||||
pagecolor="#ffffff"
|
||||
id="base"
|
||||
fill="#729fcf" />
|
||||
<metadata
|
||||
id="metadata4">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:creator>
|
||||
<cc:Agent>
|
||||
<dc:title>Jakub Steiner</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:creator>
|
||||
<dc:source>http://jimmac.musichall.cz</dc:source>
|
||||
<cc:license
|
||||
rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
|
||||
</cc:Work>
|
||||
<cc:License
|
||||
rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
|
||||
<cc:permits
|
||||
rdf:resource="http://web.resource.org/cc/Reproduction" />
|
||||
<cc:permits
|
||||
rdf:resource="http://web.resource.org/cc/Distribution" />
|
||||
<cc:requires
|
||||
rdf:resource="http://web.resource.org/cc/Notice" />
|
||||
<cc:requires
|
||||
rdf:resource="http://web.resource.org/cc/Attribution" />
|
||||
<cc:permits
|
||||
rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
|
||||
<cc:requires
|
||||
rdf:resource="http://web.resource.org/cc/ShareAlike" />
|
||||
</cc:License>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
inkscape:label="Layer 1"
|
||||
id="layer1">
|
||||
<g
|
||||
id="g1772">
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="opacity:0.17112298;color:#000000;fill:url(#radialGradient2842);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10.000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible;"
|
||||
id="path4475"
|
||||
sodipodi:cx="24.130018"
|
||||
sodipodi:cy="37.967922"
|
||||
sodipodi:rx="16.528622"
|
||||
sodipodi:ry="3.9332814"
|
||||
d="M 40.658640 37.967922 A 16.528622 3.9332814 0 1 1 7.6013966,37.967922 A 16.528622 3.9332814 0 1 1 40.658640 37.967922 z"
|
||||
transform="matrix(1.446431,0.000000,0.000000,1.519990,-10.97453,-17.75168)" />
|
||||
<path
|
||||
sodipodi:nodetypes="csscccscccscczzzz"
|
||||
id="path2844"
|
||||
d="M 18.627569,3.1435548 C 10.488439,3.1435548 3.8827682,9.7492259 3.8827682,17.888356 C 3.8827682,26.027486 10.488439,32.633158 18.627569,32.633158 C 22.107124,32.633158 25.178570,31.248765 27.701292,29.230511 C 27.495915,30.237392 27.623257,31.265879 28.457436,31.990436 L 39.421520,41.517846 C 40.654936,42.589175 42.508982,42.448806 43.580310,41.215389 C 44.651638,39.981971 44.511269,38.127927 43.277853,37.056599 L 32.313769,27.529188 C 31.642242,26.945909 30.820891,26.773219 30.007531,26.886466 C 31.994231,24.374044 33.372370,21.337663 33.372370,17.888356 C 33.372370,9.7492259 26.766699,3.1435548 18.627569,3.1435548 z M 18.551954,4.3697381 C 26.191413,4.3697381 31.843729,9.1586886 31.843729,17.661513 C 31.843729,26.336626 26.027039,30.953288 18.551954,30.953288 C 11.249005,30.953288 5.2601806,25.475196 5.2601806,17.661513 C 5.2601806,9.6774061 11.084819,4.3697380 18.551954,4.3697381 z "
|
||||
style="opacity:1.0000000;color:#000000;fill:#dcdcdc;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#linearGradient2852);stroke-width:2.0000010;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10.000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible;" />
|
||||
<path
|
||||
style="opacity:1.0000000;color:#000000;fill:#dcdcdc;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000004;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10.000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible;"
|
||||
d="M 18.602905,3.0803551 C 10.437465,3.0803551 3.8104408,9.7073791 3.8104408,17.872819 C 3.8104408,26.038259 10.437465,32.665283 18.602905,32.665283 C 22.093708,32.665283 25.175082,31.276416 27.705960,29.251638 C 27.499919,30.261774 27.627672,31.293585 28.464547,32.020484 L 39.464073,41.578691 C 40.701476,42.653483 42.561515,42.512661 43.636306,41.275256 C 44.711097,40.037852 44.570274,38.177814 43.332871,37.103023 L 32.333346,27.544815 C 31.659648,26.959651 30.835642,26.786402 30.019653,26.900016 C 32.012775,24.379472 33.395369,21.333276 33.395369,17.872819 C 33.395369,9.7073791 26.768345,3.0803551 18.602905,3.0803551 z M 18.527046,6.2664243 C 24.808154,6.2664245 29.905864,11.364135 29.905864,17.645243 C 29.905864,23.926351 24.808154,29.024061 18.527046,29.024061 C 12.245938,29.024061 7.1482276,23.926351 7.1482276,17.645243 C 7.1482278,11.364135 12.245938,6.2664243 18.527046,6.2664243 z "
|
||||
id="path4430" />
|
||||
<path
|
||||
style="opacity:1.0000000;color:#000000;fill:url(#linearGradient4446);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10.000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible;"
|
||||
d="M 39.507004,41.577690 C 39.028332,39.304503 40.904334,36.766268 43.091057,36.789315 C 43.091057,36.789315 32.330690,27.531204 32.330690,27.531204 C 29.385899,27.474498 28.061188,29.803820 28.553876,32.131126 L 39.507004,41.577690 z "
|
||||
id="path4438"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="opacity:1.0000000;color:#000000;fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#linearGradient2372);stroke-width:0.80273360;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10.000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible;"
|
||||
id="path4450"
|
||||
sodipodi:cx="17.500893"
|
||||
sodipodi:cy="18.920233"
|
||||
sodipodi:rx="11.048544"
|
||||
sodipodi:ry="11.048544"
|
||||
d="M 28.549437 18.920233 A 11.048544 11.048544 0 1 1 6.4523487,18.920233 A 11.048544 11.048544 0 1 1 28.549437 18.920233 z"
|
||||
transform="matrix(1.245743,0.000000,0.000000,1.245743,-3.425346,-6.177033)" />
|
||||
<path
|
||||
transform="matrix(0.497764,0.000000,0.000000,0.609621,8.973526,15.61929)"
|
||||
d="M 40.658640 37.967922 A 16.528622 3.9332814 0 1 1 7.6013966,37.967922 A 16.528622 3.9332814 0 1 1 40.658640 37.967922 z"
|
||||
sodipodi:ry="3.9332814"
|
||||
sodipodi:rx="16.528622"
|
||||
sodipodi:cy="37.967922"
|
||||
sodipodi:cx="24.130018"
|
||||
id="path4485"
|
||||
style="opacity:1.0000000;color:#000000;fill:url(#radialGradient4493);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10.000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible;"
|
||||
sodipodi:type="arc" />
|
||||
<rect
|
||||
style="opacity:0.43315509;color:#000000;fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.0000311;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10.000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible;"
|
||||
id="rect4495"
|
||||
width="19.048439"
|
||||
height="4.4404783"
|
||||
x="40.373337"
|
||||
y="0.14086054"
|
||||
rx="2.1366608"
|
||||
ry="1.8879365"
|
||||
transform="matrix(0.752986,0.658037,-0.648902,0.760872,0.000000,0.000000)" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="color:#000000;fill:url(#radialGradient4460);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#3063a3;stroke-width:0.71499395;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10.000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;"
|
||||
id="path4452"
|
||||
sodipodi:cx="17.589281"
|
||||
sodipodi:cy="18.478292"
|
||||
sodipodi:rx="8.3085051"
|
||||
sodipodi:ry="8.3085051"
|
||||
d="M 25.897786 18.478292 A 8.3085051 8.3085051 0 1 1 9.2807760,18.478292 A 8.3085051 8.3085051 0 1 1 25.897786 18.478292 z"
|
||||
transform="matrix(1.398614,0.000000,0.000000,1.398614,-6.224338,-8.298958)" />
|
||||
<path
|
||||
style="opacity:0.83422458;color:#000000;fill:url(#radialGradient4473);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10.000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible;"
|
||||
d="M 18.156915,7.3966938 C 12.949325,7.3966938 8.7323681,11.613651 8.7323681,16.821241 C 8.7323681,18.325216 9.1526753,19.709014 9.7795400,20.971144 C 11.031920,21.432757 12.362297,21.746827 13.774307,21.746827 C 19.945262,21.746827 24.873589,16.885190 25.254413,10.809698 C 23.523449,8.7641668 21.044374,7.3966938 18.156915,7.3966938 z "
|
||||
id="path4462" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 15 KiB |
752
dist/assets/resources/images/pause.svg
vendored
@ -1,752 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="48px"
|
||||
height="48px"
|
||||
id="svg1307"
|
||||
sodipodi:version="0.32"
|
||||
inkscape:version="0.48.2 r9819"
|
||||
sodipodi:docname="pause2-test.svg"
|
||||
inkscape:export-filename="/home/lapo/Desktop/Grafica/Icone/media-actions-outlines.png"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-ydpi="90"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||
sodipodi:modified="true"
|
||||
version="1.1">
|
||||
<defs
|
||||
id="defs1309">
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient9487">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop9489" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop9491" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient9476">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop9478" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop9480" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient9466">
|
||||
<stop
|
||||
style="stop-color:#008080;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop9468" />
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop9470" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient9432">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop9434" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop9436" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient2684">
|
||||
<stop
|
||||
id="stop2686"
|
||||
offset="0"
|
||||
style="stop-color:#ffffff;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop2688"
|
||||
offset="1"
|
||||
style="stop-color:#000000;stop-opacity:1;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient2584">
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2586" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop2588" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient5075">
|
||||
<stop
|
||||
style="stop-color:#adb0a8;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop5077" />
|
||||
<stop
|
||||
style="stop-color:#464744;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop5079" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient3340">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3342" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0.62886596;"
|
||||
offset="1"
|
||||
id="stop3344" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5075"
|
||||
id="linearGradient2306"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="71.288956"
|
||||
y1="124.11652"
|
||||
x2="71.53405"
|
||||
y2="78.206215"
|
||||
gradientTransform="matrix(1.5770403,0,0,1.4373405,-85.325285,-112.88055)" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2684"
|
||||
id="linearGradient2690"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.7791869,0,0,1.6215803,-99.507163,-130.51074)"
|
||||
x1="70.049156"
|
||||
y1="150.31598"
|
||||
x2="70.951942"
|
||||
y2="88.923729" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient9466"
|
||||
id="radialGradient9472"
|
||||
cx="15.733126"
|
||||
cy="66.241669"
|
||||
fx="15.733126"
|
||||
fy="66.241669"
|
||||
r="15.202796"
|
||||
gradientTransform="matrix(0.30232561,1.0465118,-0.93837208,0.27108486,73.135931,31.962758)"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient9476"
|
||||
id="linearGradient9482"
|
||||
x1="27.147097"
|
||||
y1="74.225502"
|
||||
x2="27.300127"
|
||||
y2="83.68985"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient9487"
|
||||
id="linearGradient9493"
|
||||
x1="21.213203"
|
||||
y1="53.481934"
|
||||
x2="21.213203"
|
||||
y2="89.745346"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.76653669,0,0,0.56547618,-34.291922,62.481744)" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2684"
|
||||
id="linearGradient10063"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.65862368,0,0,0.65001423,-61.40613,49.04658)"
|
||||
x1="70.049156"
|
||||
y1="150.31598"
|
||||
x2="70.951942"
|
||||
y2="88.923729" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5075"
|
||||
id="linearGradient10065"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.58379256,0,0,0.57616129,-56.156247,56.113683)"
|
||||
x1="71.288956"
|
||||
y1="124.11652"
|
||||
x2="71.53405"
|
||||
y2="78.206215" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2817"
|
||||
id="linearGradient2858"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.103262,0,0,1.054917,-163.1228,-76.31138)"
|
||||
x1="174.83363"
|
||||
y1="84.263489"
|
||||
x2="174.74524"
|
||||
y2="105.49083" />
|
||||
<linearGradient
|
||||
id="linearGradient2817">
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2819" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0.48453608;"
|
||||
offset="1"
|
||||
id="stop2821" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient2679"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
id="stop2681"
|
||||
offset="0"
|
||||
style="stop-color:#f7f7f7;stop-opacity:1" />
|
||||
<stop
|
||||
id="stop2683"
|
||||
offset="1"
|
||||
style="stop-color:#ccd0c7;stop-opacity:1" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2697"
|
||||
id="linearGradient2862"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,1.004384,-145.0004,-71.4625)"
|
||||
x1="169"
|
||||
y1="110.33805"
|
||||
x2="169"
|
||||
y2="93.204849" />
|
||||
<linearGradient
|
||||
id="linearGradient2697">
|
||||
<stop
|
||||
id="stop2699"
|
||||
offset="0"
|
||||
style="stop-color:#babdb6" />
|
||||
<stop
|
||||
id="stop2701"
|
||||
offset="1"
|
||||
style="stop-color:#555753" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3081"
|
||||
id="linearGradient2864"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(-4e-4,-0.09426)"
|
||||
x1="15.089521"
|
||||
y1="15.291994"
|
||||
x2="14"
|
||||
y2="52.510574" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient3081">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3083" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop3085" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3081"
|
||||
id="linearGradient2800"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.5675917,0,0,1.9063787,-13.071975,-21.908765)"
|
||||
x1="15.089521"
|
||||
y1="15.291994"
|
||||
x2="14"
|
||||
y2="52.510574" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2697"
|
||||
id="linearGradient2803"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.5675917,0,0,1.9147365,-240.37274,-157.96366)"
|
||||
x1="169"
|
||||
y1="110.33805"
|
||||
x2="169"
|
||||
y2="93.204849" />
|
||||
<linearGradient
|
||||
id="linearGradient13149">
|
||||
<stop
|
||||
id="stop13151"
|
||||
offset="0"
|
||||
style="stop-color:#babdb6" />
|
||||
<stop
|
||||
id="stop13153"
|
||||
offset="1"
|
||||
style="stop-color:#555753" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2679"
|
||||
id="radialGradient2809"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(5.5842451e-6,-2.0437337,3.1228051,-2.3842281e-6,-288.35934,383.74801)"
|
||||
cx="169.77171"
|
||||
cy="100.20107"
|
||||
fx="169.77171"
|
||||
fy="100.20107"
|
||||
r="11" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2817"
|
||||
id="linearGradient2823"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.6933999,0,0,0.73552,-98.013543,-42.307321)"
|
||||
x1="174.83363"
|
||||
y1="84.263489"
|
||||
x2="174.74524"
|
||||
y2="105.49083" />
|
||||
<linearGradient
|
||||
id="linearGradient13163">
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop13165" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0.48453608;"
|
||||
offset="1"
|
||||
id="stop13167" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
y2="105.49083"
|
||||
x2="174.74524"
|
||||
y1="84.263489"
|
||||
x1="174.83363"
|
||||
gradientTransform="matrix(1.7294643,0,0,2.0110717,-268.78128,-167.20747)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient13178"
|
||||
xlink:href="#linearGradient2817"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2817"
|
||||
id="linearGradient15748"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.7294643,0,0,2.0110717,-212.21274,-161.55062)"
|
||||
x1="174.83363"
|
||||
y1="84.263489"
|
||||
x2="174.74524"
|
||||
y2="105.49083" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2697"
|
||||
id="linearGradient15752"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.5675917,0,0,1.9147365,-183.8042,-152.30681)"
|
||||
x1="169"
|
||||
y1="110.33805"
|
||||
x2="169"
|
||||
y2="93.204849" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3081"
|
||||
id="linearGradient15754"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.5675917,0,0,1.9063787,43.496568,-16.251911)"
|
||||
x1="15.089521"
|
||||
y1="15.291994"
|
||||
x2="14"
|
||||
y2="52.510574" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2817"
|
||||
id="linearGradient15756"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.103262,0,0,1.054917,-163.1228,-76.31138)"
|
||||
x1="174.83363"
|
||||
y1="84.263489"
|
||||
x2="174.74524"
|
||||
y2="105.49083" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2697"
|
||||
id="linearGradient15760"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,1.004384,-145.0004,-71.4625)"
|
||||
x1="169"
|
||||
y1="110.33805"
|
||||
x2="169"
|
||||
y2="93.204849" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3081"
|
||||
id="linearGradient15762"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(-4e-4,-0.09426)"
|
||||
x1="15.089521"
|
||||
y1="15.291994"
|
||||
x2="14"
|
||||
y2="52.510574" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2817"
|
||||
id="linearGradient15780"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.7294643,0,0,2.0110717,-188.87822,-175.51598)"
|
||||
x1="174.83363"
|
||||
y1="84.263489"
|
||||
x2="174.74524"
|
||||
y2="105.49083" />
|
||||
<filter
|
||||
inkscape:collect="always"
|
||||
id="filter15790"
|
||||
x="-0.14901266"
|
||||
width="1.2980253"
|
||||
y="-0.047467741"
|
||||
height="1.0949355">
|
||||
<feGaussianBlur
|
||||
inkscape:collect="always"
|
||||
stdDeviation="0.86708971"
|
||||
id="feGaussianBlur15792" />
|
||||
</filter>
|
||||
<filter
|
||||
color-interpolation-filters="sRGB"
|
||||
inkscape:collect="always"
|
||||
id="filter15790-7"
|
||||
x="-0.14901266"
|
||||
width="1.2980253"
|
||||
y="-0.047467742"
|
||||
height="1.0949355">
|
||||
<feGaussianBlur
|
||||
inkscape:collect="always"
|
||||
stdDeviation="0.86708971"
|
||||
id="feGaussianBlur15792-7" />
|
||||
</filter>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient9432"
|
||||
id="linearGradient8781"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.95808383,0,0,0.97572816,4.2045332,1.2585858)"
|
||||
x1="21.566757"
|
||||
y1="-18.998367"
|
||||
x2="21.213203"
|
||||
y2="32.797203" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="0.19607843"
|
||||
inkscape:pageopacity="0.0000000"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="8.5789558"
|
||||
inkscape:cx="8.4708524"
|
||||
inkscape:cy="23.599988"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-points="true"
|
||||
fill="#555753"
|
||||
showguides="false"
|
||||
inkscape:guide-bbox="true"
|
||||
guidetolerance="1px"
|
||||
stroke="#555753"
|
||||
inkscape:window-width="1440"
|
||||
inkscape:window-height="848"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
showborder="true"
|
||||
inkscape:showpageshadow="false"
|
||||
inkscape:window-maximized="1">
|
||||
<sodipodi:guide
|
||||
orientation="horizontal"
|
||||
position="38.996647"
|
||||
id="guide2194" />
|
||||
<sodipodi:guide
|
||||
orientation="horizontal"
|
||||
position="9.0140845"
|
||||
id="guide2196" />
|
||||
<sodipodi:guide
|
||||
orientation="vertical"
|
||||
position="9.0140845"
|
||||
id="guide2198" />
|
||||
<sodipodi:guide
|
||||
orientation="vertical"
|
||||
position="38.975184"
|
||||
id="guide2200" />
|
||||
<sodipodi:guide
|
||||
orientation="horizontal"
|
||||
position="22.988281"
|
||||
id="guide2202" />
|
||||
<sodipodi:guide
|
||||
orientation="vertical"
|
||||
position="23.908786"
|
||||
id="guide2204" />
|
||||
<sodipodi:guide
|
||||
orientation="vertical"
|
||||
position="157.99417"
|
||||
id="guide4332" />
|
||||
<sodipodi:guide
|
||||
orientation="horizontal"
|
||||
position="-36.062446"
|
||||
id="guide4334" />
|
||||
<sodipodi:guide
|
||||
orientation="horizontal"
|
||||
position="-58.02695"
|
||||
id="guide4336" />
|
||||
<sodipodi:guide
|
||||
orientation="vertical"
|
||||
position="180.00287"
|
||||
id="guide4338" />
|
||||
<sodipodi:guide
|
||||
orientation="vertical"
|
||||
position="107.92217"
|
||||
id="guide4417" />
|
||||
<sodipodi:guide
|
||||
orientation="vertical"
|
||||
position="129.93087"
|
||||
id="guide4419" />
|
||||
<sodipodi:guide
|
||||
orientation="horizontal"
|
||||
position="19.996875"
|
||||
id="guide5106" />
|
||||
<sodipodi:guide
|
||||
orientation="horizontal"
|
||||
position="63.039674"
|
||||
id="guide5119" />
|
||||
<sodipodi:guide
|
||||
orientation="horizontal"
|
||||
position="49.066305"
|
||||
id="guide5121" />
|
||||
<sodipodi:guide
|
||||
orientation="horizontal"
|
||||
position="-86.007168"
|
||||
id="guide5307" />
|
||||
<sodipodi:guide
|
||||
orientation="horizontal"
|
||||
position="-108.09009"
|
||||
id="guide5309" />
|
||||
<sodipodi:guide
|
||||
orientation="horizontal"
|
||||
position="-100.15429"
|
||||
id="guide3111" />
|
||||
<inkscape:grid
|
||||
id="GridFromPre046Settings"
|
||||
type="xygrid"
|
||||
originx="0px"
|
||||
originy="0px"
|
||||
spacingx="0.5px"
|
||||
spacingy="0.5px"
|
||||
color="#0000ff"
|
||||
empcolor="#0000ff"
|
||||
opacity="0.2"
|
||||
empopacity="0.4"
|
||||
empspacing="2" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata1312">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
<dc:creator>
|
||||
<cc:Agent>
|
||||
<dc:title>Lapo Calamandrei</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:creator>
|
||||
<cc:license
|
||||
rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
|
||||
<dc:subject>
|
||||
<rdf:Bag>
|
||||
<rdf:li>play</rdf:li>
|
||||
<rdf:li>media</rdf:li>
|
||||
<rdf:li>music</rdf:li>
|
||||
<rdf:li>video</rdf:li>
|
||||
<rdf:li>player</rdf:li>
|
||||
</rdf:Bag>
|
||||
</dc:subject>
|
||||
<dc:contributor>
|
||||
<cc:Agent>
|
||||
<dc:title>Jakub Steiner</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:contributor>
|
||||
</cc:Work>
|
||||
<cc:License
|
||||
rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
|
||||
<cc:permits
|
||||
rdf:resource="http://web.resource.org/cc/Reproduction" />
|
||||
<cc:permits
|
||||
rdf:resource="http://web.resource.org/cc/Distribution" />
|
||||
<cc:requires
|
||||
rdf:resource="http://web.resource.org/cc/Notice" />
|
||||
<cc:requires
|
||||
rdf:resource="http://web.resource.org/cc/Attribution" />
|
||||
<cc:permits
|
||||
rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
|
||||
<cc:requires
|
||||
rdf:resource="http://web.resource.org/cc/ShareAlike" />
|
||||
</cc:License>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer4"
|
||||
inkscape:label="contorno"
|
||||
style="display:inline" />
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
style="display:inline">
|
||||
<rect
|
||||
style="opacity:0.87000002;fill:#000000;fill-opacity:1;stroke:none;display:inline;filter:url(#filter15790-7)"
|
||||
id="rect15782-1"
|
||||
width="13.965359"
|
||||
height="43.840622"
|
||||
x="31.024309"
|
||||
y="3.2754953"
|
||||
ry="3.4330382" />
|
||||
<rect
|
||||
style="opacity:0.87000002;fill:#000000;fill-opacity:1;stroke:none;filter:url(#filter15790)"
|
||||
id="rect15782"
|
||||
width="13.965359"
|
||||
height="43.840622"
|
||||
x="11.490485"
|
||||
y="3.4522724"
|
||||
ry="3.4330382" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:#ffffff;fill-opacity:1"
|
||||
id="path9440"
|
||||
sodipodi:cx="11.667262"
|
||||
sodipodi:cy="68.113136"
|
||||
sodipodi:rx="5.6568542"
|
||||
sodipodi:ry="9.1529827"
|
||||
d="m 17.324116,68.113136 a 5.6568542,9.1529827 0 1 1 -11.3137081,0 5.6568542,9.1529827 0 1 1 11.3137081,0 z"
|
||||
transform="translate(-39.244427,37.47666)" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:url(#radialGradient9472);fill-opacity:1;stroke:none"
|
||||
id="path9446"
|
||||
sodipodi:cx="21.213203"
|
||||
sodipodi:cy="72.395187"
|
||||
sodipodi:rx="15.202796"
|
||||
sodipodi:ry="14.849242"
|
||||
d="m 36.415999,72.395187 a 15.202796,14.849242 0 1 1 -30.4055916,0 15.202796,14.849242 0 1 1 30.4055916,0 z"
|
||||
transform="translate(-39.244427,37.47666)" />
|
||||
<path
|
||||
inkscape:r_cy="true"
|
||||
inkscape:r_cx="true"
|
||||
style="opacity:0.15;color:#000000;fill:none;stroke:url(#linearGradient10063);stroke-width:1.15992785;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
|
||||
d="m -22.879826,119.83382 0,-17.57292 15.2194595,8.53701 -15.2194595,9.03591 z"
|
||||
id="path10055"
|
||||
sodipodi:nodetypes="cccc"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccc"
|
||||
id="path10057"
|
||||
d="m -22.588246,118.86097 0,-16.02392 14.0713202,8.01196 -14.0713202,8.01196 z"
|
||||
style="color:#000000;fill:#abc6e3;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.00000036;marker:none;visibility:visible;display:inline;overflow:visible"
|
||||
inkscape:r_cx="true"
|
||||
inkscape:r_cy="true"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccc"
|
||||
id="path10059"
|
||||
d="m -22.588246,118.86097 0,-16.02392 14.0713202,8.01196 -14.0713202,8.01196 z"
|
||||
style="color:#000000;fill:none;stroke:url(#linearGradient10065);stroke-width:0.57996458;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
|
||||
inkscape:r_cx="true"
|
||||
inkscape:r_cy="true"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccccccc"
|
||||
id="path10061"
|
||||
d="m -22.29635,103.34091 0,15.01619 13.1900645,-7.50809 -13.1900645,-7.5081 z m 0.583793,1.00829 11.420442,6.49981 -11.420442,6.49983 0,-12.99964 z"
|
||||
style="color:#000000;fill:#a6c1dd;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible"
|
||||
inkscape:r_cx="true"
|
||||
inkscape:r_cy="true"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:url(#linearGradient9493);fill-opacity:1;stroke:none"
|
||||
d="m -6.3777226,103.4195 c 0,4.63747 -4.8638964,7.33623 -11.2999474,7.33623 -6.43605,0 -12.007054,-2.69876 -12.007054,-7.33623 0,-4.637478 5.21745,-8.396895 11.653501,-8.396895 6.436051,0 11.6535004,3.759417 11.6535004,8.396895 z"
|
||||
id="path9484"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="sssss" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:r_cy="true"
|
||||
inkscape:r_cx="true"
|
||||
id="path2815"
|
||||
d="m 27.821733,2.7280617 0,42.2324963 13.835705,0 0,-42.2324963 -13.835705,0 z"
|
||||
style="opacity:0.15;color:#000000;fill:none;stroke:url(#linearGradient13178);stroke-width:3.45741057;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path2827"
|
||||
d="m 28.469206,3.8273677 0,40.0339553 12.540723,0 0,-40.0339553 -12.540723,0 z"
|
||||
style="color:#000000;fill:url(#radialGradient2809);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
style="color:#000000;fill:none;stroke:url(#linearGradient2803);stroke-width:1.72870588;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
|
||||
d="m 28.469206,3.8315531 0,40.2094649 12.540723,0 0,-40.2094649 -12.540723,0 z"
|
||||
id="path2762"
|
||||
inkscape:r_cx="true"
|
||||
inkscape:r_cy="true" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path2811"
|
||||
d="m 30.036795,5.7337473 0,36.2211937 9.405555,0 0,-36.2211937 -9.405555,0 z"
|
||||
style="color:#000000;fill:#ffff00;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2800);stroke-width:1.72870529000000000;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
|
||||
<g
|
||||
style="display:inline;fill:#ffff00"
|
||||
id="use2844"
|
||||
inkscape:r_cx="true"
|
||||
inkscape:r_cy="true"
|
||||
transform="matrix(1.5675916,0,0,1.9063788,-33.406597,-21.729071)">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
style="opacity:0.14999999999999999;color:#000000;fill:#ffff00;stroke:url(#linearGradient2858);stroke-width:1.99999952000000000;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
|
||||
d="m 26.086565,12.829103 0,22.153256 8.826093,0 0,-22.153256 -8.826093,0 z"
|
||||
id="path2848"
|
||||
inkscape:r_cx="true"
|
||||
inkscape:r_cy="true" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
style="color:#000000;fill:#ffff00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
|
||||
d="m 26.4996,13.40575 0,21 8,0 0,-21 -8,0 z"
|
||||
id="path2850"
|
||||
inkscape:r_cx="true"
|
||||
inkscape:r_cy="true" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:r_cy="true"
|
||||
inkscape:r_cx="true"
|
||||
id="path2852"
|
||||
d="m 26.4996,13.407946 0,21.092064 8,0 0,-21.092064 -8,0 z"
|
||||
style="color:#000000;fill:#ffff00;stroke:url(#linearGradient2862);stroke-width:1.00000011999999990;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
style="color:#000000;fill:#ffff00;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2864);stroke-width:0.99999970000000005;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
|
||||
d="m 27.4996,14.40575 0,19 6,0 0,-19 -6,0 z"
|
||||
id="path2854"
|
||||
inkscape:r_cx="true"
|
||||
inkscape:r_cy="true" />
|
||||
</g>
|
||||
<path
|
||||
style="fill:url(#linearGradient8781);fill-opacity:1"
|
||||
d="M 5.84375 0.90625 L 5.84375 17.03125 C 11.031229 20.945225 18.82566 23.4375 27.5625 23.4375 C 34.627667 23.4375 41.067803 21.787366 46.03125 19.09375 L 46.03125 0.90625 L 5.84375 0.90625 z "
|
||||
id="path9430" />
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 26 KiB |
BIN
dist/favicon.ico
vendored
Before Width: | Height: | Size: 5.3 KiB |
51
dist/index.html
vendored
1
dist/main.25127687b7793fef.js
vendored
1
dist/polyfills.319c79dd175e50d0.js
vendored
BIN
dist/roboto-latin-100.539f0a96b40596f7.woff2
vendored
BIN
dist/roboto-latin-100.5ba994dac3e79ea8.woff
vendored
BIN
dist/roboto-latin-100italic.41ba64219cb743c9.woff2
vendored
BIN
dist/roboto-latin-100italic.d61e7e8b07c0638c.woff
vendored
BIN
dist/roboto-latin-300.4d8f8086236bad80.woff2
vendored
BIN
dist/roboto-latin-300.6c1bc461047e61f5.woff
vendored
BIN
dist/roboto-latin-300italic.3a529751a590d3c1.woff
vendored
BIN
dist/roboto-latin-300italic.45164643b3bd5824.woff2
vendored
BIN
dist/roboto-latin-400.1e2d4d3a272629cd.woff2
vendored
BIN
dist/roboto-latin-400.7e4a045b9373d9c1.woff
vendored
BIN
dist/roboto-latin-400italic.68431199e5b90ea8.woff
vendored
BIN
dist/roboto-latin-400italic.bb3c6955c4334c8a.woff2
vendored
BIN
dist/roboto-latin-500.1dfbc3dbf815e3f3.woff2
vendored
BIN
dist/roboto-latin-500.e21fe97fd2329ff7.woff
vendored
BIN
dist/roboto-latin-500italic.7543a42b12b1452f.woff2
vendored
BIN
dist/roboto-latin-500italic.aaff6867154023d3.woff
vendored
BIN
dist/roboto-latin-700.02633003129d1e63.woff
vendored
BIN
dist/roboto-latin-700.12893bfc0762b0f3.woff2
vendored
BIN
dist/roboto-latin-700italic.bc7179e004e40113.woff2
vendored
BIN
dist/roboto-latin-700italic.e53062e27c63fafb.woff
vendored
BIN
dist/roboto-latin-900.282ba77fda1349f3.woff2
vendored
BIN
dist/roboto-latin-900.4962e810cbb4d3e5.woff
vendored
BIN
dist/roboto-latin-900italic.2394134a78bbaef8.woff
vendored
BIN
dist/roboto-latin-900italic.9c1f80840351fa12.woff2
vendored
1
dist/runtime.24fa95b7061d7056.js
vendored
@ -1 +0,0 @@
|
||||
!function(){"use strict";var e,v={},g={};function n(e){var u=g[e];if(void 0!==u)return u.exports;var t=g[e]={id:e,loaded:!1,exports:{}};return v[e].call(t.exports,t,t.exports,n),t.loaded=!0,t.exports}n.m=v,e=[],n.O=function(u,t,o,a){if(!t){var r=1/0;for(i=0;i<e.length;i++){t=e[i][0],o=e[i][1],a=e[i][2];for(var l=!0,f=0;f<t.length;f++)(!1&a||r>=a)&&Object.keys(n.O).every(function(b){return n.O[b](t[f])})?t.splice(f--,1):(l=!1,a<r&&(r=a));if(l){e.splice(i--,1);var s=o();void 0!==s&&(u=s)}}return u}a=a||0;for(var i=e.length;i>0&&e[i-1][2]>a;i--)e[i]=e[i-1];e[i]=[t,o,a]},n.n=function(e){var u=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(u,{a:u}),u},n.d=function(e,u){for(var t in u)n.o(u,t)&&!n.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:u[t]})},n.f={},n.e=function(e){return Promise.all(Object.keys(n.f).reduce(function(u,t){return n.f[t](e,u),u},[]))},n.u=function(e){return e+".92c7ab880f2504d3.js"},n.miniCssF=function(e){},n.hmd=function(e){return(e=Object.create(e)).children||(e.children=[]),Object.defineProperty(e,"exports",{enumerable:!0,set:function(){throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+e.id)}}),e},n.o=function(e,u){return Object.prototype.hasOwnProperty.call(e,u)},function(){var e={},u="gns3-web-ui:";n.l=function(t,o,a,i){if(e[t])e[t].push(o);else{var r,l;if(void 0!==a)for(var f=document.getElementsByTagName("script"),s=0;s<f.length;s++){var c=f[s];if(c.getAttribute("src")==t||c.getAttribute("data-webpack")==u+a){r=c;break}}r||(l=!0,(r=document.createElement("script")).type="module",r.charset="utf-8",r.timeout=120,n.nc&&r.setAttribute("nonce",n.nc),r.setAttribute("data-webpack",u+a),r.src=n.tu(t)),e[t]=[o];var d=function(h,b){r.onerror=r.onload=null,clearTimeout(p);var _=e[t];if(delete e[t],r.parentNode&&r.parentNode.removeChild(r),_&&_.forEach(function(m){return m(b)}),h)return h(b)},p=setTimeout(d.bind(null,void 0,{type:"timeout",target:r}),12e4);r.onerror=d.bind(null,r.onerror),r.onload=d.bind(null,r.onload),l&&document.head.appendChild(r)}}}(),n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},function(){var e;n.tt=function(){return void 0===e&&(e={createScriptURL:function(u){return u}},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(e=trustedTypes.createPolicy("angular#bundler",e))),e}}(),n.tu=function(e){return n.tt().createScriptURL(e)},n.p="",function(){var e={666:0};n.f.j=function(o,a){var i=n.o(e,o)?e[o]:void 0;if(0!==i)if(i)a.push(i[2]);else if(666!=o){var r=new Promise(function(c,d){i=e[o]=[c,d]});a.push(i[2]=r);var l=n.p+n.u(o),f=new Error;n.l(l,function(c){if(n.o(e,o)&&(0!==(i=e[o])&&(e[o]=void 0),i)){var d=c&&("load"===c.type?"missing":c.type),p=c&&c.target&&c.target.src;f.message="Loading chunk "+o+" failed.\n("+d+": "+p+")",f.name="ChunkLoadError",f.type=d,f.request=p,i[1](f)}},"chunk-"+o,o)}else e[o]=0},n.O.j=function(o){return 0===e[o]};var u=function(o,a){var f,s,i=a[0],r=a[1],l=a[2],c=0;if(i.some(function(p){return 0!==e[p]})){for(f in r)n.o(r,f)&&(n.m[f]=r[f]);if(l)var d=l(n)}for(o&&o(a);c<i.length;c++)s=i[c],n.o(e,s)&&e[s]&&e[s][0](),e[s]=0;return n.O(d)},t=self.webpackChunkgns3_web_ui=self.webpackChunkgns3_web_ui||[];t.forEach(u.bind(null,0)),t.push=u.bind(null,t.push.bind(t))}()}();
|
5
dist/styles.6e966072487df0b7.css
vendored
@ -1,43 +0,0 @@
|
||||
import { TestHelper } from './helpers/common.po';
|
||||
import { ControllersPage } from './helpers/controller.po';
|
||||
|
||||
describe('Controllers page', () => {
|
||||
let page: ControllersPage;
|
||||
let helper: TestHelper;
|
||||
|
||||
beforeEach(() => {
|
||||
page = new ControllersPage();
|
||||
helper = new TestHelper();
|
||||
});
|
||||
|
||||
xit('user should have possibility to add controller', async () => {
|
||||
// arrange
|
||||
page.maximizeWindow();
|
||||
await page.navigateToControllersPage();
|
||||
|
||||
// act
|
||||
let text = await page.getAddControllerNotificationText();
|
||||
|
||||
// assert
|
||||
expect(text).toBe("We've discovered GNS3 controller on 127.0.0.1:3080, would you like to add to the list?");
|
||||
});
|
||||
|
||||
it('user should see added controller in the list', async () => {
|
||||
// arrange
|
||||
page.maximizeWindow();
|
||||
await page.navigateToControllersPage();
|
||||
await page.clickAddController();
|
||||
helper.sleep(1000);
|
||||
|
||||
// act
|
||||
let firstRowOfControllersTable = await page.checkControllersTable();
|
||||
let controllerData = [];
|
||||
await helper.asyncForEach(firstRowOfControllersTable, async (element) => {
|
||||
controllerData.push(await element.getText());
|
||||
});
|
||||
|
||||
// assert
|
||||
expect(controllerData).toContain('127.0.0.1');
|
||||
expect(controllerData).toContain('3080');
|
||||
});
|
||||
});
|
@ -1,41 +1,41 @@
|
||||
import { browser, by } from 'protractor';
|
||||
import { TestHelper } from './common.po';
|
||||
|
||||
export class ControllersPage {
|
||||
export class ServersPage {
|
||||
helper = new TestHelper();
|
||||
|
||||
maximizeWindow() {
|
||||
browser.driver.manage().window().maximize();
|
||||
}
|
||||
|
||||
navigateToControllersPage() {
|
||||
return browser.get('/controllers');
|
||||
navigateToServersPage() {
|
||||
return browser.get('/servers');
|
||||
}
|
||||
|
||||
getAddControllerNotificationText() {
|
||||
getAddServerNotificationText() {
|
||||
return browser.driver.findElement(by.className('mat-card-content')).getText();
|
||||
}
|
||||
|
||||
async clickAddController() {
|
||||
let controllerTable = await this.checkControllersTable();
|
||||
if (controllerTable.length === 0) {
|
||||
async clickAddServer() {
|
||||
let serversTable = await this.checkServersTable();
|
||||
if (serversTable.length === 0) {
|
||||
let buttons = await browser.driver.findElements(by.className('mat-button mat-button-base'));
|
||||
await buttons[3].click();
|
||||
}
|
||||
}
|
||||
|
||||
checkControllersTable() {
|
||||
checkServersTable() {
|
||||
return browser.driver.findElements(by.css('mat-cell'));
|
||||
}
|
||||
|
||||
async navigateToControllerProjects() {
|
||||
async navigateToServerProjects() {
|
||||
this.helper.sleep(2000);
|
||||
let hyperlinks = await browser.driver.findElements(by.css('a.table-link'));
|
||||
let controllerLink;
|
||||
let serverLink;
|
||||
await this.helper.asyncForEach(hyperlinks, async (element) => {
|
||||
let text = await element.getText();
|
||||
if (text === '127.0.0.1') controllerLink = element;
|
||||
if (text === '127.0.0.1') serverLink = element;
|
||||
});
|
||||
await controllerLink.click();
|
||||
await serverLink.click();
|
||||
}
|
||||
}
|
@ -1,24 +1,24 @@
|
||||
import { TestHelper } from './helpers/common.po';
|
||||
import { ProjectMapPage } from './helpers/project-map.po';
|
||||
import { ProjectsPage } from './helpers/project.po';
|
||||
import { ControllersPage } from './helpers/controller.po';
|
||||
import { ServersPage } from './helpers/server.po';
|
||||
|
||||
describe('Project map page', () => {
|
||||
let controllersPage: ControllersPage;
|
||||
let serversPage: ServersPage;
|
||||
let projectsPage: ProjectsPage;
|
||||
let projectMapPage: ProjectMapPage;
|
||||
let helper: TestHelper;
|
||||
|
||||
beforeEach(async () => {
|
||||
controllersPage = new ControllersPage();
|
||||
serversPage = new ServersPage();
|
||||
projectsPage = new ProjectsPage();
|
||||
projectMapPage = new ProjectMapPage();
|
||||
helper = new TestHelper();
|
||||
|
||||
controllersPage.maximizeWindow();
|
||||
await controllersPage.navigateToControllersPage();
|
||||
await controllersPage.clickAddController();
|
||||
await controllersPage.navigateToControllerProjects();
|
||||
serversPage.maximizeWindow();
|
||||
await serversPage.navigateToServersPage();
|
||||
await serversPage.clickAddServer();
|
||||
await serversPage.navigateToServerProjects();
|
||||
await projectsPage.openAddProjectDialog();
|
||||
helper.sleep(2000);
|
||||
await projectsPage.createProject();
|
||||
|
@ -1,24 +1,24 @@
|
||||
import { TestHelper } from './helpers/common.po';
|
||||
import { ProjectsPage } from './helpers/project.po';
|
||||
import { ControllersPage } from './helpers/controller.po';
|
||||
import { ServersPage } from './helpers/server.po';
|
||||
|
||||
describe('Projects page', () => {
|
||||
let controllersPage: ControllersPage;
|
||||
let serversPage: ServersPage;
|
||||
let projectsPage: ProjectsPage;
|
||||
let helper: TestHelper;
|
||||
|
||||
beforeEach(() => {
|
||||
controllersPage = new ControllersPage();
|
||||
serversPage = new ServersPage();
|
||||
projectsPage = new ProjectsPage();
|
||||
helper = new TestHelper();
|
||||
});
|
||||
|
||||
it('user should have possibility to create new project', async () => {
|
||||
// arrange
|
||||
controllersPage.maximizeWindow();
|
||||
await controllersPage.navigateToControllersPage();
|
||||
await controllersPage.clickAddController();
|
||||
await controllersPage.navigateToControllerProjects();
|
||||
serversPage.maximizeWindow();
|
||||
await serversPage.navigateToServersPage();
|
||||
await serversPage.clickAddServer();
|
||||
await serversPage.navigateToServerProjects();
|
||||
helper.sleep(2000);
|
||||
|
||||
//act
|
||||
@ -28,6 +28,6 @@ describe('Projects page', () => {
|
||||
helper.sleep(2000);
|
||||
|
||||
//assert
|
||||
expect(helper.getCurrentUrl()).toMatch('controller/1/project/');
|
||||
expect(helper.getCurrentUrl()).toMatch('server/1/project/');
|
||||
});
|
||||
});
|
||||
|
43
e2e/servers.e2e-spec.ts
Normal file
@ -0,0 +1,43 @@
|
||||
import { TestHelper } from './helpers/common.po';
|
||||
import { ServersPage } from './helpers/server.po';
|
||||
|
||||
describe('Servers page', () => {
|
||||
let page: ServersPage;
|
||||
let helper: TestHelper;
|
||||
|
||||
beforeEach(() => {
|
||||
page = new ServersPage();
|
||||
helper = new TestHelper();
|
||||
});
|
||||
|
||||
xit('user should have possibility to add server', async () => {
|
||||
// arrange
|
||||
page.maximizeWindow();
|
||||
await page.navigateToServersPage();
|
||||
|
||||
// act
|
||||
let text = await page.getAddServerNotificationText();
|
||||
|
||||
// assert
|
||||
expect(text).toBe("We've discovered GNS3 server on 127.0.0.1:3080, would you like to add to the list?");
|
||||
});
|
||||
|
||||
it('user should see added server in the list', async () => {
|
||||
// arrange
|
||||
page.maximizeWindow();
|
||||
await page.navigateToServersPage();
|
||||
await page.clickAddServer();
|
||||
helper.sleep(1000);
|
||||
|
||||
// act
|
||||
let firstRowOfServersTable = await page.checkServersTable();
|
||||
let serverData = [];
|
||||
await helper.asyncForEach(firstRowOfServersTable, async (element) => {
|
||||
serverData.push(await element.getText());
|
||||
});
|
||||
|
||||
// assert
|
||||
expect(serverData).toContain('127.0.0.1');
|
||||
expect(serverData).toContain('3080');
|
||||
});
|
||||
});
|
@ -15,7 +15,7 @@ files:
|
||||
- renderer.js
|
||||
- sentry.js
|
||||
- installed-software.js
|
||||
- local-controller.js
|
||||
- local-server.js
|
||||
- console-executor.js
|
||||
- package.json
|
||||
|
||||
|
@ -19,13 +19,13 @@ module.exports = function (config) {
|
||||
dir: require('path').join(__dirname, 'coverage'), reports: [ 'html', 'lcovonly' ],
|
||||
fixWebpackSourcePaths: true
|
||||
},
|
||||
|
||||
|
||||
reporters: ['progress', 'kjhtml'],
|
||||
port: 9876,
|
||||
colors: true,
|
||||
logLevel: config.LOG_INFO,
|
||||
autoWatch: true,
|
||||
browsers: ['ChromeHeadless'],
|
||||
browsers: ['Chrome'],
|
||||
singleRun: true
|
||||
});
|
||||
};
|
||||
|
@ -8,9 +8,9 @@ const { app } = require('electron')
|
||||
|
||||
const isWin = /^win/.test(process.platform);
|
||||
|
||||
let runningControllers = {};
|
||||
let runningServers = {};
|
||||
|
||||
exports.getLocalControllerPath = async () => {
|
||||
exports.getLocalServerPath = async () => {
|
||||
let binary = isWin ? 'gns3server.exe': 'gns3server';
|
||||
return findBinary('exe.', binary);
|
||||
}
|
||||
@ -20,27 +20,27 @@ exports.getUbridgePath = async () => {
|
||||
return findBinary('ubridge', binary);
|
||||
}
|
||||
|
||||
exports.startLocalController = async (controller) => {
|
||||
return await run(controller, {
|
||||
exports.startLocalServer = async (server) => {
|
||||
return await run(server, {
|
||||
logStdout: true
|
||||
});
|
||||
}
|
||||
|
||||
exports.stopLocalController = async (controller) => {
|
||||
return await stop(controller.name);
|
||||
exports.stopLocalServer = async (server) => {
|
||||
return await stop(server.name);
|
||||
}
|
||||
|
||||
exports.getRunningControllers = () => {
|
||||
return Object.keys(runningControllers);
|
||||
exports.getRunningServers = () => {
|
||||
return Object.keys(runningServers);
|
||||
}
|
||||
|
||||
exports.stopAllLocalControllers = async () => {
|
||||
exports.stopAllLocalServers = async () => {
|
||||
return await stopAll();
|
||||
}
|
||||
|
||||
async function findBinary(binaryDirectory, filename) {
|
||||
const lookupDirectories = [
|
||||
__dirname,
|
||||
__dirname,
|
||||
path.dirname(app.getPath('exe'))
|
||||
];
|
||||
|
||||
@ -60,7 +60,7 @@ async function findBinaryInDirectory(baseDirectory, binaryDirectory, filename) {
|
||||
}
|
||||
|
||||
const files = fs.readdirSync(distDirectory);
|
||||
|
||||
|
||||
let binaryPath = null;
|
||||
|
||||
files.forEach((directory) => {
|
||||
@ -77,33 +77,33 @@ async function findBinaryInDirectory(baseDirectory, binaryDirectory, filename) {
|
||||
}
|
||||
|
||||
|
||||
function getControllerArguments(controller, overrides, configPath) {
|
||||
let controllerArguments = [];
|
||||
if(controller.host) {
|
||||
controllerArguments.push('--host');
|
||||
controllerArguments.push(controller.host);
|
||||
function getServerArguments(server, overrides, configPath) {
|
||||
let serverArguments = [];
|
||||
if(server.host) {
|
||||
serverArguments.push('--host');
|
||||
serverArguments.push(server.host);
|
||||
}
|
||||
if(controller.port) {
|
||||
controllerArguments.push('--port');
|
||||
controllerArguments.push(controller.port);
|
||||
if(server.port) {
|
||||
serverArguments.push('--port');
|
||||
serverArguments.push(server.port);
|
||||
}
|
||||
|
||||
controllerArguments.push('--local');
|
||||
serverArguments.push('--local');
|
||||
|
||||
if(configPath) {
|
||||
controllerArguments.push('--config');
|
||||
controllerArguments.push(configPath);
|
||||
serverArguments.push('--config');
|
||||
serverArguments.push(configPath);
|
||||
}
|
||||
|
||||
return controllerArguments;
|
||||
return serverArguments;
|
||||
}
|
||||
|
||||
function getChannelForController(controller) {
|
||||
return `local-controller-run-${controller.name}`;
|
||||
function getChannelForServer(server) {
|
||||
return `local-server-run-${server.name}`;
|
||||
}
|
||||
|
||||
function notifyStatus(status) {
|
||||
ipcMain.emit('local-controller-status-events', status);
|
||||
ipcMain.emit('local-server-status-events', status);
|
||||
}
|
||||
|
||||
function filterOutput(line) {
|
||||
@ -120,44 +120,44 @@ function filterOutput(line) {
|
||||
}
|
||||
|
||||
async function stopAll() {
|
||||
for(var controllerName in runningControllers) {
|
||||
let result, error = await stop(controllerName);
|
||||
for(var serverName in runningServers) {
|
||||
let result, error = await stop(serverName);
|
||||
}
|
||||
console.log(`Stopped all controllers`);
|
||||
console.log(`Stopped all servers`);
|
||||
}
|
||||
|
||||
async function stop(controllerName) {
|
||||
async function stop(serverName) {
|
||||
let pid = undefined;
|
||||
|
||||
const runningController = runningControllers[controllerName];
|
||||
const runningServer = runningServers[serverName];
|
||||
|
||||
if(runningController !== undefined && runningController.process) {
|
||||
pid = runningController.process.pid;
|
||||
if(runningServer !== undefined && runningServer.process) {
|
||||
pid = runningServer.process.pid;
|
||||
}
|
||||
|
||||
console.log(`Stopping '${controllerName}' with PID='${pid}'`);
|
||||
|
||||
console.log(`Stopping '${serverName}' with PID='${pid}'`);
|
||||
|
||||
const stopped = new Promise((resolve, reject) => {
|
||||
if(pid === undefined) {
|
||||
resolve(`Controller '${controllerName} is already stopped`);
|
||||
delete runningControllers[controllerName];
|
||||
resolve(`Server '${serverName} is already stopped`);
|
||||
delete runningServers[serverName];
|
||||
return;
|
||||
}
|
||||
|
||||
kill(pid, (error) => {
|
||||
if(error) {
|
||||
console.error(`Error occured during stopping '${controllerName}' with PID='${pid}'`);
|
||||
console.error(`Error occured during stopping '${serverName}' with PID='${pid}'`);
|
||||
reject(error);
|
||||
}
|
||||
else {
|
||||
delete runningControllers[controllerName];
|
||||
console.log(`Stopped '${controllerName}' with PID='${pid}'`);
|
||||
resolve(`Stopped '${controllerName}' with PID='${pid}'`);
|
||||
delete runningServers[serverName];
|
||||
console.log(`Stopped '${serverName}' with PID='${pid}'`);
|
||||
resolve(`Stopped '${serverName}' with PID='${pid}'`);
|
||||
|
||||
notifyStatus({
|
||||
controllerName: controllerName,
|
||||
serverName: serverName,
|
||||
status: 'stopped',
|
||||
message: `Controller '${controllerName}' stopped'`
|
||||
message: `Server '${serverName}' stopped'`
|
||||
});
|
||||
}
|
||||
});
|
||||
@ -166,11 +166,11 @@ async function stop(controllerName) {
|
||||
return stopped;
|
||||
}
|
||||
|
||||
async function getIniFile(controller) {
|
||||
return path.join(app.getPath('userData'), `gns3_controller_${controller.id}.ini`);
|
||||
async function getIniFile(server) {
|
||||
return path.join(app.getPath('userData'), `gns3_server_${server.id}.ini`);
|
||||
}
|
||||
|
||||
async function configure(configPath, controller) {
|
||||
async function configure(configPath, server) {
|
||||
if(!fs.existsSync(configPath)) {
|
||||
fs.closeSync(fs.openSync(configPath, 'w'));
|
||||
console.log(`Configuration file '${configPath}' has been created.`);
|
||||
@ -178,20 +178,20 @@ async function configure(configPath, controller) {
|
||||
|
||||
var config = ini.parse(fs.readFileSync(configPath, 'utf-8'));
|
||||
|
||||
if(controller.path) {
|
||||
config.path = controller.path;
|
||||
if(server.path) {
|
||||
config.path = server.path;
|
||||
}
|
||||
if(controller.host) {
|
||||
config.host = controller.host;
|
||||
if(server.host) {
|
||||
config.host = server.host;
|
||||
}
|
||||
if(controller.port) {
|
||||
config.port = controller.port;
|
||||
if(server.port) {
|
||||
config.port = server.port;
|
||||
}
|
||||
if(controller.ubridge_path) {
|
||||
config.ubridge_path = controller.ubridge_path;
|
||||
if(server.ubridge_path) {
|
||||
config.ubridge_path = server.ubridge_path;
|
||||
}
|
||||
|
||||
fs.writeFileSync(configPath, ini.stringify(config, { section: 'Controller' }));
|
||||
fs.writeFileSync(configPath, ini.stringify(config, { section: 'Server' }));
|
||||
}
|
||||
|
||||
async function setPATHEnv() {
|
||||
@ -216,7 +216,7 @@ async function setPATHEnv() {
|
||||
process.env.PATH = extra.join(";");
|
||||
}
|
||||
|
||||
async function run(controller, options) {
|
||||
async function run(server, options) {
|
||||
if(!options) {
|
||||
options = {};
|
||||
}
|
||||
@ -226,34 +226,34 @@ async function run(controller, options) {
|
||||
|
||||
console.log(`Configuring`);
|
||||
|
||||
const configPath = await getIniFile(controller);
|
||||
await configure(configPath, controller);
|
||||
const configPath = await getIniFile(server);
|
||||
await configure(configPath, server);
|
||||
|
||||
console.log(`Setting up PATH`);
|
||||
await setPATHEnv();
|
||||
|
||||
console.log(`Running '${controller.path}'`);
|
||||
console.log(`Running '${server.path}'`);
|
||||
|
||||
let controllerProcess = spawn(controller.path, getControllerArguments(controller, {}, configPath));
|
||||
let serverProcess = spawn(server.path, getServerArguments(server, {}, configPath));
|
||||
|
||||
notifyStatus({
|
||||
controllerName: controller.name,
|
||||
serverName: server.name,
|
||||
status: 'started',
|
||||
message: `Controller '${controller.name}' started'`
|
||||
message: `Server '${server.name}' started'`
|
||||
});
|
||||
|
||||
runningControllers[controller.name] = {
|
||||
process: controllerProcess
|
||||
|
||||
runningServers[server.name] = {
|
||||
process: serverProcess
|
||||
};
|
||||
|
||||
controllerProcess.stdout.on('data', function(data) {
|
||||
serverProcess.stdout.on('data', function(data) {
|
||||
const line = data.toString();
|
||||
const { isCritical, errorMessage } = filterOutput(line);
|
||||
if(isCritical) {
|
||||
notifyStatus({
|
||||
controllerName: controller.name,
|
||||
serverName: server.name,
|
||||
status: 'stderr',
|
||||
message: `Controller reported error: '${errorMessage}`
|
||||
message: `Server reported error: '${errorMessage}`
|
||||
});
|
||||
}
|
||||
|
||||
@ -262,25 +262,25 @@ async function run(controller, options) {
|
||||
}
|
||||
});
|
||||
|
||||
controllerProcess.stderr.on('data', function(data) {
|
||||
serverProcess.stderr.on('data', function(data) {
|
||||
if(logSterr) {
|
||||
console.log(data.toString());
|
||||
}
|
||||
});
|
||||
|
||||
controllerProcess.on('exit', (code, signal) => {
|
||||
serverProcess.on('exit', (code, signal) => {
|
||||
notifyStatus({
|
||||
controllerName: controller.name,
|
||||
serverName: server.name,
|
||||
status: 'errored',
|
||||
message: `controller '${controller.name}' has exited with status='${code}'`
|
||||
message: `Server '${server.name}' has exited with status='${code}'`
|
||||
});
|
||||
});
|
||||
|
||||
controllerProcess.on('error', (err) => {
|
||||
serverProcess.on('error', (err) => {
|
||||
notifyStatus({
|
||||
controllerName: controller.name,
|
||||
serverName: server.name,
|
||||
status: 'errored',
|
||||
message: `Controller errored: '${err}`
|
||||
message: `Server errored: '${err}`
|
||||
});
|
||||
});
|
||||
|
||||
@ -297,9 +297,9 @@ async function main() {
|
||||
}
|
||||
|
||||
if(ipcMain) {
|
||||
ipcMain.on('local-controller-run', async function (event, controller) {
|
||||
const responseChannel = getChannelForController();
|
||||
await run(controller);
|
||||
ipcMain.on('local-server-run', async function (event, server) {
|
||||
const responseChannel = getChannelForServer();
|
||||
await run(server);
|
||||
event.sender.send(responseChannel, {
|
||||
success: true
|
||||
});
|
||||
@ -318,4 +318,4 @@ if (require.main === module) {
|
||||
});
|
||||
|
||||
main();
|
||||
}
|
||||
}
|
102
package.json
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "gns3-web-ui",
|
||||
"version": "3.0.0rc2",
|
||||
"version": "2.2.53",
|
||||
"author": {
|
||||
"name": "GNS3 Technology Inc.",
|
||||
"email": "developers@gns3.com"
|
||||
@ -36,102 +36,98 @@
|
||||
"generate-licenses-file": "yarn license-checker --production --csv --out licenses.csv",
|
||||
"prebuildforelectron": "node set-variables-in-env.js --set src/environments/environment.electron.prod.ts",
|
||||
"postbuildforelectron": "node set-variables-in-env.js --unset src/environments/environment.electron.prod.ts",
|
||||
"postinstall": "ngcc --properties es2020 browser module main --first-only --create-ivy-entry-points --tsconfig \"./src/tsconfig.app.json\" && ngcc --properties es2020 browser module main --first-only --create-ivy-entry-points --tsconfig \"./src/tsconfig.app.json\"",
|
||||
"snyk-protect": "snyk-protect",
|
||||
"prepare": "husky install"
|
||||
"postinstall": "ngcc --properties es5 browser module main --first-only --create-ivy-entry-points && ngcc --properties es2015 browser module main --first-only --create-ivy-entry-points",
|
||||
"snyk-protect": "snyk protect",
|
||||
"prepare": "yarn run snyk-protect"
|
||||
},
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
"@angular/animations": "^14.3.0",
|
||||
"@angular/cdk": "^14.2.7",
|
||||
"@angular/common": "^14.3.0",
|
||||
"@angular/compiler": "^14.3.0",
|
||||
"@angular/core": "^14.3.0",
|
||||
"@angular/forms": "^14.3.0",
|
||||
"@angular/material": "^14.2.7",
|
||||
"@angular/platform-browser": "^14.3.0",
|
||||
"@angular/platform-browser-dynamic": "^14.3.0",
|
||||
"@angular/router": "^14.3.0",
|
||||
"@angular/animations": "^12.2.12",
|
||||
"@angular/cdk": "^12.2.12",
|
||||
"@angular/common": "^12.2.12",
|
||||
"@angular/compiler": "^12.2.12",
|
||||
"@angular/core": "^12.2.12",
|
||||
"@angular/forms": "^12.2.12",
|
||||
"@angular/material": "^12.2.12",
|
||||
"@angular/platform-browser": "^12.2.12",
|
||||
"@angular/platform-browser-dynamic": "^12.2.12",
|
||||
"@angular/router": "^12.2.12",
|
||||
"@sentry/browser": "^6.14.1",
|
||||
"@snyk/protect": "^1.972.0",
|
||||
"@types/jest": "^27.0.2",
|
||||
"@types/mocha": "^9.1.1",
|
||||
"@types/mocha": "^9.0.0",
|
||||
"@types/react": "^17.0.34",
|
||||
"@types/react-dom": "^17.0.11",
|
||||
"angular-draggable-droppable": "^6.1.0",
|
||||
"angular-draggable-droppable": "^5.0.0",
|
||||
"angular-resizable-element": "^3.4.0",
|
||||
"autoprefixer": "10.4.5",
|
||||
"bootstrap": "^5.1.3",
|
||||
"command-exists": "^1.2.9",
|
||||
"core-js": "^3.22.3",
|
||||
"css-tree": "^2.1.0",
|
||||
"core-js": "^3.19.1",
|
||||
"css-tree": "^1.1.3",
|
||||
"d3-ng2-service": "^2.2.0",
|
||||
"eev": "^0.1.5",
|
||||
"ini": "^3.0.0",
|
||||
"marked": "^4.0.14",
|
||||
"ini": "^2.0.0",
|
||||
"ipaddr.js": "^2.1.0",
|
||||
"material-design-icons": "^3.0.1",
|
||||
"mousetrap": "^1.6.5",
|
||||
"ng-circle-progress": "^1.6.0",
|
||||
"ng2-file-upload": "^3.0.0",
|
||||
"ng2-file-upload": "^1.4.0",
|
||||
"ngx-childprocess": "^0.0.6",
|
||||
"ngx-device-detector": "4.0.1",
|
||||
"ngx-device-detector": "^2.1.1",
|
||||
"ngx-electron": "^2.2.0",
|
||||
"node-fetch": "^3.2.10",
|
||||
"notosans-fontface": "^1.3.0",
|
||||
"postcss-loader": "^6.2.1",
|
||||
"notosans-fontface": "1.2.2",
|
||||
"prettier-plugin-organize-imports": "^2.3.4",
|
||||
"rxjs": "^6.6.7",
|
||||
"rxjs-compat": "^6.6.7",
|
||||
"save-svg-as-png": "^1.4.17",
|
||||
"snyk": "^1.1064.0",
|
||||
"spark-md5": "^3.0.2",
|
||||
"svg-crowbar": "^0.7.0",
|
||||
"tree-kill": "^1.2.2",
|
||||
"tslib": "^2.4.0",
|
||||
"tslib": "^2.3.1",
|
||||
"typeface-roboto": "^1.1.13",
|
||||
"xterm": "^4.18.0",
|
||||
"xterm": "^4.15.0",
|
||||
"xterm-addon-attach": "^0.6.0",
|
||||
"xterm-addon-fit": "^0.5.0",
|
||||
"yargs": "^17.4.1",
|
||||
"zone.js": "^0.11.5"
|
||||
"yargs": "^17.2.1",
|
||||
"zone.js": "~0.11.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@angular-devkit/build-angular": "^14.2.12",
|
||||
"@angular/cli": "^14.2.12",
|
||||
"@angular/compiler-cli": "^14.3.0",
|
||||
"@angular/language-service": "^14.3.0",
|
||||
"@sentry/cli": "^2.0.4",
|
||||
"@sentry/electron": "^3.0.7",
|
||||
"@types/jasmine": "^4.0.3",
|
||||
"@angular-devkit/build-angular": "^12.2.12",
|
||||
"@angular/cli": "^12.2.12",
|
||||
"@angular/compiler-cli": "^12.2.12",
|
||||
"@angular/language-service": "^12.2.12",
|
||||
"@sentry/cli": "^1.71.0",
|
||||
"@sentry/electron": "^2.5.4",
|
||||
"@types/jasmine": "^3.10.2",
|
||||
"@types/jasminewd2": "^2.0.10",
|
||||
"@types/node": "^17.0.31",
|
||||
"codelyzer": "^0.0.28",
|
||||
"electron": "13.6.6",
|
||||
"electron-builder": "^23.0.3",
|
||||
"@types/node": "16.11.6",
|
||||
"codelyzer": "^6.0.2",
|
||||
"electron": "^13.6.6",
|
||||
"electron-builder": "^22.9.1",
|
||||
"file-loader": "^6.2.0",
|
||||
"husky": "^8.0.3",
|
||||
"jasmine-core": "^4.1.0",
|
||||
"jasmine-spec-reporter": "^7.0.0",
|
||||
"jasmine-core": "~3.10.1",
|
||||
"jasmine-spec-reporter": "~7.0.0",
|
||||
"jquery": "^3.6.0",
|
||||
"karma": "^6.3.19",
|
||||
"karma-chrome-launcher": "^3.1.1",
|
||||
"karma": "^6.3.16",
|
||||
"karma-chrome-launcher": "~3.1.0",
|
||||
"karma-cli": "^2.0.0",
|
||||
"karma-coverage-istanbul-reporter": "^3.0.3",
|
||||
"karma-jasmine": "^5.0.0",
|
||||
"karma-coverage-istanbul-reporter": "~3.0.3",
|
||||
"karma-jasmine": "~4.0.1",
|
||||
"karma-jasmine-html-reporter": "^1.7.0",
|
||||
"license-checker": "^25.0.1",
|
||||
"popper.js": "^1.16.1",
|
||||
"prettier": "^2.6.2",
|
||||
"prettier": "^2.4.1",
|
||||
"protractor": "^7.0.0",
|
||||
"replace": "^1.2.1",
|
||||
"rxjs-tslint": "^0.1.8",
|
||||
"ts-mockito": "^2.6.1",
|
||||
"ts-node": "^10.7.0",
|
||||
"ts-node": "~10.4.0",
|
||||
"tslint": "^6.1.3",
|
||||
"tslint-config-prettier": "^1.18.0",
|
||||
"typescript": "4.6.4",
|
||||
"webpack": "^5.72.0",
|
||||
"yarn-upgrade-all": "^0.7.1"
|
||||
"typescript": "4.2.3",
|
||||
"webpack": "5.76.0",
|
||||
"yarn-upgrade-all": "^0.5.4"
|
||||
},
|
||||
"greenkeeper": {
|
||||
"ignore": [
|
||||
|
@ -1,26 +0,0 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Copyright (C) 2023 GNS3 Technologies Inc.
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
rm -rf node_modules dist
|
||||
|
||||
yarn install
|
||||
|
||||
# FIXME: remove --build-optimizer=false
|
||||
yarn ng build --source-map=false --build-optimizer=false --configuration=production --base-href /static/web-ui/
|
||||
|
||||
git add dist/*
|
||||
git commit -m "Push development version of the Web UI"
|
@ -1,9 +1,10 @@
|
||||
GNS3 WebUI is web implementation of user interface for GNS3 software.
|
||||
|
||||
Current version: 2.2.24
|
||||
Current version: 2.2.32
|
||||
|
||||
Bug Fixes & enhancements
|
||||
- security fixes
|
||||
- Fixed generated capture file is not valid
|
||||
- Fixed Docker additional directories
|
||||
|
||||
Current version: 2020.4.0-beta.1
|
||||
|
||||
@ -67,7 +68,7 @@ GNS3 Web UI 2020.2.0-beta.4
|
||||
Bug Fixes
|
||||
- New port setting for GNS3 VM preferences
|
||||
- Option to auto-hide menu toolbar on the left side
|
||||
-Controller type in template preferences
|
||||
- Server type in template preferences
|
||||
- Error when selecting existing Docker image
|
||||
- Default values in templates
|
||||
- TypeError: Cannot read property 'message' of undefined
|
||||
|
@ -1,10 +1,9 @@
|
||||
import { NgModule } from '@angular/core';
|
||||
import { RouterModule, Routes } from '@angular/router';
|
||||
import { BundledControllerFinderComponent } from './components/bundled-controller-finder/bundled-controller-finder.component';
|
||||
import { BundledServerFinderComponent } from './components/bundled-server-finder/bundled-server-finder.component';
|
||||
import { DirectLinkComponent } from './components/direct-link/direct-link.component';
|
||||
import { HelpComponent } from './components/help/help.component';
|
||||
import { InstalledSoftwareComponent } from './components/installed-software/installed-software.component';
|
||||
import { LoginComponent } from './components/login/login.component';
|
||||
import { PageNotFoundComponent } from './components/page-not-found/page-not-found.component';
|
||||
import { BuiltInPreferencesComponent } from './components/preferences/built-in/built-in-preferences.component';
|
||||
import { CloudNodesAddTemplateComponent } from './components/preferences/built-in/cloud-nodes/cloud-nodes-add-template/cloud-nodes-add-template.component';
|
||||
@ -24,6 +23,7 @@ import { AddIosTemplateComponent } from './components/preferences/dynamips/add-i
|
||||
import { CopyIosTemplateComponent } from './components/preferences/dynamips/copy-ios-template/copy-ios-template.component';
|
||||
import { IosTemplateDetailsComponent } from './components/preferences/dynamips/ios-template-details/ios-template-details.component';
|
||||
import { IosTemplatesComponent } from './components/preferences/dynamips/ios-templates/ios-templates.component';
|
||||
import { Gns3vmComponent } from './components/preferences/gns3vm/gns3vm.component';
|
||||
import { AddIouTemplateComponent } from './components/preferences/ios-on-unix/add-iou-template/add-iou-template.component';
|
||||
import { CopyIouTemplateComponent } from './components/preferences/ios-on-unix/copy-iou-template/copy-iou-template.component';
|
||||
import { IouTemplateDetailsComponent } from './components/preferences/ios-on-unix/iou-template-details/iou-template-details.component';
|
||||
@ -44,261 +44,157 @@ import { VpcsTemplateDetailsComponent } from './components/preferences/vpcs/vpcs
|
||||
import { VpcsTemplatesComponent } from './components/preferences/vpcs/vpcs-templates/vpcs-templates.component';
|
||||
import { ProjectMapComponent } from './components/project-map/project-map.component';
|
||||
import { ProjectsComponent } from './components/projects/projects.component';
|
||||
import { ControllersComponent } from './components/controllers/controllers.component';
|
||||
import { ServersComponent } from './components/servers/servers.component';
|
||||
import { ConsoleComponent } from './components/settings/console/console.component';
|
||||
import { SettingsComponent } from './components/settings/settings.component';
|
||||
import { ListOfSnapshotsComponent } from './components/snapshots/list-of-snapshots/list-of-snapshots.component';
|
||||
import { SystemStatusComponent } from './components/system-status/system-status.component';
|
||||
import { WebConsoleFullWindowComponent } from './components/web-console-full-window/web-console-full-window.component';
|
||||
import { ConsoleGuard } from './guards/console-guard';
|
||||
import { LoginGuard } from './guards/login-guard';
|
||||
import { DefaultLayoutComponent } from './layouts/default-layout/default-layout.component';
|
||||
import { ControllerResolve } from './resolvers/controller-resolve';
|
||||
import { UserManagementComponent } from './components/user-management/user-management.component';
|
||||
import { LoggedUserComponent } from './components/users/logged-user/logged-user.component';
|
||||
import { ImageManagerComponent } from './components/image-manager/image-manager.component';
|
||||
import { UserDetailComponent } from "./components/user-management/user-detail/user-detail.component";
|
||||
import { UserDetailResolver } from "./resolvers/user-detail.resolver";
|
||||
import { ManagementComponent } from "./components/management/management.component";
|
||||
import { UserGroupsResolver } from "./resolvers/user-groups.resolver";
|
||||
import { GroupManagementComponent } from "./components/group-management/group-management.component";
|
||||
import { RoleManagementComponent } from "./components/role-management/role-management.component";
|
||||
import { GroupDetailsComponent } from "./components/group-details/group-details.component";
|
||||
import { GroupMembersResolver } from "./resolvers/group-members.resolver";
|
||||
import { GroupResolver } from "./resolvers/group.resolver";
|
||||
import { GroupRoleResolver } from "./resolvers/group-role.resolver";
|
||||
import { RoleDetailComponent } from "./components/role-management/role-detail/role-detail.component";
|
||||
import { RoleDetailResolver } from "./resolvers/role-detail.resolver";
|
||||
import { AclManagementComponent } from "@components/acl-management/acl-management.component";
|
||||
import { ResourcePoolsManagementComponent } from "@components/resource-pools-management/resource-pools-management.component";
|
||||
import { ResourcePoolDetailsComponent } from "@components/resource-pool-details/resource-pool-details.component";
|
||||
import { ResourcePoolsResolver } from "@resolvers/resource-pools.resolver";
|
||||
import { GroupAcesResolver } from "@resolvers/group-ace.resolver.ts.resolver";
|
||||
import { UserAcesResolver } from "@resolvers/user-aces.resolver";
|
||||
import { ServerResolve } from './resolvers/server-resolve';
|
||||
|
||||
const routes: Routes = [
|
||||
{
|
||||
path: '',
|
||||
component: DefaultLayoutComponent,
|
||||
children: [
|
||||
{ path: '', redirectTo: 'controllers', pathMatch: 'full' },
|
||||
{ path: 'controllers', component: ControllersComponent },
|
||||
{ path: 'bundled', component: BundledControllerFinderComponent },
|
||||
{ path: 'controller/:controller_id/login', component: LoginComponent },
|
||||
{ path: 'controller/:controller_id/loggeduser', component: LoggedUserComponent },
|
||||
{ path : 'controller/:controller_id/image-manager', component: ImageManagerComponent},
|
||||
{ path: '', redirectTo: 'servers', pathMatch: 'full' },
|
||||
{ path: 'servers', component: ServersComponent },
|
||||
{ path: 'bundled', component: BundledServerFinderComponent },
|
||||
{
|
||||
path: 'controller/:controller_id/projects',
|
||||
path: 'server/:server_id/projects',
|
||||
component: ProjectsComponent,
|
||||
canActivate: [LoginGuard],
|
||||
resolve: { controller: ControllerResolve },
|
||||
},
|
||||
{ path: 'controller/:controller_id/help', component: HelpComponent },
|
||||
{ path: 'controller/:controller_id/settings', component: SettingsComponent },
|
||||
{ path: 'controller/:controller_id/settings/console', component: ConsoleComponent },
|
||||
{
|
||||
path: 'controller/:controller_id/management/users/:user_id',
|
||||
component: UserDetailComponent,
|
||||
canActivate: [LoginGuard],
|
||||
resolve: {
|
||||
user: UserDetailResolver,
|
||||
groups: UserGroupsResolver,
|
||||
aces: UserAcesResolver,
|
||||
controller: ControllerResolve},
|
||||
},
|
||||
{
|
||||
path: 'controller/:controller_id/management/pools/:pool_id',
|
||||
component: ResourcePoolDetailsComponent,
|
||||
canActivate: [LoginGuard],
|
||||
resolve: {
|
||||
pool: ResourcePoolsResolver,
|
||||
controller: ControllerResolve
|
||||
}
|
||||
resolve: { server: ServerResolve },
|
||||
},
|
||||
{ path: 'help', component: HelpComponent },
|
||||
{ path: 'settings', component: SettingsComponent },
|
||||
{ path: 'settings/console', component: ConsoleComponent },
|
||||
{ path: 'installed-software', component: InstalledSoftwareComponent },
|
||||
{ path: 'controller/:controller_id/systemstatus', component: SystemStatusComponent, canActivate: [LoginGuard] },
|
||||
{ path: 'server/:server_id/systemstatus', component: SystemStatusComponent },
|
||||
|
||||
{ path: 'controller/:controller_ip/:controller_port/project/:project_id', component: DirectLinkComponent, canActivate: [LoginGuard] },
|
||||
{ path: 'server/:server_ip/:server_port/project/:project_id', component: DirectLinkComponent },
|
||||
{
|
||||
path: 'controller/:controller_id/project/:project_id/snapshots',
|
||||
path: 'server/:server_id/project/:project_id/snapshots',
|
||||
component: ListOfSnapshotsComponent,
|
||||
canActivate: [LoginGuard],
|
||||
resolve: { controller: ControllerResolve },
|
||||
resolve: { server: ServerResolve },
|
||||
},
|
||||
{ path: 'controller/:controller_id/preferences', component: PreferencesComponent, canActivate: [LoginGuard] },
|
||||
// { path: 'controller/:controller_id/preferences/general', component: GeneralPreferencesComponent },
|
||||
{ path: 'controller/:controller_id/preferences/builtin', component: BuiltInPreferencesComponent, canActivate: [LoginGuard] },
|
||||
{ path: 'server/:server_id/preferences', component: PreferencesComponent },
|
||||
{ path: 'server/:server_id/preferences/gns3vm', component: Gns3vmComponent },
|
||||
// { path: 'server/:server_id/preferences/general', component: GeneralPreferencesComponent },
|
||||
{ path: 'server/:server_id/preferences/builtin', component: BuiltInPreferencesComponent },
|
||||
|
||||
{ path: 'controller/:controller_id/preferences/builtin/ethernet-hubs', component: EthernetHubsTemplatesComponent, canActivate: [LoginGuard] },
|
||||
{ path: 'server/:server_id/preferences/builtin/ethernet-hubs', component: EthernetHubsTemplatesComponent },
|
||||
{
|
||||
path: 'controller/:controller_id/preferences/builtin/ethernet-hubs/addtemplate',
|
||||
path: 'server/:server_id/preferences/builtin/ethernet-hubs/addtemplate',
|
||||
component: EthernetHubsAddTemplateComponent,
|
||||
canActivate: [LoginGuard]
|
||||
},
|
||||
{
|
||||
path: 'controller/:controller_id/preferences/builtin/ethernet-hubs/:template_id',
|
||||
path: 'server/:server_id/preferences/builtin/ethernet-hubs/:template_id',
|
||||
component: EthernetHubsTemplateDetailsComponent,
|
||||
canActivate: [LoginGuard]
|
||||
},
|
||||
|
||||
{
|
||||
path: 'controller/:controller_id/preferences/builtin/ethernet-switches',
|
||||
path: 'server/:server_id/preferences/builtin/ethernet-switches',
|
||||
component: EthernetSwitchesTemplatesComponent,
|
||||
canActivate: [LoginGuard]
|
||||
},
|
||||
{
|
||||
path: 'controller/:controller_id/preferences/builtin/ethernet-switches/addtemplate',
|
||||
path: 'server/:server_id/preferences/builtin/ethernet-switches/addtemplate',
|
||||
component: EthernetSwitchesAddTemplateComponent,
|
||||
canActivate: [LoginGuard]
|
||||
},
|
||||
{
|
||||
path: 'controller/:controller_id/preferences/builtin/ethernet-switches/:template_id',
|
||||
path: 'server/:server_id/preferences/builtin/ethernet-switches/:template_id',
|
||||
component: EthernetSwitchesTemplateDetailsComponent,
|
||||
canActivate: [LoginGuard]
|
||||
},
|
||||
|
||||
{ path: 'controller/:controller_id/preferences/builtin/cloud-nodes', component: CloudNodesTemplatesComponent, canActivate: [LoginGuard] },
|
||||
{ path: 'server/:server_id/preferences/builtin/cloud-nodes', component: CloudNodesTemplatesComponent },
|
||||
{
|
||||
path: 'controller/:controller_id/preferences/builtin/cloud-nodes/addtemplate',
|
||||
path: 'server/:server_id/preferences/builtin/cloud-nodes/addtemplate',
|
||||
component: CloudNodesAddTemplateComponent,
|
||||
canActivate: [LoginGuard]
|
||||
},
|
||||
{
|
||||
path: 'controller/:controller_id/preferences/builtin/cloud-nodes/:template_id',
|
||||
path: 'server/:server_id/preferences/builtin/cloud-nodes/:template_id',
|
||||
component: CloudNodesTemplateDetailsComponent,
|
||||
canActivate: [LoginGuard]
|
||||
},
|
||||
|
||||
//{ path: 'controller/:controller_id/preferences/dynamips', component: DynamipsPreferencesComponent },
|
||||
{ path: 'controller/:controller_id/preferences/dynamips/templates', component: IosTemplatesComponent, canActivate: [LoginGuard] },
|
||||
{ path: 'controller/:controller_id/preferences/dynamips/templates/addtemplate', component: AddIosTemplateComponent, canActivate: [LoginGuard] },
|
||||
{ path: 'controller/:controller_id/preferences/dynamips/templates/:template_id', component: IosTemplateDetailsComponent, canActivate: [LoginGuard] },
|
||||
//{ path: 'server/:server_id/preferences/dynamips', component: DynamipsPreferencesComponent },
|
||||
{ path: 'server/:server_id/preferences/dynamips/templates', component: IosTemplatesComponent },
|
||||
{ path: 'server/:server_id/preferences/dynamips/templates/addtemplate', component: AddIosTemplateComponent },
|
||||
{ path: 'server/:server_id/preferences/dynamips/templates/:template_id', component: IosTemplateDetailsComponent },
|
||||
{
|
||||
path: 'controller/:controller_id/preferences/dynamips/templates/:template_id/copy',
|
||||
path: 'server/:server_id/preferences/dynamips/templates/:template_id/copy',
|
||||
component: CopyIosTemplateComponent,
|
||||
canActivate: [LoginGuard]
|
||||
},
|
||||
|
||||
// { path: 'controller/:controller_id/preferences/qemu', component: QemuPreferencesComponent },
|
||||
{ path: 'controller/:controller_id/preferences/qemu/templates', component: QemuVmTemplatesComponent, canActivate: [LoginGuard] },
|
||||
// { path: 'server/:server_id/preferences/qemu', component: QemuPreferencesComponent },
|
||||
{ path: 'server/:server_id/preferences/qemu/templates', component: QemuVmTemplatesComponent },
|
||||
{
|
||||
path: 'controller/:controller_id/preferences/qemu/templates/:template_id/copy',
|
||||
path: 'server/:server_id/preferences/qemu/templates/:template_id/copy',
|
||||
component: CopyQemuVmTemplateComponent,
|
||||
canActivate: [LoginGuard]
|
||||
},
|
||||
{ path: 'controller/:controller_id/preferences/qemu/templates/:template_id', component: QemuVmTemplateDetailsComponent, canActivate: [LoginGuard] },
|
||||
{ path: 'controller/:controller_id/preferences/qemu/addtemplate', component: AddQemuVmTemplateComponent, canActivate: [LoginGuard] },
|
||||
{ path: 'server/:server_id/preferences/qemu/templates/:template_id', component: QemuVmTemplateDetailsComponent },
|
||||
{ path: 'server/:server_id/preferences/qemu/addtemplate', component: AddQemuVmTemplateComponent },
|
||||
|
||||
// { path: 'controller/:controller_id/preferences/vpcs', component: VpcsPreferencesComponent },
|
||||
{ path: 'controller/:controller_id/preferences/vpcs/templates', component: VpcsTemplatesComponent, canActivate: [LoginGuard] },
|
||||
{ path: 'controller/:controller_id/preferences/vpcs/templates/:template_id', component: VpcsTemplateDetailsComponent, canActivate: [LoginGuard] },
|
||||
{ path: 'controller/:controller_id/preferences/vpcs/addtemplate', component: AddVpcsTemplateComponent, canActivate: [LoginGuard] },
|
||||
// { path: 'server/:server_id/preferences/vpcs', component: VpcsPreferencesComponent },
|
||||
{ path: 'server/:server_id/preferences/vpcs/templates', component: VpcsTemplatesComponent },
|
||||
{ path: 'server/:server_id/preferences/vpcs/templates/:template_id', component: VpcsTemplateDetailsComponent },
|
||||
{ path: 'server/:server_id/preferences/vpcs/addtemplate', component: AddVpcsTemplateComponent },
|
||||
|
||||
// { path: 'controller/:controller_id/preferences/virtualbox', component: VirtualBoxPreferencesComponent },
|
||||
{ path: 'controller/:controller_id/preferences/virtualbox/templates', component: VirtualBoxTemplatesComponent, canActivate: [LoginGuard] },
|
||||
// { path: 'server/:server_id/preferences/virtualbox', component: VirtualBoxPreferencesComponent },
|
||||
{ path: 'server/:server_id/preferences/virtualbox/templates', component: VirtualBoxTemplatesComponent },
|
||||
{
|
||||
path: 'controller/:controller_id/preferences/virtualbox/templates/:template_id',
|
||||
path: 'server/:server_id/preferences/virtualbox/templates/:template_id',
|
||||
component: VirtualBoxTemplateDetailsComponent,
|
||||
canActivate: [LoginGuard]
|
||||
},
|
||||
{ path: 'controller/:controller_id/preferences/virtualbox/addtemplate', component: AddVirtualBoxTemplateComponent, canActivate: [LoginGuard] },
|
||||
{ path: 'server/:server_id/preferences/virtualbox/addtemplate', component: AddVirtualBoxTemplateComponent },
|
||||
|
||||
// { path: 'controller/:controller_id/preferences/vmware', component: VmwarePreferencesComponent },
|
||||
{ path: 'controller/:controller_id/preferences/vmware/templates', component: VmwareTemplatesComponent, canActivate: [LoginGuard] },
|
||||
// { path: 'server/:server_id/preferences/vmware', component: VmwarePreferencesComponent },
|
||||
{ path: 'server/:server_id/preferences/vmware/templates', component: VmwareTemplatesComponent },
|
||||
{
|
||||
path: 'controller/:controller_id/preferences/vmware/templates/:template_id',
|
||||
path: 'server/:server_id/preferences/vmware/templates/:template_id',
|
||||
component: VmwareTemplateDetailsComponent,
|
||||
canActivate: [LoginGuard]
|
||||
},
|
||||
{ path: 'controller/:controller_id/preferences/vmware/addtemplate', component: AddVmwareTemplateComponent, canActivate: [LoginGuard] },
|
||||
{ path: 'server/:server_id/preferences/vmware/addtemplate', component: AddVmwareTemplateComponent },
|
||||
|
||||
{ path: 'controller/:controller_id/preferences/docker/templates', component: DockerTemplatesComponent, canActivate: [LoginGuard] },
|
||||
// { path: 'server/:server_id/preferences/traceng', component: TracengPreferencesComponent },
|
||||
// { path: 'server/:server_id/preferences/traceng/templates', component: TracengTemplatesComponent },
|
||||
// { path: 'server/:server_id/preferences/traceng/templates/:template_id', component: TracengTemplateDetailsComponent },
|
||||
// { path: 'server/:server_id/preferences/traceng/addtemplate', component: AddTracengTemplateComponent },
|
||||
|
||||
{ path: 'server/:server_id/preferences/docker/templates', component: DockerTemplatesComponent },
|
||||
{
|
||||
path: 'controller/:controller_id/preferences/docker/templates/:template_id',
|
||||
path: 'server/:server_id/preferences/docker/templates/:template_id',
|
||||
component: DockerTemplateDetailsComponent,
|
||||
canActivate: [LoginGuard]
|
||||
},
|
||||
{
|
||||
path: 'controller/:controller_id/preferences/docker/templates/:template_id/copy',
|
||||
path: 'server/:server_id/preferences/docker/templates/:template_id/copy',
|
||||
component: CopyDockerTemplateComponent,
|
||||
canActivate: [LoginGuard]
|
||||
},
|
||||
{ path: 'controller/:controller_id/preferences/docker/addtemplate', component: AddDockerTemplateComponent, canActivate: [LoginGuard] },
|
||||
{ path: 'controller/:controller_id/preferences/iou/templates', component: IouTemplatesComponent, canActivate: [LoginGuard] },
|
||||
{ path: 'controller/:controller_id/preferences/iou/templates/:template_id', component: IouTemplateDetailsComponent, canActivate: [LoginGuard] },
|
||||
{
|
||||
path: 'controller/:controller_id/preferences/iou/templates/:template_id/copy',
|
||||
component: CopyIouTemplateComponent,
|
||||
canActivate: [LoginGuard]
|
||||
},
|
||||
{ path: 'controller/:controller_id/preferences/iou/addtemplate', component: AddIouTemplateComponent, canActivate: [LoginGuard] },
|
||||
{
|
||||
path: 'controller/:controller_id/management',
|
||||
component: ManagementComponent,
|
||||
children: [
|
||||
{
|
||||
path: 'users',
|
||||
component: UserManagementComponent
|
||||
},
|
||||
{
|
||||
path: 'groups',
|
||||
component: GroupManagementComponent
|
||||
},
|
||||
{
|
||||
path: 'roles',
|
||||
component: RoleManagementComponent
|
||||
},
|
||||
{
|
||||
path: "pools",
|
||||
component: ResourcePoolsManagementComponent
|
||||
},
|
||||
{
|
||||
path: 'ACL',
|
||||
component: AclManagementComponent
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
path: 'controller/:controller_id/management/groups/:user_group_id',
|
||||
component: GroupDetailsComponent,
|
||||
resolve: {
|
||||
members: GroupMembersResolver,
|
||||
controller: ControllerResolve,
|
||||
group: GroupResolver,
|
||||
aces: GroupAcesResolver
|
||||
}
|
||||
},
|
||||
{
|
||||
path: 'controller/:controller_id/management/roles/:role_id',
|
||||
component: RoleDetailComponent,
|
||||
resolve: {
|
||||
role: RoleDetailResolver,
|
||||
controller: ControllerResolve
|
||||
}
|
||||
},
|
||||
{ path: 'server/:server_id/preferences/docker/addtemplate', component: AddDockerTemplateComponent },
|
||||
|
||||
{ path: 'server/:server_id/preferences/iou/templates', component: IouTemplatesComponent },
|
||||
{ path: 'server/:server_id/preferences/iou/templates/:template_id', component: IouTemplateDetailsComponent },
|
||||
{ path: 'server/:server_id/preferences/iou/templates/:template_id/copy', component: CopyIouTemplateComponent },
|
||||
{ path: 'server/:server_id/preferences/iou/addtemplate', component: AddIouTemplateComponent },
|
||||
],
|
||||
},
|
||||
{
|
||||
path: 'controller/:controller_id/project/:project_id',
|
||||
path: 'server/:server_id/project/:project_id',
|
||||
component: ProjectMapComponent,
|
||||
canActivate: [LoginGuard],
|
||||
canDeactivate: [ConsoleGuard],
|
||||
},
|
||||
{
|
||||
path: 'controller/:controller_id/project/:project_id/nodes/:node_id',
|
||||
path: 'server/:server_id/project/:project_id/nodes/:node_id',
|
||||
component: WebConsoleFullWindowComponent,
|
||||
canActivate: [LoginGuard]
|
||||
},
|
||||
{
|
||||
path: 'static/web-ui/controller/:controller_id/project/:project_id/nodes/:node_id',
|
||||
path: 'static/web-ui/server/:server_id/project/:project_id/nodes/:node_id',
|
||||
component: WebConsoleFullWindowComponent,
|
||||
canActivate: [LoginGuard]
|
||||
},
|
||||
{
|
||||
path: '**',
|
||||
component: PageNotFoundComponent,
|
||||
}
|
||||
|
||||
},
|
||||
];
|
||||
|
||||
@NgModule({
|
||||
@ -311,5 +207,4 @@ const routes: Routes = [
|
||||
],
|
||||
exports: [RouterModule],
|
||||
})
|
||||
export class AppRoutingModule {
|
||||
}
|
||||
export class AppRoutingModule {}
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { NO_ERRORS_SCHEMA } from '@angular/core';
|
||||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
import { MatIconModule } from '@angular/material/icon';
|
||||
import { RouterTestingModule } from '@angular/router/testing';
|
||||
import { ElectronService, NgxElectronModule } from 'ngx-electron';
|
||||
@ -16,8 +16,8 @@ describe('AppComponent', () => {
|
||||
let electronService: ElectronService;
|
||||
let settingsService: SettingsService;
|
||||
|
||||
beforeEach(async() => {
|
||||
await TestBed.configureTestingModule({
|
||||
beforeEach(async(() => {
|
||||
TestBed.configureTestingModule({
|
||||
declarations: [AppComponent],
|
||||
imports: [RouterTestingModule, MatIconModule, NgxElectronModule],
|
||||
providers: [SettingsService, ProgressService],
|
||||
@ -26,7 +26,7 @@ describe('AppComponent', () => {
|
||||
|
||||
electronService = TestBed.inject(ElectronService);
|
||||
settingsService = TestBed.inject(SettingsService);
|
||||
});
|
||||
}));
|
||||
|
||||
beforeEach(() => {
|
||||
fixture = TestBed.createComponent(AppComponent);
|
||||
@ -34,29 +34,29 @@ describe('AppComponent', () => {
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should create the app', async() => {
|
||||
it('should create the app', async(() => {
|
||||
const app = fixture.debugElement.componentInstance;
|
||||
await expect(app).toBeTruthy();
|
||||
});
|
||||
expect(app).toBeTruthy();
|
||||
}));
|
||||
|
||||
it('should have footer', async() => {
|
||||
it('should have footer', async(() => {
|
||||
const compiled = fixture.debugElement.nativeElement;
|
||||
await expect(compiled.querySelector('router-outlet').textContent).toEqual('');
|
||||
});
|
||||
expect(compiled.querySelector('router-outlet').textContent).toEqual('');
|
||||
}));
|
||||
|
||||
it('should receive changed settings and forward to electron', async() => {
|
||||
await spyOnProperty(electronService, 'isElectronApp').and.returnValue(true);
|
||||
it('should receive changed settings and forward to electron', async(() => {
|
||||
spyOnProperty(electronService, 'isElectronApp').and.returnValue(true);
|
||||
settingsService.setReportsSettings(true);
|
||||
component.ngOnInit();
|
||||
settingsService.setReportsSettings(false);
|
||||
});
|
||||
}));
|
||||
|
||||
it('should receive changed settings and do not forward to electron', async() => {
|
||||
it('should receive changed settings and do not forward to electron', async(() => {
|
||||
const spy = createSpyObj('Electron.IpcRenderer', ['send']);
|
||||
spyOnProperty(electronService, 'isElectronApp').and.returnValue(false);
|
||||
settingsService.setReportsSettings(true);
|
||||
component.ngOnInit();
|
||||
settingsService.setReportsSettings(false);
|
||||
await expect(spy.send).not.toHaveBeenCalled();
|
||||
});
|
||||
expect(spy.send).not.toHaveBeenCalled();
|
||||
}));
|
||||
});
|
||||
|
@ -1,8 +1,7 @@
|
||||
/* tslint:disable */
|
||||
import { DragDropModule } from '@angular/cdk/drag-drop';
|
||||
import { OverlayModule } from '@angular/cdk/overlay';
|
||||
import { CdkTableModule } from '@angular/cdk/table';
|
||||
import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
|
||||
import { HttpClientModule } from '@angular/common/http';
|
||||
import { ErrorHandler, NgModule } from '@angular/core';
|
||||
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
||||
import { MatSidenavModule } from '@angular/material/sidenav';
|
||||
@ -30,7 +29,7 @@ import { ProgressDialogService } from './common/progress-dialog/progress-dialog.
|
||||
import { ProgressComponent } from './common/progress/progress.component';
|
||||
import { ProgressService } from './common/progress/progress.service';
|
||||
import { AdbutlerComponent } from './components/adbutler/adbutler.component';
|
||||
import { BundledControllerFinderComponent } from './components/bundled-controller-finder/bundled-controller-finder.component';
|
||||
import { BundledServerFinderComponent } from './components/bundled-server-finder/bundled-server-finder.component';
|
||||
import { InformationDialogComponent } from './components/dialogs/information-dialog.component';
|
||||
import { DirectLinkComponent } from './components/direct-link/direct-link.component';
|
||||
import { DrawingAddedComponent } from './components/drawings-listeners/drawing-added/drawing-added.component';
|
||||
@ -75,6 +74,7 @@ import { DynamipsPreferencesComponent } from './components/preferences/dynamips/
|
||||
import { IosTemplateDetailsComponent } from './components/preferences/dynamips/ios-template-details/ios-template-details.component';
|
||||
import { IosTemplatesComponent } from './components/preferences/dynamips/ios-templates/ios-templates.component';
|
||||
import { GeneralPreferencesComponent } from './components/preferences/general/general-preferences.component';
|
||||
import { Gns3vmComponent } from './components/preferences/gns3vm/gns3vm.component';
|
||||
import { AddIouTemplateComponent } from './components/preferences/ios-on-unix/add-iou-template/add-iou-template.component';
|
||||
import { CopyIouTemplateComponent } from './components/preferences/ios-on-unix/copy-iou-template/copy-iou-template.component';
|
||||
import { IouTemplateDetailsComponent } from './components/preferences/ios-on-unix/iou-template-details/iou-template-details.component';
|
||||
@ -85,6 +85,10 @@ import { CopyQemuVmTemplateComponent } from './components/preferences/qemu/copy-
|
||||
import { QemuPreferencesComponent } from './components/preferences/qemu/qemu-preferences/qemu-preferences.component';
|
||||
import { QemuVmTemplateDetailsComponent } from './components/preferences/qemu/qemu-vm-template-details/qemu-vm-template-details.component';
|
||||
import { QemuVmTemplatesComponent } from './components/preferences/qemu/qemu-vm-templates/qemu-vm-templates.component';
|
||||
import { AddTracengTemplateComponent } from './components/preferences/traceng/add-traceng/add-traceng-template.component';
|
||||
import { TracengPreferencesComponent } from './components/preferences/traceng/traceng-preferences/traceng-preferences.component';
|
||||
import { TracengTemplateDetailsComponent } from './components/preferences/traceng/traceng-template-details/traceng-template-details.component';
|
||||
import { TracengTemplatesComponent } from './components/preferences/traceng/traceng-templates/traceng-templates.component';
|
||||
import { AddVirtualBoxTemplateComponent } from './components/preferences/virtual-box/add-virtual-box-template/add-virtual-box-template.component';
|
||||
import { VirtualBoxPreferencesComponent } from './components/preferences/virtual-box/virtual-box-preferences/virtual-box-preferences.component';
|
||||
import { VirtualBoxTemplateDetailsComponent } from './components/preferences/virtual-box/virtual-box-template-details/virtual-box-template-details.component';
|
||||
@ -113,7 +117,6 @@ import { DeleteActionComponent } from './components/project-map/context-menu/act
|
||||
import { DuplicateActionComponent } from './components/project-map/context-menu/actions/duplicate-action/duplicate-action.component';
|
||||
import { EditConfigActionComponent } from './components/project-map/context-menu/actions/edit-config/edit-config-action.component';
|
||||
import { EditStyleActionComponent } from './components/project-map/context-menu/actions/edit-style-action/edit-style-action.component';
|
||||
import { EditLinkStyleActionComponent } from './components/project-map/context-menu/actions/edit-link-style-action/edit-link-style-action.component';
|
||||
import { EditTextActionComponent } from './components/project-map/context-menu/actions/edit-text-action/edit-text-action.component';
|
||||
import { ExportConfigActionComponent } from './components/project-map/context-menu/actions/export-config/export-config-action.component';
|
||||
import { HttpConsoleNewTabActionComponent } from './components/project-map/context-menu/actions/http-console-new-tab/http-console-new-tab-action.component';
|
||||
@ -131,16 +134,13 @@ import { StartCaptureOnStartedLinkActionComponent } from './components/project-m
|
||||
import { StartCaptureActionComponent } from './components/project-map/context-menu/actions/start-capture/start-capture-action.component';
|
||||
import { StartNodeActionComponent } from './components/project-map/context-menu/actions/start-node-action/start-node-action.component';
|
||||
import { StopCaptureActionComponent } from './components/project-map/context-menu/actions/stop-capture/stop-capture-action.component';
|
||||
import { IsolateNodeActionComponent } from './components/project-map/context-menu/actions/isolate-node-action/isolate-node-action.component';
|
||||
import { UnisolateNodeActionComponent } from './components/project-map/context-menu/actions/unisolate-node-action/unisolate-node-action.component';
|
||||
import {StopNodeActionComponent } from './components/project-map/context-menu/actions/stop-node-action/stop-node-action.component';
|
||||
import { StopNodeActionComponent } from './components/project-map/context-menu/actions/stop-node-action/stop-node-action.component';
|
||||
import { SuspendLinkActionComponent } from './components/project-map/context-menu/actions/suspend-link/suspend-link-action.component';
|
||||
import { SuspendNodeActionComponent } from './components/project-map/context-menu/actions/suspend-node-action/suspend-node-action.component';
|
||||
import { ContextMenuComponent } from './components/project-map/context-menu/context-menu.component';
|
||||
import { ConfigDialogComponent } from './components/project-map/context-menu/dialogs/config-dialog/config-dialog.component';
|
||||
import { DrawLinkToolComponent } from './components/project-map/draw-link-tool/draw-link-tool.component';
|
||||
import { StyleEditorDialogComponent } from './components/project-map/drawings-editors/style-editor/style-editor.component';
|
||||
import { LinkStyleEditorDialogComponent } from './components/project-map/drawings-editors/link-style-editor/link-style-editor.component';
|
||||
import { TextEditorDialogComponent } from './components/project-map/drawings-editors/text-editor/text-editor.component';
|
||||
import { HelpDialogComponent } from './components/project-map/help-dialog/help-dialog.component';
|
||||
import { NodeCreatedLabelStylesFixer } from './components/project-map/helpers/node-created-label-styles-fixer';
|
||||
@ -165,6 +165,7 @@ import { ConfiguratorDialogNatComponent } from './components/project-map/node-ed
|
||||
import { ConfiguratorDialogQemuComponent } from './components/project-map/node-editors/configurator/qemu/configurator-qemu.component';
|
||||
import { QemuImageCreatorComponent } from './components/project-map/node-editors/configurator/qemu/qemu-image-creator/qemu-image-creator.component';
|
||||
import { ConfiguratorDialogSwitchComponent } from './components/project-map/node-editors/configurator/switch/configurator-switch.component';
|
||||
import { ConfiguratorDialogTracengComponent } from './components/project-map/node-editors/configurator/traceng/configurator-traceng.component';
|
||||
import { ConfiguratorDialogVirtualBoxComponent } from './components/project-map/node-editors/configurator/virtualbox/configurator-virtualbox.component';
|
||||
import { ConfiguratorDialogVmwareComponent } from './components/project-map/node-editors/configurator/vmware/configurator-vmware.component';
|
||||
import { ConfiguratorDialogVpcsComponent } from './components/project-map/node-editors/configurator/vpcs/configurator-vpcs.component';
|
||||
@ -174,7 +175,6 @@ import { PacketFiltersDialogComponent } from './components/project-map/packet-ca
|
||||
import { StartCaptureDialogComponent } from './components/project-map/packet-capturing/start-capture/start-capture.component';
|
||||
import { ProjectMapMenuComponent } from './components/project-map/project-map-menu/project-map-menu.component';
|
||||
import { ProjectMapComponent } from './components/project-map/project-map.component';
|
||||
import { ProjectReadmeComponent } from './components/project-map/project-readme/project-readme.component';
|
||||
import { ScreenshotDialogComponent } from './components/project-map/screenshot-dialog/screenshot-dialog.component';
|
||||
import { WebConsoleComponent } from './components/project-map/web-console/web-console.component';
|
||||
import { AddBlankProjectDialogComponent } from './components/projects/add-blank-project-dialog/add-blank-project-dialog.component';
|
||||
@ -182,15 +182,15 @@ import { ChooseNameDialogComponent } from './components/projects/choose-name-dia
|
||||
import { ConfirmationBottomSheetComponent } from './components/projects/confirmation-bottomsheet/confirmation-bottomsheet.component';
|
||||
import { ConfirmationDialogComponent } from './components/projects/confirmation-dialog/confirmation-dialog.component';
|
||||
import { EditProjectDialogComponent } from './components/projects/edit-project-dialog/edit-project-dialog.component';
|
||||
import { ReadmeEditorComponent } from './components/projects/edit-project-dialog/readme-editor/readme-editor.component';
|
||||
import { ImportProjectDialogComponent } from './components/projects/import-project-dialog/import-project-dialog.component';
|
||||
import { ProjectNameValidator } from './components/projects/models/projectNameValidator';
|
||||
import { NavigationDialogComponent } from './components/projects/navigation-dialog/navigation-dialog.component';
|
||||
import { ProjectsComponent } from './components/projects/projects.component';
|
||||
import { SaveProjectDialogComponent } from './components/projects/save-project-dialog/save-project-dialog.component';
|
||||
import { AddControllerDialogComponent } from './components/controllers/add-controller-dialog/add-controller-dialog.component';
|
||||
import { ControllerDiscoveryComponent } from './components/controllers/controller-discovery/controller-discovery.component';
|
||||
import { ControllersComponent } from './components/controllers/controllers.component';
|
||||
import { AddServerDialogComponent } from './components/servers/add-server-dialog/add-server-dialog.component';
|
||||
import { ConfigureGns3VMDialogComponent } from './components/servers/configure-gns3vm-dialog/configure-gns3vm-dialog.component';
|
||||
import { ServerDiscoveryComponent } from './components/servers/server-discovery/server-discovery.component';
|
||||
import { ServersComponent } from './components/servers/servers.component';
|
||||
import { ConsoleComponent } from './components/settings/console/console.component';
|
||||
import { SettingsComponent } from './components/settings/settings.component';
|
||||
import { CreateSnapshotDialogComponent } from './components/snapshots/create-snapshot-dialog/create-snapshot-dialog.component';
|
||||
@ -204,18 +204,16 @@ import { TemplateComponent } from './components/template/template.component';
|
||||
import { TopologySummaryComponent } from './components/topology-summary/topology-summary.component';
|
||||
import { WebConsoleFullWindowComponent } from './components/web-console-full-window/web-console-full-window.component';
|
||||
import { DataSourceFilter } from './filters/dataSourceFilter';
|
||||
import { AuthImageFilter } from './filters/authImageFilter';
|
||||
import { DateFilter } from './filters/dateFilter.pipe';
|
||||
import { NameFilter } from './filters/nameFilter.pipe';
|
||||
import { ProjectsFilter } from './filters/projectsFilter.pipe';
|
||||
import { SearchFilter } from './filters/searchFilter.pipe';
|
||||
import { TemplateFilter } from './filters/templateFilter.pipe';
|
||||
import { ConsoleGuard } from './guards/console-guard';
|
||||
import { LoginGuard } from './guards/login-guard';
|
||||
import { ProjectWebServiceHandler } from './handlers/project-web-service-handler';
|
||||
import { DefaultLayoutComponent } from './layouts/default-layout/default-layout.component';
|
||||
import { MATERIAL_IMPORTS } from './material.imports';
|
||||
import { ControllerResolve } from './resolvers/controller-resolve';
|
||||
import { ServerResolve } from './resolvers/server-resolve';
|
||||
import { ApplianceService } from './services/appliances.service';
|
||||
import { ProtocolHandlerService } from './services/protocol-handler.service';
|
||||
import { BuiltInTemplatesConfigurationService } from './services/built-in-templates-configuration.service';
|
||||
@ -225,8 +223,9 @@ import { DockerConfigurationService } from './services/docker-configuration.serv
|
||||
import { DockerService } from './services/docker.service';
|
||||
import { DrawingService } from './services/drawing.service';
|
||||
import { ExternalSoftwareDefinitionService } from './services/external-software-definition.service';
|
||||
import { Gns3vmService } from './services/gns3vm.service';
|
||||
import { GoogleAnalyticsService } from './services/google-analytics.service';
|
||||
import { HttpController, ControllerErrorHandler } from './services/http-controller.service';
|
||||
import { HttpServer, ServerErrorHandler } from './services/http-server.service';
|
||||
import { InfoService } from './services/info.service';
|
||||
import { InstalledSoftwareService } from './services/installed-software.service';
|
||||
import { IosConfigurationService } from './services/ios-configuration.service';
|
||||
@ -245,10 +244,10 @@ import { ProjectService } from './services/project.service';
|
||||
import { QemuConfigurationService } from './services/qemu-configuration.service';
|
||||
import { QemuService } from './services/qemu.service';
|
||||
import { RecentlyOpenedProjectService } from './services/recentlyOpenedProject.service';
|
||||
import { ControllerManagementService } from './services/controller-management.service';
|
||||
import { ControllerSettingsService } from './services/controller-settings.service';
|
||||
import { ControllerDatabase } from './services/controller.database';
|
||||
import { ControllerService } from './services/controller.service';
|
||||
import { ServerManagementService } from './services/server-management.service';
|
||||
import { ServerSettingsService } from './services/server-settings.service';
|
||||
import { ServerDatabase } from './services/server.database';
|
||||
import { ServerService } from './services/server.service';
|
||||
import { SettingsService } from './services/settings.service';
|
||||
import { ConsoleService } from './services/settings/console.service';
|
||||
import { DefaultConsoleService } from './services/settings/default-console.service';
|
||||
@ -259,6 +258,7 @@ import { TemplateService } from './services/template.service';
|
||||
import { ThemeService } from './services/theme.service';
|
||||
import { ToasterService } from './services/toaster.service';
|
||||
import { ToolsService } from './services/tools.service';
|
||||
import { TracengService } from './services/traceng.service';
|
||||
import { UpdatesService } from './services/updates.service';
|
||||
import { VersionService } from './services/version.service';
|
||||
import { VirtualBoxConfigurationService } from './services/virtual-box-configuration.service';
|
||||
@ -269,404 +269,337 @@ import { VpcsConfigurationService } from './services/vpcs-configuration.service'
|
||||
import { VpcsService } from './services/vpcs.service';
|
||||
import { NonNegativeValidator } from './validators/non-negative-validator';
|
||||
import { RotationValidator } from './validators/rotation-validator';
|
||||
import { MarkedDirective } from './directives/marked.directive';
|
||||
import { LoginComponent } from './components/login/login.component';
|
||||
import { LoginService } from './services/login.service';
|
||||
import { HttpRequestsInterceptor } from './interceptors/http.interceptor';
|
||||
import { UserManagementComponent } from './components/user-management/user-management.component';
|
||||
import { UserService } from './services/user.service';
|
||||
import { LoggedUserComponent } from './components/users/logged-user/logged-user.component';
|
||||
import { AddUserDialogComponent } from './components/user-management/add-user-dialog/add-user-dialog.component';
|
||||
import { UserFilterPipe } from './filters/user-filter.pipe';
|
||||
import { GroupManagementComponent } from './components/group-management/group-management.component';
|
||||
import { GroupFilterPipe } from './filters/group-filter.pipe';
|
||||
import { AddGroupDialogComponent } from './components/group-management/add-group-dialog/add-group-dialog.component';
|
||||
import { DeleteGroupDialogComponent } from './components/group-management/delete-group-dialog/delete-group-dialog.component';
|
||||
import { DeleteUserDialogComponent } from './components/user-management/delete-user-dialog/delete-user-dialog.component';
|
||||
import { GroupDetailsComponent } from './components/group-details/group-details.component';
|
||||
import { UserDetailComponent } from './components/user-management/user-detail/user-detail.component';
|
||||
import { AddUserToGroupDialogComponent } from './components/group-details/add-user-to-group-dialog/add-user-to-group-dialog.component';
|
||||
import { RemoveToGroupDialogComponent } from '@components/group-details/remove-to-group-dialog/remove-to-group-dialog.component';
|
||||
import { PaginatorPipe } from './components/group-details/paginator.pipe';
|
||||
import { MembersFilterPipe } from './components/group-details/members-filter.pipe';
|
||||
import { ManagementComponent } from './components/management/management.component';
|
||||
import {MatCheckboxModule} from "@angular/material/checkbox";
|
||||
import { RoleManagementComponent } from './components/role-management/role-management.component';
|
||||
import { RoleFilterPipe } from './components/role-management/role-filter.pipe';
|
||||
import { AddRoleDialogComponent } from './components/role-management/add-role-dialog/add-role-dialog.component';
|
||||
import { DeleteRoleDialogComponent } from './components/role-management/delete-role-dialog/delete-role-dialog.component';
|
||||
import { RoleDetailComponent } from './components/role-management/role-detail/role-detail.component';
|
||||
import {MatSlideToggleModule} from '@angular/material/slide-toggle';
|
||||
import {MatAutocompleteModule} from "@angular/material/autocomplete";;
|
||||
import { AddRoleToGroupComponent } from './components/group-details/add-role-to-group/add-role-to-group.component';
|
||||
import {MatFormFieldModule} from "@angular/material/form-field";
|
||||
import { ChangeUserPasswordComponent } from './components/user-management/user-detail/change-user-password/change-user-password.component';
|
||||
import {MatMenuModule} from "@angular/material/menu";
|
||||
import { ImageManagerComponent } from './components/image-manager/image-manager.component';
|
||||
import { AddImageDialogComponent } from './components/image-manager/add-image-dialog/add-image-dialog.component';
|
||||
import { DeleteAllImageFilesDialogComponent } from './components/image-manager/deleteallfiles-dialog/deleteallfiles-dialog.component';
|
||||
import { UploadingProcessbarComponent } from './common/uploading-processbar/uploading-processbar.component';
|
||||
import { ExportPortableProjectComponent } from './components/export-portable-project/export-portable-project.component';
|
||||
import { NodesMenuConfirmationDialogComponent } from './components/project-map/nodes-menu/nodes-menu-confirmation-dialog/nodes-menu-confirmation-dialog.component';
|
||||
import { ConfirmationDeleteAllProjectsComponent } from './components/projects/confirmation-delete-all-projects/confirmation-delete-all-projects.component';
|
||||
import { ProjectMapLockConfirmationDialogComponent } from './components/project-map/project-map-menu/project-map-lock-confirmation-dialog/project-map-lock-confirmation-dialog.component';
|
||||
import { AclManagementComponent } from "@components/acl-management/acl-management.component";
|
||||
import { AddAceDialogComponent } from './components/acl-management/add-ace-dialog/add-ace-dialog.component';
|
||||
import { AutocompleteComponent } from './components/acl-management/add-ace-dialog/autocomplete/autocomplete.component';
|
||||
import { DeleteAceDialogComponent } from './components/acl-management/delete-ace-dialog/delete-ace-dialog.component';
|
||||
import { AceFilterPipe } from './filters/ace-filter.pipe';
|
||||
import { CdkAccordionModule } from "@angular/cdk/accordion";
|
||||
import { CdkTreeModule } from "@angular/cdk/tree";
|
||||
|
||||
import { PrivilegeComponent } from './components/role-management/role-detail/privilege/privilege.component';
|
||||
import { GroupPrivilegesPipe } from './components/role-management/role-detail/privilege/group-privileges.pipe';
|
||||
import { ResourcePoolsManagementComponent } from './components/resource-pools-management/resource-pools-management.component';
|
||||
import { AddResourcePoolDialogComponent } from './components/resource-pools-management/add-resource-pool-dialog/add-resource-pool-dialog.component';
|
||||
import { DeleteResourcePoolComponent } from './components/resource-pools-management/delete-resource-pool/delete-resource-pool.component';
|
||||
import { ResourcePoolsFilterPipe } from './components/resource-pools-management/resource-pools-filter.pipe';
|
||||
import { ResourcePoolDetailsComponent } from './components/resource-pool-details/resource-pool-details.component';
|
||||
import { DeleteResourceConfirmationDialogComponent } from './components/resource-pool-details/delete-resource-confirmation-dialog/delete-resource-confirmation-dialog.component';
|
||||
|
||||
@NgModule({
|
||||
declarations: [
|
||||
AppComponent,
|
||||
LoggedUserComponent,
|
||||
ProjectMapComponent,
|
||||
LoginComponent,
|
||||
ControllersComponent,
|
||||
AddControllerDialogComponent,
|
||||
CreateSnapshotDialogComponent,
|
||||
SnapshotMenuItemComponent,
|
||||
ProjectsComponent,
|
||||
AddBlankProjectDialogComponent,
|
||||
ImportProjectDialogComponent,
|
||||
ConfirmationDialogComponent,
|
||||
DefaultLayoutComponent,
|
||||
ProgressDialogComponent,
|
||||
ContextMenuComponent,
|
||||
ContextConsoleMenuComponent,
|
||||
StartNodeActionComponent,
|
||||
IsolateNodeActionComponent,
|
||||
UnisolateNodeActionComponent,
|
||||
StopNodeActionComponent,
|
||||
TemplateComponent,
|
||||
TemplateListDialogComponent,
|
||||
MoveLayerDownActionComponent,
|
||||
MoveLayerUpActionComponent,
|
||||
EditStyleActionComponent,
|
||||
EditLinkStyleActionComponent,
|
||||
EditTextActionComponent,
|
||||
DeleteActionComponent,
|
||||
DuplicateActionComponent,
|
||||
PacketFiltersActionComponent,
|
||||
StartCaptureActionComponent,
|
||||
StopCaptureActionComponent,
|
||||
ResumeLinkActionComponent,
|
||||
SuspendLinkActionComponent,
|
||||
SettingsComponent,
|
||||
PreferencesComponent,
|
||||
BundledControllerFinderComponent,
|
||||
ProgressComponent,
|
||||
ControllerDiscoveryComponent,
|
||||
NodeSelectInterfaceComponent,
|
||||
DrawLinkToolComponent,
|
||||
InstalledSoftwareComponent,
|
||||
DrawingAddedComponent,
|
||||
DrawingResizedComponent,
|
||||
TextAddedComponent,
|
||||
TextEditedComponent,
|
||||
NodeDraggedComponent,
|
||||
NodeLabelDraggedComponent,
|
||||
DrawingDraggedComponent,
|
||||
LinkCreatedComponent,
|
||||
InterfaceLabelDraggedComponent,
|
||||
InstallSoftwareComponent,
|
||||
StyleEditorDialogComponent,
|
||||
LinkStyleEditorDialogComponent,
|
||||
TextEditorDialogComponent,
|
||||
PacketFiltersDialogComponent,
|
||||
QemuPreferencesComponent,
|
||||
QemuVmTemplatesComponent,
|
||||
AddQemuVmTemplateComponent,
|
||||
QemuVmTemplateDetailsComponent,
|
||||
GeneralPreferencesComponent,
|
||||
VpcsPreferencesComponent,
|
||||
VpcsTemplatesComponent,
|
||||
AddVpcsTemplateComponent,
|
||||
VpcsTemplateDetailsComponent,
|
||||
VirtualBoxPreferencesComponent,
|
||||
VirtualBoxTemplatesComponent,
|
||||
VirtualBoxTemplateDetailsComponent,
|
||||
AddVirtualBoxTemplateComponent,
|
||||
BuiltInPreferencesComponent,
|
||||
EthernetHubsTemplatesComponent,
|
||||
EthernetHubsAddTemplateComponent,
|
||||
EthernetHubsTemplateDetailsComponent,
|
||||
CloudNodesTemplatesComponent,
|
||||
CloudNodesAddTemplateComponent,
|
||||
CloudNodesTemplateDetailsComponent,
|
||||
EthernetSwitchesTemplatesComponent,
|
||||
EthernetSwitchesAddTemplateComponent,
|
||||
EthernetSwitchesTemplateDetailsComponent,
|
||||
DynamipsPreferencesComponent,
|
||||
IosTemplatesComponent,
|
||||
IosTemplateDetailsComponent,
|
||||
AddIosTemplateComponent,
|
||||
SymbolsComponent,
|
||||
VmwarePreferencesComponent,
|
||||
VmwareTemplatesComponent,
|
||||
VmwareTemplateDetailsComponent,
|
||||
AddVmwareTemplateComponent,
|
||||
DeleteConfirmationDialogComponent,
|
||||
HelpDialogComponent,
|
||||
StartCaptureDialogComponent,
|
||||
DeleteTemplateComponent,
|
||||
DockerTemplatesComponent,
|
||||
AddDockerTemplateComponent,
|
||||
DockerTemplateDetailsComponent,
|
||||
IouTemplatesComponent,
|
||||
AddIouTemplateComponent,
|
||||
IouTemplateDetailsComponent,
|
||||
CopyQemuVmTemplateComponent,
|
||||
CopyIosTemplateComponent,
|
||||
CopyIouTemplateComponent,
|
||||
CopyDockerTemplateComponent,
|
||||
EmptyTemplatesListComponent,
|
||||
SymbolsMenuComponent,
|
||||
SearchFilter,
|
||||
DateFilter,
|
||||
NameFilter,
|
||||
DataSourceFilter,
|
||||
TemplateFilter,
|
||||
ProjectsFilter,
|
||||
AuthImageFilter,
|
||||
ListOfSnapshotsComponent,
|
||||
CustomAdaptersComponent,
|
||||
NodesMenuComponent,
|
||||
AdbutlerComponent,
|
||||
ConsoleDeviceActionComponent,
|
||||
ShowNodeActionComponent,
|
||||
ConsoleComponent,
|
||||
NodesMenuComponent,
|
||||
ProjectMapMenuComponent,
|
||||
HelpComponent,
|
||||
ConfigEditorDialogComponent,
|
||||
EditConfigActionComponent,
|
||||
LogConsoleComponent,
|
||||
SaveProjectDialogComponent,
|
||||
TopologySummaryComponent,
|
||||
InfoDialogComponent,
|
||||
BringToFrontActionComponent,
|
||||
ExportConfigActionComponent,
|
||||
ImportConfigActionComponent,
|
||||
ConsoleDeviceActionBrowserComponent,
|
||||
ChangeSymbolDialogComponent,
|
||||
ChangeSymbolActionComponent,
|
||||
EditProjectDialogComponent,
|
||||
ReloadNodeActionComponent,
|
||||
SuspendNodeActionComponent,
|
||||
ConfigActionComponent,
|
||||
ConfiguratorDialogVpcsComponent,
|
||||
ConfiguratorDialogEthernetHubComponent,
|
||||
ConfiguratorDialogEthernetSwitchComponent,
|
||||
PortsComponent,
|
||||
ConfiguratorDialogSwitchComponent,
|
||||
ConfiguratorDialogVirtualBoxComponent,
|
||||
CustomAdaptersTableComponent,
|
||||
ConfiguratorDialogQemuComponent,
|
||||
ConfiguratorDialogCloudComponent,
|
||||
UdpTunnelsComponent,
|
||||
ConfiguratorDialogAtmSwitchComponent,
|
||||
ConfiguratorDialogVmwareComponent,
|
||||
ConfiguratorDialogIouComponent,
|
||||
ConfiguratorDialogIosComponent,
|
||||
ConfiguratorDialogDockerComponent,
|
||||
ConfiguratorDialogNatComponent,
|
||||
QemuImageCreatorComponent,
|
||||
ChooseNameDialogComponent,
|
||||
StartCaptureOnStartedLinkActionComponent,
|
||||
LockActionComponent,
|
||||
NavigationDialogComponent,
|
||||
ScreenshotDialogComponent,
|
||||
PageNotFoundComponent,
|
||||
AlignHorizontallyActionComponent,
|
||||
AlignVerticallyActionComponent,
|
||||
ConfirmationBottomSheetComponent,
|
||||
ConfigDialogComponent,
|
||||
ImportApplianceComponent,
|
||||
DirectLinkComponent,
|
||||
SystemStatusComponent,
|
||||
StatusInfoComponent,
|
||||
StatusChartComponent,
|
||||
OpenFileExplorerActionComponent,
|
||||
HttpConsoleActionComponent,
|
||||
WebConsoleComponent,
|
||||
ConsoleWrapperComponent,
|
||||
HttpConsoleNewTabActionComponent,
|
||||
WebConsoleFullWindowComponent,
|
||||
NewTemplateDialogComponent,
|
||||
ChangeHostnameActionComponent,
|
||||
ChangeHostnameDialogComponent,
|
||||
ApplianceInfoDialogComponent,
|
||||
ReadmeEditorComponent,
|
||||
MarkedDirective,
|
||||
InformationDialogComponent,
|
||||
TemplateNameDialogComponent,
|
||||
ConfigureCustomAdaptersDialogComponent,
|
||||
EditNetworkConfigurationDialogComponent,
|
||||
UserManagementComponent,
|
||||
ProjectReadmeComponent,
|
||||
AddGroupDialogComponent,
|
||||
GroupFilterPipe,
|
||||
GroupManagementComponent,
|
||||
AddUserDialogComponent,
|
||||
UserFilterPipe,
|
||||
DeleteGroupDialogComponent,
|
||||
DeleteUserDialogComponent,
|
||||
GroupDetailsComponent,
|
||||
UserDetailComponent,
|
||||
AddUserToGroupDialogComponent,
|
||||
RemoveToGroupDialogComponent,
|
||||
PaginatorPipe,
|
||||
MembersFilterPipe,
|
||||
ManagementComponent,
|
||||
RoleManagementComponent,
|
||||
RoleFilterPipe,
|
||||
AddRoleDialogComponent,
|
||||
DeleteRoleDialogComponent,
|
||||
RoleDetailComponent,
|
||||
RemoveToGroupDialogComponent,
|
||||
AddRoleToGroupComponent,
|
||||
ChangeUserPasswordComponent,
|
||||
ChangeUserPasswordComponent,
|
||||
ProjectReadmeComponent,
|
||||
ImageManagerComponent,
|
||||
AddImageDialogComponent,
|
||||
DeleteAllImageFilesDialogComponent,
|
||||
UploadingProcessbarComponent,
|
||||
ExportPortableProjectComponent,
|
||||
NodesMenuConfirmationDialogComponent,
|
||||
ConfirmationDeleteAllProjectsComponent,
|
||||
ProjectMapLockConfirmationDialogComponent,
|
||||
AclManagementComponent,
|
||||
AddAceDialogComponent,
|
||||
AutocompleteComponent,
|
||||
DeleteAceDialogComponent,
|
||||
AceFilterPipe,
|
||||
PrivilegeComponent,
|
||||
GroupPrivilegesPipe,
|
||||
ResourcePoolsManagementComponent,
|
||||
AddResourcePoolDialogComponent,
|
||||
DeleteResourcePoolComponent,
|
||||
ResourcePoolsFilterPipe,
|
||||
ResourcePoolDetailsComponent,
|
||||
DeleteResourceConfirmationDialogComponent,
|
||||
],
|
||||
imports: [
|
||||
BrowserModule,
|
||||
HttpClientModule,
|
||||
AppRoutingModule,
|
||||
FormsModule,
|
||||
ReactiveFormsModule,
|
||||
BrowserAnimationsModule,
|
||||
CdkTableModule,
|
||||
CartographyModule,
|
||||
NgxElectronModule,
|
||||
FileUploadModule,
|
||||
MatSidenavModule,
|
||||
MatFormFieldModule,
|
||||
MatMenuModule,
|
||||
ResizableModule,
|
||||
DragAndDropModule,
|
||||
DragDropModule,
|
||||
NgxChildProcessModule,
|
||||
MATERIAL_IMPORTS,
|
||||
NgCircleProgressModule.forRoot(),
|
||||
OverlayModule,
|
||||
MatSlideToggleModule,
|
||||
MatCheckboxModule,
|
||||
MatAutocompleteModule,
|
||||
CdkAccordionModule,
|
||||
CdkTreeModule,
|
||||
],
|
||||
providers: [
|
||||
SettingsService,
|
||||
{ provide: ErrorHandler, useClass: ToasterErrorHandler },
|
||||
{ provide: HTTP_INTERCEPTORS, useClass: HttpRequestsInterceptor, multi: true },
|
||||
VersionService,
|
||||
D3Service,
|
||||
ProjectService,
|
||||
SymbolService,
|
||||
ControllerService,
|
||||
TemplateService,
|
||||
NodeService,
|
||||
LinkService,
|
||||
DrawingService,
|
||||
HttpController,
|
||||
SnapshotService,
|
||||
ProgressDialogService,
|
||||
ToasterService,
|
||||
ProgressService,
|
||||
ProjectWebServiceHandler,
|
||||
LinksDataSource,
|
||||
NodesDataSource,
|
||||
SymbolsDataSource,
|
||||
LogEventsDataSource,
|
||||
SelectionManager,
|
||||
InRectangleHelper,
|
||||
DrawingsDataSource,
|
||||
ControllerErrorHandler,
|
||||
ControllerDatabase,
|
||||
ProjectNameValidator,
|
||||
ToolsService,
|
||||
ControllerSettingsService,
|
||||
QemuService,
|
||||
VpcsService,
|
||||
TemplateMocksService,
|
||||
VirtualBoxService,
|
||||
BuiltInTemplatesService,
|
||||
IosService,
|
||||
InstalledSoftwareService,
|
||||
ExternalSoftwareDefinitionService,
|
||||
PlatformService,
|
||||
IosConfigurationService,
|
||||
QemuConfigurationService,
|
||||
VirtualBoxConfigurationService,
|
||||
VpcsConfigurationService,
|
||||
BuiltInTemplatesConfigurationService,
|
||||
VmwareService,
|
||||
VmwareConfigurationService,
|
||||
DockerService,
|
||||
DockerConfigurationService,
|
||||
IouService,
|
||||
IouConfigurationService,
|
||||
RecentlyOpenedProjectService,
|
||||
ControllerManagementService,
|
||||
MapScaleService,
|
||||
ConsoleService,
|
||||
DefaultConsoleService,
|
||||
NodeCreatedLabelStylesFixer,
|
||||
NonNegativeValidator,
|
||||
RotationValidator,
|
||||
MapSettingsService,
|
||||
InfoService,
|
||||
ComputeService,
|
||||
PacketCaptureService,
|
||||
ProtocolHandlerService,
|
||||
NotificationService,
|
||||
ThemeService,
|
||||
GoogleAnalyticsService,
|
||||
NodeConsoleService,
|
||||
ControllerResolve,
|
||||
LoginGuard,
|
||||
ConsoleGuard,
|
||||
Title,
|
||||
ApplianceService,
|
||||
UpdatesService,
|
||||
LoginService,
|
||||
UserService
|
||||
],
|
||||
bootstrap: [AppComponent]
|
||||
declarations: [
|
||||
AppComponent,
|
||||
ProjectMapComponent,
|
||||
ServersComponent,
|
||||
AddServerDialogComponent,
|
||||
CreateSnapshotDialogComponent,
|
||||
SnapshotMenuItemComponent,
|
||||
ProjectsComponent,
|
||||
AddBlankProjectDialogComponent,
|
||||
ImportProjectDialogComponent,
|
||||
ConfirmationDialogComponent,
|
||||
DefaultLayoutComponent,
|
||||
ProgressDialogComponent,
|
||||
ContextMenuComponent,
|
||||
ContextConsoleMenuComponent,
|
||||
StartNodeActionComponent,
|
||||
StopNodeActionComponent,
|
||||
TemplateComponent,
|
||||
TemplateListDialogComponent,
|
||||
MoveLayerDownActionComponent,
|
||||
MoveLayerUpActionComponent,
|
||||
EditStyleActionComponent,
|
||||
EditTextActionComponent,
|
||||
DeleteActionComponent,
|
||||
DuplicateActionComponent,
|
||||
PacketFiltersActionComponent,
|
||||
StartCaptureActionComponent,
|
||||
StopCaptureActionComponent,
|
||||
ResumeLinkActionComponent,
|
||||
SuspendLinkActionComponent,
|
||||
SettingsComponent,
|
||||
PreferencesComponent,
|
||||
BundledServerFinderComponent,
|
||||
ProgressComponent,
|
||||
ServerDiscoveryComponent,
|
||||
NodeSelectInterfaceComponent,
|
||||
DrawLinkToolComponent,
|
||||
InstalledSoftwareComponent,
|
||||
DrawingAddedComponent,
|
||||
DrawingResizedComponent,
|
||||
TextAddedComponent,
|
||||
TextEditedComponent,
|
||||
NodeDraggedComponent,
|
||||
NodeLabelDraggedComponent,
|
||||
DrawingDraggedComponent,
|
||||
LinkCreatedComponent,
|
||||
InterfaceLabelDraggedComponent,
|
||||
InstallSoftwareComponent,
|
||||
StyleEditorDialogComponent,
|
||||
TextEditorDialogComponent,
|
||||
PacketFiltersDialogComponent,
|
||||
QemuPreferencesComponent,
|
||||
QemuVmTemplatesComponent,
|
||||
AddQemuVmTemplateComponent,
|
||||
QemuVmTemplateDetailsComponent,
|
||||
GeneralPreferencesComponent,
|
||||
VpcsPreferencesComponent,
|
||||
VpcsTemplatesComponent,
|
||||
AddVpcsTemplateComponent,
|
||||
VpcsTemplateDetailsComponent,
|
||||
VirtualBoxPreferencesComponent,
|
||||
VirtualBoxTemplatesComponent,
|
||||
VirtualBoxTemplateDetailsComponent,
|
||||
AddVirtualBoxTemplateComponent,
|
||||
BuiltInPreferencesComponent,
|
||||
EthernetHubsTemplatesComponent,
|
||||
EthernetHubsAddTemplateComponent,
|
||||
EthernetHubsTemplateDetailsComponent,
|
||||
CloudNodesTemplatesComponent,
|
||||
CloudNodesAddTemplateComponent,
|
||||
CloudNodesTemplateDetailsComponent,
|
||||
EthernetSwitchesTemplatesComponent,
|
||||
EthernetSwitchesAddTemplateComponent,
|
||||
EthernetSwitchesTemplateDetailsComponent,
|
||||
DynamipsPreferencesComponent,
|
||||
IosTemplatesComponent,
|
||||
IosTemplateDetailsComponent,
|
||||
AddIosTemplateComponent,
|
||||
SymbolsComponent,
|
||||
VmwarePreferencesComponent,
|
||||
VmwareTemplatesComponent,
|
||||
VmwareTemplateDetailsComponent,
|
||||
AddVmwareTemplateComponent,
|
||||
DeleteConfirmationDialogComponent,
|
||||
HelpDialogComponent,
|
||||
StartCaptureDialogComponent,
|
||||
DeleteTemplateComponent,
|
||||
DockerTemplatesComponent,
|
||||
AddDockerTemplateComponent,
|
||||
DockerTemplateDetailsComponent,
|
||||
IouTemplatesComponent,
|
||||
AddIouTemplateComponent,
|
||||
IouTemplateDetailsComponent,
|
||||
CopyQemuVmTemplateComponent,
|
||||
CopyIosTemplateComponent,
|
||||
CopyIouTemplateComponent,
|
||||
CopyDockerTemplateComponent,
|
||||
EmptyTemplatesListComponent,
|
||||
SymbolsMenuComponent,
|
||||
SearchFilter,
|
||||
DateFilter,
|
||||
NameFilter,
|
||||
DataSourceFilter,
|
||||
TemplateFilter,
|
||||
ProjectsFilter,
|
||||
ListOfSnapshotsComponent,
|
||||
CustomAdaptersComponent,
|
||||
NodesMenuComponent,
|
||||
AdbutlerComponent,
|
||||
ConsoleDeviceActionComponent,
|
||||
ShowNodeActionComponent,
|
||||
ConsoleComponent,
|
||||
NodesMenuComponent,
|
||||
ProjectMapMenuComponent,
|
||||
HelpComponent,
|
||||
ConfigEditorDialogComponent,
|
||||
EditConfigActionComponent,
|
||||
LogConsoleComponent,
|
||||
SaveProjectDialogComponent,
|
||||
TopologySummaryComponent,
|
||||
InfoDialogComponent,
|
||||
BringToFrontActionComponent,
|
||||
ExportConfigActionComponent,
|
||||
ImportConfigActionComponent,
|
||||
ConsoleDeviceActionBrowserComponent,
|
||||
ChangeSymbolDialogComponent,
|
||||
ChangeSymbolActionComponent,
|
||||
EditProjectDialogComponent,
|
||||
ReloadNodeActionComponent,
|
||||
SuspendNodeActionComponent,
|
||||
ConfigActionComponent,
|
||||
ConfiguratorDialogVpcsComponent,
|
||||
ConfiguratorDialogEthernetHubComponent,
|
||||
ConfiguratorDialogEthernetSwitchComponent,
|
||||
PortsComponent,
|
||||
ConfiguratorDialogSwitchComponent,
|
||||
ConfiguratorDialogVirtualBoxComponent,
|
||||
CustomAdaptersTableComponent,
|
||||
ConfiguratorDialogQemuComponent,
|
||||
ConfiguratorDialogCloudComponent,
|
||||
UdpTunnelsComponent,
|
||||
ConfiguratorDialogAtmSwitchComponent,
|
||||
ConfiguratorDialogVmwareComponent,
|
||||
ConfiguratorDialogIouComponent,
|
||||
ConfiguratorDialogIosComponent,
|
||||
ConfiguratorDialogDockerComponent,
|
||||
ConfiguratorDialogNatComponent,
|
||||
ConfiguratorDialogTracengComponent,
|
||||
AddTracengTemplateComponent,
|
||||
TracengPreferencesComponent,
|
||||
TracengTemplatesComponent,
|
||||
TracengTemplateDetailsComponent,
|
||||
QemuImageCreatorComponent,
|
||||
ChooseNameDialogComponent,
|
||||
StartCaptureOnStartedLinkActionComponent,
|
||||
LockActionComponent,
|
||||
NavigationDialogComponent,
|
||||
ScreenshotDialogComponent,
|
||||
PageNotFoundComponent,
|
||||
AlignHorizontallyActionComponent,
|
||||
AlignVerticallyActionComponent,
|
||||
ConfirmationBottomSheetComponent,
|
||||
ConfigDialogComponent,
|
||||
Gns3vmComponent,
|
||||
ConfigureGns3VMDialogComponent,
|
||||
ImportApplianceComponent,
|
||||
DirectLinkComponent,
|
||||
SystemStatusComponent,
|
||||
StatusInfoComponent,
|
||||
StatusChartComponent,
|
||||
OpenFileExplorerActionComponent,
|
||||
HttpConsoleActionComponent,
|
||||
WebConsoleComponent,
|
||||
ConsoleWrapperComponent,
|
||||
HttpConsoleNewTabActionComponent,
|
||||
WebConsoleFullWindowComponent,
|
||||
NewTemplateDialogComponent,
|
||||
ChangeHostnameActionComponent,
|
||||
ChangeHostnameDialogComponent,
|
||||
ApplianceInfoDialogComponent,
|
||||
InformationDialogComponent,
|
||||
TemplateNameDialogComponent,
|
||||
ConfigureCustomAdaptersDialogComponent,
|
||||
EditNetworkConfigurationDialogComponent
|
||||
],
|
||||
imports: [
|
||||
BrowserModule,
|
||||
HttpClientModule,
|
||||
AppRoutingModule,
|
||||
FormsModule,
|
||||
ReactiveFormsModule,
|
||||
BrowserAnimationsModule,
|
||||
CdkTableModule,
|
||||
CartographyModule,
|
||||
NgxElectronModule,
|
||||
FileUploadModule,
|
||||
MatSidenavModule,
|
||||
ResizableModule,
|
||||
DragAndDropModule,
|
||||
DragDropModule,
|
||||
NgxChildProcessModule,
|
||||
MATERIAL_IMPORTS,
|
||||
NgCircleProgressModule.forRoot(),
|
||||
OverlayModule,
|
||||
],
|
||||
providers: [
|
||||
SettingsService,
|
||||
{ provide: ErrorHandler, useClass: ToasterErrorHandler },
|
||||
D3Service,
|
||||
VersionService,
|
||||
ProjectService,
|
||||
SymbolService,
|
||||
ServerService,
|
||||
TemplateService,
|
||||
NodeService,
|
||||
LinkService,
|
||||
DrawingService,
|
||||
HttpServer,
|
||||
SnapshotService,
|
||||
ProgressDialogService,
|
||||
ToasterService,
|
||||
ProgressService,
|
||||
ProjectWebServiceHandler,
|
||||
LinksDataSource,
|
||||
NodesDataSource,
|
||||
SymbolsDataSource,
|
||||
LogEventsDataSource,
|
||||
SelectionManager,
|
||||
InRectangleHelper,
|
||||
DrawingsDataSource,
|
||||
ServerErrorHandler,
|
||||
ServerDatabase,
|
||||
ProjectNameValidator,
|
||||
ToolsService,
|
||||
ServerSettingsService,
|
||||
QemuService,
|
||||
VpcsService,
|
||||
TemplateMocksService,
|
||||
VirtualBoxService,
|
||||
BuiltInTemplatesService,
|
||||
IosService,
|
||||
InstalledSoftwareService,
|
||||
ExternalSoftwareDefinitionService,
|
||||
PlatformService,
|
||||
IosConfigurationService,
|
||||
QemuConfigurationService,
|
||||
VirtualBoxConfigurationService,
|
||||
VpcsConfigurationService,
|
||||
BuiltInTemplatesConfigurationService,
|
||||
VmwareService,
|
||||
VmwareConfigurationService,
|
||||
DockerService,
|
||||
DockerConfigurationService,
|
||||
IouService,
|
||||
IouConfigurationService,
|
||||
RecentlyOpenedProjectService,
|
||||
ServerManagementService,
|
||||
MapScaleService,
|
||||
ConsoleService,
|
||||
DefaultConsoleService,
|
||||
NodeCreatedLabelStylesFixer,
|
||||
NonNegativeValidator,
|
||||
RotationValidator,
|
||||
MapSettingsService,
|
||||
InfoService,
|
||||
ComputeService,
|
||||
TracengService,
|
||||
PacketCaptureService,
|
||||
ProtocolHandlerService,
|
||||
NotificationService,
|
||||
Gns3vmService,
|
||||
ThemeService,
|
||||
GoogleAnalyticsService,
|
||||
NodeConsoleService,
|
||||
ServerResolve,
|
||||
ConsoleGuard,
|
||||
Title,
|
||||
ApplianceService,
|
||||
UpdatesService,
|
||||
],
|
||||
entryComponents: [
|
||||
AddServerDialogComponent,
|
||||
CreateSnapshotDialogComponent,
|
||||
ProgressDialogComponent,
|
||||
TemplateListDialogComponent,
|
||||
AddBlankProjectDialogComponent,
|
||||
ImportProjectDialogComponent,
|
||||
ConfirmationDialogComponent,
|
||||
StyleEditorDialogComponent,
|
||||
PacketFiltersDialogComponent,
|
||||
TextEditorDialogComponent,
|
||||
SymbolsComponent,
|
||||
DeleteConfirmationDialogComponent,
|
||||
HelpDialogComponent,
|
||||
StartCaptureDialogComponent,
|
||||
ConfigEditorDialogComponent,
|
||||
SaveProjectDialogComponent,
|
||||
InfoDialogComponent,
|
||||
ChangeSymbolDialogComponent,
|
||||
EditProjectDialogComponent,
|
||||
ConfigureGns3VMDialogComponent,
|
||||
ConfiguratorDialogVpcsComponent,
|
||||
ConfiguratorDialogEthernetHubComponent,
|
||||
ConfiguratorDialogEthernetSwitchComponent,
|
||||
ConfiguratorDialogSwitchComponent,
|
||||
ConfiguratorDialogVirtualBoxComponent,
|
||||
ConfiguratorDialogQemuComponent,
|
||||
ConfiguratorDialogCloudComponent,
|
||||
ConfiguratorDialogAtmSwitchComponent,
|
||||
ConfiguratorDialogVmwareComponent,
|
||||
ConfiguratorDialogIouComponent,
|
||||
ConfiguratorDialogIosComponent,
|
||||
ConfiguratorDialogDockerComponent,
|
||||
ConfiguratorDialogNatComponent,
|
||||
ConfiguratorDialogTracengComponent,
|
||||
QemuImageCreatorComponent,
|
||||
ChooseNameDialogComponent,
|
||||
NavigationDialogComponent,
|
||||
ScreenshotDialogComponent,
|
||||
ConfirmationBottomSheetComponent,
|
||||
ConfigDialogComponent,
|
||||
AdbutlerComponent,
|
||||
NewTemplateDialogComponent,
|
||||
ChangeHostnameDialogComponent,
|
||||
ApplianceInfoDialogComponent,
|
||||
ConfigureCustomAdaptersDialogComponent,
|
||||
EditNetworkConfigurationDialogComponent,
|
||||
],
|
||||
bootstrap: [AppComponent],
|
||||
})
|
||||
export class AppModule {
|
||||
constructor(protected _googleAnalyticsService: GoogleAnalyticsService) {}
|
||||
|
@ -5,7 +5,6 @@ import { MatMenuModule } from '@angular/material/menu';
|
||||
import { ANGULAR_MAP_DECLARATIONS } from './angular-map.imports';
|
||||
import { D3MapComponent } from './components/d3-map/d3-map.component';
|
||||
import { DraggableSelectionComponent } from './components/draggable-selection/draggable-selection.component';
|
||||
import { LinkEditingComponent } from './components/link-editing/link-editing.component';
|
||||
import { DrawingAddingComponent } from './components/drawing-adding/drawing-adding.component';
|
||||
import { DrawingResizingComponent } from './components/drawing-resizing/drawing-resizing.component';
|
||||
import { ExperimentalMapComponent } from './components/experimental-map/experimental-map.component';
|
||||
@ -74,7 +73,6 @@ import { SerialLinkWidget } from './widgets/links/serial-link';
|
||||
SelectionControlComponent,
|
||||
SelectionSelectComponent,
|
||||
DraggableSelectionComponent,
|
||||
LinkEditingComponent,
|
||||
MovingCanvasDirective,
|
||||
ZoomingCanvasDirective,
|
||||
],
|
||||
|
@ -44,6 +44,5 @@
|
||||
<app-drawing-resizing></app-drawing-resizing>
|
||||
<app-selection-control></app-selection-control>
|
||||
<app-selection-select></app-selection-select>
|
||||
<app-text-editor #textEditor [controller]="controller" [svg]="svg"></app-text-editor>
|
||||
<app-text-editor #textEditor [server]="server" [svg]="svg"></app-text-editor>
|
||||
<app-draggable-selection [svg]="svg"></app-draggable-selection>
|
||||
<app-link-editing [svg]="svg"></app-link-editing>
|
||||
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
@ -1,17 +1,23 @@
|
||||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
import { D3MapComponent } from './d3-map.component';
|
||||
|
||||
describe('D3MapComponent', () => {
|
||||
let component: D3MapComponent;
|
||||
let fixture: ComponentFixture<D3MapComponent>;
|
||||
|
||||
beforeEach(async () => {
|
||||
await TestBed.configureTestingModule({
|
||||
beforeEach(async(() => {
|
||||
TestBed.configureTestingModule({
|
||||
declarations: [D3MapComponent],
|
||||
}).compileComponents();
|
||||
});
|
||||
}));
|
||||
|
||||
it('should create', () => {
|
||||
expect(component)
|
||||
});
|
||||
// beforeEach(() => {
|
||||
// fixture = TestBed.createComponent(MapComponent);
|
||||
// component = fixture.componentInstance;
|
||||
// fixture.detectChanges();
|
||||
// });
|
||||
//
|
||||
// it('should create', () => {
|
||||
// expect(component).toBeTruthy();
|
||||
// });
|
||||
});
|
||||
|