Compare commits

...

520 Commits

Author SHA1 Message Date
grossmj
c49e5d2573
Release v3.0.4
Some checks failed
CodeQL / Analyze (javascript) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Build / Node 14 (push) Has been cancelled
Build / Node 16 (push) Has been cancelled
Build / Node 18 (push) Has been cancelled
2025-02-23 12:00:58 +10:00
Jeremy Grossmann
de186fef4c
Merge pull request #1543 from GNS3/idlepc
Some checks are pending
CodeQL / Analyze (javascript) (push) Waiting to run
CodeQL / Analyze (python) (push) Waiting to run
Build / Node 14 (push) Waiting to run
Build / Node 16 (push) Waiting to run
Build / Node 18 (push) Waiting to run
Idle-PC configuration support
2025-02-22 19:11:43 +08:00
grossmj
346e3d988f
Fix tests 2025-02-22 21:04:51 +10:00
grossmj
4a34007cf4
Implement Idle-PC finder for IOS templates 2025-02-22 20:57:32 +10:00
grossmj
aeb26b0f17
Add tooltip for idle-pc dialog and implement auto idle-pc action 2025-02-22 18:59:57 +10:00
grossmj
6a9505fc0a
Allow users to compute Idle-PC values 2025-02-22 16:51:23 +10:00
grossmj
445ce5a864
Enforce password complexity. Ref https://github.com/GNS3/gns3-gui/issues/3698
Some checks failed
CodeQL / Analyze (javascript) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Build / Node 14 (push) Has been cancelled
Build / Node 16 (push) Has been cancelled
Build / Node 18 (push) Has been cancelled
2025-02-19 18:51:36 +10:00
grossmj
050d4158ed
Add possibility for a user to change his/her password. Ref https://github.com/GNS3/gns3-gui/issues/3698
Some checks are pending
CodeQL / Analyze (javascript) (push) Waiting to run
CodeQL / Analyze (python) (push) Waiting to run
Build / Node 14 (push) Waiting to run
Build / Node 16 (push) Waiting to run
Build / Node 18 (push) Waiting to run
2025-02-18 11:44:06 +10:00
grossmj
6b28370111
Fix tests
Some checks failed
CodeQL / Analyze (javascript) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Build / Node 14 (push) Has been cancelled
Build / Node 16 (push) Has been cancelled
Build / Node 18 (push) Has been cancelled
2025-02-16 13:32:10 +10:00
grossmj
8ec03968df
Fix import/export Dynamips configs 2025-02-16 12:57:01 +10:00
grossmj
097efdcbcd
Add prune images and install images to image manager
Some checks are pending
CodeQL / Analyze (javascript) (push) Waiting to run
CodeQL / Analyze (python) (push) Waiting to run
Build / Node 14 (push) Waiting to run
Build / Node 16 (push) Waiting to run
Build / Node 18 (push) Waiting to run
2025-02-15 23:57:30 +10:00
grossmj
cd483e047b
Improvements to add new Ethernet switch ports 2025-02-15 18:16:21 +10:00
Jeremy Grossmann
64cc001512
Merge pull request #1541 from GNS3/add-missing-settings
Some checks failed
CodeQL / Analyze (javascript) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Build / Node 14 (push) Has been cancelled
Build / Node 16 (push) Has been cancelled
Build / Node 18 (push) Has been cancelled
Add missing settings for nodes/templates
2025-02-05 18:14:59 +08:00
grossmj
55bc69389d
Add missing adapter and mac address settings for Qemu and Docker nodes 2025-02-05 20:02:58 +10:00
grossmj
10c1461d93
Fix tests
Some checks failed
Build / Node 14 (push) Has been cancelled
Build / Node 16 (push) Has been cancelled
Build / Node 18 (push) Has been cancelled
2025-02-04 21:45:22 +10:00
grossmj
86db2e208c
Fix and improve IOS template configuration 2025-02-04 21:00:20 +10:00
grossmj
80884a7929
Fix aux and aux_type usage 2025-02-04 14:23:32 +10:00
grossmj
9523cd7703
Add missing IOS router settings in node configurator 2025-02-04 14:17:51 +10:00
grossmj
042eb79e36
Development on 3.0.4.dev1
Some checks failed
CodeQL / Analyze (javascript) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Build / Node ${{ matrix.node }} (14) (push) Has been cancelled
Build / Node ${{ matrix.node }} (16) (push) Has been cancelled
Build / Node ${{ matrix.node }} (18) (push) Has been cancelled
2025-01-22 19:09:08 +10:00
grossmj
67b597d8ec
Release v3.0.3 2025-01-22 18:53:25 +10:00
grossmj
7fd37610ee
Merge remote-tracking branch 'origin/2.2' into master-3.0
# Conflicts:
#	package.json
#	src/app/components/project-map/new-template-dialog/new-template-dialog.component.ts
2025-01-22 18:44:55 +10:00
grossmj
c8ccf4d475
Development on 2.2.54.dev1
Some checks failed
Build / build (push) Has been cancelled
2025-01-21 12:13:40 +10:00
grossmj
b02fe4c751
Merge remote-tracking branch 'origin/2.2' into master-3.0
Some checks failed
CodeQL / Analyze (javascript) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Build / Node ${{ matrix.node }} (14) (push) Has been cancelled
Build / Node ${{ matrix.node }} (16) (push) Has been cancelled
Build / Node ${{ matrix.node }} (18) (push) Has been cancelled
# Conflicts:
#	src/app/components/project-map/new-template-dialog/new-template-dialog.component.html
#	src/app/services/mapsettings.service.ts
2025-01-20 16:51:31 +10:00
grossmj
7c7e20d95f
Release v3.0.2
Some checks failed
CodeQL / Analyze (javascript) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Build / Node ${{ matrix.node }} (14) (push) Has been cancelled
Build / Node ${{ matrix.node }} (16) (push) Has been cancelled
Build / Node ${{ matrix.node }} (18) (push) Has been cancelled
2025-01-03 21:36:27 +07:00
grossmj
e959a947cc
Use correct image upload endpoint
Some checks failed
CodeQL / Analyze (javascript) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Build / Node ${{ matrix.node }} (14) (push) Has been cancelled
Build / Node ${{ matrix.node }} (16) (push) Has been cancelled
Build / Node ${{ matrix.node }} (18) (push) Has been cancelled
2024-12-31 18:57:36 +07:00
grossmj
7b633c29dd
Allow ':' in project names. Fixes https://github.com/GNS3/gns3-gui/issues/3686
Some checks failed
CodeQL / Analyze (javascript) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Build / Node ${{ matrix.node }} (14) (push) Has been cancelled
Build / Node ${{ matrix.node }} (16) (push) Has been cancelled
Build / Node ${{ matrix.node }} (18) (push) Has been cancelled
2024-12-30 16:26:51 +07:00
grossmj
c24517d1f0
Release v3.0.1
Some checks failed
CodeQL / Analyze (javascript) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Build / Node ${{ matrix.node }} (14) (push) Has been cancelled
Build / Node ${{ matrix.node }} (16) (push) Has been cancelled
Build / Node ${{ matrix.node }} (18) (push) Has been cancelled
2024-12-27 20:58:03 +07:00
grossmj
9043c5b97c
Use template image name when uploading to controller 2024-12-27 20:57:23 +07:00
grossmj
2227d11932
Handle normal user cannot access user management page. Fixes https://github.com/GNS3/gns3-server/issues/2460
Some checks are pending
CodeQL / Analyze (javascript) (push) Waiting to run
CodeQL / Analyze (python) (push) Waiting to run
Build / Node ${{ matrix.node }} (14) (push) Waiting to run
Build / Node ${{ matrix.node }} (16) (push) Waiting to run
Build / Node ${{ matrix.node }} (18) (push) Waiting to run
2024-12-26 17:21:37 +07:00
Jeremy Grossmann
2e581c4495
Merge pull request #1533 from GNS3/bugfix/1436
Some checks failed
CodeQL / Analyze (javascript) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Build / Node ${{ matrix.node }} (14) (push) Has been cancelled
Build / Node ${{ matrix.node }} (16) (push) Has been cancelled
Build / Node ${{ matrix.node }} (18) (push) Has been cancelled
Fix error 404 when editing a project
2024-12-23 17:27:07 +07:00
grossmj
cddce63e2b
Fix error 404 when editing a project 2024-12-23 15:44:43 +07:00
Jeremy Grossmann
180c65351b
Merge pull request #1532 from GNS3/bugfix/1435
Fix interface labels are not persistant
2024-12-23 15:13:50 +07:00
grossmj
27eb8eb9c3
Fix interface labels are not persistant 2024-12-23 15:07:09 +07:00
grossmj
ab84d1eea6
Development on 3.1.0.dev1
Some checks failed
CodeQL / Analyze (javascript) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Build / Node ${{ matrix.node }} (14) (push) Has been cancelled
Build / Node ${{ matrix.node }} (16) (push) Has been cancelled
Build / Node ${{ matrix.node }} (18) (push) Has been cancelled
2024-12-20 18:11:44 +07:00
grossmj
89a7588612
Release v3.0.0
Some checks are pending
CodeQL / Analyze (javascript) (push) Waiting to run
CodeQL / Analyze (python) (push) Waiting to run
Build / Node ${{ matrix.node }} (14) (push) Waiting to run
Build / Node ${{ matrix.node }} (16) (push) Waiting to run
Build / Node ${{ matrix.node }} (18) (push) Waiting to run
2024-12-19 19:46:49 +07:00
grossmj
ab5d298d7b
Merge branch '2.2' into master-3.0
# Conflicts:
#	package.json
2024-12-19 18:17:25 +07:00
grossmj
bbb7f08925
Add .iol extension filter to image dialog. Ref https://github.com/GNS3/gns3-gui/issues/3664 2024-11-25 11:03:44 +10:00
grossmj
c1fa038f27
Merge branch '2.2' into master-3.0 2024-11-25 11:03:29 +10:00
grossmj
e424a7f410
Release v3.0.0rc2 2024-11-20 13:46:43 +10:00
grossmj
27eecf2ec9
Merge branch '2.2' into master-3.0
# Conflicts:
#	package.json
#	src/app/models/templates/docker-template.ts
#	src/app/services/template-mocks.service.ts
#	yarn.lock
2024-11-20 12:37:26 +10:00
grossmj
9d0d88337a
Release v3.0.0rc1 2024-08-11 11:00:56 -06:00
grossmj
5283d074e7
Merge remote-tracking branch 'origin/2.2' into master-3.0
# Conflicts:
#	package.json
2024-08-11 10:53:25 -06:00
grossmj
9cb21c7dd1
Merge remote-tracking branch 'origin/2.2' into master-3.0
# Conflicts:
#	package.json
#	src/app/layouts/default-layout/default-layout.component.html
#	src/app/layouts/default-layout/default-layout.component.ts
#	yarn.lock
2024-07-22 19:16:37 +02:00
grossmj
f3b3f35d58
Development on 3.0.0.dev14 2024-05-19 20:55:35 +07:00
grossmj
19b50fda9d
Release v3.0.0b3 2024-05-19 17:13:55 +07:00
grossmj
6c292aeb24
Enforce min/max for mat-input fields for ATM switch 2024-05-19 17:11:47 +07:00
grossmj
a3d149dcbe
Enforce min/max for mat-input fields for Frame-Relay switch 2024-05-19 17:08:18 +07:00
grossmj
9287706185
New titles for node configurators and enforce min/max for mat-input fields. 2024-05-19 16:49:10 +07:00
grossmj
84a145a701
Fix mat-table style and project readme edit 2024-05-19 12:47:11 +07:00
grossmj
6ccddac32c
Add missing categories for Dynamips IOS router templates 2024-05-19 00:44:53 +07:00
grossmj
9447622e1f
Fix tests 2024-05-18 23:30:08 +07:00
grossmj
a27a7ff4ee
Prevent to delete locked nodes and drawings 2024-05-18 23:11:35 +07:00
grossmj
3c48ef67dc
Change how ports are listed in the node info dialog 2024-05-18 22:36:46 +07:00
Jeremy Grossmann
d411ece90e
Merge pull request #1501 from GNS3/feature/aux-console-support
Auxiliary console support
2024-05-18 22:29:21 +07:00
grossmj
c9c043b726
Auxiliary console support for IOS, Docker and Qemu templates/nodes 2024-05-18 22:24:19 +07:00
grossmj
040447ffdf
Code formatting 2024-05-18 21:06:19 +07:00
grossmj
21f1d3e624
Build 3.0.0.dev13 2024-05-18 17:34:40 +07:00
grossmj
4c597ce3af
Development on 3.0.0.dev13 2024-05-18 16:28:35 +07:00
grossmj
8f268e374c
Use the image name from the controller when creating a new template from an appliance. 2024-05-18 16:27:22 +07:00
grossmj
a9bca2e265
Release v3.0.0b3 2024-05-16 17:26:42 +07:00
grossmj
948c600e1a
Fix tests. 2024-05-16 17:19:17 +07:00
grossmj
1c55972b00
Merge branch '2.2' into master-3.0 2024-05-16 17:14:39 +07:00
grossmj
d40324377e
Update yarn.lock 2024-05-16 17:12:01 +07:00
grossmj
3880d28ec1
Merge branch '2.2' into master-3.0
# Conflicts:
#	package.json
#	src/app/app.module.ts
#	src/app/components/project-map/context-menu/actions/console-device-action-browser/console-device-action-browser.component.ts
#	src/app/components/project-map/packet-capturing/start-capture/start-capture.component.spec.ts
#	src/app/components/project-map/project-map.component.ts
#	src/app/services/packet-capture.service.ts
#	yarn.lock
2024-05-15 16:39:46 +07:00
grossmj
eb82af94c9
Development on 3.0.0.dev13 2024-04-07 19:49:28 +07:00
grossmj
316d3cb83e
Release v3.0.0b2 2024-04-07 12:55:52 +07:00
Jeremy Grossmann
11e1c382b2
Merge pull request #1492 from GNS3/feature/custom-qemu-path
Support for custom Qemu paths
2024-04-03 21:24:07 +07:00
grossmj
d710c14218
Support for custom Qemu paths 2024-04-03 21:18:25 +07:00
grossmj
66b88c288d
Merge branch '2.2' into master-3.0
# Conflicts:
#	package.json
2024-04-03 17:55:07 +07:00
grossmj
db744d3c25
Merge branch 'master' into master-3.0
# Conflicts:
#	package.json
#	yarn.lock
2024-04-03 17:51:04 +07:00
grossmj
e63898a22a
Show default username/password when authentication failed. Ref https://github.com/GNS3/gns3-server/issues/2332 2024-03-26 13:57:38 +01:00
grossmj
49eee13f7c Merge branch '2.2' into master-3.0
# Conflicts:
#	angular.json
2023-12-07 11:17:28 +10:00
grossmj
6bb451e01a Cleaning 2023-12-06 21:16:37 +10:00
grossmj
f32998be47 Push development version of the Web UI 2023-12-06 19:32:28 +10:00
grossmj
26a4205164 Merge branch '2.2' into master-3.0
# Conflicts:
#	package.json
#	yarn.lock
2023-12-06 19:28:09 +10:00
grossmj
8a796559de Development on 3.0.0.dev12 2023-11-27 11:32:14 +10:00
grossmj
8cd821b9fe Release v3.0.0b1 2023-11-27 11:08:04 +10:00
grossmj
6dfe28ec8f Fix typos 2023-11-27 11:00:22 +10:00
grossmj
a465133ba3 Catch error if project cannot be created 2023-11-23 16:23:15 +10:00
grossmj
5a46911730 Push development version of the Web UI 2023-11-23 16:19:36 +10:00
grossmj
0a48b46754 Fix resource pool detail path. 2023-11-23 12:23:39 +10:00
grossmj
607c190a9a Allow the API documentation to be accessed over HTTPS 2023-11-22 18:52:28 +10:00
grossmj
08161ce1fe Release v3.0.0a6 2023-11-15 11:59:55 +10:00
grossmj
a6c220c2cf Comment test in pre-commit 2023-11-15 11:45:10 +10:00
grossmj
e7a03c9913 Push development version of the Web UI 2023-11-10 15:39:44 +10:00
grossmj
9c1d576eb5 Bump to 3.0.0.dev11 2023-11-10 11:56:50 +10:00
grossmj
81efa0c6d6 Merge remote-tracking branch 'origin/master-3.0' into master-3.0 2023-11-09 15:44:47 +10:00
grossmj
63b8582982 Script to push dev version of the web-ui 2023-11-09 15:44:34 +10:00
grossmj
cb74260405 Push development version of the Web UI 2023-11-09 15:42:26 +10:00
Jeremy Grossmann
49f8f61962
Merge pull request #1479 from Orange-OpenSource/master-3.0
somes fixes :
2023-11-07 23:00:51 +10:00
Elise Lebeau
443e518740 fix update group name 2023-11-06 16:47:39 +01:00
Elise Lebeau
99e9257a13 cannot update builtin group : disable button 2023-11-06 16:47:39 +01:00
sylvain121
ea6309c615 fix role update infinte loop 2023-11-06 16:03:17 +01:00
sylvain121
be6da1d2e1 cannot update a buildin role: disable update button if role is build_in 2023-11-06 13:52:49 +01:00
sylvain121
349260d807 add pre hook commit to launch test 2023-11-06 13:39:56 +01:00
sylvain121
600d807af3 fix test for TemplateListdialogComponent 2023-11-06 13:33:44 +01:00
Sylvain MATHIEU
4378cce5e5
Merge branch 'GNS3:master-3.0' into master-3.0 2023-11-06 07:44:52 +01:00
grossmj
9547b88894 Merge branch '2.2' into master-3.0
# Conflicts:
#	package.json
2023-11-06 16:30:14 +10:00
grossmj
a234f62ae9 Fix after merge 2023-11-03 15:07:03 +10:00
grossmj
4b55e3f576 Merge branch '2.2' into master-3.0
# Conflicts:
#	src/app/services/packet-capture.service.ts
2023-11-03 14:49:23 +10:00
Sylvain MATHIEU OBS
d1725e16f5 add nvmrc 2023-11-01 14:26:19 +01:00
grossmj
b0bbf514b1 Merge branch 'master' into master-3.0 2023-10-29 15:53:03 +10:00
grossmj
d705d81cd0 Merge branch 'master' into master-3.0
# Conflicts:
#	yarn.lock
2023-10-29 15:52:13 +10:00
grossmj
925920deef Development on 3.0.0.dev10 2023-10-27 13:34:40 +10:00
grossmj
f076b5590f Release v3.0.0a5 2023-10-27 13:29:47 +10:00
Jeremy Grossmann
aead5be762
Merge pull request #1475 from Orange-OpenSource/master-3.0
re enable configure dialog
2023-10-26 19:57:38 +10:00
Sylvain MATHIEU OBS
b6db926654 re enable configure dialog 2023-10-26 11:19:24 +02:00
Jeremy Grossmann
c9ac9f896f
Merge pull request #1474 from Orange-OpenSource/master-3.0
3.0 fix not working tests
2023-10-25 21:39:21 +10:00
Sylvain MATHIEU OBS
15e20263e5 fix somes tests 2023-10-25 11:06:15 +02:00
grossmj
3df22bd177 Merge branch '2.2' into master-3.0
# Conflicts:
#	package.json
#	src/app/components/project-map/drawings-editors/style-editor/style-editor.component.ts
2023-10-24 18:25:10 +10:00
grossmj
dbcb8a88c8 Pass authentication token when opening ws console. Ref https://github.com/GNS3/gns3-web-ui/issues/1468 2023-10-22 15:50:05 +10:00
grossmj
76f2314e08 Development on 3.0.0.dev9 2023-10-20 15:52:29 +10:00
grossmj
97d054bb2b Release v3.0.0a4 2023-10-18 17:41:43 +10:00
Jeremy Grossmann
931b7b1109
Merge pull request #1465 from GNS3/rbac-tweaking
Adjustments for RBAC system
2023-10-06 18:42:01 +10:00
grossmj
c7b5d0d2f8 Rename ACE management component to ACL 2023-10-06 18:02:57 +10:00
grossmj
a71014de81 Change titles for RBAC management 2023-10-06 17:27:00 +10:00
Jeremy Grossmann
73c9fd3181
Merge pull request #1464 from Orange-OpenSource/master-3.0
Master 3.0: Update group management
2023-09-29 23:23:16 +10:00
Sylvain MATHIEU
ff38d7abb7
Merge branch 'GNS3:master-3.0' into master-3.0 2023-09-29 14:11:29 +02:00
Elise Lebeau
db66a09e3b add linked ACE to user and group detail page 2023-09-29 11:10:53 +02:00
Jeremy Grossmann
c517e98bb1
Merge pull request #1462 from Orange-OpenSource/master-3.0
PR: Add resources pools management + ACE/ACL management
2023-09-28 18:44:43 +10:00
Sylvain MATHIEU
ed4fd7c06a
Merge branch 'GNS3:master-3.0' into master-3.0 2023-09-26 11:07:18 +02:00
Elise Lebeau
4870e58977 ACE management 2023-09-26 11:02:33 +02:00
Sylvain MATHIEU OBS
6b5b784658 Add resources pools management interface 2023-09-25 15:03:07 +02:00
grossmj
963af81d30 Rename text "is build" to "is built-in" 2023-09-21 19:43:20 +10:00
Jeremy Grossmann
b106f31b36
Merge pull request #1460 from Orange-OpenSource/master-3.0
Master 3.0, add privileges to role management
2023-09-20 14:05:35 +07:00
Sylvain MATHIEU OBS
39401f3184 fix privilege component test 2023-09-19 11:52:07 +02:00
Sylvain MATHIEU OBS
55c993df71 updte role management: replace permissions by privileges 2023-09-19 11:43:46 +02:00
Sylvain MATHIEU OBS
2c0cd88ca6 create UI to manege privileges to a role 2023-09-18 14:22:41 +02:00
Sylvain MATHIEU OBS
9ca10d6d6a update role api url 2023-09-12 15:53:08 +02:00
Elise Lebeau
7bad625fdd suppression des permissions 2023-09-12 15:03:02 +02:00
grossmj
bae7bcdd8d Update endpoint paths for user management 2023-09-07 14:46:23 +07:00
Jeremy Grossmann
6322fea306
Merge pull request #1451 from GNS3/upgrade-angular
Upgrade to Angular 14
2023-08-18 16:47:44 +10:00
Jeremy Grossmann
318d783370
Merge branch 'master-3.0' into upgrade-angular 2023-08-18 16:24:08 +10:00
grossmj
93a98f1335 Merge branch '2.2' into master-3.0
# Conflicts:
#	package.json
#	src/app/cartography/components/experimental-map/drawing/drawings/rect/rect.component.html
#	src/app/cartography/converters/map/map-drawing-to-svg-converter.ts
#	src/app/components/preferences/qemu/qemu-vm-template-details/qemu-vm-template-details.component.html
#	src/app/components/project-map/drawings-editors/style-editor/style-editor.component.ts
#	src/app/components/project-map/new-template-dialog/new-template-dialog.component.ts
#	yarn.lock
2023-08-02 18:39:15 +10:00
grossmj
21ef30ceed Revert "Remove comments from .yarnclean"
This reverts commit 8243238ae3510ffc656bdecbaebfa8978156d4eb.
2023-06-30 19:03:32 +10:00
grossmj
8243238ae3 Remove comments from .yarnclean 2023-06-30 18:51:39 +10:00
Jeremy Grossmann
f9baba7ad9
Merge branch 'master-3.0' into upgrade-angular 2023-06-30 17:57:20 +10:00
Jeremy Grossmann
45d5663562
Development on 3.0.0.dev7 2023-06-30 17:56:15 +10:00
grossmj
cb3cf5399d Fix tests 2023-06-30 17:37:12 +10:00
grossmj
69aa4ac613 Upgrade ng2-file-upload to v3.0.0 2023-06-30 17:29:56 +10:00
grossmj
0eef66eabf Add CommonJS modules to allowedCommonJsDependencies in angular.json 2023-06-30 17:23:16 +10:00
grossmj
37813d4ad6 Upgrade material to v14 2023-06-30 12:43:30 +10:00
grossmj
d67440ae6a Upgrade to Angular 14 2023-06-30 12:11:20 +10:00
grossmj
b25337f65b Upgrade requests module. Fixes #1448 2023-06-21 18:38:42 +09:30
grossmj
ac02dede76 Support for UEFI boot mode option for Qemu VMs 2023-06-21 18:10:00 +09:30
Jeremy Grossmann
17a9e3d089
Merge pull request #1434 from GNS3/vmware-virtualbox-deprecated
Mark VMware and VirtualBox support as deprecated
2023-02-06 06:26:14 +05:45
grossmj
eff72dc5f8 Fix tests 2023-02-05 10:20:54 +08:00
grossmj
8e338da896 Warn that VMware and VirtualBox support is deprecated 2023-02-05 10:07:26 +08:00
grossmj
d982ae0a00 Merge branch 'master' into master-3.0 2023-02-04 16:10:30 +08:00
grossmj
c6ce67f867 Revert "Handle additional directories for Docker"
This reverts commit fac07ceeb4c9cb14477326c7891f8f5c7fc02254.
2023-02-01 16:00:59 +08:00
grossmj
fac07ceeb4 Handle additional directories for Docker 2023-02-01 13:06:03 +08:00
grossmj
a8aef0729d Fixes after merge 2023-02-01 11:46:12 +08:00
grossmj
386c98d677 Update build for production in package.json 2023-02-01 11:08:00 +08:00
grossmj
c12167379d Use 'ChromeHeadless' in karma.conf.js 2023-02-01 10:57:59 +08:00
grossmj
6aa6647f53 Remove goToSystemStatus() after merge 2023-02-01 10:42:14 +08:00
grossmj
7ac3a628a4 Merge remote-tracking branch 'origin/master' into master-3.0
# Conflicts:
#	angular.json
#	package.json
#	src/ReleaseNotes.txt
#	src/app/cartography/helpers/font-fixer.spec.ts
#	src/app/cartography/models/node.ts
#	src/app/components/preferences/qemu/add-qemu-vm-template/add-qemu-vm-template.component.html
#	src/app/components/preferences/qemu/add-qemu-vm-template/add-qemu-vm-template.component.ts
#	src/app/components/project-map/node-editors/configurator/docker/configurator-docker.component.ts
#	src/app/components/project-map/project-map-menu/project-map-menu.component.ts
#	src/app/components/project-map/project-map.component.html
#	src/app/components/project-map/project-map.component.ts
#	src/app/components/projects/projects.component.html
#	src/app/components/settings/settings.component.html
#	src/app/components/settings/settings.component.spec.ts
#	src/app/components/template/template-list-dialog/template-list-dialog.component.html
#	src/app/components/template/template.component.html
#	src/app/components/template/template.component.ts
#	src/app/services/link.service.ts
#	yarn.lock
2023-02-01 10:32:12 +08:00
grossmj
a08f8c5963 Fix error when suspending and configuring a packet filter on a link
(cherry picked from commit aeef3e74ede66d4bdf17105662795336e415a167)
2023-02-01 10:12:38 +08:00
grossmj
642082e9fb Use a hidden iframe to open console on Firefox
(cherry picked from commit 83d72787f41d83cb712c1f43e1b5fec6b4527d56)
2023-02-01 10:11:27 +08:00
grossmj
fa8fd3c4a2 Add TPM support for Qemu VMs 2023-01-04 18:54:25 +08:00
grossmj
e9e3730618 Release 3.0.0a3 2022-12-27 12:51:03 +08:00
Jeremy Grossmann
fb639c8acd
Merge pull request #1405 from GNS3/bugfix-1371
Removed the top banner and logo on the controllers page
2022-10-20 16:16:59 +08:00
Rajnikant Lodhi
6577bfc926 Removed the top banner and logo on the controllers page 2022-10-19 18:29:05 +05:30
Jeremy Grossmann
88f44554de
Merge pull request #1396 from GNS3/bugfix/1379
Bugfix/1379
2022-09-07 23:58:41 +02:00
Rajnikant Lodhi
872ebdae09 unit test cases for lock/unlock 2022-09-07 14:56:34 +05:30
grossmj
2bc5fc101b Development on v3.0.0dev5 2022-09-07 00:51:36 +02:00
grossmj
a5030baf62 Release v3.0.0a2 2022-09-07 00:49:27 +02:00
Rajnikant Lodhi
0c0d27fd6e Resolve issue Lock or unlock all items button does not reflect the nodes status on the web-ui workspace GNS3 3.0.0 alpha 1 2022-09-06 17:03:00 +05:30
Jeremy Grossmann
e6e7122e33
Merge pull request #1389 from GNS3/bugfix/1383
Resolve missing border style options dash dot dot and invisible for l…
2022-08-29 19:28:24 +02:00
grossmj
20bd0733f2 Change 'Dash Dot' and 'Dash Dot Dot' border styles 2022-08-29 19:23:48 +02:00
Rajnikant Lodhi
3fa923a9d1 Resolve no border style issue 2022-08-27 00:30:34 +05:30
Rajnikant Lodhi
02bd105b86 Merge branch 'bugfix/1383' of https://github.com/GNS3/gns3-web-ui into bugfix/1383 2022-08-26 11:07:18 +05:30
Rajnikant Lodhi
573d36057b add a condition for getting no border and solid border style 2022-08-26 11:06:57 +05:30
grossmj
0eaa5c714c Add 'Dash Dot Dot' border type in link style editor 2022-08-25 22:17:52 +02:00
Rajnikant Lodhi
1c8e56274a Resolve stroke dasharray value get undefined issue on web ui 2022-08-25 10:44:36 +05:30
Rajnikant Lodhi
43c689b30a remove qt fixer condition 2022-08-24 18:04:20 +05:30
Rajnikant Lodhi
5bee5deb22 convert the qt value into the stroke dasharray 2022-08-24 16:03:50 +05:30
grossmj
22ef305e81 Add comments 2022-08-23 23:58:21 +02:00
Rajnikant Lodhi
b66af49137 Modified the stroke dasharray value for creating Dash Dot, Dash Dot Dot border style 2022-08-23 16:53:48 +05:30
Jeremy Grossmann
fcfcb7566d
Merge pull request #1388 from GNS3/bugfix/1381
Highlight the current menu item in dropdown menu on mouse over
2022-08-22 12:57:22 +02:00
Rajnikant Lodhi
6fe15bac9c Resolve lighlight the current menu item in dropdown menu on mouse over only light theme 2022-08-22 16:21:10 +05:30
Rajnikant Lodhi
2f9e735928 Merge branch 'bugfix/1383' of https://github.com/GNS3/gns3-web-ui into bugfix/1383 2022-08-22 16:08:52 +05:30
Rajnikant Lodhi
c5837b237a Resolve inconsistent border styles for device links between GNS3 desktop UI and web-ui 2022-08-22 16:06:33 +05:30
Rajnikant Lodhi
1d13862880 Add hover class for highlight the current menu item in dropdown menu on mouse over 2022-08-19 17:11:26 +05:30
Jeremy Grossmann
651d4c9d32
Change Invisible to No border 2022-08-18 22:21:48 +02:00
Jeremy Grossmann
d03bd2a667
Merge pull request #1387 from GNS3/bugfix/1361
Resize pop-up windows and remove pagination arrow buttons
2022-08-18 22:14:31 +02:00
Rajnikant Lodhi
f338a2e33d Resolve missing border style options dash dot dot and invisible for links between devices 2022-08-18 18:25:38 +05:30
Rajnikant Lodhi
15f8fff179 Highlight the current menu item in dropdown menu on mouse over 2022-08-18 17:22:42 +05:30
Rajnikant Lodhi
b3aeb148e7 Resize pop-up windows and remove pagination arrow buttons 2022-08-18 12:09:01 +05:30
Jeremy Grossmann
85f60fbc1c
Merge pull request #1386 from GNS3/bugfix/1362
Remove Inner scroll bar for node configuration
2022-08-18 00:07:37 +02:00
Rajnikant Lodhi
228ea78c41 Remove Inner scroll bar for node configuration 2022-08-17 16:51:08 +05:30
Jeremy Grossmann
c0f5b022e8
Merge pull request #1385 from GNS3/fix-cve-issues
Fix node-fetch CVE issue
2022-08-12 17:41:57 +02:00
grossmj
1888174ebf Back to electron 13.6.6 2022-08-12 17:31:11 +02:00
grossmj
3cf1984b39 Update yarn.lock 2022-08-12 12:51:26 +02:00
grossmj
eda1099b41 Fix node-fetch and electron CVE issues 2022-08-12 11:51:30 +02:00
Jeremy Grossmann
b309cf92e6
Merge pull request #1382 from GNS3/bugfix/1377
Resolve Cannot set border style for any shapes in Web-UI GNS3 3.0.0 A…
2022-08-12 11:38:43 +02:00
Rajnikant Lodhi
5da993e2f5 Add Border style placeholder in border style selections 2022-08-12 14:51:01 +05:30
Rajnikant Lodhi
8e197a8831 Resolve Cannot set border style for any shapes in Web-UI GNS3 3.0.0 Alpha 1 issue 2022-08-10 17:09:12 +05:30
Jeremy Grossmann
c80ff95757
Merge pull request #1380 from GNS3/bugfix/1373
Resolve this issue:
2022-08-10 00:35:08 +02:00
gns3-build
6f3b0d2004
Merge branch 'master-3.0' into bugfix/1373 2022-08-10 00:30:11 +02:00
Rajnikant Lodhi
75cb4f0280 update network adapters list 2022-08-09 15:48:48 +05:30
Rajnikant Lodhi
d4ea702a6a Resolve this issue:
Cannot change network card type on Qemu VM templates from Web-UI
2022-08-09 10:09:34 +05:30
Jeremy Grossmann
a143f0d037
Merge pull request #1376 from GNS3/bugfix/1372
resolve Uploaded images with long names get truncated in image manage…
2022-08-08 23:51:44 +02:00
Rajnikant Lodhi
7b1bd4a170 resolve Uploaded images with long names get truncated in image manager issue 2022-08-08 09:58:15 +05:30
grossmj
4ad56ed856 Add more video resolutions to Docker containers using VNC in WebUI. Fixes #1375
(cherry picked from commit 83f7d36e2da27cf713bf7cc56438d3eb95b70267)
2022-08-08 00:00:55 +02:00
grossmj
c264268ab8 Update accepted image extensions to upload a new image 2022-08-06 13:10:37 +02:00
grossmj
835f35d996 Development on v3.0.0dev4 2022-08-04 11:01:45 +02:00
grossmj
9e61e2cb0b Release v3.0.0a1 2022-08-04 10:58:41 +02:00
Jeremy Grossmann
cb48ea2715
Merge pull request #1370 from GNS3/bugfixRemovedQemuCode/1363
Bugfix removed qemu code/1363
2022-08-03 11:13:45 +02:00
grossmj
206d25d032 Set platform with first element in the list 2022-08-03 11:08:30 +02:00
Rajnikant Lodhi
0bb4db78a4 Merge branch 'bugfixRemovedQemuCode/1363' of https://github.com/GNS3/gns3-web-ui into bugfixRemovedQemuCode/1363 2022-08-02 09:48:11 +05:30
Rajnikant Lodhi
e8e5ce8bb9 Remove unused code and Add edit platform in node Configurator pop 2022-08-02 09:47:50 +05:30
Jeremy Grossmann
8424df0e2b
Update configurator-qemu.component.ts 2022-08-02 00:16:01 +02:00
Rajnikant Lodhi
24deb65a0b remove Qemu code 2022-08-01 17:23:04 +05:30
Rajnikant Lodhi
4d5a5b8934 . 2022-08-01 17:18:46 +05:30
Rajnikant Lodhi
408130596a Removed QEMU binaries code 2022-08-01 16:57:44 +05:30
Rajnikant Lodhi
8846415959 . 2022-08-01 16:51:38 +05:30
Rajnikant Lodhi
939e4dfd5b Remove QEMU binaries code from add and edit qemu template. 2022-08-01 16:48:15 +05:30
Rajnikant Lodhi
a1163f0274 Modify platform selection on add new Qemu Component 2022-08-01 10:34:41 +05:30
Rajnikant Lodhi
1e0afa2460 Qemu binaries endpoint, Now we are not using in Frontend side 2022-08-01 10:02:42 +05:30
Jeremy Grossmann
a2338d905b
Merge pull request #1368 from GNS3/enhancement/1360
Enhancement/1360
2022-07-30 15:50:09 +02:00
Rajnikant Lodhi
5bb61bd1bc Resolve Unit test case issues 2022-07-30 16:31:05 +05:30
Rajnikant Lodhi
2a44abadd5 Comment Suggestions have been resolved 2022-07-30 08:58:41 +05:30
grossmj
37684efe79 Fix typo 2022-07-29 09:35:16 +02:00
Rajnikant Lodhi
c8188ebf9c Comment Suggestions have been resolved 2022-07-29 09:57:56 +05:30
Rajnikant Lodhi
060a1f32cc Merge branch 'bugfix/1366' of https://github.com/GNS3/gns3-web-ui into enhancement/1360 2022-07-29 09:29:04 +05:30
Rajnikant Lodhi
387e5366be add a condition for logo menu 2022-07-27 16:04:43 +05:30
Rajnikant Lodhi
83a6da8cdb update script for deploy 2022-07-27 14:29:10 +05:30
Rajnikant Lodhi
fc5b7b6e34 Enable top left corner menu on other page like setting 2022-07-27 11:48:24 +05:30
Jeremy Grossmann
f75e7e0e10
Merge pull request #1365 from GNS3/enhancement/1355
Enhancement/1355
2022-07-26 23:50:17 +02:00
Jeremy Grossmann
73bc8cd4b7
Merge pull request #1359 from GNS3/enhancement/1354
Enhancement/1354
2022-07-26 23:40:10 +02:00
grossmj
7601a75831 Remove '.' 2022-07-26 23:36:01 +02:00
Rajnikant Lodhi
44c0f75628 Complete improvements on preferences page. 2022-07-26 18:05:12 +05:30
grossmj
3c23e983ec Fix adding Ethernet switch template 2022-07-26 10:38:47 +02:00
Rajnikant Lodhi
9b6e927c7b Remove unused code and change string into
Your selected files => Your selected projects
2022-07-26 09:18:03 +05:30
Rajnikant Lodhi
17901e9ed2 Preferences page improvement 2022-07-26 08:56:31 +05:30
Jeremy Grossmann
3024f62d4b
Merge pull request #1364 from GNS3/use-themed-symbols
Let the controller allocate symbols
2022-07-25 20:46:05 +02:00
grossmj
bd118fc4bd Use generic symbol names 2022-07-25 10:53:09 +02:00
Rajnikant Lodhi
97a04a2fba Resolve the top-right menu url issue 2022-07-25 11:49:21 +05:30
grossmj
cffd8d79a9 Caching yarn dependencies 2022-07-23 11:09:49 +02:00
grossmj
dc94d22822 Finish merging code from master-3.0 2022-07-23 10:58:17 +02:00
Jeremy Grossmann
c3bfad647f
Merge branch 'master-3.0' into enhancement/1354 2022-07-23 00:52:38 +02:00
Jeremy Grossmann
e2f4d67a30
Merge pull request #1356 from GNS3/enhancement/1353
Enhancement/1353
2022-07-23 00:41:15 +02:00
grossmj
698ecfa255 Bring back location column 2022-07-23 00:32:45 +02:00
grossmj
ff1b991d2a Add missing code 2022-07-23 00:01:17 +02:00
grossmj
714db5e399 Test with Node matrix 2022-07-22 22:36:37 +02:00
grossmj
c59dd035eb Rename user management server ref to controller 2022-07-22 21:44:41 +02:00
Jeremy Grossmann
a79d6c916f
Merge branch 'master-3.0' into enhancement/1353 2022-07-22 19:28:39 +02:00
grossmj
e72c6f6609 Merge branch 'Orange-OpenSource-master-3.0' into master-3.0 2022-07-22 19:16:37 +02:00
grossmj
f6961777f0 Merge branch 'master-3.0' of https://github.com/Orange-OpenSource/gns3-web-ui into Orange-OpenSource-master-3.0 2022-07-22 19:16:10 +02:00
Jeremy Grossmann
f340586956
Merge branch 'master-3.0' into enhancement/1353 2022-07-22 18:50:51 +02:00
grossmj
8929d1d659 Finish to rename server to controller 2022-07-22 18:49:36 +02:00
grossmj
cb7c445a0b Allow raw image in appliance manager 2022-07-22 12:44:18 +02:00
Rajnikant Lodhi
7c343c51be I change commented files 2022-07-22 13:56:16 +05:30
Rajnikant Lodhi
20fe475791 Removed debugger 2022-07-21 17:56:08 +05:30
Rajnikant Lodhi
974e17395b renamed [server] = "server" => [controller]="controller" 2022-07-21 17:35:05 +05:30
Rajnikant Lodhi
4b0499e373 Renamed e2e testing file function or variable 2022-07-21 16:32:09 +05:30
Rajnikant Lodhi
a6661a24c6 Resolve all commented issue 2022-07-21 14:16:55 +05:30
Rajnikant Lodhi
7a79835a8d I renamed servers service file into controller.service 2022-07-21 13:57:09 +05:30
Rajnikant Lodhi
c682db4595 Rename Server file name into controller 2022-07-21 12:41:12 +05:30
Rajnikant Lodhi
ca601e410b Renamed server.id and serverId into controller.id and controllerId and modified the all unit test cases 2022-07-20 14:28:13 +05:30
Rajnikant Lodhi
845f1f1ad8 I complete unit test case to confirmations for delete all project 2022-07-19 18:18:46 +05:30
Rajnikant Lodhi
3bbd755d0a add route 2022-07-19 17:56:31 +05:30
Rajnikant Lodhi
56a22ec5c8 renamed the delete controller tool tip 2022-07-19 17:43:24 +05:30
Rajnikant Lodhi
8c444059ad I have improved on the projects page like this
1.Allow to delete multiple projects at once (similar to what is done in the image manager).
2. Add an export project action in the actions column. The export icon could be improved.
3.Replace "Duplicate" action by "Save project as" (with same icon as on project settings menu).
4.Delete 'Go to system status' button and add 'System status' entry to top right menu.
5.Delete 'Go to preferences' button and add 'Template preferences' entry to top right menu.
6.Add "Image manager" entry to the top right menu
2022-07-19 17:36:19 +05:30
Rajnikant Lodhi
2755f7226b I reanmed server_id into controller_id everywhere in the code as well. 2022-07-19 10:15:09 +05:30
Rajnikant Lodhi
37cc3f3731 rename component name servers and server Into a controllers or controller 2022-07-18 14:56:02 +05:30
Rajnikant Lodhi
99e022bed8 I change all url everywhere like /servers => /controllers and /server/ => /controller/ 2022-07-18 14:01:09 +05:30
Rajnikant Lodhi
f106ca51da Add cosmetic change 2022-07-18 12:29:52 +05:30
Rajnikant Lodhi
9f80df4360 I changed servers string into controllers string on the server page 2022-07-18 12:01:22 +05:30
Jeremy Grossmann
46c7c66362
Merge pull request #1352 from GNS3/bugfix/remove-warnings
Bugfix/remove warnings
2022-07-15 18:58:27 +02:00
grossmj
1cd479751f Set --tsconfig "./src/tsconfig.app.json" in package.json 2022-07-15 00:11:28 +02:00
Rajnikant Lodhi
fe7f65c723 add a path of tsconfig.base.json file in tsconfig 2022-07-14 16:10:33 +05:30
Rajnikant Lodhi
eff4ed11d6 I upadate package @synk/protect instead of "snyk": "^1.915.0" 2022-07-14 11:08:26 +05:30
Jeremy Grossmann
caa444121e
Merge pull request #1331 from GNS3/enhancement/1323
Enhancement/1323
2022-07-13 00:17:48 +02:00
Jeremy Grossmann
6dcacbaa85
Merge branch 'master-3.0' into enhancement/1323 2022-07-13 00:06:13 +02:00
Rajnikant Lodhi
5cc45a39ca Add window.location.assign() for file downloading. 2022-07-12 11:02:15 +05:30
Jeremy Grossmann
a61c0bfe07
Merge pull request #1346 from GNS3/enhancement/1344
I have  resolved Support for project importation #1344 issue
2022-07-11 12:21:38 +02:00
Rajnikant Lodhi
e24aa1387b Modified the file upload cancel message 2022-07-07 11:09:33 +05:30
Rajnikant Lodhi
9381578657 1. Improve progress bar and I used common progress bar.
2.  Added cancel button
3. And modified the unit test cases
2022-07-06 20:27:44 +05:30
Rajnikant Lodhi
379a39a98f I have resolved Support for project importation #1344 issue 2022-07-06 16:48:29 +05:30
Jeremy Grossmann
cb11e8b1a2
Merge pull request #1345 from GNS3/enhancement/1342
I have  added node menu  controls confirmation action dialog in
2022-07-05 14:33:42 +02:00
Rajnikant Lodhi
5bddf9c5fc I added reset all console connection control on nodes menu and removed red circle from nodes action confirmation dialog 2022-07-05 08:59:48 +05:30
Rajnikant Lodhi
9c3667277c Resolve/write an unit test case. 2022-07-04 15:03:49 +05:30
Rajnikant Lodhi
576c108da8 I have added node menu controls confirmation action dialog in
Webui missing prompt for mass state changes of project #1342 issue.
2022-07-04 14:40:27 +05:30
Rajnikant Lodhi
7398c07c6b getpath of export project 2022-07-04 11:51:40 +05:30
Rajnikant Lodhi
5fbb4108dd Change File name like .gns3project 2022-06-23 10:09:32 +05:30
Rajnikant Lodhi
b032c88467 Closed export prject window without waiting 2022-06-22 14:08:26 +05:30
Jeremy Grossmann
50de71dc5a
Merge pull request #1334 from GNS3/bugfix/1317
Bugfix/1317
2022-06-21 12:17:13 +02:00
Rajnikant Lodhi
335ea23b6b Resolve issue of waiting for the download to be finished and removed unused code 2022-06-21 12:05:31 +05:30
Rajnikant Lodhi
40ffe84b77 Removed vm_compute_id 2022-06-21 08:59:18 +05:30
Rajnikant Lodhi
a6b65fc8fe Modify the unit test cases 2022-06-20 18:11:55 +05:30
Rajnikant Lodhi
1d75fefb68 Resolve Allow Virtualbox, VMware and Docker templates to be created issue but not fully tested 2022-06-20 18:05:34 +05:30
Rajnikant Lodhi
59667e3a90 Resolve both issues like:
1.Selecting "none" or "lzma" compression type shouldn't pass a compression level of "None".
2.The export window waits for the project to be downloaded when exporting a large project with images
2022-06-17 19:55:24 +05:30
Rajnikant Lodhi
06852d94d7 Resolve cosmetic issues 2022-06-17 14:54:54 +05:30
Rajnikant Lodhi
be831aaf15 Complete export portable project settings and modified the unit test case 2022-06-17 13:06:42 +05:30
Rajnikant Lodhi
3d0e94257f . 2022-06-13 16:40:17 +05:30
Rajnikant
50f6cd2191 Write a unit test case for export project dialog box. 2022-06-13 16:28:44 +05:30
Rajnikant
06ed79ec78 Add compression methods short form according to API endpoint and resolve build error 2022-06-13 12:11:49 +05:30
Rajnikant
5c1ce1a5ab I complete export project UI and bind export portable project API 2022-06-10 19:20:02 +05:30
Rajnikant
ea76493ab8 Merge branch 'master-3.0' into enhancement/1323 2022-06-10 11:00:38 +05:30
Jeremy Grossmann
7d706a39f1
Merge pull request #1326 from GNS3/bugfix/imageProgressBar
Bugfix/image progress bar
2022-06-10 12:08:53 +08:00
Rajnikant
f7696e5453 Create dynamic progress bar 2022-06-09 20:42:08 +05:30
Rajnikant
726562d615 Modified progrss bar handler 2022-06-08 18:51:08 +05:30
Rajnikant lodhi
78f77dc881 Update dependencies like autoprefixer 2022-06-08 09:25:43 +05:30
Rajnikant lodhi
1787db7c6d Resolve vulnerabilities issue 2022-06-07 23:45:33 +05:30
Rajnikant
088b128b57 Resolve progress bar and add dependencies in spec file 2022-06-07 11:19:01 +05:30
Rajnikant
b7e314deeb Resolve build issue 2022-06-07 09:03:13 +05:30
Rajnikant
fd95c2d43c I added export portable project dialog box 2022-06-07 08:58:51 +05:30
Rajnikant
52f10b0c53 . 2022-06-06 14:20:30 +05:30
Rajnikant
ecf729fc56 I have resolved image progress bar and undefined event issue 2022-06-06 13:43:39 +05:30
Jeremy Grossmann
b430ab9a1c
Merge pull request #1318 from GNS3/enhancement-JWT/1228
I have modified the JWT Interceptor and added refresh token functiona…
2022-05-31 15:58:18 +07:00
Rajnikant
18a014d739 update 2022-05-31 14:12:18 +05:30
Rajnikant
07c505187d update user case 2 2022-05-31 13:40:00 +05:30
Rajnikant
eb07abe786 Resolve/modified remember me check box user cases 2022-05-31 13:18:52 +05:30
Rajnikant
78da4f0efa I have added Remember me tickbox on login component and I resolve an error just before auto re-login 2022-05-31 10:47:32 +05:30
Rajnikant
0185dbd8af I have modified the JWT Interceptor and added refresh token functionality 2022-05-27 12:57:56 +05:30
Jeremy Grossmann
83fa40907e
Merge pull request #1316 from GNS3/enhancement/1307
Add common process bar when uploading IOS and IOU images
2022-05-24 22:57:02 +07:00
Rajnikant
0ae25095a8 Resolve loader error 2022-05-24 19:54:26 +05:30
Rajnikant
ea1e280e66 I resoleved loader error and message 2022-05-24 15:25:06 +05:30
Rajnikant
667c8fc7f0 I added a common process bar when IOS and IOU image file uplading 2022-05-24 09:40:46 +05:30
Jeremy Grossmann
36482c7a96
Merge pull request #1315 from GNS3/bugfix/1314
Bugfix/1314
2022-05-23 15:43:58 +07:00
Rajnikant
7aae84b2be . 2022-05-23 12:44:23 +05:30
Rajnikant
7049e05c91 I have removed static version (v3) and Now, we are using environment file for current version 2022-05-23 12:40:09 +05:30
Jeremy Grossmann
e7e55e7eaf
Merge pull request #1313 from GNS3/enhancement/1308
I have improved progress bar when uploading files
2022-05-23 13:09:06 +07:00
Jeremy Grossmann
65c48769b7
Merge pull request #1312 from GNS3/bugfix/1307
I added  authentication token for allow IOU or IOS templates to be cr…
2022-05-23 12:53:31 +07:00
Rajnikant
2816202ee5 Changed uppercase to lowercase 2022-05-23 11:15:53 +05:30
Rajnikant
434bf57cd1 I removed static version and define in evviroment file 2022-05-23 11:06:00 +05:30
Rajnikant
0120a1281c I have modified the file uploading url 2022-05-21 12:30:00 +05:30
Rajnikant
824833e621 added Unit test case dependencies 2022-05-20 17:23:14 +05:30
Rajnikant
23fe8ae9b8 I have improved progress bar when uploading files 2022-05-20 17:08:43 +05:30
Rajnikant
4f90a6d1fd I added authentication token for allow IOU or IOS templates to be created 2022-05-16 18:39:19 +05:30
Jeremy Grossmann
f055836f44
Merge pull request #1310 from GNS3/bugfix/all-CVE
Bugfix/all CVE
2022-05-14 22:01:25 +07:00
Rajnikant
88e1cb66eb I have removed deprecated async() in @angular/core/testing Angular API and Modified some unit test case 2022-05-13 23:38:43 +05:30
Rajnikant
2f0cdfc33c I resolved all unit test case 2022-05-13 13:08:13 +05:30
Rajnikant
6152f68acf I have changed the unit test case according to Angular API 2022-05-06 19:09:43 +05:30
Jeremy Grossmann
8ec2b806a9
Merge pull request #1306 from GNS3/bugfix/1223
I removed electron specific Ui / code
2022-05-06 11:56:02 +07:00
Rajnikant
dc382348b8 Merge branch 'master-3.0' into bugfix/all-CVE 2022-05-02 16:27:20 +05:30
Rajnikant
05d980e6e3 I changed API for dynamic unit cases 2022-05-02 16:24:47 +05:30
Jeremy Grossmann
fbfb6b7152
Merge pull request #1305 from GNS3/bugFix-1300
Bug fix 1300
2022-05-02 17:30:46 +07:00
Rajnikant
834173201b I resolved CVE issues and update yarn lock file 2022-05-02 13:25:18 +05:30
Rajnikant
49693efc04 update angular cdk 2022-04-29 17:37:42 +05:30
Rajnikant
29f1eb92d8 update angular version 2022-04-29 17:26:12 +05:30
Rajnikant
d5287bfb8e I have resolved suggested comments. 2022-04-29 10:20:49 +05:30
Rajnikant
a7e637a466 I added checksum key instead of md5sum key 2022-04-28 17:55:15 +05:30
Rajnikant
f71a8edc3c I removed electron specific Ui / code 2022-04-26 18:44:14 +05:30
Rajnikant
0df6294cc7 I removed unwanted code 2022-04-26 16:51:02 +05:30
Rajnikant
7ff43eb582 yarn.lock file added 2022-04-26 14:15:30 +05:30
Rajnikant
236a9d11b3 I resolved / Fixed add new template uploading image issue 2022-04-26 13:37:43 +05:30
Sylvain MATHIEU
dc2c4cbbbe fix import for routing and modules 2022-04-25 15:55:25 +02:00
Sylvain MATHIEU
a074bbc617 Merge remote-tracking branch 'upstream/master-3.0' into master-3.0
# Conflicts:
#	src/app/app-routing.module.ts
#	src/app/app.module.ts
2022-04-25 15:50:29 +02:00
Rajnikant
4c11b6c012 . 2022-04-22 10:16:38 +05:30
Rajnikant
a26a08cb20 Added yarn.lock 2022-04-20 18:12:22 +05:30
Rajnikant
7ac6b1ef76 I removed commented code 2022-04-20 17:36:30 +05:30
Jeremy Grossmann
c929f49aa2
Merge pull request #1299 from GNS3/bugfix/1161
Resolved "Remove GNS3 VM specific code #1161"
2022-04-19 18:15:24 +07:00
Sakshi Goel
d00e56627f Removed commented code 2022-04-19 16:28:59 +05:30
Rajnikant
a172b7d41f update deprecated angular API's 2022-04-19 13:30:15 +05:30
Sakshi Goel
f7ba01211e Resolved "Remove GNS3 VM specific code #1161" 2022-04-18 18:01:41 +05:30
Rajnikant
002569ed75 update angular material 2022-04-18 16:50:54 +05:30
Rajnikant
f23315fd75 update angular cli 2022-04-18 16:29:42 +05:30
Jeremy Grossmann
2121d29a9e
Merge pull request #1171 from GNS3/Change-link-style
Change link style
2022-04-18 14:42:43 +07:00
Rajnikant
834cdecd80 Added a comment for location.reload() function 2022-04-18 12:27:43 +05:30
Rajnikant
78f2b76a14 I added location.reload() for reload hole page 2022-04-18 12:06:23 +05:30
Jeremy Grossmann
978b473e8e
Merge pull request #1297 from GNS3/bugfix/1201
I resolved " Remove Qemu legacy networking code
2022-04-14 15:00:53 +07:00
Sakshi Goel
d652ae0bbb I resolved " Remove Qemu legacy networking code
#1201".
2022-04-13 19:16:18 +05:30
grossmj
50a5307d03 Merge remote-tracking branch 'origin/Change-link-style' into Change-link-style
# Conflicts:
#	package.json
#	src/ReleaseNotes.txt
#	src/app/components/project-map/context-menu/context-menu.component.html
#	yarn.lock
2022-04-13 20:03:10 +07:00
piotrpekala7
408184874c Changing link style 2022-04-13 19:40:48 +07:00
piotrpekala7
a8043f9423 Update ethernet-link.ts 2022-04-13 19:40:48 +07:00
piotrpekala7
66cd41018e Updating links data source added 2022-04-13 19:40:48 +07:00
piotrpekala7
d43e6649c7 Update serial-link.ts 2022-04-13 19:40:48 +07:00
piotrpekala7
5cb3c43e88 Link styling for ethernet links 2022-04-13 19:40:48 +07:00
piotrpekala7
97974339b9 Changing style for links added 2022-04-13 19:40:48 +07:00
piotrpekala7
a1228d009b Edit link style dialog created 2022-04-13 19:40:47 +07:00
Jeremy Grossmann
67c564caa7
Merge pull request #1291 from GNS3/enhancement/1284
Enhancement/1284
2022-04-13 17:45:34 +07:00
Rajnikant
258e9f02c2 Delete multiple images in one go if I select 2 or more images 2022-04-13 15:58:10 +05:30
Jeremy Grossmann
fcc03f5ad0
Merge pull request #1288 from GNS3/bugfix/1287
I resolved "#1287 Cannot add Qemu template manually"
2022-04-13 16:15:49 +07:00
Sakshi Goel
5e65aff228 I resolved "Cannot add Qemu template manually bug
#1287"
2022-04-13 13:47:03 +05:30
Rajnikant
c86769dd4f I added install appliances confirmation dialog, Unit test cases for upload and delete file and suggested changes. 2022-04-12 15:03:40 +05:30
Rajnikant
147cae1313 I completed enhancement work #1284 Image manager 2022-04-05 17:10:21 +05:30
Sakshi Goel
97d1bc7596 I resolved "#1287 Cannot add Qemu template manually" 2022-04-04 12:15:56 +05:30
Jeremy Grossmann
fa0531644d
Merge pull request #1290 from GNS3/bugfix/1286
Bugfix/1286
2022-04-01 23:26:15 +08:00
Sakshi Goel
ab89aa8ec8 Resolved "New template dialog is not populated
#1286 "
2022-04-01 16:46:04 +05:30
Sakshi Goel
8adad9c13f I resolved "#1287 cannot open Qemu template manually including adding a Qemu template during step3. 2022-04-01 12:55:14 +05:30
Sakshi Goel
316fe735fc I resolved "#1287 Cannot add Qemu template manually" 2022-03-31 17:32:29 +05:30
Jeremy Grossmann
f91a5f657f
Merge pull request #1285 from GNS3/bugfix/1282
I resolved "Cannot open new template dialog #1282"
2022-03-31 12:47:43 +08:00
Sakshi Goel
6a09772459 I resolved "Cannot open new template dialog #1282" 2022-03-29 18:33:14 +05:30
rajnikantsolarwinds
48bb035b34
Suspend a link or node show status change (#1281)
* Suspend a link or node show status change

* Show the suspended status when we start a packet capture on the link.
2022-03-28 10:02:00 +02:00
Rajnikant
9558b2137f Show the suspended status when we start a packet capture on the link. 2022-03-25 11:34:55 +05:30
Rajnikant
c2410f0933 Suspend a link or node show status change 2022-03-24 17:28:42 +05:30
Jeremy Grossmann
2f9999b41c
Merge pull request #1276 from GNS3/bugfix/1274
Link added
2022-03-23 17:45:48 +10:00
Rajnikant
96a11384a0 removed !important 2022-03-23 12:33:35 +05:30
Rajnikant
c938c3a8ca Link added 2022-03-22 12:07:13 +05:30
Sylvain MATHIEU
93188f2aec Add methods documentation 2022-03-21 09:42:40 +01:00
Sylvain MATHIEU
f9cc7f3883 add tests on filter-complete.pipe.ts 2022-03-21 07:56:04 +01:00
Sylvain MATHIEU
160b0eccc0 add tests on display-path.pipe.ts 2022-03-21 07:56:03 +01:00
Sylvain MATHIEU
0b2128f00b add tests on filter-complete.pipe.ts 2022-03-21 07:55:35 +01:00
Sylvain MATHIEU
02c323463c add tests on PermissionPath.ts 2022-03-21 07:55:35 +01:00
Sylvain MATHIEU
067c8a00ec add tests on add-permission-line.component.ts 2022-03-21 07:55:35 +01:00
Sylvain MATHIEU
7d1ed62f30 add tests on method-button.component.ts 2022-03-21 07:55:35 +01:00
Lebeau Elise
349666dcc1 tests on ApiInformationService 2022-03-18 15:13:26 +01:00
Lebeau Elise
3ad28e6d09 tests on display path pipe 2022-03-18 15:11:56 +01:00
Lebeau Elise
5aa7afe15c tests on permission filter pipe 2022-03-18 14:56:37 +01:00
Sylvain MATHIEU
c5434a4e99 disable all unused tests 2022-03-07 09:40:41 +01:00
Sylvain MATHIEU
87a0b951a7 add paths to resolve modules declaration for tests 2022-03-07 09:40:11 +01:00
Sylvain MATHIEU
0154d123a9 add missing import 2022-02-28 13:51:57 +01:00
Sylvain MATHIEU
fc0fdd2e51 bugfix, Permission Link display correctly 2022-02-28 13:51:57 +01:00
Lebeau Elise
b6b9d735f5 update user password + confirm password validator 2022-02-28 13:51:57 +01:00
Lebeau Elise
8df255ebc3 Bug fix, paginators and sort for user group and role lists 2022-02-28 13:51:57 +01:00
Lebeau Elise
02285265e3 add user to groups when creating user + refactor add users when creating group 2022-02-28 13:51:57 +01:00
Sylvain MATHIEU
c400ad551e bug fix, display correctly http error message inside Toaster service 2022-02-28 13:51:57 +01:00
Lebeau Elise
5102039dbd User and group details, add paginator and filter on permissions list 2022-02-28 13:51:57 +01:00
Lebeau Elise
7bff9b40de New group, add user to group functionality 2022-02-28 13:51:57 +01:00
Sylvain MATHIEU
707f5b6c7f Permission object, display object name instead of uuid 2022-02-28 13:51:56 +01:00
Lebeau Elise
6a573110e8 Permissions management, add paginator and filters 2022-02-28 13:51:10 +01:00
Lebeau Elise
0d5f11dfc1 user details, Add/remove permissions 2022-02-28 13:51:10 +01:00
Sylvain MATHIEU
65f1d45dc5 Permission management, create add permission component and apiInformation service, which parse swagger api information schema 2022-02-28 13:51:10 +01:00
Lebeau Elise
2664911455 Add permission management 2022-02-28 13:50:15 +01:00
Sylvain MATHIEU
65172c18b5 Group details, can add role to group 2022-02-28 13:50:11 +01:00
Sylvain MATHIEU
920154e7b9 Add role management 2022-02-28 13:50:11 +01:00
Sylvain MATHIEU
36e39f908b menu, disable management entry if no server was selected 2022-02-28 13:50:11 +01:00
Sylvain MATHIEU
39627c28c8 Management refactoring, creating unique entry in menu for management 2022-02-28 13:50:11 +01:00
Sylvain MATHIEU
b8b7e4d151 group detail, members none case-sensitive sorted a to z 2022-02-28 13:50:11 +01:00
Sylvain MATHIEU
fb7845bbce group details, add filter on members list 2022-02-28 13:50:10 +01:00
Sylvain MATHIEU
a7f6743860 group details, add members pagination 2022-02-28 13:50:10 +01:00
Sylvain MATHIEU
a4e8dee2e1 group detail, page refactoring 2022-02-28 13:50:10 +01:00
Lebeau Elise
4911b0da66 create permission service 2022-02-28 13:50:10 +01:00
Sylvain MATHIEU
6122801f90 group management, add group details 2022-02-28 13:50:10 +01:00
Lebeau Elise
c3f3fafbef user management detail refactor 2022-02-28 13:50:10 +01:00
Lebeau Elise
cbeca9d0ca user management, create edit user detail dialog 2022-02-28 13:50:10 +01:00
Sylvain MATHIEU
eb5437d005 group management, add multiple delete 2022-02-28 13:50:10 +01:00
Sylvain MATHIEU
2e2a59f6f2 group management, add sort on all columns 2022-02-28 13:50:10 +01:00
Lebeau Elise
596a11210f user management, add paginator 2022-02-28 13:50:10 +01:00
Lebeau Elise
11029db956 remove is_admin field in user management list and add field validation on create a new user 2022-02-28 13:50:10 +01:00
Lebeau Elise
0c0d77e220 user management, add multiple user selection 2022-02-28 13:50:10 +01:00
Lebeau Elise
4e207d270e user management, add delete button on each row 2022-02-28 13:50:10 +01:00
Sylvain MATHIEU
9546ed94fe group management, add trash icon on each group to delete it 2022-02-28 13:50:10 +01:00
Sylvain MATHIEU
7219f02783 group management, add create new group functionality 2022-02-28 13:50:10 +01:00
Sylvain MATHIEU
2ea79aaa27 group management, add search filter with group name 2022-02-28 13:50:10 +01:00
Sylvain MATHIEU
e37f1e97fa Add group management list 2022-02-28 13:50:10 +01:00
Lebeau Elise
4e2d043561 Add search filter to user management 2022-02-28 13:50:10 +01:00
Lebeau Elise
d46502b804 Add User management and group management template 2022-02-28 13:50:10 +01:00
piotrpekala7
108f95de59
Refreshing token implemented in LoginGuard (#1246) 2022-02-08 14:06:20 +01:00
piotrpekala7
60a9e45e4a Update notification.service.ts 2021-12-29 13:42:08 +01:00
piotrpekala7
fa22ce5d0f Unisolate action added 2021-12-28 16:52:52 +01:00
piotrpekala7
8b177013d1
Updates from main branch (#1227)
* Update ReleaseNotes.txt

* Release 2.2.22

* Updating dependencies

* Update package.json

* Update project-map.component.ts

* Updating dependencies

* Update main.yml

* Bump postcss from 7.0.35 to 7.0.36

Bumps [postcss](https://github.com/postcss/postcss) from 7.0.35 to 7.0.36.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/7.0.35...7.0.36)

---
updated-dependencies:
- dependency-name: postcss
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump ws from 6.2.1 to 6.2.2

Bumps [ws](https://github.com/websockets/ws) from 6.2.1 to 6.2.2.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/6.2.1...6.2.2)

---
updated-dependencies:
- dependency-name: ws
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix: package.json & yarn.lock to reduce vulnerabilities

The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-JS-JSZIP-1251497

* Updating packages to latest versions

* Release 2.2.23

* Updating dependencies

* Bump tar from 6.1.0 to 6.1.6

Bumps [tar](https://github.com/npm/node-tar) from 6.1.0 to 6.1.6.
- [Release notes](https://github.com/npm/node-tar/releases)
- [Changelog](https://github.com/npm/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-tar/compare/v6.1.0...v6.1.6)

---
updated-dependencies:
- dependency-name: tar
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump url-parse from 1.5.1 to 1.5.3

Bumps [url-parse](https://github.com/unshiftio/url-parse) from 1.5.1 to 1.5.3.
- [Release notes](https://github.com/unshiftio/url-parse/releases)
- [Commits](https://github.com/unshiftio/url-parse/compare/1.5.1...1.5.3)

---
updated-dependencies:
- dependency-name: url-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* Updating dependencies

* Removing vulnerabilities

* Updating angular-devkit/build-angular

* Update yarn.lock

* Fix for https://github.com/GNS3/gns3-web-ui/issues/1184

* Release 2.2.24

* Option to access system status from servers page

* Updating dependencies

* Release 2.2.25

* Update package.json

* Bump nth-check from 2.0.0 to 2.0.1

Bumps [nth-check](https://github.com/fb55/nth-check) from 2.0.0 to 2.0.1.
- [Release notes](https://github.com/fb55/nth-check/releases)
- [Commits](https://github.com/fb55/nth-check/compare/v2.0.0...v2.0.1)

---
updated-dependencies:
- dependency-name: nth-check
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* Fix for theming

* Update template.component.ts

* Updating dependencies

* Update yarn.lock

* Update yarn.lock

* Update yarn.lock

* Release 2.2.26

* Update package.json

* show upload file progress when uploading qemu template.

* fix progress bar incorrect when upload file twice

* Updating packages

* Updating packages

* Update package.json

* Update yarn.lock

* updating packages

* Updating angular material

* Fix for error with component factory after migration to angular v13

* Update yarn.lock

* Update .gitignore

* Fix for builds on github

* Removing electron builder

* Removing sentry/cli

* Updating dependencies

* Release web UI 2.2.27

* Reverting updates

* Angular version set to 12.2.12

* Updating snyk version

* Update configurator-docker.component.ts

* Update new-template-dialog.component.html

* Mouse pointer #1219

* Update topology-summary.component.ts

* Update project-map.component.ts

* Update project-map.component.ts

* Release web UI 2.2.28

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: snyk-bot <snyk-bot@snyk.io>
Co-authored-by: potats0 <potatso>
2021-12-28 14:39:15 +01:00
piotrpekala7
6353207d40 Isolate action added 2021-12-28 00:18:28 +01:00
piotrpekala7
f721bd0d26 Link to the API doc in the menu 2021-11-10 16:00:52 +01:00
piotrpekala7
44c530d1b5 Update .gitignore 2021-11-10 12:32:33 +01:00
piotrpekala7
f2b70d562d Changing link style 2021-07-21 12:30:51 +02:00
piotrpekala7
6dd81b2406 Merge branch 'master' into Change-link-style 2021-06-22 10:20:10 +02:00
piotrpekala7
a2085e846a
Merge pull request #1168 from GNS3/Remove-GNS3-VM-specific-code
Remove gns3 vm specific code
2021-06-22 09:34:03 +02:00
piotrpekala7
aa5a328f44
Merge pull request #1172 from GNS3/Loading-symbols-after-migrating-to-v3
Loading symbols after migrating to v3
2021-06-22 09:31:55 +02:00
piotrpekala7
02c5c85148 Update symbol.service.spec.ts 2021-06-21 15:45:02 +02:00
piotrpekala7
a7528fe990 Loading symbols after migrating to v3 2021-06-21 15:37:43 +02:00
piotrpekala7
758f680a28 Update settings.component.html 2021-06-21 13:32:43 +02:00
piotrpekala7
ac265a90bf Update ethernet-link.ts 2021-06-17 14:45:05 +02:00
piotrpekala7
44e1b3d656 Updating links data source added 2021-06-17 13:21:42 +02:00
piotrpekala7
a93125cdd7 Update serial-link.ts 2021-06-17 13:01:36 +02:00
piotrpekala7
34b974461b Link styling for ethernet links 2021-06-17 12:43:51 +02:00
piotrpekala7
a2a3f542e6 Changing style for links added 2021-06-16 19:19:39 +02:00
piotrpekala7
f7e07851f7 Edit link style dialog created 2021-06-16 18:44:12 +02:00
piotrpekala7
62c94275a9 Removing data from appliance dialog 2021-06-10 16:21:49 +02:00
piotrpekala7
5270134626 Merge branch 'master-3.0' into Remove-GNS3-VM-specific-code 2021-06-10 15:55:59 +02:00
piotrpekala7
21dfa56b17 Removing fields related to gns3 vm from templates 2021-06-10 15:50:13 +02:00
piotrpekala7
8eda2ddcea
Merge pull request #1165 from GNS3/Add-navigation-to-user-management-page
Add navigation to user management page
2021-06-10 14:50:28 +02:00
piotrpekala7
4c7d0b317e Fix for unit tests 2021-06-10 14:09:02 +02:00
piotrpekala7
8e93fa9d36 Update projects.component.spec.ts 2021-06-10 13:56:26 +02:00
piotrpekala7
2b81d72232 Removing components related to gns3vm 2021-06-10 13:17:01 +02:00
piotrpekala7
239d1305fa
Merge pull request #1142 from BenoitVuagnat/Add-navigation-to-user-management-page
Add navigation to user management page
2021-06-08 11:36:31 +02:00
VUAGNAT Benoit DSCS/DSEC
717336fbd1 Merge branch 'master-3.0' into Add-navigation-to-user-management-page 2021-06-02 18:28:08 +02:00
piotrpekala7
48f093360d Update app.module.ts 2021-06-02 13:32:14 +02:00
piotrpekala7
bac6047247 Update login.component.html 2021-06-02 12:08:20 +02:00
piotrpekala7
e36d56ff5d Merge branch 'master' into master-3.0 2021-05-28 13:20:47 +02:00
BenoitVuagnat
b91a113cf5 Update default-layout.component.html
Added the user management link in the navigation menu
2021-05-28 04:33:32 +02:00
piotrpekala7
7d95200eb3 Merge branch 'master' into master-3.0 2021-05-28 00:20:16 +02:00
piotrpekala7
d01fcbcfe1 Merge branch 'master' into master-3.0 2021-05-25 13:00:19 +02:00
piotrpekala7
e3db70a7d9 Update logged-user.component.html 2021-05-18 16:46:57 +02:00
piotrpekala7
0e3dd69767 Update default-layout.component.ts 2021-05-17 19:45:57 +02:00
piotrpekala7
823e9a4b59 https://github.com/GNS3/gns3-web-ui/issues/1143 2021-05-17 15:12:57 +02:00
VUAGNAT Benoit DSCS/DSEC
6b2760c06a fixed page access so it would not go to the default page 2021-05-14 22:43:49 +02:00
piotrpekala7
eb7da2f565
Merge pull request #1135 from GNS3/Cannot-load-symbols-after-migrating-to-v3
Cannot load symbols after migrating to v3
2021-05-14 15:54:14 +02:00
piotrpekala7
521b593212 Fix for unit tests 2021-05-14 15:53:42 +02:00
piotrpekala7
ca7b43a5c2 Fix for symbol dialog 2021-05-14 13:01:41 +02:00
piotrpekala7
c8f1a4d428 Fix for template component 2021-05-14 12:26:33 +02:00
piotrpekala7
350ed9a4aa Fix for icons on map 2021-05-14 11:28:07 +02:00
piotrpekala7
96919f8c05 Merge branch 'master' into master-3.0 2021-05-13 16:01:23 +02:00
VUAGNAT Benoit DSCS/DSEC
faf2dbf276 First step of implementation of user management routing 2021-05-12 19:20:35 +02:00
piotrpekala7
84d0f803dc Merge branch 'master' into master-3.0 2021-05-10 16:47:48 +02:00
piotrpekala7
a5b4a12849 Fix for redirection to login page 2021-05-07 20:30:31 +02:00
piotrpekala7
06ad9c2f07 Fix for login page issues 2021-05-07 19:46:46 +02:00
piotrpekala7
f7a3df27b8 Logout action added 2021-05-06 02:50:13 +02:00
piotrpekala7
17acd161d8 Http interceptor added 2021-04-30 13:10:33 +02:00
piotrpekala7
a27f854bde Update project.service.ts 2021-04-30 01:14:02 +02:00
piotrpekala7
4a8be81534 Update mapsettings.service.ts 2021-04-30 01:08:48 +02:00
piotrpekala7
e863c1f6e7 Redirection to login page updated 2021-04-30 00:45:54 +02:00
piotrpekala7
9835c106d8 Login guard added 2021-04-29 18:15:22 +02:00
piotrpekala7
71077413b7 Login component added 2021-04-29 17:32:53 +02:00
piotrpekala7
5cfda3500a Removing old authorization 2021-04-28 17:40:58 +02:00
piotrpekala7
ab6c43c167 Updating version to 3.0 2021-04-28 15:11:18 +02:00
piotrpekala7
84f7fabdc8 Removing traceng related code 2021-04-28 12:43:35 +02:00
piotrpekala7
4eefe89eb1 endpoints updated to v3 2021-04-28 12:32:11 +02:00
piotrpekala7
a9aa64c7f5 Update link.service.ts 2021-04-28 12:06:46 +02:00
piotrpekala7
64b814acd7 Exchanging endpoints from v2 to v3 2021-04-28 01:18:52 +02:00
piotrpekala7
d73f65dc70 Merge branch 'master' into master-3.0 2021-04-28 00:16:30 +02:00
piotrpekala7
641a542714 Update settings.component.spec.ts 2021-04-16 13:32:03 +02:00
piotrpekala7
909986af96 Update project-map.component.ts 2021-04-16 13:18:19 +02:00
piotrpekala7
c6ccaf3c4d Update cloud-nodes-template-details.component.html 2021-04-16 13:15:40 +02:00
piotrpekala7
56a00bc877 Updating marked package 2021-04-16 12:59:21 +02:00
piotrpekala7
0015c09ba5 Merge branch 'master' into master-2.3 2021-04-16 12:51:51 +02:00
piotrpekala7
7bc95954ec Merge branch 'master' into master-2.3 2021-02-02 01:15:32 +01:00
piotrpekala7
b68b871dd6
Merge pull request #964 from GNS3/Project-readme-support
Project readme support
2020-10-22 00:19:35 +02:00
piotrpekala7
de6529ddd7 Support for Readme 2020-10-22 00:18:56 +02:00
piotrpekala7
1fc48b28b3 Merge branch 'master-2.3' into Project-readme-support 2020-10-19 16:57:25 +02:00
piotrpekala7
0386d97a56 Merge branch 'master' into master-2.3 2020-10-19 16:06:04 +02:00
piotrpekala7
8205c65799 Update configurator-docker.component.ts 2020-09-09 17:37:15 +02:00
piotrpekala7
169a06fd3a Validators fo docker configurator 2020-09-09 17:32:48 +02:00
piotrpekala7
820fa9f690 Merge branch 'master' into master-2.3 2020-09-09 16:46:19 +02:00
piotrpekala7
20f0b06a77 Project readme support 2020-08-19 13:16:09 +02:00
piotrpekala7
8d795ebf10 CPUs and memory limitation for Docker containers 2020-08-12 11:55:16 +02:00
piotrpekala7
cb6cacc557 "Usage" support for cloud templates and nodes 2020-08-10 16:00:57 +02:00
piotrpekala7
bf4f2dcdb7 Reset link support 2020-08-10 14:30:11 +02:00
886 changed files with 63207 additions and 14257 deletions

View File

@ -2,7 +2,7 @@ name: Build
on:
push:
branches:
- '**'
- '**'
pull_request:
branches:
- master
@ -10,16 +10,19 @@ on:
jobs:
build:
runs-on: windows-latest
runs-on: ubuntu-latest
strategy:
matrix:
node: [ 14, 16, 18 ]
name: Node ${{ matrix.node }}
steps:
- uses: actions/checkout@v2
- name: Setup node 14
uses: actions/setup-node@v2
- uses: actions/checkout@v3
- name: Setup Node ${{ matrix.node }}
uses: actions/setup-node@v3
with:
node-version: 14.x
- uses: c-hive/gha-yarn-cache@v1
node-version: ${{ matrix.node }}
cache: 'yarn'
- name: Install JS dependencies
run: yarn install
run: yarn install --frozen-lockfile --immutable
- name: Test
run: yarn test

4
.gitignore vendored
View File

@ -2,7 +2,6 @@
# compiled output
/.angular
/dist
/tmp
/out-tsc
/ng-dist
@ -12,6 +11,7 @@
/scripts/build
/scripts/dist
/env
/.angular
# dependencies
/node_modules
@ -58,4 +58,4 @@ licenses.csv
.temp-var-file.ts
# external software
/external
/external

4
.husky/pre-commit Executable file
View File

@ -0,0 +1,4 @@
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
# yarn test

1
.nvmrc Normal file
View File

@ -0,0 +1 @@
v16.14.0

3
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,3 @@
{
"angular.enable-strict-mode-prompt": false
}

View File

@ -3,11 +3,11 @@ __tests__
node_modules/*/test
node_modules/*/tests
powered-test
e2e
#e2e
# asset directories
docs
doc
#doc
website
images

View File

@ -1,247 +1,235 @@
{
"$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
}
"$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
}
}

2604
dist/3rdpartylicenses.txt vendored Normal file

File diff suppressed because it is too large Load Diff

1
dist/465.92c7ab880f2504d3.js vendored Normal file

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
dist/NotoSans-Bold.885427cced6d8c94.woff vendored Normal file

Binary file not shown.

8453
dist/NotoSans-Bold.93203a43bc93ad9c.svg vendored Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 1.3 MiB

BIN
dist/NotoSans-Bold.a7ab189a45f553b4.eot vendored Normal file

Binary file not shown.

BIN
dist/NotoSans-Bold.e989c11744b36f58.ttf vendored Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

8453
dist/NotoSans-Italic.3d6f7cf772169c8d.svg vendored Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

8453
dist/NotoSans-Regular.bb384defbe36eaec.svg vendored Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

179
dist/ReleaseNotes.txt vendored Normal file
View File

@ -0,0 +1,179 @@
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 Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

88
dist/assets/gns3_icon.svg vendored Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 11 KiB

88
dist/assets/gns3_icon_black.svg vendored Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 11 KiB

BIN
dist/assets/icons/mac/icon.icns vendored Normal file

Binary file not shown.

BIN
dist/assets/icons/png/1024x1024.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

BIN
dist/assets/icons/png/128x128.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
dist/assets/icons/png/16x16.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 734 B

BIN
dist/assets/icons/png/24x24.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
dist/assets/icons/png/256x256.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
dist/assets/icons/png/32x32.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
dist/assets/icons/png/48x48.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

BIN
dist/assets/icons/png/512x512.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

BIN
dist/assets/icons/png/64x64.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

BIN
dist/assets/icons/win/icon.ico vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 353 KiB

BIN
dist/assets/logo-header.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

View File

@ -0,0 +1,428 @@
<?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>

After

Width:  |  Height:  |  Size: 21 KiB

708
dist/assets/resources/images/filter.svg vendored Normal file
View File

@ -0,0 +1,708 @@
<?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>

After

Width:  |  Height:  |  Size: 23 KiB

312
dist/assets/resources/images/inspect.svg vendored Normal file
View File

@ -0,0 +1,312 @@
<?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>

After

Width:  |  Height:  |  Size: 15 KiB

752
dist/assets/resources/images/pause.svg vendored Normal file
View File

@ -0,0 +1,752 @@
<?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>

After

Width:  |  Height:  |  Size: 26 KiB

BIN
dist/favicon.ico vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

51
dist/index.html vendored Normal file

File diff suppressed because one or more lines are too long

1
dist/main.25127687b7793fef.js vendored Normal file

File diff suppressed because one or more lines are too long

1
dist/polyfills.319c79dd175e50d0.js vendored Normal file

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

1
dist/runtime.24fa95b7061d7056.js vendored Normal file
View File

@ -0,0 +1 @@
!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 Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,43 @@
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');
});
});

View File

@ -1,41 +1,41 @@
import { browser, by } from 'protractor';
import { TestHelper } from './common.po';
export class ServersPage {
export class ControllersPage {
helper = new TestHelper();
maximizeWindow() {
browser.driver.manage().window().maximize();
}
navigateToServersPage() {
return browser.get('/servers');
navigateToControllersPage() {
return browser.get('/controllers');
}
getAddServerNotificationText() {
getAddControllerNotificationText() {
return browser.driver.findElement(by.className('mat-card-content')).getText();
}
async clickAddServer() {
let serversTable = await this.checkServersTable();
if (serversTable.length === 0) {
async clickAddController() {
let controllerTable = await this.checkControllersTable();
if (controllerTable.length === 0) {
let buttons = await browser.driver.findElements(by.className('mat-button mat-button-base'));
await buttons[3].click();
}
}
checkServersTable() {
checkControllersTable() {
return browser.driver.findElements(by.css('mat-cell'));
}
async navigateToServerProjects() {
async navigateToControllerProjects() {
this.helper.sleep(2000);
let hyperlinks = await browser.driver.findElements(by.css('a.table-link'));
let serverLink;
let controllerLink;
await this.helper.asyncForEach(hyperlinks, async (element) => {
let text = await element.getText();
if (text === '127.0.0.1') serverLink = element;
if (text === '127.0.0.1') controllerLink = element;
});
await serverLink.click();
await controllerLink.click();
}
}

View File

@ -1,24 +1,24 @@
import { TestHelper } from './helpers/common.po';
import { ProjectMapPage } from './helpers/project-map.po';
import { ProjectsPage } from './helpers/project.po';
import { ServersPage } from './helpers/server.po';
import { ControllersPage } from './helpers/controller.po';
describe('Project map page', () => {
let serversPage: ServersPage;
let controllersPage: ControllersPage;
let projectsPage: ProjectsPage;
let projectMapPage: ProjectMapPage;
let helper: TestHelper;
beforeEach(async () => {
serversPage = new ServersPage();
controllersPage = new ControllersPage();
projectsPage = new ProjectsPage();
projectMapPage = new ProjectMapPage();
helper = new TestHelper();
serversPage.maximizeWindow();
await serversPage.navigateToServersPage();
await serversPage.clickAddServer();
await serversPage.navigateToServerProjects();
controllersPage.maximizeWindow();
await controllersPage.navigateToControllersPage();
await controllersPage.clickAddController();
await controllersPage.navigateToControllerProjects();
await projectsPage.openAddProjectDialog();
helper.sleep(2000);
await projectsPage.createProject();

View File

@ -1,24 +1,24 @@
import { TestHelper } from './helpers/common.po';
import { ProjectsPage } from './helpers/project.po';
import { ServersPage } from './helpers/server.po';
import { ControllersPage } from './helpers/controller.po';
describe('Projects page', () => {
let serversPage: ServersPage;
let controllersPage: ControllersPage;
let projectsPage: ProjectsPage;
let helper: TestHelper;
beforeEach(() => {
serversPage = new ServersPage();
controllersPage = new ControllersPage();
projectsPage = new ProjectsPage();
helper = new TestHelper();
});
it('user should have possibility to create new project', async () => {
// arrange
serversPage.maximizeWindow();
await serversPage.navigateToServersPage();
await serversPage.clickAddServer();
await serversPage.navigateToServerProjects();
controllersPage.maximizeWindow();
await controllersPage.navigateToControllersPage();
await controllersPage.clickAddController();
await controllersPage.navigateToControllerProjects();
helper.sleep(2000);
//act
@ -28,6 +28,6 @@ describe('Projects page', () => {
helper.sleep(2000);
//assert
expect(helper.getCurrentUrl()).toMatch('server/1/project/');
expect(helper.getCurrentUrl()).toMatch('controller/1/project/');
});
});

View File

@ -1,43 +0,0 @@
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');
});
});

View File

@ -15,7 +15,7 @@ files:
- renderer.js
- sentry.js
- installed-software.js
- local-server.js
- local-controller.js
- console-executor.js
- package.json

View File

@ -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: ['Chrome'],
browsers: ['ChromeHeadless'],
singleRun: true
});
};

View File

@ -8,9 +8,9 @@ const { app } = require('electron')
const isWin = /^win/.test(process.platform);
let runningServers = {};
let runningControllers = {};
exports.getLocalServerPath = async () => {
exports.getLocalControllerPath = async () => {
let binary = isWin ? 'gns3server.exe': 'gns3server';
return findBinary('exe.', binary);
}
@ -20,27 +20,27 @@ exports.getUbridgePath = async () => {
return findBinary('ubridge', binary);
}
exports.startLocalServer = async (server) => {
return await run(server, {
exports.startLocalController = async (controller) => {
return await run(controller, {
logStdout: true
});
}
exports.stopLocalServer = async (server) => {
return await stop(server.name);
exports.stopLocalController = async (controller) => {
return await stop(controller.name);
}
exports.getRunningServers = () => {
return Object.keys(runningServers);
exports.getRunningControllers = () => {
return Object.keys(runningControllers);
}
exports.stopAllLocalServers = async () => {
exports.stopAllLocalControllers = 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 getServerArguments(server, overrides, configPath) {
let serverArguments = [];
if(server.host) {
serverArguments.push('--host');
serverArguments.push(server.host);
function getControllerArguments(controller, overrides, configPath) {
let controllerArguments = [];
if(controller.host) {
controllerArguments.push('--host');
controllerArguments.push(controller.host);
}
if(server.port) {
serverArguments.push('--port');
serverArguments.push(server.port);
if(controller.port) {
controllerArguments.push('--port');
controllerArguments.push(controller.port);
}
serverArguments.push('--local');
controllerArguments.push('--local');
if(configPath) {
serverArguments.push('--config');
serverArguments.push(configPath);
controllerArguments.push('--config');
controllerArguments.push(configPath);
}
return serverArguments;
return controllerArguments;
}
function getChannelForServer(server) {
return `local-server-run-${server.name}`;
function getChannelForController(controller) {
return `local-controller-run-${controller.name}`;
}
function notifyStatus(status) {
ipcMain.emit('local-server-status-events', status);
ipcMain.emit('local-controller-status-events', status);
}
function filterOutput(line) {
@ -120,44 +120,44 @@ function filterOutput(line) {
}
async function stopAll() {
for(var serverName in runningServers) {
let result, error = await stop(serverName);
for(var controllerName in runningControllers) {
let result, error = await stop(controllerName);
}
console.log(`Stopped all servers`);
console.log(`Stopped all controllers`);
}
async function stop(serverName) {
async function stop(controllerName) {
let pid = undefined;
const runningServer = runningServers[serverName];
const runningController = runningControllers[controllerName];
if(runningServer !== undefined && runningServer.process) {
pid = runningServer.process.pid;
if(runningController !== undefined && runningController.process) {
pid = runningController.process.pid;
}
console.log(`Stopping '${serverName}' with PID='${pid}'`);
console.log(`Stopping '${controllerName}' with PID='${pid}'`);
const stopped = new Promise((resolve, reject) => {
if(pid === undefined) {
resolve(`Server '${serverName} is already stopped`);
delete runningServers[serverName];
resolve(`Controller '${controllerName} is already stopped`);
delete runningControllers[controllerName];
return;
}
kill(pid, (error) => {
if(error) {
console.error(`Error occured during stopping '${serverName}' with PID='${pid}'`);
console.error(`Error occured during stopping '${controllerName}' with PID='${pid}'`);
reject(error);
}
else {
delete runningServers[serverName];
console.log(`Stopped '${serverName}' with PID='${pid}'`);
resolve(`Stopped '${serverName}' with PID='${pid}'`);
delete runningControllers[controllerName];
console.log(`Stopped '${controllerName}' with PID='${pid}'`);
resolve(`Stopped '${controllerName}' with PID='${pid}'`);
notifyStatus({
serverName: serverName,
controllerName: controllerName,
status: 'stopped',
message: `Server '${serverName}' stopped'`
message: `Controller '${controllerName}' stopped'`
});
}
});
@ -166,11 +166,11 @@ async function stop(serverName) {
return stopped;
}
async function getIniFile(server) {
return path.join(app.getPath('userData'), `gns3_server_${server.id}.ini`);
async function getIniFile(controller) {
return path.join(app.getPath('userData'), `gns3_controller_${controller.id}.ini`);
}
async function configure(configPath, server) {
async function configure(configPath, controller) {
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, server) {
var config = ini.parse(fs.readFileSync(configPath, 'utf-8'));
if(server.path) {
config.path = server.path;
if(controller.path) {
config.path = controller.path;
}
if(server.host) {
config.host = server.host;
if(controller.host) {
config.host = controller.host;
}
if(server.port) {
config.port = server.port;
if(controller.port) {
config.port = controller.port;
}
if(server.ubridge_path) {
config.ubridge_path = server.ubridge_path;
if(controller.ubridge_path) {
config.ubridge_path = controller.ubridge_path;
}
fs.writeFileSync(configPath, ini.stringify(config, { section: 'Server' }));
fs.writeFileSync(configPath, ini.stringify(config, { section: 'Controller' }));
}
async function setPATHEnv() {
@ -216,7 +216,7 @@ async function setPATHEnv() {
process.env.PATH = extra.join(";");
}
async function run(server, options) {
async function run(controller, options) {
if(!options) {
options = {};
}
@ -226,34 +226,34 @@ async function run(server, options) {
console.log(`Configuring`);
const configPath = await getIniFile(server);
await configure(configPath, server);
const configPath = await getIniFile(controller);
await configure(configPath, controller);
console.log(`Setting up PATH`);
await setPATHEnv();
console.log(`Running '${server.path}'`);
console.log(`Running '${controller.path}'`);
let serverProcess = spawn(server.path, getServerArguments(server, {}, configPath));
let controllerProcess = spawn(controller.path, getControllerArguments(controller, {}, configPath));
notifyStatus({
serverName: server.name,
controllerName: controller.name,
status: 'started',
message: `Server '${server.name}' started'`
message: `Controller '${controller.name}' started'`
});
runningServers[server.name] = {
process: serverProcess
runningControllers[controller.name] = {
process: controllerProcess
};
serverProcess.stdout.on('data', function(data) {
controllerProcess.stdout.on('data', function(data) {
const line = data.toString();
const { isCritical, errorMessage } = filterOutput(line);
if(isCritical) {
notifyStatus({
serverName: server.name,
controllerName: controller.name,
status: 'stderr',
message: `Server reported error: '${errorMessage}`
message: `Controller reported error: '${errorMessage}`
});
}
@ -262,25 +262,25 @@ async function run(server, options) {
}
});
serverProcess.stderr.on('data', function(data) {
controllerProcess.stderr.on('data', function(data) {
if(logSterr) {
console.log(data.toString());
}
});
serverProcess.on('exit', (code, signal) => {
controllerProcess.on('exit', (code, signal) => {
notifyStatus({
serverName: server.name,
controllerName: controller.name,
status: 'errored',
message: `Server '${server.name}' has exited with status='${code}'`
message: `controller '${controller.name}' has exited with status='${code}'`
});
});
serverProcess.on('error', (err) => {
controllerProcess.on('error', (err) => {
notifyStatus({
serverName: server.name,
controllerName: controller.name,
status: 'errored',
message: `Server errored: '${err}`
message: `Controller errored: '${err}`
});
});
@ -297,9 +297,9 @@ async function main() {
}
if(ipcMain) {
ipcMain.on('local-server-run', async function (event, server) {
const responseChannel = getChannelForServer();
await run(server);
ipcMain.on('local-controller-run', async function (event, controller) {
const responseChannel = getChannelForController();
await run(controller);
event.sender.send(responseChannel, {
success: true
});
@ -318,4 +318,4 @@ if (require.main === module) {
});
main();
}
}

View File

@ -1,6 +1,6 @@
{
"name": "gns3-web-ui",
"version": "2.2.53",
"version": "3.0.4",
"author": {
"name": "GNS3 Technology Inc.",
"email": "developers@gns3.com"
@ -36,98 +36,102 @@
"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 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"
"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"
},
"private": true,
"dependencies": {
"@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",
"@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",
"@sentry/browser": "^6.14.1",
"@snyk/protect": "^1.972.0",
"@types/jest": "^27.0.2",
"@types/mocha": "^9.0.0",
"@types/mocha": "^9.1.1",
"@types/react": "^17.0.34",
"@types/react-dom": "^17.0.11",
"angular-draggable-droppable": "^5.0.0",
"angular-draggable-droppable": "^6.1.0",
"angular-resizable-element": "^3.4.0",
"autoprefixer": "10.4.5",
"bootstrap": "^5.1.3",
"command-exists": "^1.2.9",
"core-js": "^3.19.1",
"css-tree": "^1.1.3",
"core-js": "^3.22.3",
"css-tree": "^2.1.0",
"d3-ng2-service": "^2.2.0",
"eev": "^0.1.5",
"ini": "^2.0.0",
"ini": "^3.0.0",
"marked": "^4.0.14",
"ipaddr.js": "^2.1.0",
"material-design-icons": "^3.0.1",
"mousetrap": "^1.6.5",
"ng-circle-progress": "^1.6.0",
"ng2-file-upload": "^1.4.0",
"ng2-file-upload": "^3.0.0",
"ngx-childprocess": "^0.0.6",
"ngx-device-detector": "^2.1.1",
"ngx-device-detector": "4.0.1",
"ngx-electron": "^2.2.0",
"node-fetch": "^3.2.10",
"notosans-fontface": "1.2.2",
"notosans-fontface": "^1.3.0",
"postcss-loader": "^6.2.1",
"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.3.1",
"tslib": "^2.4.0",
"typeface-roboto": "^1.1.13",
"xterm": "^4.15.0",
"xterm": "^4.18.0",
"xterm-addon-attach": "^0.6.0",
"xterm-addon-fit": "^0.5.0",
"yargs": "^17.2.1",
"zone.js": "~0.11.4"
"yargs": "^17.4.1",
"zone.js": "^0.11.5"
},
"devDependencies": {
"@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",
"@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",
"@types/jasminewd2": "^2.0.10",
"@types/node": "16.11.6",
"codelyzer": "^6.0.2",
"electron": "^13.6.6",
"electron-builder": "^22.9.1",
"@types/node": "^17.0.31",
"codelyzer": "^0.0.28",
"electron": "13.6.6",
"electron-builder": "^23.0.3",
"file-loader": "^6.2.0",
"jasmine-core": "~3.10.1",
"jasmine-spec-reporter": "~7.0.0",
"husky": "^8.0.3",
"jasmine-core": "^4.1.0",
"jasmine-spec-reporter": "^7.0.0",
"jquery": "^3.6.0",
"karma": "^6.3.16",
"karma-chrome-launcher": "~3.1.0",
"karma": "^6.3.19",
"karma-chrome-launcher": "^3.1.1",
"karma-cli": "^2.0.0",
"karma-coverage-istanbul-reporter": "~3.0.3",
"karma-jasmine": "~4.0.1",
"karma-coverage-istanbul-reporter": "^3.0.3",
"karma-jasmine": "^5.0.0",
"karma-jasmine-html-reporter": "^1.7.0",
"license-checker": "^25.0.1",
"popper.js": "^1.16.1",
"prettier": "^2.4.1",
"prettier": "^2.6.2",
"protractor": "^7.0.0",
"replace": "^1.2.1",
"rxjs-tslint": "^0.1.8",
"ts-mockito": "^2.6.1",
"ts-node": "~10.4.0",
"ts-node": "^10.7.0",
"tslint": "^6.1.3",
"tslint-config-prettier": "^1.18.0",
"typescript": "4.2.3",
"webpack": "5.76.0",
"yarn-upgrade-all": "^0.5.4"
"typescript": "4.6.4",
"webpack": "^5.72.0",
"yarn-upgrade-all": "^0.7.1"
},
"greenkeeper": {
"ignore": [

26
scripts/push_dev_version.sh Executable file
View File

@ -0,0 +1,26 @@
#!/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"

View File

@ -1,10 +1,9 @@
GNS3 WebUI is web implementation of user interface for GNS3 software.
Current version: 2.2.32
Current version: 2.2.24
Bug Fixes & enhancements
- Fixed generated capture file is not valid
- Fixed Docker additional directories
- security fixes
Current version: 2020.4.0-beta.1
@ -68,7 +67,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
- Server type in template preferences
-Controller type in template preferences
- Error when selecting existing Docker image
- Default values in templates
- TypeError: Cannot read property 'message' of undefined

View File

@ -1,9 +1,10 @@
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { BundledServerFinderComponent } from './components/bundled-server-finder/bundled-server-finder.component';
import { BundledControllerFinderComponent } from './components/bundled-controller-finder/bundled-controller-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';
@ -23,7 +24,6 @@ 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,157 +44,261 @@ 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 { ServersComponent } from './components/servers/servers.component';
import { ControllersComponent } from './components/controllers/controllers.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 { ServerResolve } from './resolvers/server-resolve';
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";
const routes: Routes = [
{
path: '',
component: DefaultLayoutComponent,
children: [
{ path: '', redirectTo: 'servers', pathMatch: 'full' },
{ path: 'servers', component: ServersComponent },
{ path: 'bundled', component: BundledServerFinderComponent },
{ 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: 'server/:server_id/projects',
path: 'controller/:controller_id/projects',
component: ProjectsComponent,
resolve: { server: ServerResolve },
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
}
},
{ path: 'help', component: HelpComponent },
{ path: 'settings', component: SettingsComponent },
{ path: 'settings/console', component: ConsoleComponent },
{ path: 'installed-software', component: InstalledSoftwareComponent },
{ path: 'server/:server_id/systemstatus', component: SystemStatusComponent },
{ path: 'controller/:controller_id/systemstatus', component: SystemStatusComponent, canActivate: [LoginGuard] },
{ path: 'server/:server_ip/:server_port/project/:project_id', component: DirectLinkComponent },
{ path: 'controller/:controller_ip/:controller_port/project/:project_id', component: DirectLinkComponent, canActivate: [LoginGuard] },
{
path: 'server/:server_id/project/:project_id/snapshots',
path: 'controller/:controller_id/project/:project_id/snapshots',
component: ListOfSnapshotsComponent,
resolve: { server: ServerResolve },
canActivate: [LoginGuard],
resolve: { controller: ControllerResolve },
},
{ 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', 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/builtin/ethernet-hubs', component: EthernetHubsTemplatesComponent },
{ path: 'controller/:controller_id/preferences/builtin/ethernet-hubs', component: EthernetHubsTemplatesComponent, canActivate: [LoginGuard] },
{
path: 'server/:server_id/preferences/builtin/ethernet-hubs/addtemplate',
path: 'controller/:controller_id/preferences/builtin/ethernet-hubs/addtemplate',
component: EthernetHubsAddTemplateComponent,
canActivate: [LoginGuard]
},
{
path: 'server/:server_id/preferences/builtin/ethernet-hubs/:template_id',
path: 'controller/:controller_id/preferences/builtin/ethernet-hubs/:template_id',
component: EthernetHubsTemplateDetailsComponent,
canActivate: [LoginGuard]
},
{
path: 'server/:server_id/preferences/builtin/ethernet-switches',
path: 'controller/:controller_id/preferences/builtin/ethernet-switches',
component: EthernetSwitchesTemplatesComponent,
canActivate: [LoginGuard]
},
{
path: 'server/:server_id/preferences/builtin/ethernet-switches/addtemplate',
path: 'controller/:controller_id/preferences/builtin/ethernet-switches/addtemplate',
component: EthernetSwitchesAddTemplateComponent,
canActivate: [LoginGuard]
},
{
path: 'server/:server_id/preferences/builtin/ethernet-switches/:template_id',
path: 'controller/:controller_id/preferences/builtin/ethernet-switches/:template_id',
component: EthernetSwitchesTemplateDetailsComponent,
canActivate: [LoginGuard]
},
{ path: 'server/:server_id/preferences/builtin/cloud-nodes', component: CloudNodesTemplatesComponent },
{ path: 'controller/:controller_id/preferences/builtin/cloud-nodes', component: CloudNodesTemplatesComponent, canActivate: [LoginGuard] },
{
path: 'server/:server_id/preferences/builtin/cloud-nodes/addtemplate',
path: 'controller/:controller_id/preferences/builtin/cloud-nodes/addtemplate',
component: CloudNodesAddTemplateComponent,
canActivate: [LoginGuard]
},
{
path: 'server/:server_id/preferences/builtin/cloud-nodes/:template_id',
path: 'controller/:controller_id/preferences/builtin/cloud-nodes/:template_id',
component: CloudNodesTemplateDetailsComponent,
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', 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/templates/:template_id/copy',
path: 'controller/:controller_id/preferences/dynamips/templates/:template_id/copy',
component: CopyIosTemplateComponent,
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', component: QemuPreferencesComponent },
{ path: 'controller/:controller_id/preferences/qemu/templates', component: QemuVmTemplatesComponent, canActivate: [LoginGuard] },
{
path: 'server/:server_id/preferences/qemu/templates/:template_id/copy',
path: 'controller/:controller_id/preferences/qemu/templates/:template_id/copy',
component: CopyQemuVmTemplateComponent,
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/qemu/templates/:template_id', component: QemuVmTemplateDetailsComponent, canActivate: [LoginGuard] },
{ path: 'controller/:controller_id/preferences/qemu/addtemplate', component: AddQemuVmTemplateComponent, 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/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/virtualbox', component: VirtualBoxPreferencesComponent },
{ path: 'server/:server_id/preferences/virtualbox/templates', component: VirtualBoxTemplatesComponent },
// { 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/templates/:template_id',
path: 'controller/:controller_id/preferences/virtualbox/templates/:template_id',
component: VirtualBoxTemplateDetailsComponent,
canActivate: [LoginGuard]
},
{ path: 'server/:server_id/preferences/virtualbox/addtemplate', component: AddVirtualBoxTemplateComponent },
{ path: 'controller/:controller_id/preferences/virtualbox/addtemplate', component: AddVirtualBoxTemplateComponent, 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', component: VmwarePreferencesComponent },
{ path: 'controller/:controller_id/preferences/vmware/templates', component: VmwareTemplatesComponent, canActivate: [LoginGuard] },
{
path: 'server/:server_id/preferences/vmware/templates/:template_id',
path: 'controller/:controller_id/preferences/vmware/templates/:template_id',
component: VmwareTemplateDetailsComponent,
canActivate: [LoginGuard]
},
{ path: 'server/:server_id/preferences/vmware/addtemplate', component: AddVmwareTemplateComponent },
{ path: 'controller/:controller_id/preferences/vmware/addtemplate', component: AddVmwareTemplateComponent, 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', component: DockerTemplatesComponent, canActivate: [LoginGuard] },
{
path: 'server/:server_id/preferences/docker/templates/:template_id',
path: 'controller/:controller_id/preferences/docker/templates/:template_id',
component: DockerTemplateDetailsComponent,
canActivate: [LoginGuard]
},
{
path: 'server/:server_id/preferences/docker/templates/:template_id/copy',
path: 'controller/:controller_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: 'server/:server_id/project/:project_id',
path: 'controller/:controller_id/project/:project_id',
component: ProjectMapComponent,
canActivate: [LoginGuard],
canDeactivate: [ConsoleGuard],
},
{
path: 'server/:server_id/project/:project_id/nodes/:node_id',
path: 'controller/:controller_id/project/:project_id/nodes/:node_id',
component: WebConsoleFullWindowComponent,
canActivate: [LoginGuard]
},
{
path: 'static/web-ui/server/:server_id/project/:project_id/nodes/:node_id',
path: 'static/web-ui/controller/:controller_id/project/:project_id/nodes/:node_id',
component: WebConsoleFullWindowComponent,
canActivate: [LoginGuard]
},
{
path: '**',
component: PageNotFoundComponent,
},
}
];
@NgModule({
@ -207,4 +311,5 @@ const routes: Routes = [
],
exports: [RouterModule],
})
export class AppRoutingModule {}
export class AppRoutingModule {
}

View File

@ -1,5 +1,5 @@
import { NO_ERRORS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { 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(() => {
TestBed.configureTestingModule({
beforeEach(async() => {
await 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;
expect(app).toBeTruthy();
}));
await expect(app).toBeTruthy();
});
it('should have footer', async(() => {
it('should have footer', async() => {
const compiled = fixture.debugElement.nativeElement;
expect(compiled.querySelector('router-outlet').textContent).toEqual('');
}));
await expect(compiled.querySelector('router-outlet').textContent).toEqual('');
});
it('should receive changed settings and forward to electron', async(() => {
spyOnProperty(electronService, 'isElectronApp').and.returnValue(true);
it('should receive changed settings and forward to electron', async() => {
await 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);
expect(spy.send).not.toHaveBeenCalled();
}));
await expect(spy.send).not.toHaveBeenCalled();
});
});

View File

@ -1,7 +1,8 @@
/* tslint:disable */
import { DragDropModule } from '@angular/cdk/drag-drop';
import { OverlayModule } from '@angular/cdk/overlay';
import { CdkTableModule } from '@angular/cdk/table';
import { HttpClientModule } from '@angular/common/http';
import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
import { ErrorHandler, NgModule } from '@angular/core';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { MatSidenavModule } from '@angular/material/sidenav';
@ -29,8 +30,9 @@ 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 { BundledServerFinderComponent } from './components/bundled-server-finder/bundled-server-finder.component';
import { InformationDialogComponent } from './components/dialogs/information-dialog.component';
import { BundledControllerFinderComponent } from './components/bundled-controller-finder/bundled-controller-finder.component';
import { InformationDialogComponent } from './components/dialogs/information-dialog/information-dialog.component';
import { QuestionDialogComponent } from "./components/dialogs/question-dialog/question-dialog.component";
import { DirectLinkComponent } from './components/direct-link/direct-link.component';
import { DrawingAddedComponent } from './components/drawings-listeners/drawing-added/drawing-added.component';
import { DrawingDraggedComponent } from './components/drawings-listeners/drawing-dragged/drawing-dragged.component';
@ -74,7 +76,6 @@ 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,10 +86,6 @@ 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';
@ -117,10 +114,13 @@ 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';
import { HttpConsoleActionComponent } from './components/project-map/context-menu/actions/http-console/http-console-action.component';
import { IdlePcActionComponent } from "./components/project-map/context-menu/actions/idle-pc-action/idle-pc-action.component";
import { AutoIdlePcActionComponent } from "./components/project-map/context-menu/actions/auto-idle-pc-action/auto-idle-pc-action.component";
import { ImportConfigActionComponent } from './components/project-map/context-menu/actions/import-config/import-config-action.component';
import { LockActionComponent } from './components/project-map/context-menu/actions/lock-action/lock-action.component';
import { MoveLayerDownActionComponent } from './components/project-map/context-menu/actions/move-layer-down-action/move-layer-down-action.component';
@ -134,13 +134,17 @@ 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 { 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 { IdlePCDialogComponent } from "./components/project-map/context-menu/dialogs/idle-pc-dialog/idle-pc-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,7 +169,6 @@ 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';
@ -175,6 +178,7 @@ 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 +186,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 { 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 { 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 { 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,16 +208,18 @@ 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 { ServerResolve } from './resolvers/server-resolve';
import { ControllerResolve } from './resolvers/controller-resolve';
import { ApplianceService } from './services/appliances.service';
import { ProtocolHandlerService } from './services/protocol-handler.service';
import { BuiltInTemplatesConfigurationService } from './services/built-in-templates-configuration.service';
@ -223,9 +229,8 @@ 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 { HttpServer, ServerErrorHandler } from './services/http-server.service';
import { HttpController, ControllerErrorHandler } from './services/http-controller.service';
import { InfoService } from './services/info.service';
import { InstalledSoftwareService } from './services/installed-software.service';
import { IosConfigurationService } from './services/ios-configuration.service';
@ -244,10 +249,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 { 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 { 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 { SettingsService } from './services/settings.service';
import { ConsoleService } from './services/settings/console.service';
import { DefaultConsoleService } from './services/settings/default-console.service';
@ -258,7 +263,6 @@ 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,337 +273,408 @@ 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,
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],
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,
IdlePCDialogComponent,
ImportApplianceComponent,
DirectLinkComponent,
SystemStatusComponent,
StatusInfoComponent,
StatusChartComponent,
OpenFileExplorerActionComponent,
HttpConsoleActionComponent,
IdlePcActionComponent,
AutoIdlePcActionComponent,
WebConsoleComponent,
ConsoleWrapperComponent,
HttpConsoleNewTabActionComponent,
WebConsoleFullWindowComponent,
NewTemplateDialogComponent,
ChangeHostnameActionComponent,
ChangeHostnameDialogComponent,
ApplianceInfoDialogComponent,
ReadmeEditorComponent,
MarkedDirective,
InformationDialogComponent,
QuestionDialogComponent,
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]
})
export class AppModule {
constructor(protected _googleAnalyticsService: GoogleAnalyticsService) {}

View File

@ -5,6 +5,7 @@ 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';
@ -73,6 +74,7 @@ import { SerialLinkWidget } from './widgets/links/serial-link';
SelectionControlComponent,
SelectionSelectComponent,
DraggableSelectionComponent,
LinkEditingComponent,
MovingCanvasDirective,
ZoomingCanvasDirective,
],

View File

@ -44,5 +44,6 @@
<app-drawing-resizing></app-drawing-resizing>
<app-selection-control></app-selection-control>
<app-selection-select></app-selection-select>
<app-text-editor #textEditor [server]="server" [svg]="svg"></app-text-editor>
<app-text-editor #textEditor [controller]="controller" [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

View File

@ -1,23 +1,17 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { D3MapComponent } from './d3-map.component';
describe('D3MapComponent', () => {
let component: D3MapComponent;
let fixture: ComponentFixture<D3MapComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [D3MapComponent],
}).compileComponents();
}));
});
// beforeEach(() => {
// fixture = TestBed.createComponent(MapComponent);
// component = fixture.componentInstance;
// fixture.detectChanges();
// });
//
// it('should create', () => {
// expect(component).toBeTruthy();
// });
it('should create', () => {
expect(component)
});
});

Some files were not shown because too many files have changed in this diff Show More